Source

 shl...@cec68495-… 99c6866 2009-02-21 Shlomi Fish d3e447e 2012-06-14 shl...@cec68495-… 99c6866 2009-02-21   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 #include '../template.wml'

This is an interview of Adrian Ettlinger by Shlomi Fish that was conducted in August 21, 2003 over the IRC. It was later edited by both parties for content and correctness.

S.F.: OK, let's start?

A.E.: Here I am. Shoot

S.F.: Tell us a bit about yourself.

A.E.: My education was in electrical engineering, BSEE Purdue, '44. Worked in the television broadcasting industry initially.

S.F.: OK. Was it fun?

A.E.: Oh, yes, it was most interesting participating in the growth of a new industry. Wish I'd kept a journal of everything that happened.

S.F.: In what corporations did you work at the time?

A.E.: I was with the CBS Television Network. I had a penchant for logical design, i.e. in those days consisting usually of relay contact networks. That led to specializing in "control circuits" and got me into a pioneering computer application.

S.F.: So this is how you got introduced to programming?

A.E.: Yes, we farmed out the first project to the company that was then the main supplier of industrial control computers, TRW. They did the basic programming, but I was curious as to what it looked like, so I had them send me the source to use as a learning tool. As a sidelight, that had a salutary effect, because a couple of my questions revealed bugs that were caught before the code was ever even run.

S.F.: Cool!

When was it exactly?

A.E.: I should describe further that the application was to automate the switching of station-break intervals for a TV station, and that the first time in the industry that function was done using a stored-program computer.

As to when, the project started in 1959 and the system went on the air on the last day of the year 1960.

S.F.: You mean a computer which ran a fixed program every time? (instead of one that loaded it to memory)

A.E.: As to "fixed program", no. The data was fed into the computer. Now I'm trying to remember on that first system how the data was entered.

S.F.: Punch cards? Magnetic tape?

A.E.: Now that I think about it, I think the data was manually keyed in by the operators. For a second generation system installed five years later for the network operation, punch paper tape was used.

A.E.: Well, yes, about 15 years to be exact. (time interval since graduation)

S.F.: Where did you work afterwards?

A.E.: Before we leave that first system, I should reflect on how slow and cumbersome the computer was. It was a magnetic drum memory, no core. Each instruction took a minimum of 220 microseconds, when "optimized" and some instructions took a whole drum revolution or 1/60 of a second. It was quite a trick to program it to keep up with one-second switching interval.

S.F.: Yow karamba!

A.E.: You said it. On to the next question. While still at CBS, I also developed systems for two other applications, one for video tape editing and the other for stage lighting control. Then I left CBS as an employee in 1970 for independent consulting.

S.F.: On what computer systems did you work as a programmer?

A.E.: That question I hadn't seen. The first was the TRW machine (two versions) which was a special machine language only for those machines, unrelated to any standard language. The next language I got into was DEC PDP-8 assembly language.

S.F.: PDP-8 was a 16-bit computer, right?

A.E.: No, as a matter of fact, it was 12-bit. Consequently, it could address directly only 4096 words in memory. By "field shifting" another four bits of addressing could added, so that the maximum RAM (then actually core) that could be addressed was 64K.

S.F.: Did the PDP-8 ran any operating system?

A.E.: No, not really. Very primitive by today's standards.

S.F.: OK. On what systems did you work afterwards?

A.E.: Now I'm a little cloudy as to the sequence. I did some consulting for both PBS and NBC. For PBS I took a step backward and did some programming for the Intel 4004, the first chip ever made to behave like a CPU. For an NBC project, I had to learn some other oddball language for some system they had. But I never in that era got into any languages such as most of the industry was using, like Fortran or Cobol.

Note: In later conversation with Mr. Ettlinger, upon refreshing his recollection, he believes the reference to the 4004 was a misstatement, and he should have said 8008.

S.F.: It was all in Assembly?

A.E.: Yes, never anything higher than assembly language through that entire period. The next language that I got into heavily for my own work was Z-80.

S.F.: What was Z-80 like? On what computers did it ran? Or at least you worked with it on.

By Googling I see it is a processor.

A.E.: You'd asked about the Z-80. Trying to remember what company made it. It was intended to be a super-8080 processor chip. That's what it was, a processor chip intended for dedicated applications. A few companies made mainframes, i. e. "minicomputer" size system using it.

But mainly it was intended for engineers to use in designing dedicated real-time systems.

S.F.: According to http://www.geocities.com/SiliconValley/Peaks/3938/z80_home.htm it's a property of Zilog.

A.E.: That's it, you found it. Zilog

S.F.: When did you work with it?

