Class of 2007

My older son officially graduated high school today.

I just returned from the Commencement ceremony for the East Lansing High School Class of 2007. James, my son, graduated Summa Cum Laude (or merely Magna Cum Laude if you look in the wrong place) and took the special walk across the stage, along with about 275 of his classmates.

It was a special day for my wife, Sherry, and I because not only did we have our son graduating with honors, but we also had bonds with a couple dozen other graduates who I had coached in soccer, Sherry had led in both Cub Scouts and Boy Scouts, or we had cheered for as the other Senior members of the very successful Quiz Bowl team.

Speaking of the ELHS Quiz Bowl team and their success this year…

As already mentioned on this blog, the Quiz Bowl team won the Quiz Busters tournament in March of this year. In April, they followed that up with a win in the Michigan State Quiz Bowl Championship, making them the official State Champions for this year. Then, late last month, both the A and B varsity teams went to the NAQT High School National Championship Tournament in Chicago and qualified for the finals, where the A team (the one James played on) placed 13th in the nation.

The Quiz Bowl success was such that the class President, Kate Mulhern, mentioned in her commencement speech that it should be a recognized varsity sport. Ms. Mulhern also happens to be the daughter of Jennifer M. Granholm, the current Governor of the State of Michigan. (It was interesting to see the Governor in the same crush of people leaving after the proceedings were finished.)

The whole event (and an event it was) was held at the Great Hall of the Wharton Center at Michigan State University, and we were actually restricted to only seven tickets (yes, tickets) per graduate. It was definitely an impressive commencement, reminiscent of and rivaling my sister’s graduation from Texas A&M University. (It was far more impressive than my own commencement from the same high school.)

We are very proud of what James accomplished during the last four years, and next fall, our younger son, William, starts his own career at East Lansing High School, while James continues his education in the Honor College at Michigan State University.

Voting Day

This is the last day to vote for the Shareware Industry Awards.

Today [May 30] is the last day, actually just part of a day, that those who are registered can vote for the Shareware Industry Awards. Voting closes at Noon MDT [2:00pm EDT], so as I write this, there is less than 10 hours remaining. Hurry!

The SIA nominees this year are interesting, too. The Best Application category has two strong candidates, ClipMate and CSE HTML Validator (against Open Orifice); it is unfortunate that they cannot both win. I am glad to see WISCO Word Power in the Best Educational Program or Game category, as well as Auction Sentry Deluxe nominated for Best Hobby or Personal Interest Program.

Of course, my primary (selfish) interest is in the Best Game – Non Action/Arcade category, where our Pretty Good MahJongg is nominated. I am completely biased, but I will nevertheless say: Please vote for Pretty Good MahJongg!

For those not in the shareware industry, or who did not get registered to nominate and vote for the Shareware Industry Awards, you can still support your favorite software (including Pretty Good MahJongg, hopefully) in the SIAF People’s Choice Awards. Voting for these awards is open to anybody (with an email address) and all software is eligible. If you want to vote for your favorite programs this year, you can do so by registering at http://www.siavoting.com/pcregister.php and then submitting your selection of up to 7 (seven) programs before tomorrow [May 31].

“I Voted.”

Shareware Industry Award nomination

Our game, Pretty Good MahJongg, received a 2007 SIA nomination.

Yesterday, the Shareware Industry Awards Foundation announced the nominees for the 2007 Shareware Industry Awards. These awards are presented annually at the Software (nee Shareware) Industry Conference in sixteen different categories (of which 2.5 are for games). What makes these special is the fact that the nominations and final voting are all done by other industry professionals, so the awards are determined by our peers.

This year, Pretty Good MahJongg was nominated in the Best Non-Action Game category. We are honored to have received this first nomination for this (deserving, in my opinion) game, and I want to thank everybody who nominated it. Pretty Good MahJongg has been my favorite game for a while now, and I am happy that it is receiving this recognition. I certainly hope that it will garner the award, but this is a much appreciated first step. If you are registered to vote, please vote for PGMJ when voting begins on May 24.

The competition is Pocket War, by Metal Shard, and Ant War 1, by Anarchy Enterprises. Ironically, both of the other two product titles include the word, “War”. If Pretty Good MahJongg can capture the pacifist vote, and the other two split the martial vote, we should be fine. Seriously, it definitely appears that all three products are quite different, so the results will be interesting.

