I'm up way too late tonight (considering I woke up at 4:45am today) because I'm totally psyched for the mountain.rb Ruby conference that gets started tomorrow evening in Boulder. It's really exciting to have a conference of this caliber right here on my home turf. I'm sure I'll post more about it later, but if it's your thing, you might want to follow the #mountainrb hashtag on Twitter as well as this Twitter list of attendees, speakers and sponsors I've tried to build.

My various social network feeds are bound to be pretty single-focus for the next few days, so fair warning. ;)

The Phone App

I haven't actually liked using telephones since high school, but it's getting a little silly. My iPhone home screen This is me every time I have to call a phone number with my iPhone:

  1. Press the "Home" button
  2. Realize that was unnecessary because the "Phone App" is one of the four apps that shows up regardless of what screen I'm on.
  3. Open the "Phone App"
  4. Take a second to realize which screen I'm looking at (generally "Recents" or something).
  5. Take another second to realize that I need to find the number pad and do so.

From there on, I'm cool, but it's such a clunky interaction that I am 90% sure is my problem, not the iPhone's. Perhaps I should make myself start calling people more often before my telephone muscles atrophy altogether...

Developer Day, Boulder

Last Saturday I had the pleasure of hanging out for a full day with a bunch of geeks in the TechStars space in downtown Boulder for Developer Day. The event was hosted adeptly by Ben Scofield of Viget Labs and featured a rather enjoyable variety of presentations. Overall, the content was good and the folks I interacted with were all good people. The only downside was the TechStars office had the heat cranked to sauna levels -- I pitted out both the t-shirt I wore that morning *and* the conference t-shirt, which I switched to after lunch. Developer Day Boulder

The majority of the crowd were Ruby/Rails developers, but there were a few Pythonistas, Scala fans, Apple/iPhone Objective C hackers, and even one C++ programmer. One of the attendees was actually a former co-worker from the Data Slaughterhouse days. It was nice to see a familiar face.

Other noteworthy trends:

  • MacBook Pros were almost ubiquitous.
  • iPhones were almost as common, though a few guys were proud of their mobile phones that are actually primarily phones.
  • No big surprise, it was a total sausage-fest. There was one woman in attendance. One.

I'll give some of my notes from the presentations after the jump, so feel free to move along if that's not your thing.

Chad Fowler -- The Passionate Programmer

This talk is based on Chad's book of the same name and was a hell of a way to get things started. Chad offered up some great inspiration. Some notes:

  • Having a plan (even one that turns out to be wrong) will make things seem easier.
  • Don't just say "I've always wanted to ..." Go out and do it!
  • Innate talent (or the belief that you have it) can make you lazy. Practice makes you better.
  • The easiest way to market yourself is to be remarkable. Let others sell you.
  • Another way to market yourself is to be a guide. People talk about the guy that teaches them something.
  • "I am a ..." can be dangerous. Don't pigeon-hole yourself

Chris Perkins -- TurboGears: An Exercise in Natural Selection

TuboGears is a Python MVC web framework. Chris told us about the evolution of the framework. The TG team is always striving for the best in class tools, which means they have switched the libraries they've used for ORM, web server, templating engines, and front-end scripting. This makes TG incredibly flexible, but my reaction was that it was a bit too flexible. It's an impressive framework, but it struck me a bit chaotic.

Rob Sanheim -- The Cloud - Real World Applications and Pragmatics

Rob showed us some awesome real world uses for the Amazon Elastic Compute Cloud (Amazon EC2). After making the point that "software as a service" (like GMail, etc.) is not the same as cloud computing, he showed us some really cool projects he's working on. First was run>code>run, a continuous integration service that integrates with GitHub. Then he used a new project called braincron, a natural language reminder application, to demonstrate setting up a new EC2 node with automated configuration using Chef Solo. Pretty impressive stuff, most of which was over my head -- I'll have to change that!

Jeremy Hinegardner -- Playing Nicely with Others

