Back on Track

It looks like momentum is finally starting to build.

The silver lining to reinstalling a development system from scratch is that one can configure the software and environment exactly as desired, perhaps upgrading a few pieces along the way, while eliminating items that are obsolete and mothballing the relics. This all leads to more efficiency, both functional and mental.

In my case, I replaced two hard drives, giving me more space for programs, data, and code, and I switched my primary development system to Windows XP. The system is still running on the same processors, graphics cards, and memory, but the elimination of considerable “winrot” has increased operational speed noticeably. For those unfamiliar with the term, winrot is the term for the manner in which Windows operating systems gradually slow down through the accumulation of junk (i.e., unnecessary processes and data). I used to reinstall every 3-4 months, but this one took more than a year before being forced upon me.

More importantly, though, since I decided to replace my old 8G source code drive at this juncture (as it had already outlasted two system drives), I had to choose which unfinished projects would be prioritized and which would be relegated to a backup somewhere. All at once, I had to look at the number of playable game prototypes I had not completed while culling the number of active projects down to a handful. I ended up with exactly one internal project for each (current) external project, a manageable number.

Instead of an unruly mass of many interesting projects demanding my time, I now have just a few, complete with a priority order and schedule for each, allowing me to focus better. Additionally, having just spent the better part of a week fighting with hardware and software configuration, I want nothing more than to (continue to) bury myself in programming, and when I polish off the current projects, I just need to choose my favorite working prototype as the next product.

Lest anyone think that everything was smooth sailing after the earlier hardware and driver problems, there was yet another casualty during the week. My CD-ROM drive gave up the ghost, apparently having tired of all the disc changing. Since the development system has another optical drive, a DVD burner, that can function just fine with CDs, I just left the dead hardware in place and continued unabated. When I next get an itch to mess with hardware (maybe in Springtime) I will replace it. Until then, I am just a software guy.

Out of Hibernation

The start of 2006 has not been as smooth as I would have wished.

The forecast for today is a high in the 50s (Fahrenheit), which is quite warm for Michigan in January. It makes it easier for one to get out and about, though it is fairly detrimental for ice racing. It also makes it difficult to chain oneself to the office chair, especially when the developments on the desktop have been as frustrating as they have for me.

After our traditional two week hiatus, we went through the usual motions to jump start the new year. We have a big project meeting in which we discuss the plans and goals for the upcoming 12 months. For 2006, we have the same projects we had toward the end of 2005, and there were a few unfinished pieces of business left over that have to be resolved shortly. I am excited by the prospects, so I jumped right into my part.

Unfortunately, my enthusiasm was quashed in short order. As usual, I manually updated all of my virus and spyware definitions (for 5 products in total) and launched a complete drive scan. No malware was discovered, but during one of the scans, my environment hard drive crashed, leaving my primary development system sans operating system. Fortunately, my source code and data is on a separate physical drive, so nothing was permanently lost, save my time for reinstalling everything (and a couple hundred bucks for hardware).

So I eventually had the system hardware reassembled and (seemingly) functioning, and I decided to upgrade to Windows XP Pro, which was already planned for the next reinstall anyway. The operating system installed fine, but shortly after I enabled my second monitor, on a secondary video card, the machine locked up solid, but not before displaying significant amounts of garbage on that screen. Of course, now that the display is enabled, the system tries to use it on each bootup. Fortunately, I was able to tiptoe through one of these sessions to disable it again, and now I am back to stable operation, it seems.

As I type this on my brand new laptop (which unfortunately does have my email installed yet), I am downloading updated video drivers, hoping against hope that the lockup and screen artifacts are the result of a software bug, despite the appearance of a hardware failure. I am not really looking forward to purchasing a brand new graphics card as well, especially given that two such almost simultaneous problems could indicate a bigger issue (i.e., power supply or motherboard problem). I do not have the time to mess with this stuff.

Alas, one of the (few) problems with having a very small company is that I cannot just hand the problem over to a technician to fix, since I am the technician. When I want to be just a programmer, this is an annoyance and frustration.

Looking at the positive, this problem occurred just as the year was getting started, rather than right before a major milestone deliverable, and now we have it out of the way. If you want to feel progress, you can start at a low point and it is easier to improve. I am looking for the satisfaction of a small victory in being able to simply program.

In a bit of coincidental satire, the radio just played Bachman-Turner Overdrive’s Takin’ Care of Business:
Look at me, I’m self-employed; I love to work at nothing at all day.

