Matt Hackmann

MattHackmann

The thoughts and goings-on of some programmer dad.

In Hopes of Winning a Free Trip to Japan

Anime News Network, one of my daily internet stops, is hosting a art contest in which the prize is a free trip to Japan. Seeing as I am planning on paying for such a trip within the next couple of years, I figured it'd be worth a shot to try and get one for free. Granted, my art skills are probably nowhere near the level of the more devoted and talented frequenters of ANN, but hey. Never hurts to try. So, here's my entry for your viewing pleasure/horror.

Kirino Kousaka

Kirino Kousaka of "My Little Sister Can't Be This Cute" fame, drawn for the ANN Go to Japan contest. Sadly, I have not actually begun to watch this show (was busy finishing out Toradora!), but it certainly is high on my list.

I'd say that this is, to date, the fanciest piece I've attempted over all (color, background, pose, etc). Arguably, I think I may have missed on the pose, but moving out of one's comfort zone is how one improves.

Made with Illustrator and Photoshop CS4

Rise From Your Grave - Chainploder

I was poking around my giant hard drive a couple days ago, looking at a bunch of old programming projects I'd done. Some of these had some pretty cool concepts behind them but, for whatever reason, I never completed them. So, in a series of blog posts shamelessly ripping a line of dialog from Altered Beast, I will present to you some of the cooler of these projects - complete with all their original source code. Today's highlight is Chainploder.

Continue Reading

Another Code Battle Royale

My brother and I are programmers. This must be discreetly understood or no good will come of the story I am about to regale. Every once and again, we'll embark on a coding competition. Last time was a game, this time a chat client. My weapon of choice was various web languages (PHP and JS for the programatic stuff) and his was C++. Arguably, I had an advantage.

Even though I was able to bypass the whole sockets layer, I did set a rule for myself: I could not resort to using a transactional database (i.e. MySQL). Granted, I didn't foresee any issues as I had the power of APC caching on my side. It turned out that this would be what I fought with most and, eventually, just give up on.

For whatever reason, despite the fact that apc_store was returning success on caching an object, it would not persist. A quick call to apc_exists immediately after the store command with the same cache key confirmed this. I went round and round with this issue. Sometimes the object would persist for one or two sessions but ultimately would up be dropped. I read somewhere that storing an array of objects could cause issues (which I was doing), so I serialized the bitch before caching. No dice.

In the end I said "screw it" and just created my own disk-based caching model. I decided to take the whole thing a little further and account for cache collisions (two instances accessing the cache at the same time) which may or may not work. The only reason I even bothered was because I have an ID variable that needs to iterate for every single chat posted and sought to avoid two scripts running simultaneously and writing an erroneous value (a point that was raised in some fashion during my Digg interview.

So, two hours after the initial one we'd allotted for the competition, I wound up victorious. While not glamorous, my chat client does indeed work: Live Demo - Source

What of my brother's program? Well, let's just say the computers weren't talking too nice and the program kept crashing.

Victory is mine!