I couldn't let today's Wondermark comic pass without notice! Click the link to see it.
My thanks to the author David Malki for producing Wondermark; followers of my personal blog know how fond I am of the funnies, and his is a good one. I recommend it, even if it isn't usually quite so relevant to my daily life!
(For those of you who don't recognize the name Charles Babbage or the term "difference engine", Wikipedia is your friend: http://en.wikipedia.org/wiki/Difference_engine.)
And since I know that most of you watch this space for news of Solitaire Till Dawn, here's a small update for you: I'm still working on it of course, and progress is being made daily, but I've been set back a bit by a couple of recent software issues that I'm still working through. I may post details at some point, but right now I'm in the middle of the work and don't want to interrupt it to write a longer post than this.
Tuesday, July 30, 2013
Friday, July 5, 2013
CSS, pronounced "cuss"
I am currently spending most of my time writing the Help Book, the built-in manual for how to use Solitaire Till Dawn.
Help Books are a collection of pages, all written (like a Web page) in HTML. Apple's Help Viewer is basically a sort of customized Web browser. Pages written for a Help Book can also be viewed in any handy Web browser, and in fact that's handy for debugging.
The Help Book for the last version of Solitaire Till Dawn was mostly written in 2000, a good 13 years ago now. I wrote very simple HTML for those pages. Since then new standards have emerged, so I'm trying to write proper, modern HTML for the new version's Help Book. And this means using CSS.
For those not familiar, CSS ("cascading style sheets") is a way to separate the layout and styling of web pages from the actual text and images. You write a CSS file that defines layouts and styles, and then you write any number of Web (or Help Book) pages that link to that single CSS file. This means that all of those pages share the same layout and styles, and it also means that you can change the layout and styles for all those pages by editing the single CSS file, instead of having to edit all the separate Web pages.
That's a great thing, and it's the reason I'm using CSS for this release. It's really the right way to go. But there is a dark side to the force that is CSS: doing simple things is simple, but anything very fancy can be difficult to figure out and debug. An example: I want my Help pages to have a navigation column on the left, with constant width; and the main text on the right, taking up the rest of the page width. It takes only a few lines of CSS to do this, but it took me hours to figure out what those lines were. I made several attempts that seemed like they ought to work, but didn't. In the end, Google was my friend and found me a tutorial that showed me the right way to do it.
In addition, I'm still working on refining the styles: fonts, faces, lists, headers, menu item and button labels, and so on. Apple's Style Guide is good for this and I'm mostly following it, but there's still room to make my own decisions, good or bad. (I'm trying to make good ones.)
Now that the main layout elements are done, I can mostly concentrate on writing the text. Some of this I can copy from the old Help Book, because a lot of it hasn't changed. Other parts must be heavily edited, and some must be written from scratch. In addition I need a completely new set of screen shots, because the appearance of Solitaire Till Dawn and its dialogs and buttons and menus has changed quite a bit. I think I've got about half of it written by now, although I'll have to go over the whole thing more than once for review and editing and cleanup before it's really done.
A side benefit of writing the Help Book is that it makes me go back and test all of the features, one by one, to make sure they really behave the way I say they do. This has smoked out several bugs that I will have to fix before release.
In other news, I put some time in on Retina-compatible graphics and I'm pleased with the results. I think I won't have to hire out any artwork except for the app icon itself, which will save both money and time.
Help Books are a collection of pages, all written (like a Web page) in HTML. Apple's Help Viewer is basically a sort of customized Web browser. Pages written for a Help Book can also be viewed in any handy Web browser, and in fact that's handy for debugging.
The Help Book for the last version of Solitaire Till Dawn was mostly written in 2000, a good 13 years ago now. I wrote very simple HTML for those pages. Since then new standards have emerged, so I'm trying to write proper, modern HTML for the new version's Help Book. And this means using CSS.
For those not familiar, CSS ("cascading style sheets") is a way to separate the layout and styling of web pages from the actual text and images. You write a CSS file that defines layouts and styles, and then you write any number of Web (or Help Book) pages that link to that single CSS file. This means that all of those pages share the same layout and styles, and it also means that you can change the layout and styles for all those pages by editing the single CSS file, instead of having to edit all the separate Web pages.
That's a great thing, and it's the reason I'm using CSS for this release. It's really the right way to go. But there is a dark side to the force that is CSS: doing simple things is simple, but anything very fancy can be difficult to figure out and debug. An example: I want my Help pages to have a navigation column on the left, with constant width; and the main text on the right, taking up the rest of the page width. It takes only a few lines of CSS to do this, but it took me hours to figure out what those lines were. I made several attempts that seemed like they ought to work, but didn't. In the end, Google was my friend and found me a tutorial that showed me the right way to do it.
In addition, I'm still working on refining the styles: fonts, faces, lists, headers, menu item and button labels, and so on. Apple's Style Guide is good for this and I'm mostly following it, but there's still room to make my own decisions, good or bad. (I'm trying to make good ones.)
Now that the main layout elements are done, I can mostly concentrate on writing the text. Some of this I can copy from the old Help Book, because a lot of it hasn't changed. Other parts must be heavily edited, and some must be written from scratch. In addition I need a completely new set of screen shots, because the appearance of Solitaire Till Dawn and its dialogs and buttons and menus has changed quite a bit. I think I've got about half of it written by now, although I'll have to go over the whole thing more than once for review and editing and cleanup before it's really done.
A side benefit of writing the Help Book is that it makes me go back and test all of the features, one by one, to make sure they really behave the way I say they do. This has smoked out several bugs that I will have to fix before release.
In other news, I put some time in on Retina-compatible graphics and I'm pleased with the results. I think I won't have to hire out any artwork except for the app icon itself, which will save both money and time.
Tuesday, June 18, 2013
Mavericks
A few people have asked me about Mavericks, the soon-to-be-released Mac OS X 10.9. (I'm going to miss the cat names that Apple has used for all their earlier releases.)
From what I've seen so far, there's no reason why Solitaire Till Dawn won't be fully compatible with Mavericks I intend for the new Solitaire Till Dawn to work with any version of Mac OS X from Lion (10.7) at least up through Mavericks—of course I can't promise anything beyond that at this time, since we have no idea what future OS X releases will be like.
My last post went up only about 24 hours ago, but I have been working since then. I am writing the online help. Yesterday I spent mostly fighting with CSS, trying to get the pages nicely laid out. In the process I got the first few pages of help written in the new style; their actual text content I just copied from the old version, because none of that info had changed much in the new release.
I've learned some useful trivia in the process, such as how to write "⌘" in HTML. (It's ⌘ if you're curious.)
Today I'm starting to design the pages for stuff that has changed. So I have to write new text, but at least I've mostly got the formatting problems solved now. Onward!
From what I've seen so far, there's no reason why Solitaire Till Dawn won't be fully compatible with Mavericks I intend for the new Solitaire Till Dawn to work with any version of Mac OS X from Lion (10.7) at least up through Mavericks—of course I can't promise anything beyond that at this time, since we have no idea what future OS X releases will be like.
My last post went up only about 24 hours ago, but I have been working since then. I am writing the online help. Yesterday I spent mostly fighting with CSS, trying to get the pages nicely laid out. In the process I got the first few pages of help written in the new style; their actual text content I just copied from the old version, because none of that info had changed much in the new release.
I've learned some useful trivia in the process, such as how to write "⌘" in HTML. (It's ⌘ if you're curious.)
Today I'm starting to design the pages for stuff that has changed. So I have to write new text, but at least I've mostly got the formatting problems solved now. Onward!
Monday, June 17, 2013
Back in the Saddle
No news since March! Time for an update.
The house-moving is done, yay! (Well, it's never completely done, but it's 99% done and the rest isn't urgent.) The family's health issues I've been alluding to are also mostly resolved, and in a good way: we're all doing fine, thanks.
So... does that mean I'm finally back to work on Solitaire Till Dawn?
Yes. Yes, it does. It's taken half of a year to get all of these issues taken care of, but life is finally settling back towards sanity, and I have actually been able to spend time on software development during the last few weeks. Here's where we are:
I am nearly done with adding features (whether new or old). Most recently I completed work on the old "Game Number" feature, where every shuffle has a number that can be used to re-create it. You can share a challenge with a friend, for example, by choosing "Show Game Number" from the File menu and sending the number to your friend, who enters it by choosing "Play Game Number" and entering the number you sent.
I have also finished adding in some missing behaviors. For example, until a couple of weeks ago, selecting "New Game" didn't give you any warning or chance to change your mind if you were in the middle of an unfinished game. Now the old preference settings for that sort of thing are fully implemented, and you do get the warning and chance to cancel if, for example, you clicked the New Game button by accident.
This morning I achieved a really good improvement in startup time. It had been taking 30 seconds or longer to launch Solitaire Till Dawn and present the game window; now it takes about 3 seconds.
So all of that is just to show you that yes, I've been working! But I know that what you really want to know is what's left to do, and how long it will take.
Sorry, but I still can't predict how long it will take to finish. (Pause for loud groans from the audience, and a few people shouting boo! and throwing overripe fruit.) This is because much of what's left isn't up to me.
There's still the polish-and-debug stage to get through; that part is up to me. It will be done when I feel like all of the significant bugs are fixed, and when I'm not finding new ones very often. But I've done a lot of that already, as I worked on other things, so I'm not too concerned about it.
I also have to write the online help. That will take time, but it's pretty straightforward and I don't expect any big difficulties or setbacks; so I'm not too concerned about that either.
Then there's artwork. This is a big deal. When I wrote the first version of Solitaire Till Dawn, most of my customers still had black-and-white Macs with a tiny screen. It was fairly easy for me to provide all the artwork, even though I'm not much of an artist. When the Mac II and larger color screens started getting popular, it was harder (because I'm not much of an artist!) but I could still manage on my own. But when really big, deep-color Macs became common, I started having to hire real artists. Nowadays, the App Store and the high-resolution Retina displays have raised the bar absurdly high. All of the artwork must be of professional quality: not only because users have come to expect it, but because the App Store will not accept apps that look slapdash. (For example, every app must have an app icon in deep color, and sized at 1024x1024 pixels! That's bigger than my cards used to be!) So one of my next tasks is to come up with a comprehensive list of images—card art, app icon, toolbar buttons, dialog images, status bar icons, etc.—and hire somebody to make them. And then wait for them to be done.
And when everything is really done and ready to go, I have to submit it to the App Store. Getting a new app approved can take months, from what I'm told.
So hang in there, if you can. I know that inevitably some of you are going to give up on waiting. I'm truly sorry to disappoint you; I probably want this done myself more than anyone else on the planet; but as I keep saying, it's a big job and it will take as long as it takes.
But I am working on it!
The house-moving is done, yay! (Well, it's never completely done, but it's 99% done and the rest isn't urgent.) The family's health issues I've been alluding to are also mostly resolved, and in a good way: we're all doing fine, thanks.
So... does that mean I'm finally back to work on Solitaire Till Dawn?
Yes. Yes, it does. It's taken half of a year to get all of these issues taken care of, but life is finally settling back towards sanity, and I have actually been able to spend time on software development during the last few weeks. Here's where we are:
I am nearly done with adding features (whether new or old). Most recently I completed work on the old "Game Number" feature, where every shuffle has a number that can be used to re-create it. You can share a challenge with a friend, for example, by choosing "Show Game Number" from the File menu and sending the number to your friend, who enters it by choosing "Play Game Number" and entering the number you sent.
I have also finished adding in some missing behaviors. For example, until a couple of weeks ago, selecting "New Game" didn't give you any warning or chance to change your mind if you were in the middle of an unfinished game. Now the old preference settings for that sort of thing are fully implemented, and you do get the warning and chance to cancel if, for example, you clicked the New Game button by accident.
This morning I achieved a really good improvement in startup time. It had been taking 30 seconds or longer to launch Solitaire Till Dawn and present the game window; now it takes about 3 seconds.
So all of that is just to show you that yes, I've been working! But I know that what you really want to know is what's left to do, and how long it will take.
Sorry, but I still can't predict how long it will take to finish. (Pause for loud groans from the audience, and a few people shouting boo! and throwing overripe fruit.) This is because much of what's left isn't up to me.
There's still the polish-and-debug stage to get through; that part is up to me. It will be done when I feel like all of the significant bugs are fixed, and when I'm not finding new ones very often. But I've done a lot of that already, as I worked on other things, so I'm not too concerned about it.
I also have to write the online help. That will take time, but it's pretty straightforward and I don't expect any big difficulties or setbacks; so I'm not too concerned about that either.
Then there's artwork. This is a big deal. When I wrote the first version of Solitaire Till Dawn, most of my customers still had black-and-white Macs with a tiny screen. It was fairly easy for me to provide all the artwork, even though I'm not much of an artist. When the Mac II and larger color screens started getting popular, it was harder (because I'm not much of an artist!) but I could still manage on my own. But when really big, deep-color Macs became common, I started having to hire real artists. Nowadays, the App Store and the high-resolution Retina displays have raised the bar absurdly high. All of the artwork must be of professional quality: not only because users have come to expect it, but because the App Store will not accept apps that look slapdash. (For example, every app must have an app icon in deep color, and sized at 1024x1024 pixels! That's bigger than my cards used to be!) So one of my next tasks is to come up with a comprehensive list of images—card art, app icon, toolbar buttons, dialog images, status bar icons, etc.—and hire somebody to make them. And then wait for them to be done.
And when everything is really done and ready to go, I have to submit it to the App Store. Getting a new app approved can take months, from what I'm told.
So hang in there, if you can. I know that inevitably some of you are going to give up on waiting. I'm truly sorry to disappoint you; I probably want this done myself more than anyone else on the planet; but as I keep saying, it's a big job and it will take as long as it takes.
But I am working on it!
Sunday, March 10, 2013
Of the Essence
My last post talked about a new feature I've added to Solitaire Till Dawn, and so did another earlier post. Recently someone posted a comment to the effect that he, and many others, have been waiting a long time for me to get Solitaire Till Dawn finally ready for distribution, and that he doesn't want new features; he just wants a working version as quickly as possible.
I've been expecting some feedback like that, and I'm only surprised that it didn't come sooner, and in greater quantity, and louder. Because I totally understand: you all just want to play some solitaire. That's the only reason you're interested in Solitaire Till Dawn, the only reason you pay attention to my ramblings, the only reason you come to this blog. Come on, Holzgrafe, just finish it up already!
So now seems like a good time to explain a few things. You have all shown tremendous good will toward me and my project, and I want to stay on your collective good side while we're all still waiting and working toward a hopeful happy conclusion.
The first thing to say is that I'm still not free to spend much time on software development. I am still in the middle of moving house, and that process still has a ways to go. There have also been some medical issues in my family: nothing life-threatening, but they took a lot of time and attention, and to some degree are still on-going. The combination has been devastating to my ability to sit and concentrate on software.
And that's the next thing to say: time to sit and concentrate, for hours on end, is critical to software development. This is something that almost no one other than software engineers seems to understand. In fact, when I retired from my day job last November, it was largely because new management did not understand this, and could not be made to understand it. They were convinced that software development got done in meetings. (Here I originally wrote a long rant about all the things they changed that reduced the engineering department's ability to actually get anything done; but then I decided to take mercy on you all, and deleted it.)
I had hoped that, by retiring, I would finally be able to devote big chunks of my time to Solitaire Till Dawn development, but so far that has not happened. The move is one reason: I can't afford to be retired and still live in one of the most expensive places on earth, so I must move, and soon. The health issues are another reason. So for the past four months, not much has gotten done on solitaire, I'm afraid.
And yet I somehow found time to add a couple of new features. How did that happen, and why wasn't I just working on finishing the original feature set instead?
One reason is that bit about having long periods of uninterrupted time to work. The job of debugging an almost-finished product absolutely requires that kind of time. Every bug has to be discovered, then studied until I know how to reproduce it, then studied until I understand it. Then I have to devise a fix (that doesn't break something else), implement the fix, then spend more hours testing to be sure that the fix really works, really fixes all manifestations of the bug in all circumstances, and really doesn't break something else. This kind of sustained effort can't be done in 5-minute pieces, or even one-hour pieces.
Some new features are like this, too. It can take weeks to add some features. But in other cases, a new feature may be able to go in fairly easily and quickly, and without interfering with other things. That's been the case with the last couple of features I've added, so I didn't feel too bad about using small bits of time for them.
It's also true that I need to keep my own interest up. Not everything about software development is fun, even though I do enjoy most of the process. Tossing in a nifty new feature once in a while makes me feel good. This way, I have not just spent five years re-creating something old; I can honestly say that the new version will be better than ever before. That keeps me happy and motivated to do the boring, difficult stuff... when I can find the time.
I've been expecting some feedback like that, and I'm only surprised that it didn't come sooner, and in greater quantity, and louder. Because I totally understand: you all just want to play some solitaire. That's the only reason you're interested in Solitaire Till Dawn, the only reason you pay attention to my ramblings, the only reason you come to this blog. Come on, Holzgrafe, just finish it up already!
So now seems like a good time to explain a few things. You have all shown tremendous good will toward me and my project, and I want to stay on your collective good side while we're all still waiting and working toward a hopeful happy conclusion.
The first thing to say is that I'm still not free to spend much time on software development. I am still in the middle of moving house, and that process still has a ways to go. There have also been some medical issues in my family: nothing life-threatening, but they took a lot of time and attention, and to some degree are still on-going. The combination has been devastating to my ability to sit and concentrate on software.
And that's the next thing to say: time to sit and concentrate, for hours on end, is critical to software development. This is something that almost no one other than software engineers seems to understand. In fact, when I retired from my day job last November, it was largely because new management did not understand this, and could not be made to understand it. They were convinced that software development got done in meetings. (Here I originally wrote a long rant about all the things they changed that reduced the engineering department's ability to actually get anything done; but then I decided to take mercy on you all, and deleted it.)
I had hoped that, by retiring, I would finally be able to devote big chunks of my time to Solitaire Till Dawn development, but so far that has not happened. The move is one reason: I can't afford to be retired and still live in one of the most expensive places on earth, so I must move, and soon. The health issues are another reason. So for the past four months, not much has gotten done on solitaire, I'm afraid.
And yet I somehow found time to add a couple of new features. How did that happen, and why wasn't I just working on finishing the original feature set instead?
One reason is that bit about having long periods of uninterrupted time to work. The job of debugging an almost-finished product absolutely requires that kind of time. Every bug has to be discovered, then studied until I know how to reproduce it, then studied until I understand it. Then I have to devise a fix (that doesn't break something else), implement the fix, then spend more hours testing to be sure that the fix really works, really fixes all manifestations of the bug in all circumstances, and really doesn't break something else. This kind of sustained effort can't be done in 5-minute pieces, or even one-hour pieces.
Some new features are like this, too. It can take weeks to add some features. But in other cases, a new feature may be able to go in fairly easily and quickly, and without interfering with other things. That's been the case with the last couple of features I've added, so I didn't feel too bad about using small bits of time for them.
It's also true that I need to keep my own interest up. Not everything about software development is fun, even though I do enjoy most of the process. Tossing in a nifty new feature once in a while makes me feel good. This way, I have not just spent five years re-creating something old; I can honestly say that the new version will be better than ever before. That keeps me happy and motivated to do the boring, difficult stuff... when I can find the time.
Wednesday, February 13, 2013
Mouseless
I've been silent for a while; this was due to "life intervening." The holidays, the circus of trying to sell and buy and move house, and some other issues have been claiming my time and attention. I'm still pretty busy in ways that preclude daily work on Solitaire Till Dawn, but things are starting to calm down and I have gotten a bit done in the last few days.
I've been working on a new feature: "mostly mouseless" play. You can already hold down the Shift key to highlight all movable cards, to see what your options are. With the new feature, you can use the arrow keys to select any one of the movable cards; then just pressing the Return key acts as if you had clicked the card, sending it to a default legal destination. If you haven't made a selection yet, pressing Return will act on the first movable card, which is a handy shortcut when there's only one movable card or you're sure the one you want to move would be the first one.
That bit about "a default legal destination": that's what makes this only mostly mouseless. There's no keyboard-driven way to choose among multiple destinations, so you may still have to reach for the mouse once in a while if the card you want to move doesn't go where you want it to go. I might address this some day, but perhaps not right away.
I need to spend a bit more time on the screen display (showing which card is currently selected), but the feature itself is in and working just fine.
I've been working on a new feature: "mostly mouseless" play. You can already hold down the Shift key to highlight all movable cards, to see what your options are. With the new feature, you can use the arrow keys to select any one of the movable cards; then just pressing the Return key acts as if you had clicked the card, sending it to a default legal destination. If you haven't made a selection yet, pressing Return will act on the first movable card, which is a handy shortcut when there's only one movable card or you're sure the one you want to move would be the first one.
That bit about "a default legal destination": that's what makes this only mostly mouseless. There's no keyboard-driven way to choose among multiple destinations, so you may still have to reach for the mouse once in a while if the card you want to move doesn't go where you want it to go. I might address this some day, but perhaps not right away.
I need to spend a bit more time on the screen display (showing which card is currently selected), but the feature itself is in and working just fine.
Tuesday, December 18, 2012
Have It Your Way
I've just finished adding a new feature to Solitaire Till Dawn, one I've wanted since forever ago. I have a compulsive nature, and when I play cards to the foundations (the goal piles), I like to assign the suits to piles in this order: Hearts, Spades, Diamonds, Clubs. If it's a two-deck game then I like to double them, two by two: Hearts, Hearts, Spades, Spades, and so on. I want this enough that if an Ace is auto-played to the "wrong" pile, I will undo and then drag the offending card to the "right" pile before continuing. Of course it's easy enough to just do the dragging; but it would be even easier to just click the card and see it go straight to the right place!
I could have just hard-coded this behavior, but I never did that because I am sure that some of you have your own preferences in this, and they may differ from mine. I don't want to force my own baseless prejudices on any of you. Over the years I occasionally considered inventing a set of options for the Preference panel to give you some control over suit placement, but this always seemed like huge and confusing overkill, so I never did anything about it.
But I think I've finally got it sussed out, and my solution will be included in the new release. It is simply this: for each kind of solitaire that you play, Solitaire Till Dawn will remember which suit you put in each goal pile. After that, any automatically-moved cards of each suit will go to the same piles where you put them in prior games.
If you later decide you don't like that placement, all you have to do is place the cards by hand in whatever other piles you like, and Solitaire Till Dawn will remember your new choices from then on.
Very simple, and no need for any new controls or options in the Preferences window or anywhere else. There's nothing you need to learn; it will just happen automagically. (And of course, if you just don't care where the Aces fall, you can ignore the whole business.)
I got this working today. Yay!
I could have just hard-coded this behavior, but I never did that because I am sure that some of you have your own preferences in this, and they may differ from mine. I don't want to force my own baseless prejudices on any of you. Over the years I occasionally considered inventing a set of options for the Preference panel to give you some control over suit placement, but this always seemed like huge and confusing overkill, so I never did anything about it.
But I think I've finally got it sussed out, and my solution will be included in the new release. It is simply this: for each kind of solitaire that you play, Solitaire Till Dawn will remember which suit you put in each goal pile. After that, any automatically-moved cards of each suit will go to the same piles where you put them in prior games.
If you later decide you don't like that placement, all you have to do is place the cards by hand in whatever other piles you like, and Solitaire Till Dawn will remember your new choices from then on.
Very simple, and no need for any new controls or options in the Preferences window or anywhere else. There's nothing you need to learn; it will just happen automagically. (And of course, if you just don't care where the Aces fall, you can ignore the whole business.)
I got this working today. Yay!
Subscribe to:
Posts (Atom)