TTFN (July, 2009)

Ta Ta For Now [22 July 2009 Edition]

In mid-summer, with no particular news from SIC, and my primary development project taking longer than expected to get completed (enough for beta testing), I am going to take a short hiatus. I have plans to improve this blog aesthetically and also have a couple of technical articles already in the pipeline, so I hope the break to be brief (yet refreshing).

One can monitor one of the feeds (RSS or Atom) for my next blog update.

Thanks for reading!

No SIC for me

Thus begins a period of inward focus for us.

At the last minute, I have decided not to attend the Software Industry Conference this year. SIC 2009 begins tomorrow night [Wednesday, July 15] in Quincy [Boston], Massachusetts, but we will not be represented there. Honestly, I was not as inspired to go this year and never quite got around to registering. I did book the hotel, which forced the choice as the cancellation date arrived.

It was a tough decision. I thought about the pros to attending: networking with colleagues, learning marketing techniques from the various sessions, staying in touch with the industry, and having a source of inspiration. We were considering using SIC as a prelude to our quasi-annual offsite meeting, where we discuss the direction of the business and refocus on adjusted goals. Also, according to rumor, this will be the last SIC in Boston, so it would have been a final opportunity to experience that.

However, there was a longer list of cons: many friends/colleagues chose not to attend, none of my clients would be there, none of the sessions even approached “must see” status, and there are no Shareware Industry Awards this year. Perhaps the renaming of the conference to remove that dreaded word, “Shareware”, also removed some of its purpose and relevance. Even the ASP Luncheon held little attraction for me, as the current leadership flounders and takes the organization off track.

Ultimately, though, it came down to total costs. The monetary expense of the conference is not bad at all, and I would have been able to attend with a total expenditure (including travel and accommodations) of less than just the registration for many other conferences. On the other hand, it would have required a commitment of five complete days, not including preparation and recovery time, and I felt that I could not justify that at a time when our projects are not where I want them to be. Had the conference been next week, the decision may have been different, but for now, my time is better spent on development than (potential) enrichment.

I will just have to see Boston under different circumstances.

Touch-A, Touch-A, Touch Me

My iPod is Dirty.

A couple weeks ago, we ordered our latest toy, I mean, tool for development. We got a new iPod Touch, deliberately choosing the smaller (8G) model available and receiving it before the iPhone 3.0 Software Update was automatically installed.

Initially, the intent was to familiarize ourselves with the technology, from a user perspective, but this device turned out to be much more than mere technology. I am astounded at the design (and/or happy coincidence) that went into the iPod Touch (and, presumably, the iPhone). It arrives in a plastic box the width and length of a 3×5 index card, and only about an inch thick. By “it”, I mean everything that one needs: the device, the USB (data/charging) cable, a set of ear buds, a cleaning cloth, the Quick Start guide, and two of the ubiquitous Apple stickers. Also, the device comes fully charged, like other Apple products and unlike most other battery-operated devices. The first impression is just brilliant.

The iPod Touch itself is about 2.5 x 4.25 inches, and only a quarter inch thick, but it has enough heft to feel substantial. Shiny does not hurt at all (and ordering directly from Apple allows one to personalize the back with two lines of laser engraving). The genius of the device, however, is not in the specifications, but in how everything works together to create a physically satisfactory experience. One wants to pick it up, hold it, use it, even if there is not that much to do with the default applications. (I suppose that if it were an iPhone, we would be making unnecessary phone calls, too.)

The pre-installed software is sufficient to show off the basic features, and I imagine that most users try almost every application at least once and probably even make an excuse to use some. (I tried the alarm clock feature to avoid a four foot journey to the real alarm clock.) However, these programs are quickly exhausted, so the “App Store” becomes important for finding something else to do, another justification for playing/working with the iPod Touch. I believe that this contributes greatly to the success of this channel.

One thing that would be a great application for playing with the curiously magnetic iPod Touch would be a solitaire game (or many) that worked particularly well with this hardware. Speculation about the possibility of a top brand of solitaire coming to this platform would be entirely justified.

(with apologies to Richard O’Brien)

Have you joined SpamBook yet?

A barrage of Facebook spams sets off a rant.

Last Friday, at 4:38pm, I received an email from Facebook entitled, “Reminder: 5 of your friends invited you to join Facebook…” Fine. Some people collect and count “friends” on that service, while I do not join and count the number of real life friends who have invited me to join. (My wife and business partner knows me well enough that she is not part of that group.) If I were to join, of course, I would lose count.

