Sunday, February 26, 2012

Gettin' Stuff Done

Nope, Solitaire Till Dawn is not done yet. But I have made a lot of progress in the last few weeks. Here's a rundown:

Buttons are now fully implemented and working. These are the buttons that actually appear in the play area. They implement some special functionality that can't be triggered by the usual click-and-drag stuff. Most games don't have or need buttons, but Accordion has a "Deal All" button, Pyramid has a "Discard Pair" button, and Puss in Corner has a "Redeal" button.

Partial decks are implemented, needed by games like The Wish that don't (ahem) play with a full deck.

Tight fans, for games like Thirteens and The Wish. Also "anchored" fans: never mind why I call them that, but these make Fortress and its variations playable.

The deck now shows correct numbers: usually the number of cards remaining in the deck, but for some games it shows the number of deals remaining.

The displays and messages in the status bar are more complete and correct.

Keyboard focus is better-behaved, so you don't have to click in the Games Drawer or in the play area in order to use keyboard shortcuts.

The behavior of the available-card-highlighting feature is much improved (still need some work on the graphics, though). The find-card feature (press '5' to highlight all the visible fives, or '5s' to highlight all the visible fives of Spades) is also working now.

And lots of little things I won't bother to list individually: stuff I've implemented and/or fixed in the solitaire engine itself.

I've completed an initial test of all 100 games now. 87 of them seem to be working, while the other 13 still have some issues to be worked out.

What am I doing now?
This week I'm working on supporting different card sizes. Up till now, I've only been using the "normal" size. The game needs to allow selecting card size from a menu, and changing card size to match the window when you change the window's size. This is perhaps half done.


What's Left?
Lots of stuff, I'm afraid. A partial list:

  • Several important toolbar buttons, including the Autoplay features and Magnetic Mouse.
  • The built-in Help and the game rules display.
  • A number of the preference settings and their implementations.
  • Sound effects.
  • A number of graphics effects.
  • Score and statistics keeping, and display.
  • New artwork.
  • Separate scores and preferences for different players on the same machine.

And there's more; those are just some of the highlights.

I will not be implementing every single feature for the first release. Some of the old version's features will have to wait. I'll get all the really important ones in, and then add the rest over time, in free upgrades.

There you go: that's the status. I'm working hard; I want this out the door as badly as some of you want it in your hands. We'll get there!

Sunday, February 5, 2012

Alive and Well

I got an email recently from a fan who was worried because I hadn't posted anything about Solitaire Till Dawn for a while. I did warn y'all that it would take some time! And that's still true, unfortunately. But I am still working on it.

I haven't posted because I got stalled for a while. Part of that was just the holidays: traveling, visiting family, and doing Christmas stuff. Part of it was the sad loss of our old and well-loved family cat Freddy, and the subsequent addition of a young mom-cat and two kittens to our household. The new kitties are all sweeties, but they kind of turned the place upside-down for a while.

But the biggest delay was that I got stuck on a nasty bug, something I had to fix before I could move on. There was no progress to report: I've spent the last two or three weeks banging my forehead against my monitor, trying to figure out what was causing the bug and how to fix it. I finally nailed it today, or so I hope. Without going into mind-numbing detail, I'll just say that it was a multi-threading concurrency problem triggered by an intermittent race condition.

That sort of thing can be very difficult to track down, for two reasons. First, it's not trivially repeatable: it depends on subtle timing issues, and you might work the program for quite a while before seeing it happen. It's like that funny noise your car makes whenever you drive it, but never when it's in the shop. And that's why I had to say "I hope" above. I played hours of solitaire today after installing my fix and didn't see the bug again. So I think I got it, but it's still possible that it's just being coy and will re-surface later on.

The second reason it's difficult is that this is a class of problem that a friend of mine calls a "Heisenbug", because any attempt to debug it can make it change behavior or vanish altogether (only to reappear when you stop debugging, of course). But I have to admit that in this case, my problem was the opposite: nothing I tried seemed to affect the bug, until today.

But I got it. (I think.) And that means that I've now tested all the games alphabetically up through Manx. So that's progress, right?


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!

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.

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.

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.

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
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.

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!)