Not true.

Bad Luck and Poor Planning

My previous post seems to have been somewhat prophetic.

I have not been able to find much time to write for this blog recently, and since the last entry, my life has taken a few sharp turns. December is usually a busy month anyway, and looking back to last year, I see that the month was entirely silent. This year, we had one project that was slipping and, thus, impacting another project. With two family birthdays early in the month, the holiday season, and an upcoming vacation, it was fairly difficult to maintain focus. It was stressful.

Then, in the midst of this, an event occurred and put everything into perspective rather quickly. My wife’s father died suddenly, albeit not unexpectedly, and really put a damper on both productivity and our ability to enjoy the holiday season. This bit of bad luck is not something that one can control, and when it happens in this manner, one is almost instantly thrust into what seems to be an alternate world.

During the ensuing confusion, I was able to observe the results of poor planning on the part of my father-in-law. Although he had been fairly clear about his wishes, and had put many of his important papers in a single place where we knew to look, he never actually wrote any of this down or made it official. Instead, those who are most affected by and emotional about the death, and least likely to be fully rational, are forced to be making important decisions based on “what he would have wanted”. Suffice it to say that despite his best intentions and a reasonably simple estate, the aftermath is somewhat messy.

The practical lesson to be taken from this is that one should always have a proper will prepared and filed, if only to relieve grieving relatives from the burden of making decisions. We are going to take care of this ourselves, just as soon as I can get my wife back here, physically and otherwise.

Normally, our office closes for the two weeks around the end of the year. Due to the placement of the holidays this year, the scheduled closing does not correspond with school vacation times, so we have split between having a vacation this week and next and (me) having next week and the following week off. The last day before the break is traditionally a half day of work (if even that), with the afternoon devoted to a party and games. Today, though, my development ran into the afternoon, and when I had completed that, I was forced to recognize that I am the only one left here. (Even the cats are away visiting, though I do have the bird.)

Sigh.

Anyway, before I exit stage left (at least for today), there is a seasonal quote to share:

Games, Spirit! Games!! — Patrick Stewart, as Ebenezer Scrooge
[from A Christmas Carol (1999)]

Alas, Charles Dickens omitted these precise words from the original book, though the games themselves were certainly included.

Luck and Planning

Let me expound on the relationship between planning and luck.

In response to my Marketing experts post, Scott commented:

“Great advice, and I think you’re largely correct. The point I question is how you listed ‘Good Luck’ as a separate point. While luck in the sense of getting things to go your way is real and important, I would consider coupling that with your ‘Good Planning’ point, as good preparation and foresight is usually what leads to “improved karma’, as you put it.”

In other words, as the 1st century Roman philosopher Seneca wrote, “Luck is what happens when preparation meets opportunity.” I certainly agree with that, and I would be in no position to argue that point (and neither would Seneca, for that matter). Planning and luck are definitely related, as good planning allows one to take advantage of opportunities and adjust to setbacks. This gives the appearance of simple luck, when a significant portion of the outcome is due to preparation.

The best real world example of this that I can think of is the game of Backgammon. Moves in the game are based on the random roll of a pair of dice, and expert players have the ability to optimize their position for any outcome. Novice players often believe that expert opponents get lucky rolls, when the truth of the matter is that experts work towards having more good rolls and fewer bad ones. This phenomenon is so pronounced that one can read the rec.games.backgammon newsgroup and regularly witness accusations of fixed dice, whether the alleged cheating is by computer program, online game site, or even another human player.

However, that “luck” is based on situations for which one can plan and prepare, whereas in my posting, I was referring to the type of luck over which one has no control at all, or may not even understand. For example, economic factors affect sales in unpredictable ways that vary by product type, whether that be by leading, following, bucking, or even ignoring a trend. One also has little or no control over the competition or the direction a particular market goes. This type of luck can be either good or bad.

Let me provide real examples of both bad and good luck that occurred to us at SophSoft in rapid succession. To set the stage, during August and September of 2001, we were developing a self-funded game title. Around that same time, as a contingency plan, I had scheduled a meeting about another job, and it went very well. The game, which had building demolition (as with a wrecking ball) as its theme, was progressing, too.