Then, at 11:40pm, I received another one, nearly identical, but with different ‘Other people you may know on Facebook’. Curious, I verified that the messages were both coming from Facebook, via email headers and the fact that the (accurate) list of invitations I have received should be known only to them. “Oops, duplicate message,” I thought. On Saturday, I received reminders at 4:44am, 6:47am, 12:16pm, 5:07pm, and 9:44pm. For good measure, I received another one on Sunday at 1:28am. Eight nearly identical messages within 33 hours trying to get me (now pissed) to join their silly little club. Not likely.

[I just decided to check the names in all eight messages, and two actually suggest that I may know my own brother. That I do. None of the other names, though.]

After the Facebook “fun” stopped, a denial of service attack on our server began. Somebody started bombarding the server with random spam messages to, literally, random (GUID-like) addresses at our domain. Not a single message from the culprit had any chance of hitting a real address, since they were not even in a human usable form, but we were getting hundreds per minute, and lost the server entirely for a while.

In the middle of dealing with this mess, the home phone rang (which normally puts me on edge anyway) and I answer to find that Payless Shoes has decided to robodial me to tell me about some sale coming to an end. Seriously?!? We are on the national Do Not Call list, and the fact that we may have bought cheap shoes there once does not give them the right to call me. I have no idea how they would have my number in the first place, so it may have just been coincidence. Report filed; customers lost.

The mail arrived with a machine printed return address from “Ealge Eye Fitness”. It made me laugh, since the people that sent it out clearly did not have the Eagle Eyes that they intended to portray. Business not earned.

Once email service was returned to normal, “Michael Jackson” became only the second actual name inducted into my spammers hall of fame filter, joining “Oprah”, as subjects (or subsubjects) that guarantee a message is not intended for nor of any interest to me. The sheer number of “surveys” and “news items” about his death was astonishing, especially from an industry which still regularly sent me (in June) special offers for Valentine’s Day.

Now that it is officially July, let me simply say that the greatest musical loss last month was definitely… Koko Taylor, who died on June 3 at the age of 80. (I saw her pitch a Wang Dang Doodle live more than 20 years ago, and she kept tearing it up right to the end.)

Here endeth the rant.

No Magic Numbers

Action Solitaire 1.31 is now available for download.

After the last posting, we discovered a rather significant bug in Action Solitaire. It was fortunate that it was discovered in house, but unfortunate that it was not found during beta testing and, hence, required a public update. The problem caused two of the 65 games to behave incorrectly (or even crash) when large or huge card sizes were selected, either explicitly or implicitly through automatic sizing.

The problem turned out to be magic numbers in the code. We released the first version of Action Solitaire back in 2003, which was six years of coding experience ago and at a time when I felt under some (self-imposed) pressure to get the product finished. Unlike some of the other projects, the source code for this game has not been refactored, except to the extent necessary to make updates for Vista and add new games, so I never revisited these (working) games to see the problem.

For those who do not know, a magic number is an explicit and undocumented constant in the source code for a program, so named because the value works like magic, without any proper explanation. In this particular case, the width and height of an image buffer were set to constant values, calculated (manually) to accommodate an area based on the largest card sizes supported by the game at that time. Rather than actually letting the computer determine the necessary buffer size, based on named constant values (e.g., MaxCardWidth and MaxCardHeight), the code just used constant numbers directly. When the maximum card size increased, the buffer was too small and problems ensued. Such are the dangers of magic numbers.

It did not take long to find and fix the problem, but it should not have been necessary in the first place, especially since we had standards, even back then, that discouraged the use of magic numbers. I made an exception and got burned. Ouch.

Anyway, Action Solitaire can be downloaded here, and I guarantee ample opportunity to find other bugs in this product, but the game is fun (and addictive) as well.

Action Solitaire 1.30

Can you believe it? Another product release!

Goodsol Development has released Action Solitaire 1.30, continuing the string of product update releases in 2009. This latest version of Action Solitaire adds five more games and (belatedly) implements support for larger card sizes, including those provided in all of the newer downloadable cardsets. The new action games are:

  • Two Cells
  • Three Cells
  • Klondike Deal Three
  • Canfield Deal Three
  • Black Hole

One nice thing about these new games is that it creates 5 more opportunities for players to climb to the top of the standings (or ten, if one counts both tables for each game).

As this product was in beta testing, I noticed that, oddly, all of our Action Solitaire releases have been in odd years, starting in 2003:

  • Version 1.0 – December 9, 2003
  • Version 1.1 – April 18, 2005
  • Version 1.2 – May 24, 2007
  • Version 1.3 – June 16, 2009

