Stupidity

June 29th, 2009

Screwdriver packaging that requires a screwdriver to open.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

June 26th, 2009

Stephen O’Grady:

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 find it interesting that everyone holds up the App Store as the key reason for the iPhone being successful – the key differentiating factor. Has everyone forgotten that the iPhone originally launched with no developer SDK at all and how well did that go? That’s right, it was a massive success.

The iPhone is not succeeding purely because of the App Store, in fact it could just as easily be the opposite – the App Store is succeeding because the iPhone is so popular. There’s nothing simple about developing for the iPhone – you have to learn Objective-C and Cocoa Touch, you have to pay to get involved at all and you don’t know if you’ll be allowed to ship your app until after you finish it and submit it to Apple. So why do people do it? Because there are a huge number of iPhone users out there.

In the short time the iPhone has been out, people have simply forgotten how revolutionary the phone and Apple software that comes with it actually is. The third party apps are just very tasty icing on top.

I Love Parser Generators, I Hate Parser Generators

June 22nd, 2009

Parsers drive me mad.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.

I was also reminded of how much I hate parser generators. They generate very accurate code which is great when you have very accurate input. In the real world, it just means the parser craps out an awful lot on very minor syntax problems. So then you try to make the grammar more flexible to accept that input and the generator just complains that the language is no longer LL(1).

Off we go into the deep dark depths of those CS lectures. Now all of a sudden you find yourself with pen and paper out drawing states and the paths between them. Pretty soon you want to migrate to A3 paper and then on to butchers paper. Eventually you find yourself writing on the wall.

Real world content just isn’t sane. You can’t tokenize it first and then just use those tokens – characters in different places have all kinds of different meanings. You don’t really want to validate the content as you read it1, you just want to do the most brain dead simple thing to get that content in and in a form that you can work with2.

I run into this every time I work with parser generators and wind up spending so much time making the grammar fully tolerant that it winds up being easier to just write the entire thing by hand. I just can’t help but think that there should be a better way though.

1 – beyond making sure you’re avoiding buffer overflows and that the resulting model isn’t dangerous etc but often those kind of checks are best done in the code that actually does the work (i.e. assume every value is user supplied rather than assuming that the content is all nice and safe).

2 – this of course is situation dependent. I happened to be parsing CSS where tolerance is the key to success. Parsing configuration files on the other hand should be strict and fail fast.

Stuff I Might Need Someday

June 12th, 2009

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

June 10th, 2009

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.

I don’t really do well with inside shots at the moment – a faster lens (or some off-camera lighting and associated expertise) would be handy for that.

So my choice seems to be between:

  • get a better quality zoom of about the same range as the Tamron with image stabilizing so the zoom is a bit more useful, higher quality and particular a bit better in low light situations where the Tamron struggles.
  • get a lens somewhere in the middle – I saw a Cannon lens that went from 28mm-135mm somewhere which would fit the range of zoom I use really nicely and would be a handy all purpose lens.
  • get one of the “nifty fifty” type prime lenses, which tend to be nice and fast and work well for the general indoor with people doing stuff kind of shots.

Or possibly there’s something else I should be considering… There’s way too many options out there.