Ben Scofield

Archive for September, 2009

WindyCityRails recap

without comments

So I spent a lovely 30 or so hours in Chicago over the weekend for WindyCityRails (as I mentioned previously), and despite the short stay, I had a great time. David and I flew out midday on Friday, and quickly established (and met) our food priorities: hot dogs for lunch, deep-dish for dinner.

Saturday was the conference, which started off with a talk by Dean Wampler on functional programming. I was really pleased to see the talk, especially once I realized that it played on some of the same themes that I’d be addressing later in the day (polyglottism and high school learning, specifically). Unfortunately, I had to miss John McCaffrey‘s talk on Prawn – I enjoy the tool, but I wanted to run through my talk one last time.

Speaking of my talk, it went well. I got laughs at the appropriate times, and the Twitter stream and SpeakerRate ratings both implied that people enjoyed it. I’m still trying to find the right balance between talking about problematic domains and about specific database technologies, however, and I think that might be a fundamental issue with the structure of the talk. I’ve got a number of other chances to fix that, though…

Lunch was excellent, and made even better by some great discussion with Noel RappinDavid Chelimsky, and others around the table. After that, we were back to the tables for Ryan Singer‘s talk on UI design.

I’ve got some mixed feelings about this talk. I was very excited to see it, given that it rated very highly at Railsconf and I missed it there – and the attendees here seemed to enjoy it a lot, too. I, on the other hand, wasn’t particularly impressed. Maybe I’ve just been working with excellent UX and design people for too long, but I disagreed with some of the techniques Ryan discussed, and found his bias against testing design really off-putting. I’m looking forward to the video of this so I can take another look, but so far I’m 0-for-2 on having a good time at design-for-programmers talks.

Noel’s session on testing was up next, and I thought he did a good job covering the material. He went through a lot of techniques pretty quickly, and while many were familiar I found some new nuggets in there, too.

Next, David was up with the latest iteration of his Optimizing Perceived Performance (and the accompanying DBDB application). He’s really growing as a speaker, and I’m excited to see his continued improvement – he was as hilarious as ever, and had a lot of good material to put forward, so it was a very good talk.

I’d love to recap Yehuda‘s closing keynote – apparently he threw out quite a few interesting comments (an alpha for Rails 3 within the month??) – but I had to leave to get to the airport for my flight home.

All in all, WindyCity was a great conference. The regional events just seem to get better and better every year (heck, every month), and that can only bring good things for the community. Congrats to the organizers on a job well done!

Written by Ben

September 13th, 2009 at 7:00 am

Posted in General

Tagged with ,

Speaking updates

without comments

Several things have come together over the past week or so, with the result that I’ve pretty much solidified my speaking engagements for the rest of 2009. At each event, I’ll be talking about alternative databases, domain modeling, and related things – they’re all variations on my “Comics” Is Hard talk, though with distinct differences based on the audiences.

WindyCityRails 2009

First up, I’ll be in Chicago this weekend for WindyCityRails (along with my co-worker David Eisinger). I’m particularly looking forward to Dean Wampler’s session on functional programming here, as well as Ryan Singer’s UI talk (which I missed at Railsconf).

Refresh the Triangle

Two weeks from today, I’ll be giving a less technical talk at Refresh the Triangle; the event usually attracts a mix of designers and developers, so I’ll also be showing something of how HTML5′s offline storage works.

Developer Day Boulder

In October, I’m helping take Developer Day out to Boulder. I’m not planning on giving a session (just organizing), but I’m really excited about the schedule so far. The week after I get back to NC from Boulder, however, I will be speaking to the Charlotte Ruby group, which sounds like an energetic group of programmers.

RubyConf 2009

Finally, I’ll be speaking at RubyConf in San Francisco in November. I haven’t been out to SF in years, and I’m happy to have the opportunity to get out there for the conference (which is typically one of the best I attend every year), as well as to reconnect with friends in the area.

And that about does it for 2009, unless something wholly unexpected pops up. If you’ll be at any of these events, feel free to drop me a line – I’m always up for a chat about this, that, or whatever! Also, just as a reminder, I generally keep my upcoming event schedule current, while these update posts are a little more rare.

Written by Ben

September 10th, 2009 at 5:30 pm

Posted in General

Tagged with ,

Polyglot persistence

with 4 comments

