I spent the day at Benaroya Hall for the 1st (annual?) StackOverflow DevDays conference. Overall eight speakers took the stage on topics from .Net MVC to Python to the Google App Engine. The room appears to hold just over 500 people and it was filled to capacity with programmers. There were some vendors in attendance including Amazon.com, Fog Creek Software, and someone showing off HexBugs.
The day started off with a short video titled Scrumms which was a funny spoof on life at Fog Creek and the StackOverflow podcast. It was quite entertaining. I hope they release it on the web after the conferences complete in a few weeks.
Joel Spolsky was the first speaker. I always enjoy reading and listening to him. This speech was not a disappointment. He was as entertaining as ever. The subject matter under discussion was that of design elegance. He began by pointing out that software often gives the user too much choice. Often times it interrupts the user’s work flow to ask a question most users are unprepared to answer. Other times there are options pages with myriad options which no one could know enough to actually use. What is a “trusted user” on GMail anyway? He cited a study where one store put out a lot of varieties of jam (24?) for people to try. Many did, but substantially fewer actually purchased than when the same store put out only a half dozen varieties. People are intimidated when given too much choice. Joel recommended the book, The Paradox of Choice. He then went on to talk about the simplicity offered by companies such as 37 Signals whose products do only one thing, but do it well. He argued that this isn’t the solution. Customers will demand more features and to grow, a company must grow its feature set. More sales leads to more features. Choice must be offered then, but how to do it in a way that doesn’t alienate the customer? The solution Joel offered up was to make sure the choices support what the user is doing. The users should be modeled and choices aligned along the path of their behavior.
Joel was followed by Scott Hanselman who gave an overview of the ASP.Net MVC framework. This is a web framework built on top of the ASP.Net framework, but which exposes much more direct control to the programmer. For instance, they now have direct control of their URL’s (yeah!). Scott was an entertaining speaker although I think he was a bit too self-deprecating about Microsoft. He spent most of the talk showing the audience various features in existing and upcoming Visual Studio products which make ASP.Net MVC programming easy.
Next up was Rory Blyth talking about iPhone development. He was an engaging speaker who obviously knows a lot about what he is doing. I had never looked at iPhone or Objective C development before. I can’t say I’m terribly impressed. The tools like adequate, but aren’t as good as Visual Studio or even Eclipse. Objective C looks like a mishmash of C and Smalltalk. Rory described learning to develop for the iPhone as the Stockholm Syndrome where you eventually come to love your oppressor. The iPhone is an attractive target to develop for from a business perspective (maybe), but the SDK doesn’t appear to be the reason people are flocking to it. One highlight at the end was when Rory showed Novell’s MonoTouch which allows for C# development targeting the iPhone. This looks like a slick environment even if it is a little pricey.
Following Rory came Joel again with a sales pitch for FogBugs 7. I have to say I was impressed with the empirical scheduling. There is a new plugin called Kiln for code reviews which looks alright, but I think I prefer the UI from Malevich better. For instance, the comments didn’t appear inline with the text when they were being made. They did later when the submitter saw them though so perhaps I just missed something as Joel blazed through the UI. If I were a startup, I would definitely consider using FogBugz to handle my planning and bug tracking needs.
Lunch was catered by Wolfgang Puck and was reasonably good consider it was a conference and the whole thing only cost $99. They divided up the tables into discussion topics (great idea!). I went to a table about programming languages, but others included agile methods, startups, and a few I forgot.
Daniel Racha from Nokia was next up to talk about Qt (pronounced "cute" not "Q-T"). This is a cross-platform UI toolkit and development platform recently purchased by Nokia. It is also the basis of the K Desktop Environment (KDE) for Linux and is where Webkit originated. Webkit is the rendering engine that powers Safari and Chrome. Nokia’s plan is to use Qt as the basis for its phone app development story. The technology and the tools are both mature and highly capable. Daniel did a good job selling the merits of Nokia’s tool chain. Considering the toolkit supports 6 platforms right now (Windows, Mac, Linux, plus several phone OS’s), I can see how this might be the way for cross-phone applications to be written. Daniel also mentioned the Nokia N900 which apparently is completely open source to the point where end users could upload their own OS. I can foresee 3rd party variants like those created for the Linksys routers. This could be an interesting challenge to Apple’s iPhone strategy.
Ted Leung from Sun came to talk about Python. This is another language I haven’t had time to learn yet. His slides were terribly hard to read (purple on black—seriously?), but the content was good. He gave a quick overview of the language basics and then talked about more advanced features like destructuring, generators (simple continuations), decorators, and extensions. Python has definitely taken a lot from the world of functional programming.
Dan Sanderson was next up and gave an introduction to the Google App Engine. It looks like an interesting way to build out scalable web sites. This is the competitor to Amazon’s S3 and Microsoft’s Azure. It supports the Python and Java virtual machines and so sites can be implemented in Python, Java, or any language that targets the JVM (Clojure, Scala, JRuby, etc.). With that kind of support it would seem an app programmed to it would be capable of being moved, but that would not be the case. The app engine is a very different sandbox to play in. The database is non-relational and doesn’t support SQL (or at least fully SQL), the filesystem is different, there is no direct network access. In short, once an app is written to the App Engine, it won’t easily run anywhere else. The environment looks intriguing, but you are putting your company’s fate into Google’s hands.
The day ended with Steve Seitz from the University of Washington talking about some of the advances in 3D image extrapolation. Steve is behind much of the technology that became PhotoSynth. Steve’s talk was light on programming content but high on “Wow!” factor. This was a great way to end the day. I’m not sure my mind could have taken another heavy talk. The stuff Steve showed us was mind blowing. They are able to take regular photographs, process them, and recreate the 3D scene. Not only that, but newer technology allows for a walkthrough of the site and even full texturing. You can see it here. The best is this one:
Overall the day was well spent. I got to learn about a lot of cool new technologies and renew my excitement for programming. Now I just have to pick one and find the time to learn it. If the event takes place again next year, I definitely intend on going. Thanks to Joel Spolsky and the folks at Carsonified for putting on such a great conference.