In addition to the Shareware Industry Awards, there are also the SIAF People’s Choice Awards that are presented at the same ceremony. Voting for these awards is open to anybody (with an email address) and all software is eligible. If you want to vote for your favorite programs this year, you can do so by registering at http://www.siavoting.com/pcregister.php and then submitting your selection of up to 7 (seven) programs before May 31.

Please vote for Pretty Good MahJongg on May 24, if you are registered, and please consider voting for PGMJ (and/or our other games) for a SIAF People’s Choice Award.

Thanks.

HNT: Get your newsletters read

This is How Not To get your email newsletters read.

Whenever sending a newsletter via email, remember that it is very likely that the recipients are overwhelmed with masses of spam. This means that most will have some sort of filtering in place to reduce the amount of junk they have to wade through to get the communications they want. It is also a pretty good bet that your potential customers have little or no incentive to trawl through the trash to find your message.

With that in mind, here are some wonderful tips on how not to have your newsletters read:

  • Send your newsletter from a different email address each time and, as much as possible, be sure that address does not obviously correspond to your corporate identity. (Servers with multiple hosts and subhosts, all with cryptic two-character names, is best.)
  • Change the format of the subject line for each issue.
  • Never publish your newsletter on a regular schedule.
  • Always remind recipients to whitelist your newsletter based on a name that includes a special character (such as the trademark symbol, â„¢) that is not included in all fonts or any standard keyboard.
  • Make sure that your newsletter is only available in HTML format; do not offer an option for plain text.
  • Further to the above, be sure that the layout formatting depends heavily on many small graphic files that have to be downloaded separately from your server. This assures that your content will be completely indecipherable in many circumstances (e.g., plain text, basic firewalls, or server issues).

Using techniques such as these, some companies (such as Intel), have managed to assure that their marketing messages successfully avoid my positive filtering and reliably end up in my junk folder. Of course, newsletters are only part of an email campaign, so after successfully fouling up the above, one could also (as Hewlett-Packard has done) employ the following advanced techniques for destroying good will:

  • Add a corporate customer to a newsletter list targeted at (computer illiterate) home users, based on the need to get a replacement part for a different type of product.
  • Implement ‘user profiles’ for newsletter configuration and email all subscribers (and the forcibly subscribed) separately to notify each one of this important development.
  • Finally (and here is where the art really comes into it), track profile modifications and assume that the failure of one to make changes is an indication of ignorance, so email a reminder about user profiles. Greet a continued lack of response with increasingly frequent reminders.

One has to wonder how some of these companies managed to get as large as they did with such marketing ineptitude. Consistency and useful information would make these newsletters so much less challenging.

The Answer is 51!

This is definitely a Frequently Asked Question.

In the Goodsol Solitaire Forum, there is a question that keeps coming up; in fact, some people ask it in the very same forum thread in which I have already answered it comprehensively. Instead of repeating myself, I am posting it here for ease of linking and because some readers may find it interesting. (I have always enjoyed this kind of mental exercise, even if I have had less time for it recently.)

The question is:

What is the fewer number of moves to win a game of Spider Solitaire?

Here is the answer:

51

The explanation (from the forum):

The lowest move count would be fewer than 101 moves, and one could probably construct a deal which demonstrates this. The chances of actually winning a game of Spider in Pretty Good Solitaire in fewer moves is almost impossibly low, however.

The base calculation is actually fairly simple: Normally, each card lower than a king, of which there are 96, needs to be moved at least once, and there are five extra moves needed to get all of the cards from the stock. This gives a total of 101 moves.

However, each of the moves from the stock could produce a sequence in one or more columns, so the above number could be reduced by as many as 10 moves each, if the cards line up perfectly. That would give a theoretical lowest limit of 51 moves, and it could be a challenge to create a deal by hand that would work (although I believe that it is definitely possible).

Now, the practical proof (a forum followup):

Anyway, as an intellectual challenge, I actually constructed (stacked) a deck for Spider that produces a game that can be solved in only 51 moves. Not only that, but every move is obvious and no legal move is left unmade. (In other words, it plays perfectly naturally.)

Without further ado…

Starting at the top of the deck (comprised of 2 packs, 104 cards):

(tableau)
KS KH 9H 5H KD 9D 5D KC 9C 5C
KC JC 8C 4D 5C QS 2D 9S 6S 3C
KD QD TD 9D 8D 7D 6D 9S 8S 7S
JD QH 9H 6H 3H KS QS 6S 5S 4S
KH TH 7H 4H AH JS TS 3S 2S AS
JH 8H 5H 2H