A.E.: Hmmm. I think sometime in the early 80's I started to work with it. This was a somewhat complicated story. I adopted it for the theatrical lighting control system -- now it's coming back to me. There was a bus system called the "STD" bus. A Company (don't recall if this was Zilog or another) manufactured a product line of frames and cards from which dedicated systems could be assembled.

S.F.: When did you start working on Personal Computers?

A.E.: Let's see now, that's a good question. We're moving into the 1980's. My last big endeavor was with a startup company based in LA which manufactured a system for editing video tape which was intended to be operated by editors who normally worked with film. This used the Z-80 processor. Sometime around 1982 +/- a couple of years, I bought one of the early, heavyweight laptops. You know, I can't recall just why I bought it.

S.F.: What OS did it ran? CP/M?

A.E.: That rings a bell. Yes, CP/M. Amazing what you forget when you don't think about it for a long time.

I guess CP/M was the first operating system I ever got acquainted with.

S.F.: What kind of projects did you do for PCs?

A.E.: Well, let's see. I think initially I may have just used PC's as programming platforms to write C code. As to writing C code to actually run on a PC, again I'm hazy on this, but it might have been Freecell-related. But I'm not sure about that.

No, Freecell came later. I remember now. The first project was AniMap.

A.E.: Thought you'd ask. I'd always had an interest in historical geography. A colleague at the startup happened to show me Windows Paintbrush, and I thought it was marvelous how one could draw on a computer screen. Immediately I saw a possibility for realizing a long-held dream. I like historical atlases that show sequences of maps of how things change through time (like political boundaries). I often had used to wish that I could look at a page and see a map change before my eyes. And now there was a way to do this on a computer screen. So my hobby became developing software, initially, to show an animated presentation of the territorial growth of the US.

S.F.: And how did it continue from there?

A.E.: After doing the US, another interest had been how each US state developed in terms of the growth of its county boundaries. So I thought I'd try Virginia, the most interesting state in that regard, did it, then did all 47 others of the contiguous states.

S.F.: Nice.

A.E.: At first this was just for my own amusement, then I started looking around to see if there might be a market. I stumbled across a fellow who had been marketing to genealogists paper copies of historic maps. I see you interjected a comment that you realize this is the genealogy product.

He and I got together and made a commercial product out of it which he sells. It's not a very high volume business; we've only sold about 4,000 copies over, let's see, about 8 years now.

S.F.: OK. Now how did you get involved in Freecell Pro?

A.E.: I had started playing Freecell myself, aiming to solve all 31,999 solvable games. Out of general interest, I met two people, Mike Keller and Wilson Callan.

S.F.: Did you meet them in real life?

A.E.: I've met Mike in person (later) but never Wilson. Come to think of it, Wilson lives here on Cape Cod, but some distance from where I'm at. After "refreshing my recollection", I met Wilson first and through him met Mike. Wilson was maintaining a website which I believe was the first site for Freecell enthusiasts, started by Dave Ring, who organized the first project to recruit volunteer solvers to manually solve all 32,000 original M/S Freecell hands. Wilson had taken over the maintenance of the site from Dave Ring. Mike had been one of Dave's volunteer solvers, and Wilson had been acquainted with him as a result.

S.F.: OK.

A.E.: Mike as you may know is a "gamesman". I. e., he lives, eats and breathes games, all kinds of them. When I visited his house, it was like one huge warehouse of games.

S.F.: Laughing out loud.

A.E.: Anyway, Mike on his website had a list of "hard hands", i. e. games reported by others as being very difficult to solve. I took this as a challenge and started, as a sideline, looking for solutions of "hard hands".

I think we have (or had) a description on Mike's website, or in the Help of FC-Pro, how it started. To recap. When one solves a hand using M/S standard freecell, it's often a problem remembering the path and recording it as to how one reached the solution.

So between Wilson and I, we started working on a scheme to monitor M/S Freecell to record moves. That was a nut we just couldn't crack. I decided the best way to be able to record moves would be just to write a program that one could use to play Freecell. That was the beginning of FC-Pro.

Initially, I made the display just alphanumeric. Didn't feel like figuring out how to display cards. That was more up Wilson's alley, and he figure out how to do that part, so he and I worked in collaboration.

S.F.: When was that roughly?

A.E.: Good question as to when. I might have to dig into some real old laptop (I never throw away a laptop or its hard drive contents) It was certainly before Window 95 came out. I believe I was using Windows 3.1 when I started on FC-Pro.

S.F.: So you collaborated over the Internet?

A.E.: Yes, exclusively. I still know Wilson only through Internet.

S.F.: What landmarks took place in the development of FC-Pro since then?

A.E.: I'd say the next major landmark was when Wilson and I got into solvers. There was a website which described how solvers got started. The very first effort was by someone who wrote a dedicated program solely to prove that - oh, oh, I used to know the number by heart, is it 12692 -- the one unsolvable hand that was really unsolvable. In those days I think that code had to run for 24 hours to finish the job.

S.F.: It's 11982.

Wow! 24 hours is a long time.

A.E.: Right, how could I forget that? I usually pride myself in never forgetting a number.

Then somewhere we heard about the Don Woods solver. His was the first general-purpose solver. Written in C to run under DOS.

S.F.: I think he wrote it on UNIX originally.

A.E.: Don was free in giving out his source. Wilson undertook the task of integrating it into FC-Pro. OK, UNIX, you may well know more of that history than I do. In order to integrate it, Wilson had to take some liberties to extract the move-by-move solution. We still really don't know if the liberties Wilson took destroyed the integrity of the solver algorithm itself. The problem is there are so very few unsolvable 4-freecell hands, and the Woods original DOS solver is very sensitive to the hand content, and effectively cannot reach a verdict on many hands, i. e., it bogs down to such a slow pace that you just can't wait for it to finish.

So we discovered on rare occasions we could get a false negative.

S.F.: Was there any other major developments in Freecell Pro?

A.E.: Yes, we can continue that narrative. I then took over after Wilson had done the initial adaptation of the Woods solver and began tinkering with it in different directions. I think the first thing I tried was permutations in column order. Frequently, on "long hands", i. e. hands which ran very long with no verdict, a permutation of column order would yield a very fast verdict (usually a solution, of course)

Then next I think I tried variations in the sequence in which various typed of moves were tried. That also could on occasion produce a much faster solution or verdict.

Then, one day, I mentioned what I was working on to a friend who is a real professional software guy (as is evident from my background, I'm just a self-taught semi-pro), and he told me about "Hashing".

So I undertook the introduction of a hash technique to the storage and lookup aspects of the Woods solver, and that gave us a substantial improvement in speed.

I'd say that pretty much summarizes the major milestones.

I should have mentioned that somewhere along the way we adapted it to solve with other than four freecells. Initially only downward to zero. Then, later, upward, first to 7 then later to 9.

S.F.: What was your greatest surprise during your life as a developer?

A.E.: Hmm, that's hard to answer. Question of what realms we're talking about. Those very weird "impossible" bugs you hit now and then are one thing.

S.F.: Can you recall a single event that involved some other person?

A.E.: The funniest thing that ever happened was some kind of bug in a PDP-8 program. It caused the display to show rapidly changing garbage at a slower and slower pace, filling up gradually less and less of the screen at a slower and slower pace, and then at the end before it crashed, it rang the teletype bell. Very comical.

S.F.: Laughing

What was the problem?

A.E.: Involving another person. While I was at CBS, there were a few encounter with management people who couldn't understand and refused to try to understand the nature of programming.

The problem on that bug was never really identified. No doubt just a maverick instruction somewhere address memory in the code area, no doubt.

S.F.: What was your greatest surprise when working on Freecell Pro?

A.E.: One interesting milestone in my "career" was working with Wilson. For my entire career, I'd been a "lone wolf", with no one else knowing anything about my code, or ever looking at it. With Wilson was my first, and still only, experience actually collaborating with someone else on a body of code.

I think on FC-Pro, my greatest surprise was being able to successfully implement the hash system and seeing how well it worked. I suppose it was also a surprise when I discovered the percentage of solvable hands with less than four freecells. Another point I might mention - an insight which came to me as a surprise, and which I had to instantly agree with. Mike Keller once said to me that in his opinion, Freecell is not a "game", but rather a "puzzle". And I had to agree. Any solvable Freecell hand is really no more or less than a logic puzzle.

S.F.: What projects are you maintaining or involved in now?

A.E.: I'm doing now mainly some things related to railroad history. The maintenance work on AniMap has now become very light.

S.F.: FC-Pro was released as free software about a year ago. What convinced you to release it as free software?

A.E.: I think the main reason for that is something we didn't get into yet. The incorporation of your solver and Tom Holroyd's into the "Solver Evaluation" version of FcPro. It was necessary to make it open source for that purpose.

However, note that FcPro was always "Free" as regards the application itself. What was new recently was making it open source.

S.F.: Actually, Free software is a synonym for Open Source Software.

A.E.: Oh, OK. Then is there any term for software that's closed source, but the application is given away for free?

S.F.: Free as in Free Speech and not as in Free Beer. The correct term for such software is "Freeware".

A.E.: Ah, OK

S.F.: Anyway, my solver is public domain and so does not require its embedding application to be open source as well. And Tom Holroyd agreed to exempt FC-Pro from the GPL restrictions.

A.E.: I didn't think Tom had done that. Doesn't really matter, I'd say we're OK now.

S.F.: OK. Why have you chosen the GNU General Public License (GPL) for it?

A.E.: I didn't really have much patience for studying the nuances of various licenses. I think that was the first one I learned about. Either from Tom or from you. I guess Tom.

S.F.: What features would you like to see added to Freecell Pro in the future?

A.E.: Well, I have to say that I may now be permanently "burned out" on FcPro. I wish someone would pick it up and take over, but there don't seem to be any people out there so motivated. Everyone wants to write his own code.

S.F.: Whatever happened to Wilson Callan? Did you keep in touch with him?

A.E.: I haven't had any contact with Wilson in quite a while. Maybe a year or two. He's a young guy, so I assume he must still be around. Shall we try to make contact with him?

S.F.: OK. CC me on the message.

S.F.: Linus Torvalds once said that 99% of the programmers consider themselves in the top 1%. Where do you consider yourself?

A.E.: What? 99% of programmers are that arrogant? I have to differ from Linus. I think he probably said that with tongue in cheek.

S.F.: I think he was exaggerating on purpose.

A.E.: No doubt. I think I'm pretty good as regards "native ability" but because of my lack of formal training, I'd be nowhere near the top 1% overall. I have excelled in the past in writing tight code that would run very fast in memory-poor and speed-limited environments. But even in that specialty, don't think I'd claim top 1%. Maybe top 5%,

I'm reminded of a book which came out a few decades ago entitled "The Mythical Man Month". It was a very well-written description of what the world of software, in its most professional sense, is all about. It describes the ideal programming environment as one in which all code is reviewed by other people, and a genuine team approach is taken. It's very convincing that for a mass-marketed software product, this approach is absolutely essential. But I've never worked in such an environment, and my documentation habits are very poor. So by some people's standards, I'd rank in the lowest 5% of programmers.

S.F.: Is there any particular process you follow when you code?

A.E.: Well, yes, and this might be controversial. I prefer an iterative approach, i. e., write a very minimal amount then see it work. Some people say one should specify a project down to the last detail and then program it all at once. Everything I've worked on has been of a nature that you had to see part of it working before you could spec the rest of it.

I think that's because I've always done things no one else did before, so couldn't anticipate what the final product should look like until I saw it begin to work.

S.F.: Considering your age, do you believe there are any advantages to programmers of your age over younger programmers?

A.E.: I don't think there are very many active programmers my age. We could probably start with programmer as young as 20 years my junior.

I'm not sure what advantage a more experienced programmer has. Sometimes I feel the rigorous methods taught to younger programmers are in the long run slower than a "seat of the pants" approach, but it depends so much on the skill of the programmer. Maybe what I'm saying is that it probably just wouldn't be valid to try to generalize on that question.

S.F.: What are your favourite Solitaire variants besides Freecell?

A.E.: I hate to admit it, but I've moved to playing Hearts competitively with the M/S game. I track how often I finish 1st to 4th, and more or less consistently can play better than the computer.

S.F.: Well, hearts is not exactly a Solitaire game. It's a multi-player game. Are you familiar with any other Solitaire games?

A.E.: That's true. I make a solitaire game out it by competing with the computer. As for your question, except for the classical Klondike, not much. I have played briefly with some others, but don't recall their names.

S.F.: Are there any other computer games you like?

A.E.: I don't like to advertise this particularly, but I've been playing the Windows XP pinball. I used to play computer golf, and thinking I might like to buy a new version. I've also dabbled with Flight Simulator. I also had a period when I spent a lot of time playing Tetris and a variation called Super-Tetris

S.F.: If you like Pinball, there's a retail "Microsoft Pinball" version which is very nice.

A.E.: Might consider that.

A.E.: Well, yes, about the solvers. There seems still to be certain deals that are "intractable" by any of the three solvers. I'd like to see more investigation of that. I think solvers is still a territory on which much more development could be done.

S.F.: Give one of your favourite quotes.

A.E.: "Those who do not study history are condemned not to know what has happened".

S.F.: Nice.

A.E.: No. 2 What is the definition of "time"? Time is nature's way of preventing everything from happening all at once.

S.F.: Nice as well.

S.F.: Freecell Pro is a Windows program and the originators of the solvers it uses (Don Woods, Tom Holroyd and I) came from the UNIX world. Was there any kind of culture clash?

A.E.: I suppose I really don't have that much of a feel for what the UNIX culture really is to be able to make a judgment. Sorry.

S.F.: Have you ever tried Linux? If not, would you like to give it a try?

A.E.: Never tried it. As to whether I'll ever find the motivation too, very hard to say. I'd only try it if it appeared to be the best means to an end that meant a lot to me.

S.F.: These were all my questions.

A.E.: OK, so long for now.