Holiday Direction

The updates have been fairly sparse recently, but as Christmas (or equivalent) approaches everyone gets pretty busy. Fortunately, a few of the things I’ve been very busy with are Piemaster-related: I’m breaking some new ground with Forgbook and Buffex, and exploring a couple of other potential projects on the side.

Forgbook has received a lot of competition lately, as numerous development teams small and large have release highly polished task management applications, such as AsanaDo.com and Orchestra. Many of these have a strong emphasis placed on collaboration across tasks, but still none offer the ability to arbitrarily break down tasks into subtasks. This seems like a pretty fundamental thing to want to be able to do, and is of course the cornerstone of Forgbook.

However all of these applications do offer very slick user interfaces, and to at least be competitive, I’ve realised that Forgbook requires a modern makeover. As such, I’ve finally taken on learning some JavaScript properly, because against my wishes it has undoubtedly become the modern web’s lingua franca. I’ve been mocking up a few single-page AJAX applications with the very handy Backbone.js library, which drastically simplifies (or at least provides structure to) the MVC design of the user interface. It’s quite reminiscent of my time with Adobe Flex, minus the constant annoyances of Flash, and I’m hoping to write a bit about it once I’m a little more comfortable.

On that note, I’ve been approaching Buffex from a more modern perspective as well. I noticed I haven’t mentioned Buffex in a post before, and indeed the project page has been a rather misleading “Coming soon.” for the past year or so, but you’ll hear a lot more about it soon. Since the minimum viable product (MVP) incarnation of Buffex is relatively simple, I’ve decided to focus my efforts on that for the time being before pressing on with Forgbook (which is looking much slicker than it used to, but has a lot of work to go). I’ll be taking a Backbone approach to Buffex too, to try and have nice, snappy interface and keep everything nice and simple.

That’s more or less where my head is at the moment. Those couple of other ideas I mentioned will get some more attention next year, but I can say that one of them has been born out of my recent fascination with gardening. If there are any gardeners out there, let me know! I’m trying to bring a rather unorthodox approach to it, and would love to discuss it with others. Techies tend not to be very enthusiastic garderners however, which is both a good thing and a bad thing in some sense. Regardless, I know I’m looking forward to it.

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.

Where Is Forgbook Going?

Of my large (and still growing) handful of projects that I’d like to be working on right now, Forgbook is taking up most of my attention. Hopefully I can get some kind of super-early release out in a few weeks, but until then it’s worth noting a few shifts in focus and philosophy.

As much as I love the Web, I find it hard to submerge myself in Web development due to the chronic pains of browser incompatibility, and perhaps the need to be constantly responding to user experience. Once a product is released, I feel an obligation to keep it updated, which can at times conflict with a desire to put a project to the side for a while. It’s much safer in term of user response to work on a project privately until it’s complete and polished before releasing it rather than releasing pre-alpha kind of work and iterating consistently all the way through to a final release. I guess I value my flexibility pretty highly, because after all this work is effectively my free time.

Forgbook is (or will be) my largest, most ambitious project in functionality terms, and I believe it will be of the most value to myself and others, so I want to get it right. I’ve been thinking about what I want it to offer for some time now, and I’ll be updating the project page with more details as I solidify them. From a technology perspective however, the interesting decision I’ve made is that I’ll be switching from a relatively unambitious attempt to combine Flex and PHP to a Web-native Django application leveraging the Dojo JavaScript toolkit for the more flashy UI components. This means however that I have to familiarise myself with the environment Django offers; it’s immediately clear that it’s extremely powerful and scalable, but the decoupling that is its strength results in a variety of idiosyncratic idioms that will take some time to adjust to.

Why the switch? One of the requirements I’ve come to be very passionate about is making Forgbook accessible from any common device – PC, smartphone, tablet, perhaps even consoles – so that it feels more like an encouraging companion rather than a chore you must log into every day. This is best achieved using a native Web interface (HTML, CSS, JS) over something requiring a plugin (Flash, Silverlight), as it should at least be accessible by any device with a Web browser, in the scenario that I don’t/can’t customise an interface for that device. It would be suicide to jump into creating a sophisticated Web application without a framework, and my love for Python (and mere tolerance of PHP) combined with the popularity and support for Django make it a perfect choice. The integration of Dojo via Dojango is a big bonus too.

I’ll document the progress I’m making with Django in the next couple of weeks, and hopefully get a stripped-down-but-working version (basic user and task management) out in the wild before March. From there, I’m hoping the development efforts will feel more rewarding, and I’m sure there will be many more fun things to handle (feedback and reflection followed later by advertising and analytics). I’m looking forward to it as much as ever.

P.S. If anyone can think of a quality name for a sophisticated event/task management application (Forgbook is very much a working title), let me know (comment or contact). If I like it enough that I decide to use it, I’ll be happy to give you free access to pretty much anything I release forever. Hopefully one day that’s worth something significant.

The Apps Cometh

So I figured some things out, and I can now host all my stuff on here! Unfortunately WordPress doesn’t want to let me embed things in pages, but I can happily store them just off to the side, leaving them accessible from a nice, static URL. I’ve quickly put up two examples to show them off before I get down to business, which you can see in the Projects menu above, but just briefly:

Forgbook (working title) is my primary project at the moment, though it doesn’t get nearly as much development love as it should. It’s the result of many factors, the main one being when I decided I had stop leaving loose ends everywhere and actually DO those little things that make the big things come together. It is in essence a glorified to-do list (especially in its current form), but it has a very exciting future ahead of it. It’s still in a very early alpha stage, but it’s at least fairly usable. Check out the version roadmap for a preview, and hit up the feedback form to land yourself in the credits!

Treetris (also working title) is something new that I came up with yesterday while waiting at Parliament Station. The idea is a survival-strategy game based on growing out tree branches, inspired by Tetris and another game I failed to coalesce a while ago. I want to keep it simple in rules and mechanics, but have a bit of depth in how it’s actually played. The Java applet I’ve got up is just a couple of hours of work and is more of a teaser than a preview; it’s just a tree that keeps growing out until your computer grinds to a halt :). It should give you some idea of what I’m going for though, and me something to work off.

It’s exciting enough at the moment to just see these two out in public on a decent web host, but there will be plenty more to come now that the foundations have come together. If you’re even a little interested in any of this, you can subscribe to any (or all!) of the RSS feeds up the top-right corner there to hear about future developments, and I promise there will be plenty. I rather like this site, and I’m itching to dump my mind on it as soon as I get the time!