Ben Godfrey

Archive for March, 2009

Working from Bali, working from London

I’m flying long haul from Bali to London. I’m returning from 3 months spent in Bali, during which I worked on and off, sometimes even for money. Long-distance telecommuting is an interesting experience. Being away from London has made me think about living and working there in a new light.

Telecommuting from a relatively well-developed place like South Bali is very easy. Free wifi is readily available and backed by “fast enough” internet connections (up to 1Mbps at time of writing). Enough for a Skype call, sometimes even video. Coffee and food are cheap enough that you can pick a café and make it your full-time office. (My thanks go to the proprietors and staff of Grocer and Grind, Sticky Fingers, Bali Buddha and Café Lazumba and Café Local.)

Contract software development lends itself well to telework. It requires some kind of rigorous technical specification to be agreed by contractor and client. The work itself involves periods of focus. This means communication is generally quite minimal. It can be concentrated into daily bursts for example, and is often better than way.

I found it difficult to work around the time difference. My UK clients would start work as my day was finishing, so the end of the day should have been set aside for communication. In reality I was often busy with other things by then, my girlfriend finished work at 5 and I got into Pilates and other pleasant evening activities. I ended up having email conversations with a 24-hour reply frequency.

I also found it difficult to sell clients my services from Bali. Work I agreed before I left went well, but people were reluctant to commit to new work without face to face meetings, though they weren’t explicit about this. After the window of remaining time shrank to less than a month, conversations degenerated to “email me when you get back” frustratingly quickly. I have a list of 14 people to email this week.

I’m looking forward to coming back to London. I’ve missed my friends, my family, the tech start-up community (and my bikes). I’m planning a busy period to make up for all the slacking I did in Bali. Amusingly enough, much of the “slacking” involved hacking away on personal stuff or projects for charity. It was great to get the mental space for things like Followize, the redesign of this site, learning more Haskell and doing some serious reading.

My busy period kicks off with a return to the tech start-up scene — attending a bunch of events to catch up with people and activity — and with lots of meetings with people I haven’t seen for a while. When I left in December, startups in London was perceived to be coping with the economicrisis better than those in some other cities. I’m intrigued to see how views have changed in the first quarter of this year, whether people are starting to feel the pinch more accutely. Many of the companies I know well are pre-revenue. Others (e.g. Huddle) offer concrete cost-savings to their customers and thus may even benefit from the downturn.

Since becoming a freelancer again I’ve been considering what I want my future role to be. I have a fair amount of web tech experience and quite a bit of startup experience (all learning from my mistakes). I like to think that my role could be as a consultant technologist attractive to some of the great companies building their products. I wonder how long I want to stick at a non-scalable profession. I took on the challenge of MyMart to chase that big pay-off that comes to the companies that win. We failed sadly, but I’m interested in buying another lottery ticket.

Client-side MVC is maturing

Rich Internet Applications (RIAs) are still increasing in popularity. We’ve reached the stage where they aren’t called RIAs any more, they’re just cool websites. (Ever heard someone call Facebook an RIA?) There is a increasing demand for tools to build great UIs easily and to build JavaScript-only applications for platforms such as OpenSocial. There are a range of toolkits for building RIAs but most of them are tied to a specific server platform.

A framework takes care of repetitive tasks. In an RIA, these include building screens, including providing rich controls, validation etc. The framework should also provide an abstraction for maintaining state and requesting data from web services via XHR. While building an OpenSocial application in December, I could have saved a lot of time developing on top of such a framework.

MVC is the dominant model for UI development in the desktop world. A modified form is very popular in web development. It makes a lot of sense to stick to MVC for RIA development. RIAs running in the browser (or Flash or AIR) bear close resemblance to desktop applications.

Of the server-and-client toolkits, Google Web Toolkit is perhaps the best known. You write Java code and it compiles it to a web application complete with HTML, JavaScript and CSS. This is an interesting idea, but the server-side component is not interchangeable and requires Java. It also leaves virtually no visibility in the compiled code.

Wouldn’t it be great if there were a client-side only JavaScript framework which allowed you to build nice UIs quickly and easily and load data from any server back-end? Given the variety of technologies for server-side web app code, you think this would be an active area. Doesn’t it slightly suck that you have an interesting web toolkit in GWT and a cool cloud hosting platform in App Engine, both from the same company, but you can’t use them together?

I was pleased to see that the cunningly-named JavaScriptMVC framework got it’s version 1.5 release. This version adds some new development tools and documentation, but it’s still back-end independent. On the other hand it does look a little heavyweight.

Topper Bowers just open-sourced his Mamoo framework. Although Mamoo doesn’t seem to be a run-of-the-mill RIA platform, it does provide some of the MVC goodness that those applications need.

I look forward to checking out both of these projects in more depth. Certainly JavaScript-only MVC frameworks are needed if smaller development operations are to produce applications with the level of quality and UI finesse seen in, for example, Facebook or GMail.

Announcing aftnn.org version 2.0

Version 2.0 of aftnn.org is here!

The new site is powered by the Byteflow with a few some custom bits. Byteflow runs on top of Django.

Some of the features I’m happiest about:

  • My FriendFeed collects all the stuff I’ve been doing on the web and I re-use that feed here.
  • The vast majority of old urls still work. My nginx config contains a rewrite line for each blog post. Not pretty, but fast.
  • The Content and Photos sections are dynamically generated, making them easier to maintain.
  • I can finally write blog posts in Markdown, not raw HTML. Byteflow actually allows me to select a text renderer per-post, so I can write one post in Markdown, the next in MediaWiki markup.
  • Comments are hosted locally again, not by Intense Debate, and are protected by CAPTCHA. Alternatively, you can log in with your OpenID to comment.
  • nginx serves up static content very quickly and gzips everything too.

There are always some down-sides though.

  • Blanket is gone. It was a resource hog and I didn’t want to port it to Python. Sorry.
  • Byteflow and Django don’t play as nicely with caches as I would like. Byteflow doesn’t provide Last-Modified, Expires or ETag headers for it’s pages. Django sets cookies immediately, instead of when a session is actually used, so it’s page are effectively uncacheable. Also, Django does not provide Content-Length headers for responses. All this degrades the performance of my site.
  • The Intense Debate comment import process lost the threading. I’ll try to fix the relevant posts by hand some time.

I hope you like the new site. Please post a comment if you find a bug or have any other feedback.