Then, on September 11th, the world changed as a result of a terrorist attack. Suddenly, a game about tearing down a building was absolutely not entertaining, and we could not bring ourselves to work on the product, much less publish it, in the wake of the tragedy. With the contingency job, which had almost been a done deal, that company immediately froze all hiring indefinitely. Some general preparation helped mitigate damage to our company, but there was no way we could have planned for an event of such global magnitude.

In the following days, we all mourned, and then our company set about to assess the situation. We had little funding with which to build a new game, and contracting prospects were bleak. The only solution was to work to re-theme the existing game prototype on a shoestring and hope that everything would work out decently. After a few weeks of moving in this direction, I received an email inquiring whether I (specifically) was available to do contract work in a game genre I knew intimately. To make a long story short, that unexpected contract saved our company. Sure, we had a plan in action and had prepared the groundwork for receiving such an offer, but the fact that an unsolicited contract offer arrived when we most needed it was absolutely lucky.

To clarify one final point: my advice for improving ones luck was “work to improve your karma“. Fundamentally, the items that I chalk up to luck are those over which one has no control, that basically happen as a result of (mathematical) chaos in the universe. By definition, one cannot exert discernible influence over these occurrences, so instead of suggesting that one hope or pray, I inserted my own version of Pascal’s Wager:

Strive to be a Good Person; it may or may not influence luck in your favor, but in any event, you will always feel good about yourself, and others will tend to help rather than hinder you in your endeavors.

You make your own karma.

Quotes of the Day

Here are a couple of quotes that caught my attention.

Me, too. I’m In-de-pen-dent.” — Rudolph the Red-Nosed Reindeer
[from Rudolph, the Red-Nosed Reindeer (1964)]

I was doing these visualizers for WinAmp, this plugin where you have 3D dancing girl at about 10,000 polygons. Back in 2000, that was pretty respectable. There were lots of bounce physics on those. I came up with the proper solution to the breast bouncing one night over seven Guinnesses with a waitress. I showed her my laptop, and what I was working on, and she happily jumped and bounced for me.” — Paul Steed
[from recent Gamasutra interview]

Keep smiling.

Marketing experts

Most marketing “experts” are nothing of the sort.

The problem with self-proclaimed marketing experts is that they primarily market themselves. For the most part, marketers are dealing in something of a psychological art; marketing is not a science. Researchers can conduct experiments to show certain aspects of the process, but they cannot measure everything. However, marketers work in the area of human interaction, outside a controlled environment, so they have little to offer beyond opinions. Results can suggest a correlation between marketing and sales, but there are too many variables to be sure, and most so-called experts do not actually offer real data to support their conclusions.

In my opinion, sales success results from some combination of five ‘good’ factors:

  1. Good product
  2. Good planning
  3. Good marketing
  4. Good timing
  5. Good luck

There is no doubt that marketing can play a role in building a successful product (defined broadly), but as a scientist might say it, good marketing is neither a required nor sufficient condition for success. I am getting tired of reading opinions stated as fact by people who do not (and cannot) fully understand all of the factors involved, instead chalking every success and failure up to marketing.

Worse yet are those who are so shallow as to believe that the only measure of success is money, and that a product which earns more is necessarily more worthy than one that makes less profit. That flawed concept then becomes the product that is marketed and, alas, some people buy in. Sadly, they sometimes do so in a literal sense.

Here is what I have experienced. The most successful business people I know do not proclaim themselves experts; they earn respect without demanding it. The wealthiest people I know are not prone to declaring how much money they make and do not use their balance sheet as a scorecard. Those who crow about their own importance and/or earnings at every opportunity just strike me as pathetic.

Personally, I generally judge my own success by criteria other than money. I certainly want more money, and I am willing to work hard to earn it. However, I have made many decisions in my life and career that are oriented toward other goals. I value my family, my quality of life, and my personal integrity higher than my checkbook balance. It is important to me that I enjoy what I do for a living, and that I do quality work. My wife and I try to raise our children in a loving environment where they can thrive and become productive citizens (without the insecurity that might cause them to always seek validation by demanding public attention and acknowledgement).

Anyway, we were talking about marketing. (Remember marketing? This is a rant about marketing.)

Marketing advice and ideas should be taken as opinions, mixed with ones own values and common sense, and then flavored to suit the product and circumstances. There is no right answer, and there are always factors beyond ones control. However, there are some wrong answers and obvious mistakes to avoid, and these lessons are probably more valuable than any success story.

