Speaking
I’ve been fortunate enough to speak at a number of different events over the past few years – to large crowds and to smaller ones, and on a variety of topics. I sometimes update a talk and give it again to a different audience, so generally the links below (for slides, et.c) will point to the most recent instance.
2010
Ignite RailsConf
The path to mastery is long, arduous, and not a lot of fun in and of itself. Given that, and that mastery isn’t really required for anything, it makes a lot of sense to take a look at some alternatives: mediocrity, adequacy, and excellence.
This talk grew out of my earlier Understanding Mastery one, but took a slightly different tack — I focus more on alternatives to mastery, and why we should choose them in some cases. It went over pretty well at Ignite RailsConf, and I’ve had some fantastic discussions with people since then.
With a Mighty Hammer
Rails 3 brings many changes, both obvious (routing, the ActionController refectorings, ActiveModel) and subtle. Personally, I’m a fan of the changes to generators – the entire system has been rewritten to use Thor and to be more modular. In this talk, I’ll walk through what generators look like now, show how easy it is to replace core generators with new ones, and dive into the underlying code to show how it all works.
In May, I flew out to Oklahoma City for the Red Dirt RubyConf, which was wonderful. I was part of the Rails 3 track, speaking on the mechanics of the new generator system.
Understanding Mastery
There’s been a surge of interest in the concept of mastery – both what it is and how to attain it. In this talk, we’ll look at how mastery is currently understood and depicted in our culture, and we’ll delve into when it is worth the effort.
I’ve been wanting to give a talk on mastery for a while, and happily I got the chance to do so at Pecha Kucha Raleigh.
Mind Control: Psychology for the Web

We all know web design tricks to getting people to do what you want – make buttons bigger, use accent colors, etc. There are other strategies, however, that rely on the more proven tools of psychology; this session will explore reciprocity, scarcity, and more, and see how effective they can be.
This was the reason behind my first trip to SXSW, which was an experience. The talk went very well, and apparently tapped into something of an undercurrent – there were several other talks on the same basic topic.
I also ended up giving this talk at the first DevNation event, in Atlanta. In general, I’m pleased with how it went there, but I think I could’ve done a better job of retargeting it towards developers.
slides | speakerrate | interview
The State of NoSQL
I gave this talk (which is basically just an updated version of my Death to Relational Databases(?) talk) at Developer Day in Durham, and despite a tangent about Wolverine’s sex life and the believability of She-Hulk and Juggernaut dating, it went very well.
slides | speakerrate | video (part 1, part 3)
NoSQL: Death to Relational Databases(?)
My first talk of 2010 was a repeat performance – I updated the NoSQL talk I gave at RubyConf, but spoke to a much broader audience at CodeMash. Sandusky, OH in January is cold, but the event was great.
2009
NoSQL: Death to Relational Databases(?)
There’s a storm brewing. You may have felt the increased pressure when you last typed “CREATE DATABASE latest_project;” into your MySQL console – or you might have been seeding the clouds in an attempt to start the storm sooner.
The name of that storm? NoSQL.
Much of the feedback I got on my “Comics” Is Hard talk revolved around the division of time between the two sections – some people wanted more on the domains, while others wanted more on the solutions (the alternative databases). After some thought, I decided to split up those two sections into two complete talks, and this is the database piece. In it, I provide an overview of the NoSQL ecosystem, and show how a number of the most prominent systems work. I first gave this at RubyConf 2009, and will be revisiting it at least once in 2010.
slides | speakerrate | video
The Future of Data
The future of data is more uncertain than ever – traditional, server-based relational databases are being assaulted from all sides, by document-oriented databases and other forces, and by HTML5 and client-side storage. Come and learn about these attacks on the status quo, and maybe we can all bring peace to the database landscape, together.
This was a variation on my alternative database talk, widened to include a discussion the HTML5 web storage. It went over well in a mixed crowd of developers and designers, where the earlier talk would’ve been too technical.
Mind Control on the Web
We all know design tricks to getting people to do what you want on a web site – make the button bigger, draw the eye down the page, etc. What we *don’t* all know are the psychological tricks that can be much more effective. In twenty slides, we’ll explore both general principles and examples of them at work.
I gave this talk at Ignite Raleigh, and had fun compressing some fascinating research into 5 minutes for a diverse audience.
slides | video
How the Geeks Inherited the Earth
I’m a geek. Chances are, you’re a geek, too – but that identification doesn’t mean the same thing it did in high school. Over the past ten or fifteen years, geeks have become the mainstream, and there are a couple of very good reasons behind that change. In this set of twenty slides, we’ll look at one aspect of that shift, with the rise of geekification of entertainment.
This was my contribution to Pecha Kucha Pittsboro, and (though it felt out of place, amid talks on biomass energy and the revitalization of eastern Kentucky) it went over very well.