Following this pattern, this would be the last update until the second part of July, 2011! However, a popular clambering for a Mac version would probably result in AS 2.0 well before that time.

Download and enjoy! [from here]

2009 People's Choice Awards

Only two days left to vote!

This year, the leadership of the SIAF (Shareware Industry Awards Foundation), the group which produces the Software (nee Shareware) Industry Conference (SIC) each year, made the unfortunate decision not to present the Shareware Industry Awards this year. These premier awards were basically the Oscars of this industry, voted on by other industry members, and represented peer recognition. No SIA was presented for any standard game category last year (2008), so our own Pretty Good MahJongg was the last game to win one of these prestigious awards for the 2007 Best Non-Action Game.

In the absence of the Shareware Industry Awards, the People’s Choice Awards take center stage at the SIC banquet (presumably). With no nomination process, and voting open to anybody with an email address, there is no particular anticipation for these awards (and with no game PCA presented since 2006, even less for us). Nevertheless, I will support the awards process, so I submitted my ballot today.

The deadline is looming [Monday, June 15th], but if anybody has not yet voted and still has time to do so, we would certainly appreciate consideration of some of our products:

Although I certain could have done so, I did not fill all seven lines on my ballot with our games. I did an evaluation of the products that I use on a regular basis and which greatly aid my (development) productivity, and these products really stood out:

  • Beyond Compare is an absolutely indispensable part of my development toolkit, and I use it almost daily for code diffs, file syncing, single line editing, and even viewing of Japanese/Unicode resource files (which VC6 cannot handle).
  • Inno Setup is the easy choice for creating professional installers, and though it is not shareware, it is downloadable (free/donationware).
  • Help & Manual is simply the best help editor I have ever used (though I will admit to preferring version 4 without the ribbon interface).
  • PC-lint is critical to my C++ programming work and it is run, literally, alongside my compilations to guard against both silly mistakes and serious errors in order to help keep the quality of my code as high as possible (although there is no downloadable trial version, unfortunately).


To vote for the 2009 People’s Choice Awards, simply register to vote [Editor’s note: invalid link has been removed] (with just name and email address) and then follow the link that will be emailed to you and enter up to 7 software products. Easy.

A Tale of a Good Anti-spam Tool

Spam, spam, go away… You are not welcome ANY day.

My approach to my primary email address, from the very start (more than 13.5 years ago) was that potential clients and customers should be able to contact me without jumping through hoops, so I have never bothered to hide or obscure my address: seelhoff@sophsoft.com . I have always published it in plain view (and to do otherwise would now be closing the barn door long after the horse has bolted and gone on to live free and happy until dying of old age).

Of course, this also allows any spamming slimebag with an address harvester to easily add me to each and every email database on the planet, so I do get spam. Lots of spam. To be honest, though, the level of spam to my “open” account seemed to plateau fairly quickly, although I never really kept track. Over the years, it may have been slowly and steadily rising, but I know that my patience has been slowly and steadily declining, so a while ago, I added some tools to stem the tide.

Let’s talk numbers, first. Since the beginning of April, my primary email account has received 75,000 email messages. Of those, almost exactly 98% are spam. Of the other (legitimate) messages, 80% are business (1.6% of the total), and the remaining 20% (0.4% of the total) are personal. Both of these categories include active mailing lists, such as Carbon and DirectX development (business) and community events (personal). I set up my email client to automatically sort these (and marketing messages) into appropriate folders, and the number of messages specifically to me, from clients, customers, family, and friends, is just a handful per day. These are the only ones that actually hit my inbox and trigger a notification sound.

To be honest, not all Bayesian filtering is created equal, and my email client is probably about average. It handled much of the junk, but an annoying number of spams were being missed, and signalling me (incorrectly) that I had a legitimate message. When I finally had enough, I downloaded and installed POPFile upon a recommendation from somebody in the ASP. I had been leery about installing an interim mail server on my system simply for filtering email, but it turned out to be an excellent choice.

After several months of training, POPFile is 99.92% accurate selecting among business, personal, and spam classifications and, importantly, I have gone for more than a month without a false positive for spam. (Most of the classification “errors” are simply unclassified messages that need to be trained.) Used in series with my email client, I can review messages that either think may be legitimate (ideally, to never miss a valid email), but I am only notified of incoming mail if they both agree on the validity. This has greatly reduced interruptions and made my days more productive.