Polyglot programming was everywhere in the (developer-centric) news what, last year? That is the idea that good developers should be competent, if not fluent, in a number of different programming languages, because different languages are good for different things. Perl, for instance, was built for string manipulation and report generation, while Java was… not. The programmer who knows both, then, is better able to handle a wide variety of problems quickly and efficiently. Of course, anything you can do in one Turing-complete programming language, you can technically do in another – but that doesn’t mean it’ll be easy.

Over the last few months, I think we’ve seen the emergence of a similar movement in another aspect of the development world: databases. There’s been a metric ton of publicity for CouchDBRedis, and other alternatives to the traditional relational database – many of which fall under the moniker NoSQL (or “post-relational,” perhaps). I think that many of the NoSQL crowd either fail to either recognize, or to properly describe that their preferred databases don’t replace applications like MySQL and Postgres, just as Ruby doesn’t replace Java. Instead, the explosion of these new options for persistence just work better for some domains (and worse for others).

That, in fact, is the subject of a talk I’ve been giving at various events this year*. In the talk, I explore a couple of problem domains – biological taxonomy and the comic book market – and show how neither maps cleanly onto a traditional relational database schema. I then describe some of the major categories of alternatives (key-value stores, document-oriented databases, and graph databases), and show how they work better for these particular domains.

My favorite part of the talk, however – and my favorite aspect of the NoSQL movement as a whole – comes at the end, when I describe a blended system. Many applications may require a non-traditional data store (say, something like MongoDB) for their core domain, but have other features that fit perfectly into a relational database – say, a CMS that relies heavily on custom fields and has a traditional user management system. Just as polyglot programmers may use multiple languages in a single application, I think the future of the web is polyglot persistence: we should use the database that best represents our domain, even if that requires several distinct systems within a single application.

Of course, this raises new problems – for instance, scaling multiple database systems to expand a single application – but these seem far from insurmountable, and the gains of the approach appear (to me, at least) substantial. It’s clear from the explosion of alternative databases that this is an area that will continue to grow, and the only viable way to deal with that growth is to take its best parts and integrate them with the best that the current ecosystem has to offer.

* Repeating a talk is fairly rare for me, but in this case it seems particularly appropriate – the state of the database landscape is in such flux that I get to revise parts of my talk fairly often, so the version I give at, say, WindyCityRails this weekend will be noticeably different from the one I gave at Developer Day Boston in August.

Written by Ben

September 8th, 2009 at 7:00 am

Posted in General

Tagged with

Go west, young developer

without comments

Developer Day BoulderDeveloper Day has visited Durham, DC, and Boston so far…. Isn’t it about time we left the east coast and headed west?

Developer Day Boulder is coming on October 10th! We’re still in the process of finalizing details, but so far we’ve got Chad Fowler keynoting, David Eisinger speaking on using email as an interface for your application, and Rob Sanheim talking about building in the cloud – and if the past is any indication, the rest of the speakers (who’ll be announced over the next few weeks) will be fantastic developers and practitioners in a variety of languages, technologies, and domains.

Early bird registration lasts until September 25th, and is just $50 for a full day of great talks, food, a t-shirt, and some good old-fashioned community building. After that, the fee’ll jump to $75, and the shirt won’t be guaranteed, so if you’re anywhere in the Boulder-Denver area and free on the 10th, register today!

Written by Ben

September 4th, 2009 at 7:00 am

Posted in General

Tagged with ,

Vending machine* usability

without comments

* I grew up in the South, which means I actually call these “Coke machines,” but in the interest of generality I’ll refrain from that in this instance.

I bought a soda recently, and noticed (for the first time) a pretty basic design flaw that is common – though not universal – in vending machines. You know how these machines have a picture of a dollar bill to show you the correct orientation to insert it into the machine? Well, some machines will only accept bills in that orientation, others will accept bills face-up regardless of which short edge is inserted first, and still others will accept any bill regardless of orientation.

I’m assuming that the machine is set up to prefer one orientation over another so that it can compare features of the bill to a template – a search image. If that’s the case, though, it should take minimal effort to allow any of the four orientations; you’d just have to add three more search images and identify the relevant features. Of course, it’s not quite that simple, since the design of the bill changes over time – but those very design changes show that this is possible, since a vending machine may have to respond to several different bills even if they’re all inserted in the same way.

Far be it from me to speculate on why vending machine manufacturers haven’t done this universally – maybe I’m way off base in my assessment, and the challenge in accepting bills any old way is in fact very difficult – but it’s just another of those minor usability failures that add up in the course of a day.

Written by Ben

September 2nd, 2009 at 7:00 am

Posted in General

Tagged with