I’ve just gotten back from a great day at the Stackoverflow Dev Day, I didn’t take my usual copious notes, but I thought a flavour of proceedings would be good to get down. For those who don’t know me, I have to add the caveat that I’m not a programmer (kind of like ‘I’m not a laywer’), so I’m somewhat baised by my background in usability and front-end code.
Joel Spolsky – Keynote
Joel’s keynote was on the theme of simplicity vs power, or rather, the third way.
I’m afraid that this is my interpretation entirely from memory, but essentially:
- A couple of fundamental assumptions are that users do not like to make decisions, and that just about every design decision should lead to the user being more likely to get laid.
- There has been a great upswing in simple interfaces, at least partially lead by 37signals. (Perhaps another contributory factor is the rise of internet applications? Services that can do one thing well.)
- However, some types of commercial applications (e.g. bug trackers) will need to cover the 80% of features that aren’t covered by these ‘simple’ applications. Alhtough 80% of people use 20% of the features, they are often different features. Otherwise you are cutting off too many people.
- Creating elegant code often takes more time and thought that simply typing out standard code. NB: Elegant was defined as doing things well, and making it look effortless.
- Creating elegant interfaces also takes more work, both in creating the UI and often more so in the coding behind it.
A good example is the Amazon one-click. When you move form the (standard?) method of click, then confirmation screen (then rest of checkout process), you suddenly have more work to do. For example, queuing the order (in case they order more things), allowing undo within a certain time, making sure there’s a default address etc.
- Rather than not adding features to keep an interface simple, keep it simple by not forcing the user to make decisions. The interface should certainly start simple, but allow it to be extended, perhaps on a per client/site basis.
Joel’s assertions certainly match my experience with Content Management Systems, which are probably the hardest and least solved programming / interface problem. Whilst 37Signals have been very successful, I don’t see them tackling CMSs any time soon…)
Michael Sparks – Python
Michael essentially took us through the finer points of Python by demonstrating how you can create the Google-style spelling match function, in 21 lines of code (plus a few books worth of content in text files).
It was really good to see an expert use the Python interpreter well (including running into a couple of problems, and solving them). I’d never really understood how you use it for complex functions before, for example, indentation matters in Python, and you put it in a command line?? Anyway, that explains the spaces being preferred to tabs thing, and it will certainly help in my dealings with Django. Hopefully Michael can post something about it soon, in the meantime the code is available.
Joel Spolsky – Fogbugz
We had plenty of Joel time today, this was his demo of Fogbugz, where it’s a disservice to describe it as bug-tracking software. It’s obviously modelled on Joel’s copious experience in developing software, and includes things like Bayesian driven email direction, and predicting launch times better than developers. I’m not sure it would work for us (juggling 15 web projects at the same time), but it will certainly make me wish for more next time I look at Trac or Bugzilla.
Reto Meir – Android
I have to admit, the technical side of mobile application development (rather than mobile web development) is still pretty intimidating for me, and doesn’t particularly float my boat. Reto also needs to either increase the font size in Eclispe, or use the ‘only when the cursor reaches the edge’ settings in OS X’s accessibility preferences.
From doing previous presentations I’ve learned the hard way to:
- practice it at 800×600 resolution,
- check it in 1024, and
- even if the projector supports more, keep it to 1024!
On the positive side, it was good to see some use of Google moderator. Not only does it make it easy to ask questions (and for people to vote up the best questions), Reto answered the top ones on the spot, and has since answered them all.
Remy Sharp – jQuery
Remy gave good talk on jQuery (presentation), something I’ve used quite a bit. It was great to include how to creat a plugin, and it explained a few things I’d seen around but didn’t understand. I liked Remy’s approach to the brief of using code,
The things that most interested me were:
- Having looking up “equality without type coersion” (the triple equals).
- jsbin.com looks like a very useful service.
- There’s a good IRC channel for getting help.
- How to add a plugin to jQuery.
Jeff Atwood – Stackoverflow
Jeff’s talk was less on code, and more the experiences around Stackoverflow, I can’t remember of it much specifically, but after listening to lots of podcasts it’s good to put a face to the voice!
Pekka Kosonen – Qt
Pekka’s presentation on Qt was intriguing, partly for the upfront honesty (tackling people’s scepticism about platforms from Nokia), and partly because of the possibilities of Qt.
Although Nokia was presenting about Qt, the platform itself is not originally from Nokia, in fact, it is designed to build cross-OS applications, desktop and mobile. Applications such as Skype and Google Earth have been built with it, so it seems that it can produce native looking applications.
It looks like you have to go whole-hog into Qt development, it’s an SDK, IDE and they may even have server-side compiling of code to for platforms you don’t have. The demo wasn’t incredibly convincing, but it does seem like a an option to investigate if you need to develop desktop/mobile applications across several platforms. See also getjar.
Phil Nash – iPhone
Phil’s presentation on iPhone development wasn’t quite what I expected, it took us through a short history of the language that iPhone development uses (Objective-C), before creating a little app from scratch. Phil’s dry sense of humour and occasionally cheesy slides helped make the first half more entertaining, especially as I wasn’t really target audience and haven’t quite got the different versions of C straight yet.
The outline of Objective C drew a few gasps: garbage collection? It seemed most of the audience are used to higher level languages, and Objective C seems like a step backwards.
However, the impression was improved a great deal once Phil opened up Xcode and put together a quick application. Phil was the only mobile developer who managed this. As well as the support of the IDE, emulation is obviously easier for the iPhone than Android or Qt, because you’re targeting a much more narrow range of devices.
Jon Skeet – Humanity: Epic Fail
The ‘phenomenal’ Jon Skeet presented a very funny look at why programming is generally hard, based on a rant he had recently about time zones. There isn’t much for me to say on this, but it’s worth checking out the presentation and audio on the Stackoverflow podcast soon.
Paul Biggar – How not to design a scripting language
I hadn’t really expected much of this talk, essentially what’s wrong with modern compilers, however, Paul’s enthusiasm really carried it.
Christian Heilmann – Yahoo! Developer Tools
For me the best was saved until last. I haven’t seen Christian talk on this before, and despite reading about Yahoo! pipes and YQL, I just hadn’t really groked it before.
It doesn’t really hit home until you see someone put an example together in front of you, but the upshot is that there are about a 100 APIs (everything from Amazon to Weather) that you don’t need to read.
You select a data source from the right of the console, adjust the ‘selector’, the YQL statement top left, and preview the results in the middle.
If the result is good, then copy the URL from the top right box, and use that with your backend (or ajax/ajaj), and hey-presto.
Example uses are:
- Showing all your disparate content on other sites in one place, for which Christian’s site is a prime example. It’s basically built with YQL, virtually all the content is from other sites! (Presentations, videos, books, blog articles etc.)
- Translate tweets.
- Create a set of Flickr photos from a particular geo-location.
- You can even scrape HTML for redisplay, narrowing the area using an xpath statement.
It uses a SQL like syntax to allow a great deal of granularity, both in terms of filtering things to get just the information you want, as well as using several input sources (URLs) at the same time.
I am not closing the YQL tab I have in Firefox until I’ve used it somewhere! I think this is the closest video on YQL I’ve seen that covers the same content.