This old URL hasn't been updated for a while, but I'm still putting out new stuff! Check out the shiny new domain at

Monday, September 12, 2011

Tuesday, February 2, 2010

Android and Droid

About two weeks ago I replaced my previous phone, a Motorola Q9m, with the new Motorla Droid.  Its an improvement, but the entire ecosystem isn't as strong as the iPhone's, at least not yet.  The phone is pretty nice, even straight out of the box.  The high-res screen is bright, colorful, and clear, although some apps are a big flummoxed by the change from the standard resolution.

My issues are that the little user interface elements just aren't there.  For example, the contacts list is hard-coded to be sorted only by first name, and there's no way to set specific contacts to always or never use Google Voice.

The other issue is that the Market, the App Store equivalent for Android, is still a little thin.  I'm a firm follower of the Getting Things Done (GTD) method, and Astrid is a functional, if not equivalent, reproduction of the OS X & iPhone pair of, but is still the best available.  The Market itself is a cluttered mess, with no ability to really browse for an app except by name.

Android 2.1 has since been released with the launch of the Nexus One, and adds some relatively insubstantial features.  A news post earlier today said that Google pushed an update out that includes native multitouch apps, so I'm not going to comment on the multitouch issue until I get a chance to play with them myself (or if Verizon takes too long launching this update, just like its taken nearly a month to roll out the update from 2.0 to 2.1).

I'm looking closely at the functionality of for iPhone, with the intent of porting it to Android. The Cultured Code forums have a lengthy thread advocating for an Android client, but what I'd like to deliver is a client with identical functionality, but native to Android (something I don't think the Cultured Code folks would do, since the default Android UI elements are pretty ugly in comparison to the iPhone's).

Thursday, December 17, 2009

Making a side-scroller

At least in the US, the ideas and concepts presented in side-scrollers usually center around Super Mario Bros.  However, one of my favorite games of 2009 is a dead-simple side scroller called Canabalt, which strips the game down to a single button: press space to jump.  Inspired by Canabalt's retro graphics and simple gameplay, I decided to create my own.

I don't have much of it done, but development is proceeding relatively quickly thanks to the Allegro library.    Its a pretty simple library that handles a lot of the typical game stuff (loading sprites, blitting, etc.)  I'm considering just repurposing one of the examples that already has the loading & rendering code written, but I would rather not at this point since I want to have that learning experience.

The general game plan is to have the player start in the city, where everything is dark and grey, and as they gain speed, color enters back into the world as they start to move into the countryside.  As with Canabalt, it only needs one button (forward movement is automatic, the only thing you need to do is jump).

Hopefully it'll be done by the end of my upcoming break.

Tuesday, December 1, 2009

DIRT 2, or, Why Games Come Out on PC 3 Months Late

Back in September, Codemasters' Racing Studio released their game for the year: DIRT 2.  Since I'm a sucker for racing games (especially the Codemasters RS series, Race Driver/GRID and Colin McRae/DIRT), I decided to check out the PC demo when it was released this morning.

First impression: the game is slick and sexy.  Everything from the menus to the in-game HUD has been redone, and has been given an extra splash of style.  Gone are the minimalist white menus of CMR04/05 and the first DIRT, and in their place is a trailer, festival grounds, and other real-life areas.  The only disappointment here is the festival grounds, which are just skybox swaps for each location.

