Interview with Paul Alfille

Phone interview by Denny Cronin on May 4, 2000

Paul Alfille wrote the original version of Freecell which ran on the PLATO computer system at the University of Illinois in the mid-70's. All subsequent versions of the game, Microsoft's included, owe their existence to his original competitive multi user implementation. His original implementation provided almost every feature you see now in my humble NetCELL clone, all the while running on computers that were far, far less powerful than those we have today. I had the honor of doing a phone interview with the Father of Freecell. Freecell addicts of the world, meet Paul, the creator of the original Freecell game.

Let's talk about this Freecell game. When did this first start?

I guess the first thing would be, I'm not sure exactly where the game itself comes from. I remember as a child reading about some solitaire games, and one of the games was a game similar to this. What they said was that this was a game that was similar to chess in that you could see all the cards at once. And so it was purely strategy and not the chance, the unknown that you have with unexposed cards.

I fiddled around with the game, and I used to play it with cards. My complaint though playing with actual playing cards was that you'd end up with a very sorted deck of cards at the end of it, in numerical order by suit. And I wasn't very good at shuffling so I found that rather tedious.

So this progenitor game had multi column moves and all like Freecell?

Well no, this was Freecell. Before it was ever written for computer it obviously was played with actual cards.

One of the other Freecell sites has some information about other early Freecell-like games. They talk about some games mentioned in an old solitaire book. They name a progenitor game, but they suggest there was a key variation you introduced.

Well that's probably true. Where did they say the progenitor was from?

