Where Am I?

Once again after getting fired up to write a slew of blog posts, I’ve disappeared off the face of the earth. Where did I go?

Well, it’s been an exciting year-or-so. Semester 2 of 2012 was very busy, and myself and various teams finished off various assignments for university. The large team software project (for which we were using agent-oriented programming and the Prometheus design methodology) went very well, and we won the award for best large team project at our expo night (out of three teams, but still).

Then I got to have a short break over Summer, but somehow snuck into being accepted for an internship with Google, and since Sydney was full, I got upgraded to the Googleplex in Mountain View! This is now without a doubt the highlight of my resume, and it was an enormously educational experience, especially since it was also my first ‘real’ overseas trip (that is, excluding New Zealand). I was working on upgrading an existing internal web application, which was definitely relevant to my interests, but unfortunately I can’t show anything off.

One of the most valuable things I learnt from working at Google is that I don’t want to work at Google. Yet. Without a doubt, it lives up to all the amazing stories you’ve heard and it’s perhaps as close to corporate paradise as a software developer will find, but I’m not at a point in my career that I want a corporate paradise. Despite all the free food and events and amazing people, I spent most of my time sitting at a desk writing code for other people. I learnt that I want to write code for myself; that I want to work on projects that are of total personal interest to me, and I want to direct their development.

Basically, I want to run a startup. So that’s what I’m going to do.

I’ve been watching Steve Blank’s How to Build a Startup course on Udacity, and it feels right. It feels like the kind of thing I want to do, and sits outside my comfort zone in the right way. I’m at a stage of my life that is ideal for taking this kind of risk: I have no job commitments, no family dependents, enough money to survive on, and most importantly, a project at uni with a good team that is starting to get off the ground, and the project owner is very keen to spin it off for commercialisation. I think it has real potential, so I’ll be working full-time next semester to build out the foundations a little more funded by a convenient government grant. It will be at least a year before it’s ready for sale, but I’m cautiously optimistic, and it deserves at least six months (of paid work!) to give it a go.

On top of that, I’m planning on reviving Buffex from its slumber on the side. This has come about for two reasons: I’ve been playing with Google’s Dart language and I’m liking it a lot; and a friend found the holy grail of open financial data sets on Quandl. That gives me everything I need, and it’s already coming along quite nicely. My goal is to launch an MVP for that in about 3 months of part-time work, though I haven’t done any scheduling yet, and that’s probably infeasibly aggressive. But I’ll definitely try to keep a record of the development lifecycle, as this is as likely as ever to be my first real self-driven product to come to market (with a business plan, anyway).

So I should be back on the air, but I won’t make any silly promises. I’m blogging because I know it’s a good habit to express one’s life story somewhere, even if nobody reads it. If nothing else, I’ll be back to read it in 50 years. Hopefully I didn’t let you down, future-me!

Forgbook Progress Report

As you can see, there has not been any Forgbook updates for quite some time (a month), despite my resolve to post some. This is for a few reasons, some more interesting than others.

The least interesting is that I’m back at university, which doesn’t leave me quite as much time to work on things, though I’ve been giving what time I can.

More interestingly, I’ve recently stumbled across Pinax, a very smart extension of the Django application framework that offers a bunch of links to reusable Django applications, allowing the user to create the generic skeleton of a web site in a single line, along the lines of pinax-admin setup_project mysite. This provides you with a standard project layout and a collection of full-featured applications for basic capabilities such as user account management, notifications and wikis. Succinctly enough, “Pinax takes care of the things that many sites have in common so you can focus on what makes your site different”.

So I’ve been working on developing a reusable application for activity management within the Pinax environment, and have actually made considerable progress. It’s currently in a usable state where activities can be created, edited, viewed, deleted, completed (various amounts), paused, cancelled, and scored, and these operations propagate through the activity hierarchy. Relatively more advanced features such as categories, tagging, friendships, messaging, commenting, and email notifications are not implemented, but the beautiful thing is that reusable Pinax apps for these tasks exist already, and it should just be a matter of plugging them in with a little configuration. More Forgbook-specific features such as privileges and JavaScript-driven views will take a bit of work, but really Forgbook can function quite happily without them.

Having made that progress, I turned to investigating where such an application could be deployed and hosted so I could start testing it as a legitimate user. The traditional option is just to host all the files on a regular Web server, and connect the Python framework via WSGI. This is not going to be compatible with my current host NearlyFreeSpeech however, because of the rather idiosyncratic nature of their shared hosting setup. Furthermore, a basic Pinax project by itself typically sits in a virtual environment and weighs in at about 50MB, making it unwieldy to just copy, paste and host.

There are a few other options, but I was attracted to Google App Engine, because it’s Google (<3), and it’s pretty much free until the application gets particularly popular. The trouble is that the database used at the backend is a non-relational database, which is a new-fangled way of saying it’s not compatible with every other database. As such, Django is very difficult to support, and Pinax is even more divergent. There are few attempts at workarounds (django-nonrel seemingly the most promising), but it’s otherwise developer hell even attempting to monkey-patch the systems together.

Those remaining options then are a little more pricey but seem as though they will take most of the pain out of Django hosting. There are a few start-ups (Gondor, ep.io and Djangy, all in private beta) specialising in Django hosting which I’m keeping an eye on, as well as a few hosts that are friendly to Django, such as WebFaction (detailed as supporting Pinax too).

Currently the plan is to wait until a couple more of these are available (hopefully sneak into a beta or two) and see what cheap options can be had. In the meantime, development will continue, though maybe not as rapidly with uni in full swing. There are few other interesting activities and possibilities in the air as well, but I’ll discuss those a little later.

In summary, Forgbook is alive and well and even usable, but can’t really come out and show off until it finds a home. Hopefully that won’t be too far away.