I have set up a new domain for my canvas-based Javascript game, which I’m currently calling “Rain”. It can now be found at http://rain- dev.saebyn.info/]

I’m using this library called gamejs to abstract over the HTML5 canvas API. It’s an incomplete reimplementation of pygame, which is a very popular 2d graphics (among other things) package for Python, in Javascript.

Here’s where I’m hosting a simple demo of my game code in action: http ://rain-game-dev.s3-website-us-east-1.amazonaws.com/.

I finally realized I could simply track when the player hit a horizontal surface and set a ‘onGround’ flag, and then turn that off when you jump. then each jump attempt checks the flag, if it’s not set it won’t let you jump. Obviously, I tried a much more complicated method first. So no more flying players in my new game! (at least unless I add jet pack or something)

I’ve read through Eric Holscher’s blog post about Reusable App Conventions in Django a few times, and it got me thinking about problems I have had in the past with other developer’s apps.

When you write your views for a Django application you intend to release, unless every view has exactly the same keyword arguments, please make sure to add a **kwargs parameter to your views. This lets your users pass arguments to your views with the include() in their URLconf, without getting errors from the views that don’t have that parameter listed. On my recent fan-fiction web site, I had to work around this problem and it’s really annoying to have to make a local copy and edit it for what could be really trivial to address by the reusable app creator.

I was recently asked how I deal with nebulous or otherwise confused projects. Here’s what I told them:

Ill-defined projects have been par for the course during my freelance software development career. If the client had no experience as a programmer, and had not already hired someone to refine their project requirements, they frequently came to me with a proposal too vague to transform into a finished product. The key to refining and focusing a project’s goals is to focus on the client’s original thought process, and possibly the sequence of events which caused them to seek my expertise.

I start by determining how to shape the project so that it is computationally and financially practical, and addresses the client’s most important business needs. Then, I break down the problems into smaller parts, and prioritize individual items with respect to both business need and risk (how hard will this actually be to implement, will that even be possible, etc). This strategy eventually results in requirements that are clear enough for me to feel comfortable coding a solution.