Subversion Pays Off
For ages now I’ve been keeping the EditLive! installer for my demo environment in subversion. Having the ability to roll back quickly and easily if something goes wrong has given me the confidence to track the development branch reasonably closely and then be able to show people the features that have just finished being developed which is fantastic market feedback. I’ve never actually had to rollback before, but today I found an alternative use: reproducing bugs.
Amazon EC2 As A Webhost Redux
Back in 2007 I looked at EC2 for a web server and while it wound up being feasible it had a number of drawbacks:
Those familiar with EC2 won’t be surprised to hear that we won’t be going with the service for three reasons:
- It’s at least as expensive as the dedicated server we’d need.
- The filesystem gets reset everytime the server reboots (S3 provides a REST API to store and retrieve data, not a filesystem)
- The server gets a new IP address every time it reboots.
Since then Amazon have rolled out new services that solve problems 2 and 3 and reserved instances to help with 1. What surprises me after a couple of years running a single EC2 instance with an app that’s using S3 for storage though is just how stable it has been.
Hot or Not: The Web as an SDK
Remember back when the iPhone first came out and Steve Jobs proudly announced that the SDK for it was “the web”? Apparently history really does repeat itself because now Google is trying the exact same thing with Chrome OS:
The software architecture is simple — Google Chrome running within a new windowing system on top of a Linux kernel. For application developers, the web is the platform. All web-based applications will automatically work and new applications can be written using your favorite web technologies. The decision was extremely unpopular with the iPhone but no doubt it will be extremely popular with Google because it matches people’s expectations. Interestingly, the most common reason people give for the iPhone’s success is now the App Store. I guess we’ll get a chance to see if they’re right or not. I don’t see the web as the only API working even though it would work very well for a large percentage of computer usage. Twitter would be a particularly good example of why – you can use Twitter via the web and certainly some people do, but the standalone clients are by far and away the best way to use it. The same generally applies to instant messaging as well.
Adventures in Photography
It’s been ages since I posted anything about photography here, but I’ve been having fun learning how to take advantage of my camera more. I don’t take anywhere near as many photos as I should to really get good at it but I can see a gradual improvement which is good. I’m pleased to say that I’m quite confident shooting in AV mode now and despite never having enough time in post-processing, have a streamlined workflow that’s now reliably matching or bettering the automatic settings.
Proper Care and Feeding of Computing Consultants
Dave Walker – Proper Care and Feeding of Computing Consultants: Excellent set of things you should do to get the most out of a consultant visit. I haven’t been consulting very long and it’s not the main part of my job, but I’d add:
- Let them know the hours you want them to be on site. It’s no fun for a consultant to be sitting outside the building at 8am when you start at 9:30. Similarly if you have an awesomely laid back European culture and finish at 4 they may be able to get an earlier plane home so it’s good to know in advance.
- Make sure the consultant knows the exact name of your department (and how to pronounce it if it’s a foreign country to them)
- Make sure you’ve lined up the important people your consultant will need to work with so that they are available. You don’t want expensive consultants wasting time waiting for people to come back from a meeting or trying to find the right people in the maze of your company.
- When they arrive show them where the bathroom is – where to get water from is important too.
- Recommended travel details if the place is hard to get to. Of course, flying into a different country and driving works out well if you just so happen to be upgraded to a convertible for free…
Stupidity
I think this photo more than any other symbolizes stupidity. It was taken quickly on a first generation iPhone so if you can’t see clearly what’s wrong, it’s a photo of our new screw driver set. The packaging includes a clear plastic overlay which, you guessed it, is screwed down.
That would be just normal stupidity except for the fact that the package is advertised as a DIY getting started pack, containing the essentials to get you started. Except of course, now you need the DIY getting started pack, opener pack. It’s beginning to sound like an enterprise software sale…
Why The iPhone Has Succeeded
Remember that, at its core, the iPhone offers not a whole lot more than a phone, browser, camera, iPod and GPS. Which, ok, is kind of impressive. But not truly differentiating, Apple’s acknowledged strength in user experiences aside. As good and smart as Apple is at design – and they are very, very good – they’re never going to be as good and smart as everyone else. We see this in the enterprise world frequently, where vendors that foster an ecosystem succeed and those that don’t, well, don’t. But we haven’t seen too many examples of this play out in the consumer world yet, which is one of the reasons the iPhone is such an interesting platform. With the App Store, Apple’s attempting to cement its role with a community play.
I Love Parser Generators, I Hate Parser Generators
I was reminded on the weekend of how much I like working with parser generators – they’re just so pure and clean. You really feel like you’re working with a grammar and all those CS lectures come flooding back. Writing code to parse the same content by hand just never has that feel. Plus they create incredibly accurate parsers in very little time at all.
Stuff I Might Need Someday
A few things I’ve discovered today that look potentially useful in the future:
- Antenna House Formatter V5 – converts HTML and CSS to PDF, including support for MathML. Heck, supporting CSS well is a plus – most HTML to PDF conversions don’t. Hat tip to one of our clients for finding that.
- jQuery Tools – there are plenty of JavaScript UI libraries around, but this one looks better componentized than most. It’s also a good, small set of components that normal web pages are likely to want, rather than being more specifically useful in web applications, though it could be used there too.
- FlowPlayer – actually I knew about this one but only just got around to looking at the details. Handy looking open source flash video player. They’ve somehow converted the GPL into a license that requires attribution which is really odd, most likely to keep their commercial licensing option open. It’s their license so they can do what they want with it but I would have thought there’d be a better fitting license.
Canon Lens Recommendations
I’ve held off asking this here because there’s tons of generic lens advice on the internet and it’s too hard to describe what I’m looking for to get specific advice (because frankly I don’t really know). Anyway, I currently have two lenses – one a Canon EF 18-55mm IS 3.5-5.6 lens, it’s what I use almost exclusively. The other is a Tamron 55-200 f4-5.6 which I use when I need the extra zoom but largely ignore because it takes noticeably inferior shots. I also find that 55mm is just a bit too much zoom for a lot of the holiday shots I want to fire off quickly so I miss a lot if I have the bigger zoom lens on my camera.
Cheaters Never Prosper
The development I seem to do these days tends to run at the extremes of reliability – either it has to be fully tested, nice, clean, production ready code, or it’s complete throw away code where development time is the only consideration.
The advantage of doing this rapid fire development is that you wind up with proof of concept code for most situations you’re every likely to run into. The disadvantage is that the code is rubbish and probably no use to you at all. That bit me once again today. I wanted to quickly whip up a plugin that makes pasting plain text into EditLive! work the way I want it to. I have a plugin that filters pasted content to wrap it in a blockquote for my blog so clearly I could just reuse that as a starting point. Sadly, I cheated:
I Hate Deployment
Deployment ruins everything. So many cool technologies that let you develop more rapidly and do awesomely cool stuff fall down at the last hurdle of deployment. Sometimes it’s because they haven’t thought it through properly so it’s just plain too hard, but often it’s just that it’s too hard to convince people that it won’t be another headache for them.
The latest in my deployment-caused frustrations is CouchDB. I have a few use cases that I think CouchDB would be perfect for and it would save me heaps of development effort and headaches. The trouble is, while CouchDB may be of the web, it really isn’t of the enterprise IT architecture.