Sunday, December 18, 2011
Humbug
So instead of working all day on Solitaire Till Dawn, today I took some time in the afternoon and played a game with the family.
I know. I'm sorry. I should have been working. It's just that I'm getting really tired of those same three ghosts showing up, every Christmas Eve, year after year, and yelling at me about the whole work ethic thing.
It's not just that they're strident. ("Listen unto me! Comest thou with me! Lookest thou over there!" Hoo, boy.) But in recent years they've been getting more than a little bit whiney, if you want the truth. Not to mention the increasingly obvious air of desperation.
So this year I thought I'd throw them a bone, see if maybe they'll cut me some slack. It would be nice to get some sleep on Christmas Eve, for once.
You might want to do likewise: go play something that's for more than one player. Some day those guys are just going to flat give up on me as a bad job, and then they might be after you next. I'm just sayin'.
Anyway, I've gotta get back to work now. Happy holidays to you and yours!
I know. I'm sorry. I should have been working. It's just that I'm getting really tired of those same three ghosts showing up, every Christmas Eve, year after year, and yelling at me about the whole work ethic thing.
It's not just that they're strident. ("Listen unto me! Comest thou with me! Lookest thou over there!" Hoo, boy.) But in recent years they've been getting more than a little bit whiney, if you want the truth. Not to mention the increasingly obvious air of desperation.
So this year I thought I'd throw them a bone, see if maybe they'll cut me some slack. It would be nice to get some sleep on Christmas Eve, for once.
You might want to do likewise: go play something that's for more than one player. Some day those guys are just going to flat give up on me as a bad job, and then they might be after you next. I'm just sayin'.
Anyway, I've gotta get back to work now. Happy holidays to you and yours!
Labels:
Christmas,
ghosts,
humbug,
Solitaire Till Dawn,
work
Saturday, December 3, 2011
That's the Sound of the Men...
I see it's been a while since I've posted anything other than the little updates in the box to the right. That's because I generally save these larger posts for larger subjects or events, and lately there's been nothing of that nature to share. But I also know that Solitaire Till Dawn's amazing legion of fans can get antsy if they don't hear something new once in a while about the progress of the project, and I don't want to leave everyone hanging. This is just a little update post to reassure you all that I haven't forgotten about you.
And the news is just this: It's not done yet. I don't know when it will be done. But I am still working on it, as hard as I can given my other responsibilities.
The work I've been doing doesn't lend itself to quick descriptions for the non-programming public, and if I took the time to try to explain, it would be time taken from actually working on the upgrade. I hope you'll accept instead my assurance that I've made some good strides forward lately. I completed a major architecture change recently that brought a great improvement in the program's behavior, and I tracked down and slew a couple of nasty but well-hidden bugs just the other day.
I know it's been a long wait, and no one (certainly not me!) will be happy as the wait grows longer. But I appreciate your patience, and I'll keep at it.
And the news is just this: It's not done yet. I don't know when it will be done. But I am still working on it, as hard as I can given my other responsibilities.
The work I've been doing doesn't lend itself to quick descriptions for the non-programming public, and if I took the time to try to explain, it would be time taken from actually working on the upgrade. I hope you'll accept instead my assurance that I've made some good strides forward lately. I completed a major architecture change recently that brought a great improvement in the program's behavior, and I tracked down and slew a couple of nasty but well-hidden bugs just the other day.
I know it's been a long wait, and no one (certainly not me!) will be happy as the wait grows longer. But I appreciate your patience, and I'll keep at it.
Labels:
software development,
solitaire,
Solitaire Till Dawn
Wednesday, October 5, 2011
Steve Jobs 1955 - 2011
Steve Jobs is gone.
I never met Mr. Jobs. Although I worked for Apple (and its spin-off, Taligent) for over ten years, I was there during John Sculley's reign and later, Gil Amelio's. Jobs hired Sculley away from Pepsi after taking him for a walk in the Stanford hills, and asking him a now-legendary question: "Do you want to sell sugar water for the rest of your life or come with me and change the world?"
But it was always Steve Jobs who changed the world. Like many others, I learned of his death today using a device that would not have existed without him. A few months back I went on a road trip with one of my sons, to visit and tour my alma mater UCLA. I took my iPhone, and on that three-day trip it served as a map, a navigator, a traffic reporter, the yellow pages, a restaurant critic, a tour guide, an email client, an encyclopedia, a newspaper, a camera, a publisher, a UCLA course catalog... oh yeah, and a phone. There would be smart phones today without Steve Jobs, but there wouldn't be iPhones: the one that all the others are trying to imitate and improve upon.
I've been an Apple fan since about 1986: my first computer was a Mac Plus, at the enthusiastic recommendation of a friend. I have not been without a Mac computer since then: 25 years now. I should own one of those T-shirts that say "I was an Apple fan when Apple was doomed." (I don't, only because I don't wear T-shirts: they don't have a pocket for my glasses.) Followers of this blog know that I have been selling Solitaire Till Dawn for Macintosh computers for over 20 of those years. The smooth Mac interface with its marvelous attention to detail was the inspiration for the attention to detail I've tried to put into Solitaire Till Dawn, and the continuing popularity of the Mac (even through the darker years) kept it selling, and helped my family get along with only one parent working, freeing Helen to stay home and raise the kids.
One of the downsides to aging, I've found, is the number of times I find myself mourning somebody I never met, somebody who made the world a better place. I remember hearing of the deaths of Louis Armstrong, Walt Kelly, Jim Henson, Isaac Asimov, and many other great creators; and now, Steve Jobs.
Thank you, Steve. I wish you could have stayed longer.
I never met Mr. Jobs. Although I worked for Apple (and its spin-off, Taligent) for over ten years, I was there during John Sculley's reign and later, Gil Amelio's. Jobs hired Sculley away from Pepsi after taking him for a walk in the Stanford hills, and asking him a now-legendary question: "Do you want to sell sugar water for the rest of your life or come with me and change the world?"
But it was always Steve Jobs who changed the world. Like many others, I learned of his death today using a device that would not have existed without him. A few months back I went on a road trip with one of my sons, to visit and tour my alma mater UCLA. I took my iPhone, and on that three-day trip it served as a map, a navigator, a traffic reporter, the yellow pages, a restaurant critic, a tour guide, an email client, an encyclopedia, a newspaper, a camera, a publisher, a UCLA course catalog... oh yeah, and a phone. There would be smart phones today without Steve Jobs, but there wouldn't be iPhones: the one that all the others are trying to imitate and improve upon.
I've been an Apple fan since about 1986: my first computer was a Mac Plus, at the enthusiastic recommendation of a friend. I have not been without a Mac computer since then: 25 years now. I should own one of those T-shirts that say "I was an Apple fan when Apple was doomed." (I don't, only because I don't wear T-shirts: they don't have a pocket for my glasses.) Followers of this blog know that I have been selling Solitaire Till Dawn for Macintosh computers for over 20 of those years. The smooth Mac interface with its marvelous attention to detail was the inspiration for the attention to detail I've tried to put into Solitaire Till Dawn, and the continuing popularity of the Mac (even through the darker years) kept it selling, and helped my family get along with only one parent working, freeing Helen to stay home and raise the kids.
One of the downsides to aging, I've found, is the number of times I find myself mourning somebody I never met, somebody who made the world a better place. I remember hearing of the deaths of Louis Armstrong, Walt Kelly, Jim Henson, Isaac Asimov, and many other great creators; and now, Steve Jobs.
Thank you, Steve. I wish you could have stayed longer.
Labels:
apple,
iPhone,
Solitaire Till Dawn,
steve jobs
Monday, September 26, 2011
A Little UI Work
I see it's been over a month since my last post, so I thought I'd put something out to show that I haven't been idle. I've been doing user interface (UI) programming, and I have something new to show.
Solitaire Till Dawn offers 100 different kinds of solitaire. That makes a bit of a problem: how to present 100 different games to users in a way that makes it easy to find the games they know, yet also easy to find new games they might like. In the pre-Lion version, your "Favorites" are listed in a popup menu in the toolbar, and you only have to select one to start a game. To see all 100 games, you would select "Choose from All Games..." from the same menu, and that would open the Game Chooser window, which was a rather complicated affair.
I've learned that a lot of users didn't realize that "Choose from All Games..." was an option rather than just a label, and I'd get emails asking me where all the other games were hiding. So in this new version, I'm trying to make that more obvious. Here's a screen shot showing part of the left edge of the game window.
There on the edge, you can see three tabs labeled "My Favorites", "All Games", and "Goodies". These tabs are always visible, but usually take up just that small amount of space on the side. It should be obvious (I hope!) that you can click them to get something interesting to happen.
If you click any of the buttons, a "drawer" will slide out from the left edge. The next image shows what you might see after clicking the "My Favorites" button.
You can see a list of 16 games, which are the ones selected as your favorites out of the full list of 100 games. This is what you'd use to select a game you already know you like.
You can select a game by clicking with the mouse, or by typing the first few letters of its name. If you double-click your selection, or press Enter or Return, a game of your selected kind will start immediately.
Now here's what you get if you click the "All Games" tab: the full list of games, scrollable of course. You can select games and start playing in exactly the same way as in the "Favorites" list.
In this image, you can see that "Baker's Game" has been selected, and this reveals another new feature: the small green i-in-a-circle that appears by the selected game. In the image below, you can see the Game Info panel that appears when you click the green i.
The Game Info panel shows full information about the selected game, everything but the actual rules; and you can see the rules by clicking the "Show Rules" button near the top-center.
Solitaire Till Dawn offers 100 different kinds of solitaire. That makes a bit of a problem: how to present 100 different games to users in a way that makes it easy to find the games they know, yet also easy to find new games they might like. In the pre-Lion version, your "Favorites" are listed in a popup menu in the toolbar, and you only have to select one to start a game. To see all 100 games, you would select "Choose from All Games..." from the same menu, and that would open the Game Chooser window, which was a rather complicated affair.
![]() |
| The left edge of the window |
I've learned that a lot of users didn't realize that "Choose from All Games..." was an option rather than just a label, and I'd get emails asking me where all the other games were hiding. So in this new version, I'm trying to make that more obvious. Here's a screen shot showing part of the left edge of the game window.
There on the edge, you can see three tabs labeled "My Favorites", "All Games", and "Goodies". These tabs are always visible, but usually take up just that small amount of space on the side. It should be obvious (I hope!) that you can click them to get something interesting to happen.
If you click any of the buttons, a "drawer" will slide out from the left edge. The next image shows what you might see after clicking the "My Favorites" button.
![]() |
| The drawer is open |
You can see a list of 16 games, which are the ones selected as your favorites out of the full list of 100 games. This is what you'd use to select a game you already know you like.
You can select a game by clicking with the mouse, or by typing the first few letters of its name. If you double-click your selection, or press Enter or Return, a game of your selected kind will start immediately.
![]() |
| The All Games list, with a game selected |
Now here's what you get if you click the "All Games" tab: the full list of games, scrollable of course. You can select games and start playing in exactly the same way as in the "Favorites" list.
In this image, you can see that "Baker's Game" has been selected, and this reveals another new feature: the small green i-in-a-circle that appears by the selected game. In the image below, you can see the Game Info panel that appears when you click the green i.
![]() |
| The Game Info panel |
If you change your selected game, the Game Info window will move to match your selection, and show you info about the newly-selected game.
Finally, you can dismiss the Game Info window by clicking the small x in the upper-left corner (I'll probably change that to actually say "Close this window"). The whole business including the drawer will disappear back into the left edge if you click the highlighted tab, or click anywhere outside the panel and the drawer.
This isn't final
I'm sure there'll be changes before this ships. For one, there's nothing in the "Goodies" tab yet, and I'm not sure what might go there; it might vanish altogether.
Here's a change I'm thinking about right now: I may get rid of the little green i and instead just have the Game Info panel appear whenever you select a game. That's because I'm worried that some people won't realize the green i can be clicked, and they will miss ever seeing the Game Info window. On the other hand, if you know what game you want, you won't need to see that panel, and it would be annoying to have it flash into existence and then instantly disappearing as your new game starts. Perhaps it should appear only after a brief delay?
I'm not sure yet. What do you think?
Sunday, August 14, 2011
Solitaire Till Dawn Update
I get mail—lots of mail—asking me about Solitaire Till Dawn and Lion. Some people seem to be worried that I don't know that the current release won't run under Lion.
Really, I know. Really. I know!! And I continue to work on a Lion version, when and as I can.
There are kind of two parts to getting it done. The first and hardest part is rewriting what I call the "solitaire engine" and updating the screen-drawing and animation code. This is rocket science, of a sort. The engine is complex (which is why Solitaire Till Dawn can present so many and such varied games), while animation is an exercise in concurrent programming. If you don't know what that is, never mind: just trust me that it's hard to get it right.
Today I hit a milestone: the engine and the animation are now working correctly. That's not to say that there isn't more work to do on them; but the really important fundamental stuff is done. (I will now pause, so that those of you who are so inclined may cheer.)
This means that I can now begin working on application stuff: buttons, controls, prefs window, saving and resuming games, and all the bells and whistles to be found in the menus and toolbar. This stuff is generally easier to do, but there's a lot of it to get through. I will be leaving some of the old features out of the first release, just so I can release a little sooner and get you something that will run under Lion and get you your solitaire fix. Any missing features will likely be added back in later, in updates.
There is still a lot to do, and I still don't know when it will be done. But take heart: I am working on it, I am making progress!
(And yes... I know the current version doesn't run under Lion!)
Really, I know. Really. I know!! And I continue to work on a Lion version, when and as I can.
There are kind of two parts to getting it done. The first and hardest part is rewriting what I call the "solitaire engine" and updating the screen-drawing and animation code. This is rocket science, of a sort. The engine is complex (which is why Solitaire Till Dawn can present so many and such varied games), while animation is an exercise in concurrent programming. If you don't know what that is, never mind: just trust me that it's hard to get it right.
Today I hit a milestone: the engine and the animation are now working correctly. That's not to say that there isn't more work to do on them; but the really important fundamental stuff is done. (I will now pause, so that those of you who are so inclined may cheer.)
This means that I can now begin working on application stuff: buttons, controls, prefs window, saving and resuming games, and all the bells and whistles to be found in the menus and toolbar. This stuff is generally easier to do, but there's a lot of it to get through. I will be leaving some of the old features out of the first release, just so I can release a little sooner and get you something that will run under Lion and get you your solitaire fix. Any missing features will likely be added back in later, in updates.
There is still a lot to do, and I still don't know when it will be done. But take heart: I am working on it, I am making progress!
(And yes... I know the current version doesn't run under Lion!)
Friday, June 3, 2011
Continental Rottweiler at Kublacon 2011
Helen and I were at Kublacon this Memorial Day weekend, as we have been every year for the past several. It wasn't as good a trip for me this year; I was too tired and sleep-deprived before the con even started. But there were a few high points anyway.
Continental Railways of the World
The highest point for me was certainly the four-and-a-half-hour, five-player Continental Railways of the World session that I hosted on Sunday morning. This playtest was very successful in several ways. First off, everybody seemed to have a good time! The game didn't bog down, and was competitive for its entire duration.
The Income Trough
I've been worried about a phenomenon we've been calling the "income trough". As RotW players will know, your income in the game is tied to your score. For most of a normal, one-board game, income rises as your score rises; but then income first tops out, then actually declines as your score continues to rise. In normal games this isn't much of an issue because by the time it happens, you've usually built most of the track you intend to build, and you don't need much money any more. But in the Continental game, you can find your net income dropping to near, or even below, zero just when the West opens up and you suddenly need to build a lot of track as everyone races west! A player who "bottoms out" at this moment can be seriously handicapped, and as a result will have no fun for the next two hours while he sits hopelessly in last place, cash-strapped and in debt, waiting for the game to end.
It would be easy to shrug this off and say "well, Player Red, you should have planned ahead." But I'd rather find a solution that allows such a player to take a less fatal hit, while still rewarding the players that did plan their income curve more successfully. I've had a couple of mechanisms in place for this, but they needed tuning. In this session, I think we finally had it tuned about right. Every player has a financial choice to make at the moment the West opens up; in the past, that "choice" has been a no-brainer. In this session, every player had to think it over, and they didn't all choose the same way. Furthermore, I was the player who was mired in the income trough, and sure enough I didn't win; but I was at least able to survive and progress. I think it worked out pretty well.
Paths to Victory
The winning player built a nearly coast-to-coast network, and one of the largest on the board. This was gratifying to me, simply because I love to see that kind of layout. But the same player won an earlier session by staying close to the Eastern board, with only a small extension across to the Western board. I'm pleased to see that there's no single approach to winning the Continental game.
Rail Baron Cards
Another measure of success for playtests is whether you learned anything new. I think I did. I was a bit shocked at the huge effect that the Rail Baron cards had for the more successful players. They were real game-changers.
I had "scaled up" the bonuses that these cards grant. In a normal game, they're worth (very roughly) 10% of your final score. Because final scores in the Continental game tend to be at least double a typical normal score, I made the Continental Baron bonuses much larger to match. But having seen them in action, I'm inclined to think that this was a mistake. Although the final scores were much larger than in a normal game, the differences between the winning player's score and his nearest competitors were not so much larger. The Baron Cards were overwhelming those differences, more than I think they should.
I plan to sit down soon and re-think those bonuses. I will likely tone them down to something in between their current values and those in a normal game. In addition, I'm tempted to look into making them incremental: instead of getting a single big all-or-nothing bonus, you'd be able to claim a partial bonus for achieving a portion of the goal. This sort of bonus already exists, for example in the Eastern U.S. Rail Baron card that awards 2 points for every connection you own into Chicago. Your bonus from that card can be 0, 2, 4, 6, or 8 points. I may not be able to come up with a full set of such incremental bonuses, but I'll see what I can do.
Continental Railways of the World
The highest point for me was certainly the four-and-a-half-hour, five-player Continental Railways of the World session that I hosted on Sunday morning. This playtest was very successful in several ways. First off, everybody seemed to have a good time! The game didn't bog down, and was competitive for its entire duration.
The Income Trough
I've been worried about a phenomenon we've been calling the "income trough". As RotW players will know, your income in the game is tied to your score. For most of a normal, one-board game, income rises as your score rises; but then income first tops out, then actually declines as your score continues to rise. In normal games this isn't much of an issue because by the time it happens, you've usually built most of the track you intend to build, and you don't need much money any more. But in the Continental game, you can find your net income dropping to near, or even below, zero just when the West opens up and you suddenly need to build a lot of track as everyone races west! A player who "bottoms out" at this moment can be seriously handicapped, and as a result will have no fun for the next two hours while he sits hopelessly in last place, cash-strapped and in debt, waiting for the game to end.
It would be easy to shrug this off and say "well, Player Red, you should have planned ahead." But I'd rather find a solution that allows such a player to take a less fatal hit, while still rewarding the players that did plan their income curve more successfully. I've had a couple of mechanisms in place for this, but they needed tuning. In this session, I think we finally had it tuned about right. Every player has a financial choice to make at the moment the West opens up; in the past, that "choice" has been a no-brainer. In this session, every player had to think it over, and they didn't all choose the same way. Furthermore, I was the player who was mired in the income trough, and sure enough I didn't win; but I was at least able to survive and progress. I think it worked out pretty well.
Paths to Victory
The winning player built a nearly coast-to-coast network, and one of the largest on the board. This was gratifying to me, simply because I love to see that kind of layout. But the same player won an earlier session by staying close to the Eastern board, with only a small extension across to the Western board. I'm pleased to see that there's no single approach to winning the Continental game.
Rail Baron Cards
Another measure of success for playtests is whether you learned anything new. I think I did. I was a bit shocked at the huge effect that the Rail Baron cards had for the more successful players. They were real game-changers.
I had "scaled up" the bonuses that these cards grant. In a normal game, they're worth (very roughly) 10% of your final score. Because final scores in the Continental game tend to be at least double a typical normal score, I made the Continental Baron bonuses much larger to match. But having seen them in action, I'm inclined to think that this was a mistake. Although the final scores were much larger than in a normal game, the differences between the winning player's score and his nearest competitors were not so much larger. The Baron Cards were overwhelming those differences, more than I think they should.
I plan to sit down soon and re-think those bonuses. I will likely tone them down to something in between their current values and those in a normal game. In addition, I'm tempted to look into making them incremental: instead of getting a single big all-or-nothing bonus, you'd be able to claim a partial bonus for achieving a portion of the goal. This sort of bonus already exists, for example in the Eastern U.S. Rail Baron card that awards 2 points for every connection you own into Chicago. Your bonus from that card can be 0, 2, 4, 6, or 8 points. I may not be able to come up with a full set of such incremental bonuses, but I'll see what I can do.
Monday, May 23, 2011
The Cannonball Express: Now with more Express!
Correction: In writing this post, I used my own article (quoted below) as source material. Re-reading this post a few weeks later, I realized that I'd made a historical error in that article, and perpetuated it in this post. I programmed the Cray in 1989, ten years before writing the article, and not twenty years earlier in 1979. I've corrected the post.
Twelve years ago, in 1999, I wrote an article for TidBITS called Power Macintosh G3: The Cannonball Express. It was a discussion of speed in computers, and how software and hardware factors contributed to the simple-sounding notion of "speed". Part of it was a (highly unscientific!) comparison between the speed of the new-in-1999 Power Macintosh G3, and a Cray Y-MP supercomputer that I'd had a chance to program some ten years earlier, circa 1989.
You can read the article if you like—it's not too long, and it's written for the non-technical reader (and the puzzle is fun, too). Or you can get a quick summary by reading the next couple of paragraphs here:
Twelve years after that—that is, a few days ago—I remembered the article. Piper's source code was made available with the article. After a brief search occasioned by a stale download link, I found the source, downloaded it, tweaked it a bit for a modern compiler, and ran it on my 2.8 GHz, dual processor Quad-Core Intel Xeon Macintosh tower. The results: on this hardware, Piper solved "woodchuck" in 14 seconds flat, taking 9 seconds to find the best solution and then running another 5 seconds to ensure that no better solution exists.
Nine seconds. Wow.
A word about Solitaire Till Dawn
I continue to get comments and mail, urging me to work hard on a Lion-compatible version of Solitaire Till Dawn. I assure you all, I am working hard, and making good progress. You can keep an eye on that progress by visiting this blog and checking the SOLITAIRE TILL DAWN update box in the upper-right corner of the page. I post updates there two or three times a week, usually. And as always, thanks for your support, your interest, and your patience while I get this done!
Twelve years ago, in 1999, I wrote an article for TidBITS called Power Macintosh G3: The Cannonball Express. It was a discussion of speed in computers, and how software and hardware factors contributed to the simple-sounding notion of "speed". Part of it was a (highly unscientific!) comparison between the speed of the new-in-1999 Power Macintosh G3, and a Cray Y-MP supercomputer that I'd had a chance to program some ten years earlier, circa 1989.
You can read the article if you like—it's not too long, and it's written for the non-technical reader (and the puzzle is fun, too). Or you can get a quick summary by reading the next couple of paragraphs here:
The highly unscientific comparison was a puzzle-solving problem I'd written, called "Piper". The article discussed the evolution of Piper and the techniques I'd applied to try to make it run faster. There was a particular puzzle called "woodchuck" that I wanted to solve, because for years it had proven to be too big a problem for Piper to handle in any reasonable time period. The Cray, a $15,000,000 room-filling monster that was one of the fastest computers in the world at the time, finally solved it in a 20-hour run.
Ten years later, I tried running Piper again on the latest-and-greatest Macintosh tower, and it blew away the Cray by solving "woodchuck" in under two minutes!
Twelve years after that—that is, a few days ago—I remembered the article. Piper's source code was made available with the article. After a brief search occasioned by a stale download link, I found the source, downloaded it, tweaked it a bit for a modern compiler, and ran it on my 2.8 GHz, dual processor Quad-Core Intel Xeon Macintosh tower. The results: on this hardware, Piper solved "woodchuck" in 14 seconds flat, taking 9 seconds to find the best solution and then running another 5 seconds to ensure that no better solution exists.
Nine seconds. Wow.
A word about Solitaire Till Dawn
I continue to get comments and mail, urging me to work hard on a Lion-compatible version of Solitaire Till Dawn. I assure you all, I am working hard, and making good progress. You can keep an eye on that progress by visiting this blog and checking the SOLITAIRE TILL DAWN update box in the upper-right corner of the page. I post updates there two or three times a week, usually. And as always, thanks for your support, your interest, and your patience while I get this done!
Subscribe to:
Posts (Atom)