The five good factors are listed above in order from most to least control, so here is my advice:

  1. product (full control) – create something of quality
  2. planning (much control) – prepare for opportunities and setbacks
  3. marketing (some control) – think about your customers
  4. timing (little control) – either hit the window or fail early
  5. luck (no control) – work to improve your karma

Of course, that is merely my opinion, and comments are certainly welcome.

Microsoft Visual Studio 2005

Here is my quick review of this updated development system.

Over the weekend, I took a break from productivity to finally check out Microsoft Visual Studio 2005. The DVDs had been sitting here quietly staring at me ever since I got them early this month, so I finally made some time to install it and see how it measures up to Microsoft Visual Studio / Visual C++ 6.0, which I currently use (and prefer) for the bulk of my development work.

To set the scene, I already had Microsoft Visual Studio .NET 2003 on my system, though I never bothered to try the 2002 version. The only good thing about this product was that it would peacefully coexist with the earlier (not .NET) version, save a few stolen file associations; otherwise, though, the product was a dog. In preparation for a review, I had started on my second full page of notes about problems before I gave up on VS .NET 2003 entirely. I simply did not uninstall for fear (later proven justified) that it would mess up my productive and usable development system.

I had read a few glowing reviews of Microsoft Visual Studio 2005, so I was hoping that they were accurate and that I could safely upgrade for new projects, since Microsoft seems to be actively campaigning to eliminate my current system. Apparently the phrase “compiler that is seven years old” appears on some list of talking points, as though it were derogatory. Lame.

Well, I uninstalled VS .NET 2003 and began the installation of VS 2005. The first thing to notice is that somebody in marketing figured out that “.NET” does not sell product (but does allow “.NOT” comments), and therefore that portion of the name is gone. The installation was smooth, and faster than for the predecessor, although the stylized graphics overlaid upon the same three people looked like they were either peering through a jungle gym or possibly prison bars. The selection of models was interesting, too.

After installation was complete, I went to create my first simple project. The missing “.NET” was the elephant in the room, as none of the options mention .NET by name, and knowing that it was a large part of this product, I was not sure what to avoid. Absolutely the last thing I want to do is accidentally build a game that requires another 24M download. I believe that “CLR” (for Common Language Runtime) is the first euphemistic acronym I have encountered in my career, though I could be forgetting something. I will also note that there are no project options for creating a static library (.LIB), nor for a standard DLL, unless it uses MFC. (Yuck.)

Anyway, the answer was that “Win32 Project” implies no .NET or CLR dependency. The empty project was created nicely, and I went to type a copyright symbol in my file header. No dice. It seems that the standard [Alt][0][1][6][9] does not work in the editor, a major oversight in my book. Wait a second. It works if I toggle the [NumLock] key to on. It also apparently works in a “text file” but not in a “C++ file”, so it may have something to do with the silly code outlining.

The good news is that Microsoft finally figured out how to make a help window pop up maximized, which is a massive improvement from VS 2003 being challenged to even get the miniscule window onto the correct monitor, nevermind properly sized. Unfortunately, the default for help is to hit the internet first before checking the almost 2G of help that I just put on my hard drive. That is an amazingly stupid default. Worse, I was just checking for WinMain() documentation and it just jumped to the first (wrong) thing it found, and when I got to the correct page, the declaration for the function was simply wrong!

I will also mention that much of the user interface is gratuitous fluff. There is no purpose to the non-standard menus, nor to the altered toolbar. Some standard items from version 6.0 were altered in strange ways that just made them harder to use. Whoever thought that pulldown menus to select an output window was a better idea than the tabs used previously was delusional, and the concept of windows (or options) appearing and disappearing based on context is much more confusing than useful.

When it comes to interface customization, though, the team struck out by removing icons from functions that had them in previous versions, so for my PC-lint toolbar icon, I can have text only, draw my own by hand (no pasting!), or select from a small palette of irrelevant images. (I now click an eight ball to lint a file, or a smiley face to lint the whole project.) The new icons provided look nice, but eliminating icons was a definite, if minor, step backwards.

So here is the heart of the matter for using VS 2005: actual development. I was able to use the editor and it did not seem as sluggish as the 2003 version. I was able to ignore the outlining and annoying highlighting fairly quickly so productivity there was not adversely impacted. I loaded up a version of Most Popular Solitaire and attempted to compile it. There is a new set of warnings about certain “unsafe” library calls, which were easy (albeit unnecessary) to address, and then the project compiled. It is also executed just fine.

