I have found myself writing about my most recent projects (as of October 2011) and I thought I’d put all of this in one place. Here it goes:

I have about six years of experience doing web application development, and have been programming since 1996 (first as a hobbyist, then professionally), primarily in C++, Python, and Javascript.

I’ve been developing projects using Django since the 1.0 release (summer of 2008). My most recent Django projects:

  • A phone number verification system using Twilio, which generates and speaks a PIN to the end user over the phone. It was developed with Django 1.3 using the django_twilio app.
  • A data importing system, which matched existing records fetched via an external API, allowed the user to manually select the best match, edit the generated record, and review records to be imported. This project was also developed using Django 1.3 and jQuery for a simple auto-completed search function. I also used Celery (and the django-celery app) to deal with the task of processing the uploaded data in the background.
  • I am currently between iterations on http://mathisasport.com/, which is also developed with Django and jQuery. Most recently, I have developed several statistics gathering methods for the model managers in the app, using custom SQL (this site is using MySQL) as needed to allow the records returned in QuerySets to be sortable by the results.
  • A series of HTTP-based web services for an unreleased web service API. The API calls return results in JSON and were developed using Django’s class-based views.
  • My most recent personal Django project is at http://fanonic.net/. It’s still in development, but somewhat usable at this stage, although there isn’t much of any content there yet.

I also have lots of examples of my work open sourced at http://github.com/saebyn/. I’ve recently pushed out some updates for the one Django project I have there, django-classifieds, in the django-1.3 branch.

The largest example of my HTML, CSS, and Javascript skills is at http://familysnap.saebyn.info (the original site was taken offline several years ago). I was responsible for about 60% of the front-end for that site, and a considerable amount of the backend as well (which is PHP, so I won’t go into more detail about that).

You can find more about me on my About page and in my online resume.

Update (July 27th, 2012): My mirror of FamilySnap is no longer online.

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.