“Comics” Is Hard
It sometimes seems like all domains easily map onto relational database like MySQL and Postgres — that we live in a happy land where all Employees are People, and all People are Mammals. Unfortunately, however, there are many domains that just don’t map so easily onto a standard relational schema. In this session, we’ll look at three general alternatives to the familiar model, as illustrated by some specific examples. We’ll also see how some alternative databases provide a better fit for specific domains.
This is one of my favorite talks at the moment – I get to rant about the absurd state of the comics business, and I get to call attention to some of the coolest alternative databases out there: document-oriented DBs, distributed key-value stores, and graph databases. I gave it at RubyNation in June, Boston in August, Chicago in September, and will be presenting variations of it at several more events through the rest of the year.
slides | speakerrate | video

And the Greatest of These Is … Rack Support
The benefits of Rack support in Rails have become increasingly obvious; Rails Metal and integrating multiple Rack applications have made possible architectures that were impractical before, and some long-held opinions are ripe for change. In this session, we’ll see how to set up this integration and explore real examples of how it can be used—including the rehabilitation of page caching.
I’m a huge fan of [Rack], and I love how it has changed the Ruby web community for the better over the past couple of years, so I was very excited to give this talk in May at Railsconf; I was a little less excited to give it in July at Rails Underground, however, because there was a bit of a shift in the community’s knowledge of Rack in the intervening months. As a result, the talk was less informative to the latter audience, and I’ve retired it. (Though this presentation does contain the single most awesome slide I’ve ever put into a deck.)
slides | speakerrate | video
Page Caching Resurrected
We’ve seen a number of dramatic changes in Rails over the past year, with the most surprising probably being the announcement of the Rails-Merb merger. No less important, however, is the addition of Rack support, which can have a revolutionary effect on the way we build applications today, much less how we do it when Rails 3 is released. In this session, we’ll explore how Rails on Rack revitalizes page caching as a performance strategy.
I started playing around with progressive caching at the beginning of 2009 – the technique of page caching most of a Rails action and pulling in dynamic content with AJAX. I spoke about this strategy at CVREG and at the first Developer Day, and was supposed to give the talk at Locos x Rails in Argentina (though that appointment was interrupted by some travel issues). I’m very happy with this presentaiton, though – particularly as it afforded me the opportunity to hand-draw some slides for the first time.
2008
All I Need to Know I Learned by Writing My Own Web Framework
While I’m very happy with Rails, I do have some frustrations with it – particularly with some of the finer points of its implementation of REST. As a result, I spent a fair bit of time working on my own framework (made all the easier by relying on Rack) that took a slightly different approach. This talk grew out of that work.
slides | speakerrate | video
Advanced RESTful Rails
One of the big benefits of Rails is that it standardizes application development in a way you don’t see with many of the alternatives. That has made Rails applications easier and faster to develop, and much easier to maintain, than competing frameworks. This isn’t just a one-time benefit, however; with the integration of RESTful principles over the last two years, Rails applications have become even more standardized. Developers of RESTful applications can see as much of an improvement over other Rails applications as they originally saw over their old (say, PHP) sites….
I gave this presentation several times through the year, at Raleigh.rb, Railsconf, and Railsconf Europe. Happily, it got better each time, and I got fantastic feedback when I gave it for the last time in Berlin. It grew out of some of the work I did on my book, and much of the day-to-day work I’d been doing at Viget Labs.
Better Living through Resourceful Plugins
Rails makes it spectacularly easy to develop an application that does everything – as long as you’re happy with rolling everything yourself. For those of us who like to take advantage of the efforts of the community, however, when it comes to common functionality (say, blogging), Rails makes things a little harder. As it turns out, it’s a challenge to integrate two or more Rails applications, as those of us who’ve tried to bolt a Mephisto or Radiant installation onto a custom project have discovered. It seems like you’re faced with two options: proceed without the benefit of third-party development by building even more custom functionality, or making do with a half-hearted (at best) integration between two distinct applications….
This tutorial from RailsConf Europe would have worked better as a regular-length session; the core idea behind resourceful plugins just isn’t complex enough to warrant three hours, and it turned out to be very difficult to make the extra time worthwhile for all of the attendees.
2007
Cleanliness is Next to Domain-Specificity
My first RubyConf presentation! I had a lot of fun with this talk, and the audience seemed to enjoy it.
Hiding in Plain Sight
I gave this talk at Rails to Italy; it was one of my least successful talks of the year. I think the topic was probably a bit too basic for the audience.
Building and Working with Static Sites in Ruby on Rails
Rails is a tool – a hammer, if you will – and it’s great at what it does. It’s so good at its job, however, that developers who use it can easily fall prey to the “everything looks like a nail” fallacy. Rails is not the answer to every web development problem… One such problem is that of static (or mostly static) sites – those too small for a full-fledged CMS, but big enough to make building and managing by hand painful. Rails out-of-the-box is not a great fit for such sites.
This was my first RailsConf talk – and in fact, my first technical presentation. The content is entirely outdated now – it was made obsolete by a plethora of Rails CMSs, including our own sandstone plugin.