This review needs benchmarks, of course. Actually, I only realized it needed benchmarks when I noticed a discernible (read: obvious) difference in compilation speed. One feature that VS 2005 advertises is simultaneous compilation, which seems like it should benefit my multi-processor development system. A complete rebuild of the Most Popular Solitaire project consists of three executables: release, debug, and checked. I timed a complete rebuild of the same project on my system, first with MSVC 6.0 and then with VS 2005 (allowing for the possibility of a speed advantage for the latter due to drive caching).

The difference in compilation speed was dramatic, 67 seconds versus 5 minutes 12 (312 seconds). The only problem is that the “compiler that is seven years old” was the quick one. The old compiler is roughly four and a half times the speed of the “improved” version. When I am programming, I compile quite often, and this difference between the two products could definitely impact my productivity adversely. Making the switch to VS 2005 would cost me an hour for every 15 rebuilds (of a fairly small project). Yikes!

The bottom line is that Microsoft Visual Studio 2005 is only decent when compared to its immediate predecessor, but the .NET line of this development system has still not reached the functional level achieved by the last of the purely native compilers, although it is getting closer. If one needs a feature unique to VS 2005, such as smart device emulation or .NET compilation, then this system is usable. If you are, like most shareware and PC game developers, developing native games or applications for Windows, I recommend sticking with Microsoft Visual Studio 6.0 (with all of the service packs, of course).

Happy Thanksgiving!

Today is the fourth Thursday in November.

Here in the United States, Thanksgiving is traditionally a day for gathering with family and enjoying a large meal together. In our household, one tradition is to go around the dinner table and say what makes us thankful on this holiday. Imagine our table filled with a big turkey, stuffing, mashed potatoes, turkey gravy, and cranberry sauce, as I start…

This year, I am thankful for being able to make a living doing what I enjoy. Professionally, I am thankful for having good clients and interesting projects, and I am thankful that our company has survived in this tough industry longer than any other employer I have ever had. Personally, I am thankful that my family is healthy, that my wife is still supportive of my career despite the hardships and sacrifices, and that my children are both smart, enjoyable, and generally great kids.

While one is being thankful, it is an excellent time to also spare a thought for those less fortunate. As mentioned (and possibly given short shrift) a couple of days ago, the Child’s Play charity is an initiative within our industry to provide toys and games to kids in Children’s Hospitals in the United States and, now, Canada. It is really easy to support: Simply go to the Child’s Play web site, click a controller representing a hospital, and purchase one or more products from the (Amazon) wish list to be shipped directly to the hospital for distribution to the children. As an alternative, simply click on the PayPal link and just donate cash to the effort. It takes less time and thought but will be just as appreciated.

One more big tradition is gathering around the radio to listen to Arlo Guthrie’s “Alice’s Restaurant, which is playing right now as I finish this message…

“You can get anything you want, at Alice’s Restaurant (‘cepting Alice).”

Game Developers Recognized

Awards were announced for some deserving game developers.

The Walk of Game inductees for 2006 have been announced, and the two developers on the list (among games and characters) are Sid Meier and John Carmack. The Walk of Game is located in San Francisco, within Sony’s Metreon, and styled after Hollywood’s walk of fame. Sid and John join the first two (human) inductees, Nolan Bushnell and Shigeru Miyamoto.

It hardly seems necessary to describe the accomplishments of famous developers, nor does it seem fair to reduce their contributions to the game industry to a couple of sentences, but here goes. Sid Meier, now a partner in Firaxis Games, is most famous for his design work on the games Civilization and Pirates, both published by Microprose, of which he was also a founder. John Carmack is most famous for his programming work on the Doom and Quake series, developed by id Software, where he was/is a founding member. (The Walk of Game web site has somewhat longer biographies.)

This seems like a decent time to tell my only Sid Meier story

It was in Las Vegas in January of 1994, during CES (Consumer Electronics Show). This was back when CES was the biggest conference for video games, before its replacement with the launch of E3 (Electronic Entertainment Expo) in 1995. For context, one needs to know that Spectrum HoloByte, the company for which I worked at the time, had purchased Microprose, Sid Meier’s company (founded with “Wild” Bill Stealey, who had already departed the scene). It is also important to realize that the combined company was still marketed with two separate brands, and we were all anxiously awaiting the overdue announcement of the new name for the combined company.