Of course, there is some training involved so POPFile can “learn” the difference between legitimate messages and spam, but the initial process goes pretty quickly (and when one averages more than 1000 messages per day, there is lots of data). If I were to start all over again, I would not have chosen to have business and personal messages separated, since that distinction is not particularly necessary for me (and not always clear, either, such as when a family member reports a server problem, or a business associate invites me to a party).

If you are looking for an anti-spam solution local to your own system, I strongly recommend POPFile.

Most Popular Solitaire 2.00

An update to yet another successful card solitaire game is released.

One week ago, Most Popular Solitaire 2.00 was published by Goodsol Development. This is a major upgrade to a product first released (for Windows) in 2003. Most Popular Solitaire is a collection of 30 of the most popular (surprise!) card solitaire games, including all of the favorites: Klondike (often known as simply Solitaire), FreeCell, Spider, and a number of (well, 27, obviously) others.

In terms of features, either the most important or least important, depending on ones system, is that Most Popular Solitaire 2.00 has equivalent versions for both Windows and Mac OS X available. This new version also includes Climb Mode and 13 bonus games in the full (purchased) version, as well as a number of other smaller features. (Of course, everything is a new feature on this initial Mac release, but it is an improvement on Pretty Good Solitaire Mac Edition 1.0, which included the same 30 games.)

In terms of technology, this release used the same revisions of our Goodsol Solitaire Engine that were used for Goodsol Solitaire 101 version 1.01 (on Windows) and Pretty Good Solitaire Mac Edition 2.01 (on Mac OS X). These are the last planned updates before the next GSE upgrade, which will add a few additional features and make some internal changes to reduce the source code differences between platforms.

The marketing challenge for this product is handling both the Windows and Mac OS X versions simultaneously. Having the same price (and registration codes) for both makes it easier, and also allows customers to switch to Mac (you know, or the other way) without having to repurchase. The biggest issue is the different approach to trial versions: whereas the Windows version can be converted into the full version by entry of the registration code, the Mac OS X version has a separate full version download.

In the three weeks since the latest Pretty Good Solitaire Mac Edition update, that product has risen (back) into the top 5 on Most Popular in the Cards & Puzzles category for Apple Downloads, but Most Popular Solitaire (Mac Edition) is now in the top 20 (and climbing) in only a week. Downloads of both products (trial versions) are increasing, but we will have to see how that translates into sales.

In any event, somebody is enjoying our games, and I dig that.

Duke Nukem For Never

Surprise (NOT)!

As you have probably heard or read, 3D Realms, the developer of (the aptly named) Duke Nukem Forever, has gone out of business. The company website now features a big “Goodbye” message on the front page. The story was reported even in the mainstream media, including this BBC News article.

The release date for DNF has always been “When it’s done.” This scheduling choice seems to put a product on a slow train to vaporware, and I posted about it being way past expiration three years ago: A Long Time Coming. I could rehash the history, but game industry news site Shacknews has posted an updated article (originally from 2007), The Brief Long History of DNF: Post-3D Realms Edition, detailing a dozen years of unfulfilled promises and hype.

So, now Duke Nukem Forever is finally toast, all of the developers have been laid off, the company is gone, and the product is going to remain unpublished. The saga ends here, right?

Not so fast.

Next comes word that Take Two Interactive, who in 2000 (perhaps unwisely) purchased the publishing rights to this title (from another publisher) for $12 million, and reportedly (probably unwisely) renewed this agreement with 3D Realms in 2007, is now suing for breach of contract. Of course, they (definitely unwisely) never provided any development funding for the title, so there is not much left there to get…

… except the source code. Take Two immediately filed for an injunction to get a copy of the source code “to ensure the code is preserved and remains unharmed” while it prosecutes its lawsuit, as shown in this article about the release of the court documents.

Now it is revealed in this Gamasutra article that “3D Realms has not closed and is not closing” after all. They merely fired (sorry, “let go”) the entire Duke Nukem Forever development team due to lack of funding. Still, they (i.e., unnamed 3D Realms representatives) “believe Take-Two’s lawsuit is without merit and merely a bully tactic“. Really? Interesting.

Here is what we know:

  1. Company management did not do what it would take to ship this game.
  2. The development team did not do what it would take to ship this game.
  3. The publisher did not provide what it would take to ship this game.
  4. Incompetence reigns in this matter, and there is plenty of blame to go around.
  5. It will probably be another year before this matter is finally settled.

This whole story is a case study in poor choices and a wholesale failure of anybody involved to recognize and acknowledge the [situation] this has become. Trains wrecks are fascinating, though.

Always Bet On Duke.” – I don’t think so.