Jeremy's presentation was all about how we as developers always use more than one language in a project. For example, I use Ruby, T-SQL, JavaScript, and some amount of HTML + CSS in every project I work on. This reinforced Chad Fowler's point that telling someone "I am a Rails developer" is kind of silly (although using the framework might imply the multiplicity). Jeremy covered some commonalities of programming languages and application tools: data structures, communication, persistence. He then covered some interesting new tools that are available right now, such as: Tokyo Cabinet, Tokyo Tyrant, Redis, Beanstalkd, and MongoDB. MongoDB actually got a lot of love during the day -- something to look into.

After Jeremy's talk we broke for lunch, which was then followed by a handful of "lightning" talks -- five minute presentations:

  • David Eisinger gave an overlapping intro to Ruby and Mid-90s Hip Hop which featured lots of fun using the "say" command in Mac OS X.
  • Jason Turner showed off ChaiScript, a C++ scripting language.
  • Ben Reubenstein suggested we think about donating our time to good causes in order to expand out skillset productively.
  • Bobby Wilson ranted a bit against templating systems in Rails.
  • Jess Martin gave a passionate overview of "The One True Way of CSS", with which I completely agreed.
  • Ben Scofield talked a lot about how convoluted comics books and the comics publishing industry is and a little bit about how a relational database might not be the best way to model them.

David Eisinger -- Email Interfaces for Your Ruby Apps

David is another member of the Viget crew. He started his presentation with a sort of philosophical discussion of email interfaces to web apps: why they are a good idea, hurdles to overcome, things to be careful of, good examples from the real world (people mentioned several times). He definitely opened my eyes to the idea of using email, which even your Nana knows how to use, as an interface to an application. The latter half of the talk was left to briefly covering all of the technical aspects of an email interface, from the mail server, the software you use to fetch the mail, and finally how you process the email messages. Not a ton of details, but a great topic.

Derek Chen-Becker -- Stepping Up: A Brief Intro to Scala

I must confess that before this presentation, I had moved to the back of the room to find a power outlet for my laptop, so I really didn't give my full attention. Even given that, I have to say Scala is pretty interesting. It compiles to 100% Java bytecode and is sometimes even "better" than compiled Java. I've never learned Java -- static typing honestly makes me itchy. Scala feels a lot more like a dynamic scripting language and seems more approachable to a monkey like me. It's not the prettiest code I've eer seen, but it's interesting enough that it's on my radar now.

Bill Dudney -- Core Animation on the iPhone and Mac

Bill "wrote the book" on iPhone development. I was mostly excited for his talk just to get a little exposure to Objective C, and ... wow. In the words of the day's final keynote speaker, Bruce Eckel, "I don't know what the square brackets do. I see there are a lot of them..." Getting past that, Bill made great points about using animation in iPhone apps to make the user experience more "real". He also showed us how the core animation libraries handle a lot of the heavy lifting of animation for you. Pretty neat stuff.

Bruce Eckel -- The Archaeology of Language Features in C++, Java and Python

Talk about writing the book! Bruce wrote what many folks consider seminal tomes for both C++ and Java. He's over that, now, though. These days Bruce loves his Python. (Incidentally, he likes Flex for UIs.) His presentation covered some of the decisions that negative affected those older, static languages - in particular the mandate for backward compatibility. As counter examples, he mentioned that both Python and Ruby have recently undergone major overhauls that have changed or dropped functionality entirely. The big pull-quote from Bruce's talk, though, was his feeling that with the help of new players like Scala, Java is fast approaching "legacy" status. I'm cool with that.

And that was that. I bailed on the after-conference beers, opting for the company of my darling wife instead, but I really enjoyed Developer Day. If it comes to your town, definitely go.

BTW: In many cases, if you go to the blogs of the speakers linked above, you'll find their write-ups of the day, too. Always an interesting exercise to see how others see events...

Good Things

A categorized list: Hip Hop


  • Firefox 2.0 is out and seems worth the update. I do suggest getting the Tabbrowser Preferences extension, because I hate those tab close buttons on every tab. The inline spell checking is worth the price of admission, though.
  • (from Steve Berlin Johnson) is interesting, but I'm not sure it turns me on just yet. Not a whole lot of content for my neck of the woods so far.