I was at the conference as the Lead Programmer on Star Trek: The Next Generation, “A Final Unity”, the highest profile game at the booth, or just as a “red shirt” to man the booth; take your pick. Realistically, Sid Meier was at the conference because, well, he’s Sid Meier, though ostensibly he was there to promote his latest title, a non-game program related to music training that is now so obscure, frankly, that I cannot even find a reference. He described it to me at the time and it sounded interesting, though pretty far afield from his successful games. Of course, others confided to me that he was important enough to the new company that he would get to work on the occasional pet project.

Anyway, after our big ST:TNG event at the (then) brand new MGM Grand, all of the combined Spectrum HoloByte/Microprose people at the conference gathered at a local restaurant for a company dinner. I was seated near Sid and several of us were talking. When he found out where I was from, Sid Meier revealed that he was also from Michigan and had attended the University of Michigan. He also mentioned at some point that he was considering what he wanted to do next (a thought process that likely culminated in his co-founding of Firaxis). I suggested that we should get together to form a small division of the company based in Michigan; we could call it MicroSpec. Alas, he chuckled at the joke but missed the serious offer behind it.

I have many other stories about or associated with that trip to Las Vegas, but they will have to wait for a future date. I do not recall ever actually meeting John Carmack (though I may have), but I do have an id Software story for a future entry as well. However, to get back to the theme at hand…

It was also recently announced that Ralph Baer has been honored with the 2004 National Medal of Technology, which is “the highest honor awarded by the President of the United States to America’s leading innovators”, according to the National Medal of Technology web site. Contrary to popular misconception (see first Walk of Game inductees), it was Ralph Baer who invented the first electronic game, the Magnavox Odyssey, which inspired the game Pong (not the other way around).

No, that “2004” above is not a typo. President Bush is clearly a little slow.

A little bit of Schadenfreude

Schadenfreude is defined as “pleasure taken from someone else’s misfortune.”

Jack Thompson, a Florida attorney, has taken the despicable practice of ambulance chasing to a national level in recent years. For those unfamiliar with his tactics, he seeks cases where young people commit acts of violence and then attempts to pin the blame on video games (rather than the individual who pulled the trigger or those who provided the guns). He preys on the families of victims, grabs as many headlines as possible, and files civil lawsuits against much of the game industry, including developers, publishers, manufacturers, and retailers. Mind you, he has never won any of these cases.

The latest headline case was that of Devin Moore killing three people in an Alabama police station, for which he was (appropriately) convicted and sentenced to death. Alas, he apparently told the arresting officer, “Life’s like a video game. You’ve got to die sometime.” That was certainly more than enough to attract the vultures. Testimony in his trial showed that Moore had a childhood full of mental of physical abuse, but somehow Thompson figures that his playing Grand Theft Auto III was the primary factor in the shooting.

During the resulting civil lawsuit (still in progress), Thompson’s spotlight seeking behavior prompted the attorneys for the defense to introduce a motion to have him removed from the case. In an attempt to avoid that outcome, Thompson attempted to remove himself from the lawsuit first. However, the judge in the case prevented him from withdrawing voluntarily and instead temporarily revoked Thompson’s rights to practice law in Alabama, according to this news item on Gamasutra.

To be very clear, I am saddened by the murders and my heart goes out to the families and friends of the victims. I am no fan of violent video games, either. However, Jerk Thompson and his crusade simply pour salt into the open wounds of the survivors. Video games are improperly scapegoated, while the focus is taken away from the real issues of poverty and child abuse. The only thing that benefits from all of this is one inflated ego, and I, for one, am pleased that the judge took this action.

Rant over.

For more insight into the background, one can read about how Jack Thompson reneged on a charitable donation pledge, and further, how he his now under investigation by the Florida Bar Association after accusing Penny Arcade of blackmail and criminal harassment after they had they unmitigated gall to make a $10000 charitable donation in his name, all of which gave rise to the I HATE Jack Thompson t-shirt.

Meanwhile, Penny Arcade actually makes a real difference with their Child’s Play charity, which accepts donations and provides toys and games for sick children in hospitals around the world. Better still, the charity take nothing for administrative overhead, so 100% of the donations go directly to the hospitals for distribution to the kids. In this season of giving, I encourage everybody to make a donation to Child’s Play. Or, at least, buy a t-shirt.