(stock)
5D TC 7C 3D 4C JS AD 8S 5S 2C
QC 9C 6C 4H AC TS 4D 7S 4S 4C
3S QH 8H 3H QD 8D 3D QC 8C 3C
2S JH 7H 2H JC 7D 2D JC 7C 2C
AS TH 6H AH TD 6D AD TC 6C AC

If one starts with this deck, the game can and will be solved in only 51 moves.

Enjoy!

2007 NCAA Men's Hockey Champions!

The Spartans won it all this year.

Michigan State University beat the Eagles of Boston College this evening to win the NCAA Men’s Hockey Championship. The Spartans played a very exciting game to come from behind and win. There were no goals in the first period, only the third time in history for a 0-0 score at the first intermission in a championship game. BC took a 1-0 lead over MSU in the second period, which held through the second intermission. Again, this was just the third time for a championship game to have only a single goal by the second break. The teams were very evenly matched, even if the ESPN commentators refused to acknowledge it.

In the middle of the third period, MSU won a face off in the neutral zone and their top scorer, Tim Kennedy, simply drove straight in and scored with a beautiful shot to the side of the net to tie the game at 1. At that time, I predicted a 3-1 win for Michigan State, with the final goal scored on an empty net. The pace of the game picked up and, amazingly, with 18.9 seconds left, Justin Abdelkader put in the game winner (off a beautiful assist from Kennedy). Boston College came out with an empty net and after a few tense seconds, the puck was cleared to Spartan Chris Mueller who put in an insurance goal with 1.2 seconds on the clock. The celebration started and the Eagle’s coach, in a classy act, had the officials run the remaining time off and sound the final horn.

Final score: Michigan State 3, Boston College 1.

We saw a few familiar faces on TV celebrating in the crowd in St. Louis, including a close/direct shot of a friend. The best part of the post-game festivities, though, was the interview with the MSU goalkeeper, Jeff Lerg, who said he knew they could win it, “if I made every save I was supposed to make, plus added two or three more big ones.” The biggest disappointment was that MSU won its 3rd National Championship in Hockey, 21 years after the previous one (1986), on a weekend when most students were home for Easter, so downtown East Lansing had no fan gathering. (The snow and 24 degree temperature did not help.)

I will always remember the date of this victory for MSU, as it comes on my son’s 18th birthday. Happy Birthday, James!

NCAA Frozen Four Semifinals

What a game!

I took a short-ish break from development this afternoon to watch the first semifinal game of the NCAA Frozen Four (Div I), the National Championship in men’s college hockey. As much as I like watching college hockey, I only made time because the Michigan State University Spartans were in this game against the Black Bears of Maine.

Unfortunately, Maine scored only 27 seconds into the game, and then they scored again less than 3 minutes later to take a 2-0 lead in the fourth minute. Fortunately, MSU shut them out for the remaining 56 minutes (and 36 seconds) while scoring 4 goals of its own. It was an excellent and exciting game for the duration and, thanks to TiVo, I was able to watch it in less than real time, omitting the inane chatter and repetition during the two intermissions. Final score: Michigan State 4, Maine 2.

It looks like now I will have to take another break from the crunch on Saturday at 7:00pm (ESPN) for the NCAA National Championship game for Men’s Ice Hockey. One team will be Michigan State, and the other will be either North Dakota or Boston College, depending on the second semifinal (to start within the hour); either way, I know who I will be cheering for.

Development Paradox

This is a contradiction within management of game development.

I have been engrossed in a frenzy of game programming lately. (Note that “engrossed” is just another way of saying “crunch mode” that I willingly accepted.) Despite managing myself, I am struggling with an issue that affects the development of many games and applications, a contradiction in goals.

On the one hand, good development management practice suggests that one deal with the unknowns early in the process. These unknowns, tasks which are the most difficult to estimate correctly, especially those involving partial information, have a natural tendency to be the longer (and often more tedious) tasks to complete. Another important goal is to get the fundamental foundation of the project (e.g., libraries and elemental routines) as solid and complete, and tested, as possible.