As for the actual racing, its the same gorgeous visuals mixed with the same twitchy, yet floaty, handling from the first game.  A new added bonus is that the rally stages are now staggered starts, as opposed to individual journeys, so other racers come into play in a much more direct manner.  Doing poorly will have the next driver pull up behind you, and doing well could lead to a pass (or two, if you're lucky).  The other mode offered in the demo was a motocross-style race, on a closed arena circuit, against 7 other drivers.  AI was better than in the previous game, and would yell at you if you made contact, and typically stayed out of your way unless it was attempting to run you off.

The in-car view is back, and its still good.  This view is harder, more realistic, and looks awesome.  I have no idea if multiplayer matches can lock to this view, like in GRID, but I'm hopeful.

The graphics are a step above anything I've seen this year, and actually come close to Crysis.  The amount of small detail in the game is just crazy.  Heavy vehicles like trucks hunker down and their wheels bulge under the weight, while lighter cars keep their wheel walls straight.  Brushing up against a stone wall knocks rocks off the top, creating hazards for anyone close behind.  The sun reflects off of the corner of a shiny bumper, or the crest of the roof, and creates distortions and halos around the screen.  Driving through a big puddle completely occludes the screen for a few crucial seconds while your wiper blades whisk the water off.  Since everything is so good, its disappointing to have a female driver get voiced by a man, a boneheaded mistake to make.

To top it off, here's a video capture from a replay, at 720p.

Saturday, November 7, 2009

My sordid past

My sordid past isn't what the average person thinks as sordid.  But, it is sordid for a developer.  I've spent two summers working as *gasp* a Visual Basic for Applications programmer.  I hate the language, I hate the developer tools (a knockoff of Visual Studio 5 or 6 embedded in Microsoft Office), and I hate some of the overdone verbosity of the language.  While the language has a good API behind it, and the structure of the language is something along the lines of GTK+'s "just keep typing til you get something you want done" development, it was missing a few critical, common chunks.

One of these chunks is the bog-standard stack.  There's no stack object built into the API, and Microsoft's "here's how to make a stack" guide is a bit complex for everyday use (they go into some weird ByRef memory management stuff, and an item linked from a stack isn't a true stack, per se). 

I rolled my own, but added a few tweaks that are outside the normal stack.  I added a "peek" function that either checks the top of the stack without popping, or can look up a value at a specific index.  Also added was a depth function, to check how big the stack is, and the ability to look up if a value is already in the stack.  I created this block for a project that needed to analyze the full contents of the stack on a repeating basis, and it worked out very well.  There are still a few tweaks that could be made, such as peek returning a null if the index is outside of the scope of the stack head, or maybe adding in more substantial error checking.

Rather than posting the file here, I'll let PasteBin handle the beautification here:

Wednesday, October 28, 2009

Nethack: A Microcosm of Reality

A quick view at the date of my last post says that I've been neglecting my posting duties.  I blame a small app that's been sucking up every last bit of free time from me.  Normally, I'd call that app "The Stute," and I've been very busy with that.  Instead, the culprit is far simpler: Nethack.

For those of you unfamiliar with the concept, Nethack is a "rougealike": the game is played entirely in text-mode (although there is a version with tiles available), the dungeons are generated randomly on each playthrough, and the game is ridiculously difficult.

Its the last bit that leads me to how Nethack is a microcosm of the modern world.  When you begin, just about everything hates you.  Your only friend is a loyal pet, and if you're not careful, they can turn on you, or worse, die on you.  In the early game, just like a child, you are vulnerable.  A single misstep to the "DYWYPI" (Do you want your possessions identified?) screen.

Something about Nethack strikes me, not only because of the difficulty, but the way in which things can work together.  If a fireball happens to hit a potion, it will boil.  If a rolling boulder trap hits a shopkeeper, the shopkeeper will perish, and any valuables will be squished in the process.  Everything just "clicks."

Like in the real world, when everything works together, its a sight to behold.  That nice big meal means you can travel farther without having to scrounge for food, both in-game and out.  If you're lucky (and skillful enough) to charm an enemy, they can quickly become a friend.

So, Nethack.  For a game that uses glyphs, its more realistic than anything on the market today.

Wednesday, February 18, 2009

Broken Windows Economy...

In my "inaugural thoughts" post a few weeks ago, I came up with this gem:
Pound-wise and Penny-foolish - The maxim states that one must not be "penny-wise and pound-foolish," and Obama must be the opposite of that maxim.  He must be willing to not only cut wasteful projects, but also start new projects that create jobs and replace aging, crumbling infrastructure.  The 2007 bridge collapse in Minnesota and the 2003 blackout on the East Coast show that this country's infrastructure, most of which was built between 1930 and 1960, is in dire need of repair.  As with FDR's "New Deal" during the Great Depression, funding must be directed toward replacing this infrastructure to keep citizens safe and bring America into the 21st Century properly.  As an added bonus, such government spending can help stimulate the economy by providing jobs for the working classes, rather than simple handouts.
I was recently pointed to a Wikipedia entry on the Parable of the Broken Window:
Have you ever witnessed the anger of the good shopkeeper, James Goodfellow, when his careless son happened to break a pane of glass? If you have been present at such a scene, you will most assuredly bear witness to the fact, that every one of the spectators, were there even thirty of them, by common consent apparently, offered the unfortunate owner this invariable consolation—"It is an ill wind that blows nobody good. Everybody must live, and what would become of the glaziers if panes of glass were never broken?"
Now, this form of condolence contains an entire theory, which it will be well to show up in this simple case, seeing that it is precisely the same as that which, unhappily, regulates the greater part of our economical institutions.
Suppose it cost six francs to repair the damage, and you say that the accident brings six francs to the glazier's trade—that it encourages that trade to the amount of six francs—I grant it; I have not a word to say against it; you reason justly. The glazier comes, performs his task, receives his six francs, rubs his hands, and, in his heart, blesses the careless child. All this is that which is seen.
But if, on the other hand, you come to the conclusion, as is too often the case, that it is a good thing to break windows, that it causes money to circulate, and that the encouragement of industry in general will be the result of it, you will oblige me to call out, "Stop there! Your theory is confined to that which is seen; it takes no account of that which is not seen."
It is not seen that as our shopkeeper has spent six francs upon one thing, he cannot spend them upon another. It is not seen that if he had not had a window to replace, he would, perhaps, have replaced his old shoes, or added another book to his library. In short, he would have employed his six francs in some way, which this accident has prevented.
My argument for creating jobs based on replacing crumbling infrastructure is not a broken window philosophy.  Money spent replacing the infrastructure is necessary spending.  It is the equivalent of the shopkeeper taking poor care of his shop, and then having to spend money on replacing the roof when it is revealed to be on the verge of collapse.

The state our country's infrastructure is in is absolutely shocking, and that's what led me to make that statement.  And this is the end of political/socioeconomic commentary I'm going to make on this blog.