I don't know. I'll get you the link ( Michael Keller's Freecell FAQ )

I'd be very interested in finding out the name of the book that somebody thought they saw a version of Freecell... I'm sure it wasn't named that, I think I made up the name.

I probably read that book as a child, and then it was just based on my memory, I just played with it... I don't know what the variant was that I might have introduced. So I played this one myself with cards, and then I had the opportunity at the University of Illinois to actually program it into a computer. It was mostly for my own convenience so I could play it and not have to shuffle the cards afterwards.

(laugh)

The reason I made it available for other people to use was that I was curious about the mathematics of it, what fraction of games are actually winnable or not.

In retrospect, that's rather naive because that the fraction of games people actually win which is not quite the same thing. People don't play at their peak.

What's interesting is that for the standard 8x4 game, that's the one that you get on the game Microsoft has, almost every game is winnable. But you can construct games that are unwinnable. Essentially put the cards in inverse order; low cards on top and high cards on the bottom.

[Here I fill him in a bit on the Dave Ring's Internet Freecell Project and other studies on the net]

But back to your original version...

Well, with what I programmed in, the constraint was really screen real estate. PLATO had a 512x512 gas plasma display (side note: one of the earliest bit mapped displays for a computer, very much ahead of its time) so if you rearranged things and were as conservative as possible you could get as many as ten columns across, (and obviously ten cells) and as few as four columns– they'd get to be rather long.

So I allowed people to choose any range within there.

So you went down to as few as four columns?

Four columns with ten cells, and that's actually fairly frequently winnable. It's a different game, in a sense that you can go very deep into a column, but then you're really constrained by... well it's very unusual to clear out an entire column.

Or 10x1 is actually a very interesting game, often winnable, maybe ten percent of the time or so, and you really have to... it's a different mentality obviously. You have to think it through a long time before you make the one move.

So the other key ingredient of the game is the concept of "streaks", and that would be an element of the game you definitely added with the aid or Mr. Computer I would suppose...

It was easy to do. I couldn't store people's winning percentages but I could store, or it was easier for me to store how many games in a row they won. Sort of made it interesting and competitive.

That seems to be one of the real addictive factors of the game, the "streak" factor.

I had the advantage that it was on a central computer, so you couldn't cheat quite as easily. It still would occasionally go down but there was something you could check to see whether a person killed the system, stop-one, shift-stop was the way to kill a program, or whether the computer went down for scheduled maintenance or something.

There were a few monster streaks I remember in the 1000+ region, and folks theorized that they were sys-ops that could conveniently crash the machine when they hit a...

One of them Gary Johnson was his name, and as far as I know he was a physics student at another institution, so he wasn't at U of I so I don't think he could.

Now it seems evident that there are just folks who are very good at the game.

I think I only left enough bits there to reach about 4000 wins before it would turn over, so I don't know what happened after that.

Yes, about the implementation. Let's talk about that a little bit.

It was written in TUTOR, a procedural language, really made for computer based instruction. It had an elaborate system for asking questions and for building sort of quizzes. It had no local variables, it had, talking about old time constraints, I think it had a total of 64 variables, but you could split them up and get sort of bit slices of variables, all global of course.

I don't think there was any recursion in the language so I had to use an iterative process, one big loop.

The other thing I found tedious was games that would make you collect all the cards at the end when the moves were obvious. So I added a look one move ahead, to make any obvious moves. And that could also tell you if it was a losing position.

That's something I've always wondered about. I've never implemented that test for a losing position. How did you implement that?

It's not that complex. You just look at, um.... actually one of my complaints with the Microsoft implementation is that it's not that aggressive in making moves.

There are two things: there's the auto move up to the aces process, and there's the recognizing a losing position, and those are actually two different problems.

Recognizing a losing position was actually very simple-minded. I would look and see how many moves were possible. If there was only one move possible, it would make that move, and remember it. And then if the next move, there was only one move possible, it would make it unless it was a reversal of the previous one, in which case you lost.

So it was not a "solver" per se...

No, there was no recursion, it would be hard to build a list structure, and they actually limited the number of processor cycles you could have.

Speaking of machine cycles, I remember Avatar (an early multi-user dungeon (MUD) adventure game) was the big machine cycle hog back there. How did Freecell stack up against Avatar?

Oh, it was pretty low actually, because you spent most of your time staring at the screen thinking about your moves. So it was actually a well-behaved program from that point of view.

I think it burned its fair share of student time though.

(Laughs) Certainly, of people time, that's true.

Do happen to remember at peak times about how many people would you have seen playing?

Oh yeah, I did record that, didn't I. 100, 150, I don't recall if it was more than that.

Yeah, I remember it was a pretty good number (this was way pre-Internet you have to remember)

For what there was available at the time. And then of course a lot of places would block it out.

So folks would get work done...

I would presume so, or they wouldn't the waste computer time on frivolous things.

Now did you write the whole thing yourself, or did you have some students involved?

Well I was a student. I was a medical student.

Oh, well I guess I'd always assumed you were a computer science professor or something.

Nope, nope, nope, now I'm an anesthesiologist as Massachusetts General Hospital and I was a medical student at the time. But I'd done programming to help put myself through college or help pay for college, and so I'd been doing that for a number of years. I was familiar with how to program, certainly enjoyed it. And this was done, um, instead of studying.

(laugh) How big was the program? How much disk space did it use?

This was on a CDC something, Control Data Corporation cyber-something computer. So it was a mainframe. In those days they really constrained the amount of disk space you could have. It also used a strange large word format, 60 bits was a word. I usually used it broken down into 10 bytes, each one 6 bits long, which could represent numbers 0-63. Which worked out well if you were looking at cards in a deck. You could encode which card in the deck you had pretty easily, and the column and row, so that worked out nicely.

The whole program fit into three what they called blocks which were each 320 words long (2400 modern 8 bit bytes). So it would have been about 6k total.

The whole program was in 6k?!?

Oh yeah, yeah.

Wow!

The storage for all the records was in another seven blocks which would be about, if I have my math right, about 20k.

Amazing! And yet I remember huge long lists of streaks...

The fun part for me was that, although I liked playing the game or playing games, there's something very rewarding about building something that a lot of people are using and giving you feedback on.

It's certainly a well-loved game these days. How 'bout that as a segue into... how did you feel about it when Microsoft rolled out their version?

Well I was a little surprised, and I guess the first thing a felt was a little shocked, or dismayed. I'd never heard about this. At the time we sold all our programs to the University of Illinois who licensed them, and you'd get a little bit of royalties from it. So I asked them what they'd done; they hadn't made any ??? there. They weren't interested in enforcing licenses or anything like that, and I certainly wasn't interested in pursuing it. Um, I guess the only thing I really felt was that I could have gotten... if somebody had talked to me about it, or gotten some recognition for the work and the original idea.

Certainly. Have you ever talked to Jim Horne who I believe was the author of the Microsoft version?

No, no I don't know him at all.

No email or anything like that?

No.

I gather he was a student back there and played it, and cloned it. Um, let's see, now these days there are quite a few Freecell clone variants which add this or that to the game...

Oh, what have they added?

I don't know, some have added larger numbers of deals...

[ a discussion of algorithms for generating deals ensues that would probably only be of interest to the most nerdy among us ]

Are you a good Freecell player? What's you biggest streak?

Oh, probably a couple hundred games, but I don't have the patience to play it over and over like that.

And what's your average win time?

Well I don't play it as much anymore as I used to...

Well in your heyday?

My "heyday" was spent mostly programming it rather than playing it.

So I don't think I'm as good a player, never as good as the best that were there. To have a long streak you have to have... you can't get tired. It's a lot of concentration and persistence. I think I eventually get frustrated and just make a move rather than think it through.

And I really like the constrained games, with fewer columns and fewer cells.

I'm trying to remember, you had the tournaments back then. Were there any other aspects of the early Freecell environment. I mean I've shamelessly, on my site, cloned a bunch of the...

Oh really? I'll have to see your site. What is it?

It's freecell.com.

OK, that'll be easy to find.

[ I fill him in a bit on the nature of said "shameless clone", the NetCELL community, chat, and the worldwide parties, and the interest in Freecell on the 'net in general. ]

So there's quite a bit of interest...

Has anyone done solvers for it?

Yes, yes, that's another value-add of some of the other Freecell packages out there. I think there are at least two or three solvers you can lay hands on, to attack the games.

Because that'd be interesting. I'd approach it with a looking at, there are some moves that are reversible and some that are irreversible, and how you scale those or how you'd approach them, how you'd sort, prune the tree, that'd be very interesting to see.

Do you still do any computer programming?

Yeah, I do. More for my own interest, or for projects at work. Recently I've been using Javascript and Perl. I do most of my stuff now on Linux.

The NetCELL server runs on Linux...

I guess after TUTOR I did mostly C work, and now I'm looking for something besides C.

[ more discussions of very nerdy language topics ]

Do you still play?

I have to say each time I go back and play the game, months between times, I do enjoy it again. I remember why I wanted it in the first place.

Yes, a lot of folks worldwide are very appreciative of it.

This article was written by Denny Cronin for his Freecell.com web site (which, sadly, is now apparently extinct). It is republished here in order to keep this very interesting information publicly available. It is copyright ©2007 Freecell.com


Related Games

Last Update: January 1st, 2014