On the other hand, unless one is totally isolated and/or committed, it is important to be able to show tangible progress on a project in terms of visuals or notable features (or perhaps of number of tasks completed). Even if one is completely on his own, it helps morale and provides motivation to get a measurable degree of advancement, rather than updating “50% done” to “90% done” (especially since most such numbers are completely arbitrary anyway).

My current major project has many unknowns (due to the new platform), and loads of opportunities for choosing between minimal implementation of a base class, merely to support a specific task, and a complete and proper implementation, with testing, to handle all anticipated needs. Specifically, when porting a solid library of routines from Windows, I have the choice whether or not to port routines that may not be used in this particular game, but will definitely be needed down the road.

The approach that I have been taking is… well, I will just leave this as an enigma for now.

(As this post runs from “paradox” to “enigma”, I must end with a decisive quote.)

War! What is it good for? Absolutely NOTHING!
… War can’t give life; it can only take it away.
— Edwin Starr

Formula One 2007

I am excited for the start of a new season of F1 racing.

Tonight (a.k.a., tomorrow morning, Australian time), the first round of practice for the Australian Grand Prix gets underway in Melbourne. This is the first race of the 2007 season for Formula One, after about five months without direct competition. There are lots of changes that could make this a very interesting year.

I could write pages about the upcoming season, but in order to get enough work done before the race starts, I will stick to the main headlines. After 16 seasons, seven-time World Champion Michael Schumacher has retired. Reigning back-to-back World Champion Fernando Alonzo moved from Renault to McLaren, replacing Kimi Raikkonen, who is now at Ferrari with Felipe Massa, fastest in winter testing. American Scott Speed finally regained his ride at Toro Rosso and, in his only test, went faster than the more experienced drivers at their lead team, Red Bull. (Note: Scuderia Toro Rosso means Team Red Bull in Italian.) All teams are on the same tires this year, and each is required to use both available tire compounds during the race, which could lead to both more strategy and more passing.

One of the most interesting stories is the rookie class this year. Lewis Hamilton, 2006 GP2 Champion, and Heikki Kovalainen, 2006 F1 test driver and 2005 GP2 series runner-up, are both going to top teams (McLaren and Renault, respectively), while the highly rated German driver, Adrian Sutil, will be at Spyker. Sutil will have a chance to shine if he can wring extraordinary performance out of his car, which is expected to be toward the rear of the field. Kovalainen is the first Finnish driver with a perceptible personality and could outshine (or at least pressure) his much more experienced teammate. Hamilton is an impressive driver, in one of the top two teams, paired with the reigning F1 World Champion, and he stands an excellent chance of winning in his rookie season. (This Brit also happens to be the first black driver in F1, so if he performs well, expect lots of comparisons with Tiger Woods.)

So what does all of this have to with game development? In the official McLaren preview of the Australian Grand Prix, the following quote is attributed to Lewis Hamilton (in the first paragraph):

My brother and I have always been playing Formula 1 games on the computer, and now I am going to be one of the cars in those games!

Very cool, indeed.

New development platform

I have had a beneficial break from Windows lately.

Over the past few weeks, our development efforts have shifted toward a new platform, and I have to admit that I have been enjoying the relatively Vista-free existence. Being less accustomed to the new tools and libraries, there is more for me to learn. Ironically, though, it feels like I am being more productive, due to actually writing original code that is not (and cannot be) copied from other projects. Of course, there is plenty of porting, too, but the system independent stuff actually works with minimal modification.

During the month or so prior to this change, my days were spent doing lots of quality assurance on pieces of code for Windows Vista and then applying the tested alterations to each of our shipping products. The one new product was a replacement for a piece of software (from another company) that broke under Vista and was not expected to be updated. It was fulfilling to get each of those products completed and out the door, but I had also gotten my fill of dealing with Vista idiosyncrasies.

All of my primary communication software (and most of my development tools) are on Windows, but when programming for [the new platform], I do not need to use Windows at all. Last week, I only modified three (!) files on my main development hard drive (making backup almost pointless). On the other hand, I am also physically separated from my email, newsgroups (including the ASP and AISIP), and preferred browser. This means that I can be more productive in terms of programming, but at the cost of being more disconnected. This is why the frequency of blog posts here has fallen (and will stay depressed for a while).

As I started writing this, I realized that my two primary associations with the word “vista” are “horizon” and “sunset“. I guess that what Microsoft is subtly indicating is that Vista heralds the sunset of Windows dominance and we should now be looking for new horizons. I am there.