Phone interview by Denny Cronin on May 4, 2000
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.
Well no, this was Freecell. Before it was ever written for computer it obviously was played with actual cards.
Well that's probably true. Where did they say the progenitor was from?
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.
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 (no link, appears to be gone) and other studies on the net]
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
(Laughs) Certainly, of people time, that's true.
Oh yeah, I did record that, didn't I. 100, 150, I don't recall if it was more than that.
For what there was available at the time. And then of course a lot of places would block it out.
I would presume so, or they wouldn't the waste computer time on frivolous things.
Well I was a student. I was a medical student.
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.
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.
Oh yeah, yeah.
The storage for all the records was in another seven blocks which would be about, if I have my math right, about 20k.
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.
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.
No, no I don't know him at all.
No.
Oh, what have they added?
[ a discussion of algorithms for generating deals ensues that would probably only be of interest to the most nerdy among us ]
Oh, probably a couple hundred games, but I don't have the patience to play it over and over like that.
Well I don't play it as much anymore as I used to...
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.
Oh really? I'll have to see your site. What is it?
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. ]
Has anyone done solvers for it?
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.
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.
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 ]
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.