Products, the Universe and Everything

The Riverblade Developer's Blog

Beth demonstrating Visual Lint at the ACCU Conference 2008  Anna taking part in a discussion panel at the European Software Conference 2007 

Welcome to our developer's blog. We hope that this forum provides an insight into us, our products and how we develop them. Please feel free to write to us if you have anything to add to any of the posts here.

Current Entries | Archives |

StackOverflow DevDays 2009 London
Thursday, October 29, 2009

DevDays is a new conference, and one which promises to be one to watch.

When we arrived the doors hadn't yet opened and there was a crowd of people milling around outside waiting. Although there was no one there we recognised that changed fairly quickly after the doors opened, and by the time the first session started there was a small contingent of ACCU folks milling around. At this point plans for "which pub should we go to afterwards" were of course hatched, but more of that later.

The day started with a humourous video centred around the recording of a StackOverflow podcast by Joel Spolsky and Jeff Atwood which portrayed Joel as the nasty guy, bossing his team around and generally acting as a PHB.* He doesn't act it well, but it was quite funny.

* If you don't get the reference, you really need to read Dilbert.

I particularly liked the scenes of Jeff Atwood looking increasingly bored while waiting for Joel to come back online (he'd wandered off to yell at his staff and force them to run laps around the building...). Cue various cuts to Atwood filing his nails, grooming cats, indulging in onscreen doodling etc.

Once the intro movie was over, the main man took the stage for the keynote, replete with paper Union Flag baseball cap and mug.

Keynote - Joel Spolsky (Fog Creek)

Joel takes the stage at DevDays 2009 London

Joel's keynote focused on the tricky balance between simplicity and power in software applications. As that is something which is particularly relevant to ISVs such as ourselves (who by definition do not have access to the huge resources of the large corporates) I was interested to hear what he had to say on this subject

He started with a foray into the indesirability of modal user interfaces. As Joel put it: "Your computer is just a source of stupid idiotic decisions you don't want to have to make...". It's all too easy for the developer to absolve responsibility for a dificult decision by devolving it to the user (who wants the application to just take care of it and not bug him with stupid questions).

The problem is of course that as software applications evolve, features are added - which implies complexity and difficult decisions. As Joel put it, the fundamental problem with giving people features is that you confront them with choices...and too many choices can often cause them to freeze in their tracks.

Hence, the trick is to find the right balance between power and simplicity. Although companies such as 37Signals have founded their business ethos on simplicity ("do less than your competitors, but do them well and simply") the fact remains that there is a direct corrolation between sales and features. For any organisation reliant on product sales, the pressure to add more features is a very hard one to resist.

Hence you need to give users the power to achieve what they want to be able to achieve, but try to do it in a way which is simple to use. That implies usability - and as complex, elegant user interfaces take much more work to get right than simple or less elegant ones it is something that very few get right.

This is almost exactly the dilemma we've faced since the beginning in the development of Visual Lint. This is a product which just oozes complexity by its very nature,* but needs to be presented in a straightforward, simple manner.

* Try setting PC-lint up manually and you'll see what I mean. The array of choices you have to make are truly bewildering, and no matter how you do it, another dev will always find an edge case your setup can't easily handle.

Although there is still always more we can do (most notably in the area of configuration) I hope that we've largely succeeded in this.

Python - Michael Sparks

Michael gave a worked introduction to Python and its capabilities by describing how to use it to develop a spelling corrector.

As a developer who now works mostly with compiled languages it was interesting to see the interactive capabilities of Python (although I was nodding off a bit at times, probably due to the early start we had to make it to the venue for registration).

I really should look at Python in more detail. For now it's filed in my "useful to know about" bucket alongside Erlang.

Fogbugz 7 - Joel Spolsky

In this session Joel gave a quick hands on overview of some of the new capabilities in Fogbugz 7. Most notable was the addition of source control integration (based on Mercurial in the hosted versions, but apparently configur ble to others as well) and code review to Fogbubgz. It was an impressive demo, all in all - although I'm not sure that such an overt sales pitch was right for the event.

Android for Developers - Reto Meier (Google)

This was an interesting overview of Google's Android OS from a developer perspective. I was particularly impressed by the way the SDK promotes interop ("mashup") between applications.

I still don't have any particular afinity for Java, though - or for SDKs which effectively force you to use only a particular language. This is one mistake that MS didn't make with .NET (and to a lesser extent Win32 itself), I feel.

jQuery - Remy Sharp

jQuery is a Javascript library. Although this is not really my area (I'm more of a desktop user interfaceI developer), I found it interesting nevertheless. Beth on the other hand was quite rapt with attention...

In essence jQuery provides a simple means to implemeng basic in-browser operations such as operating on all rows of a table, all whilst maintaining browser independence.

Very impressive. I'm sure we'll be using this on our site before too long.

StackOverflow - Joel Spolsky

Although this was in effect another of Joel's sales pitches (and a very effective one, I might add), it was an interesting one at that.

Joel first described some of the spin-offs from StackOverflow such as StackExchange which uses the SO engine to implement a Q&A site (e.g. a support forum) before moving onto StackOverflow Jobs, which I think has the potential to be huge.

The idea is simple: Provide a jobs forum associated with StackOverflow where technical specialists and the companies who need them can connect, without agencies and recruiters getting in the way. Indeed, agencies and recruiters will be banned from the site.

This is different from Joel's existing job forum in one signifcant fact - it leverages the StackOverflow brand. That alone could become crucial over time, since potential employers will be able to measure the suitability of a candidate by their performance on SO, and (presumably) the community will be able to rate job openings and/or the associated organisation.

This isn't free of course. Although developers can create a CV for free, if you want it to show up in searches by hiring managers it will cost you $99 per year.

Either way, it will be interesting to see how this develops, particularly as the prevalent client-agency-candidate model is so broken in the tech sector in the UK. If Joel can make money innovating in this space good luck to him.

Joel then passed the microphone to Jeff Atwood who started by admitting that his knowledge of the UK is limited to impressions gleaned from Austin Powers and apologised for any odd impressions he may have of us!

Jeff talked about his blog and the inception and development of StackOverflow. Jeff made the point that to succeed you have to be able to get up on the stage. and not be afraid of failing, and failing publicly (indeed, the StackOverflow motto is "Failure is always an option"). That's something I never really appreciated until we started Riverblade.

He also talked at length about professional pride and the importance of written and verbal communication. I can certainly agree with that - I personally find it incredibly frustrating when I have to work with developers who are poor communicators, but you have to balance that against the fact that technology tends to attract introverted personality types (we can't all be a Joel...). As ever, balance is important.

Nokia Platform - Pekka Kosonen (Nokia)

Pekka's talk was a bit of a counterpoint to the earlier Android session.

Pekka began by acknowledging that development for Nokia platforms is far harder than it really should be. Their acquisition of Trolltech and its Qt framework may change that in time, but given the tone of the session (albeit a lighthearteds one) I suspect they are feeling self-conscious about it and realise they have some catching up to do.

I'm reasonably familiar with Qt already (mainly as a result of meeting them at ACCU), so that wasn't a surprise. However the remote device/remote compile functionality they have looked interesting.

iPhone Development - Phil Nash (Slides)

Phil is the author of vConqr (a "Risk" clone for the iPhone) and as he is an ACCU regular there was a small contingent of us cheering him on during this session.

In this session he described what you need to get started in iPhone development, and what the overall experience is like. He illustrated this by building a simple iPhone app to animate between two images.

Objective-C: You'll either love it or hate it.

I have to say that although it was interesting the session served to reinforce my view of Objective-C as ugly, weird and generally "just WTF were they thinking?". Still, I'm glad I saw it for myself.

Humanity: Epic Fail - Jon Skeet

Jon Skeet taking advice from Tony the Pony (just don't ask!).This was a lighthearted look at why things often don't work the way we expect, and (more importantly!) who we can blame for it:
  1. Users ("but it'll be simple!")

  2. Architects ("I'll abstract the world away")

  3. Developers ("but it works on my machine...")
Although having someone to blame when things don't work the way we expect does makes us feel better, the fact is that people are complicated and as a result so are the things they do and the systems that they expect to interact with interact with. Unnecessary complexity is just a part of the human condition.

Simple examples of this include written language (e.g. collation, character set etc.), date/time (e.g. the completely unnecessary ambiguity in the 12 hour clock, timezones, daylight saving time and month/day transpositions in shortform date formats. I can certainly sympathise with this - I've tangled with timezones and daylight savings time and what I found isn't at all pretty.

There are actually good reasons for all of this, and at one time I'm sure it all made sense. To the people who came up with it, at least. As a result you can't really blame the users too much, except when they expect everything to be perfect and simple.

We can however blame architects and developers. Although we can't avoid complexity, we can plan for it.

Concrete examples of this include learning some of the corner cases you may encounter if you stray outside your local box, and trying not to make duff assumptions (like "we don't need to worry about DST").

How not to design a scripting language - Paul Biggar

Paul started his session by asking the question "What is a scripting language?" (surprisingly, there is no objective definition) before moving on to some of the problems they typically have (notably speed and interpreter portability) and some techniques for avoiding the worst of them at the language design stage.

Of particular interest from my perspective was the observation that scripting languages tend to be interpreted, it is not possible to tell what the code is until it is executed - whic makes an in-depth static analysis of the type we are accustomed to with PC-lint very, very difficult.

Yahoo! Developer Tools - Christian Heilmann

This session gave an overview of some of the Yahoo Javascript libraries for web development (e.g. YQL, OpenTables and YML). It also yielded what has to be the best quote of the day: "The biggest problem we have is that every browser is a bastard".

The YUI library is a full framework for building sites, born out of necessity within Yahoo, and based on the design patterns library. The whole aim is of course to hide the grottiness of individual browsers.

I was particularly impressed with YQL (Yahoo Query Language), which is effectively a meta language for consuming web APIs, using SQL style queries.


After the event closed a few of us wandered off to find somewhere to have a drink and something to eat. The Churchill Arms in Kensington Church Street (just down from Notting Hill tube) proved to be an ideal venue to digest the days events over a pint or two of ESB and an excellent Thai meal. It's quite some years since I've been there, and if anything the only thing that's changed is that it is now even more busy than I remember!

Overall, a very interesting and informative event (I mean, just how often do you get to say "hi" to Joel Spolsky in person...?). Suffice it to say that we'll definitely be back for DevDays 2010.

Posted by Anna at 08:13 | Get Link