Notes from StrangeLoop 2011

by Eric Bloch

StrangeLoop

Along with about 900 other developers, I had the pleasure of attending the StrangeLoop conference for the second year in a row.  The themes were more-or-less the same as the 2010 developer-to-developer event:

  • Data
  • Programming Languages (and functional programming in particular)
  • Web Development and Mobile apps
  • Distributed Systems and Concurrency
  • Community and teaching

 

The two days were jam packed full of first-rate speakers and talks - so many that you couldn't possibly attend everything you might want to.  One difference this year was the location - both an upgrade for logistics (nicer to have all sessions in one building) and a nicer view from the conference room (although I did miss having the plenary's in the Pageant).   Here is a link to the slide decks for the entire conference: https://github.com/strangeloop/2011-slides/blob/master/TOC.md

Below are scattered notes from some of the talks I attended:

Erik Meijer (@emjkt) on Category Theory, Monads, and Duality in (Big) Data

Erik is a well-known languages guy, now working at Microsoft.  His talk centered on a comparison of "tables" (relational/sql, primary key/foreign key) and "nested objects" (non-relational, nosql, key-value).  The main point of this talk (which you can get from reading his ACM paper)  is that there is an essential duality between these two forms that can be expressed using Category Theory.  Once you realize that, I'm not sure what it helps or implies, other than perhaps providing a mathematical/theoretical basis for compariing, converting, etc.  Still, it was nice to hear some abstract math in an opening keynote.

Blake Mizerany (@bmizerany) On Distributed Failures (and handling them with Doozer)

Doozer is a project developed and in use at Heroku (now part of SalesForce.com).  Doozer is a Paxos implementation in the go systems programming language that serves as a highly-available, consistant data store for handling failures.  It uses itself to store configuration and offers guaranteed consistent versioned storage, queuing, and synchronization.  Heroku uses Doozer to keep track of failures and avoid SPOFs "so you don't have to".  If you need a Paxos implementation, doozer seems like a good place to look.

Nathan Marz (@nathanmarz) Storm

Along with a packed room of developers, I saw Nathan Marz give a demo and some high-level descriptions of why he built Storm, what are the major use cases, where the project is now, and what's on the roadmap.   Marz (and Storm) are now at Twitter, as they bought out BackType earlier this year.   It still seems like early days for this project, which is more of a sibling, as opposed to a competitor, of Hadoop.  Here's a recap of the three broad use cases for Storm:

    1. Stream processing: Storm can be used to process a stream of new data and update databases in realtime. Unlike the standard approach of doing stream processing with a network of queues and workers, Storm is fault-tolerant and scalable.
    2. Continuous computation: Storm can do a continuous query and stream the results to clients in realtime. An example is streaming trending topics on Twitter into browsers. The browsers will have a realtime view on what the trending topics are as they happen.
    3. Distributed RPC: Storm can be used to parallelize an intense query on the fly. The idea is that your Storm topology is a distributed function that waits for invocation messages. When it receives an invocation, it computes the query and sends back the results. Examples of Distributed RPC are parallelizing search queries or doing set operations on large numbers of large sets.

Towards the end of the talk, Nathan went over, live, to github and flipped the bits to make the code repositories now public. Yay went the crowd.

My own view is that this stuff is very early, but could show promise.  If you're interested in dealing with someone else's bugs and you have a need, it might be interesting.  For now, I'd recommend simply tracking to see if anyone else serious besides Twitter picks it up.  And, consequently enough, it seems like lots of folks have that same thought; Storm is now the most-watched Java, Scala, or Clojure, project on github.


Eric Brigham from TruCoin talking about Bitcoin -

This was an interesting talk on an interesting, slightly controversial subject, at a relatively high level.  Bitcoin is a decentralized, digital currency.   Bitcoins are woth about $5 bucks a piece today and their value has fluctuated a lot over the past year.  I'm going to point you to someone else who took better notes than me though.  Sorry.

Dean Wampler (@deanwampler) on Heresies and Dogmas

He started this talk with a great tweet:

@stesla So often I find myself wondering how many things in software we actually *know* and how many we just *believe*. Software is faith-based

Wampler reviewed a number of software development practices as to whether they are dogmas or heresies and presented his measured and, in general, wise view of current religious (my joke) practices (my terse summaries in parens)

  • Gotos (not completely harmful, use with care)
  • Design before code (not always, iteration is helpful)
  • design patterns (sometimes helpful, sometimes stupid)
  • CORBA vs. REST (good ideas, but CORBA sucked, and REST is good)
  • Object Middleware and ORMs (Seems like a good idea but isn't)
  • Identifiers with Spaces (it works in Scala and has uses, even if generally not good)


You can get the slides at https://github.com/deanwampler/Presentations


Kyle Simpson (@getify) on Script Loaders

I actually meant to go to a different tak (on telehash) but ended up here and decided to stay.  It was a detailed and passionate talk about a very specific issue in web development - how HTML pages load Javascript code.  It's actually a fairly deep issue, often conflated with dependency checking in Javascript.  In theory, it's something developers shouldn't have to think much about, but because of the lack of standardization and behavior in current browsers (and servers), it's not likely the situation will get fixed in less than a couple years.  For now, if you care about minimizing page load speed in your page, you'll want to use someting like Kyle's LABjs loader.  Slides at http://www.slideshare.net/shadedecho/the-once-and-future-script-loader-v3

Danno Ferrin (@shemnon) Applying Principles of Stage Magic to User Experience

This was a good talk - covering ground most UX folks have seen, but it always helps to be reminded of the techniques and examples of how to use them.  As a reminder of the general techniques of misderation, we have:

Ruse
Interpreation
Maneuver
Pretence
Diversion
Monotony
Premature Consummation
Confusion
Suggestion

Slides are here.


Mike Lee (@bmf) on Product Engineering

My favorite talk from the conference was Mike Lee's talk on Product Engineering - it's a must see, and thankfully, it was recorded and will eventually be available on line.  I won't spoil it for you, but it's a good one - Mike killed it.  As a tidbit, he started with some golden rules for product:

    • Technology is first and foremost a people problem.
    • You can't force people, you must tempt them.
    • New must be better than the old.

Like many good talks, it wasn't that deep, but the points made were done so eloquently and crisply, that not only do you get learn something, but you actually enjoy learning it.  (like sitting thru a lecture from a great professor).  You can see a review of the talk here on RWW (and yes he did dress up like a Mariachi for the talk). 

Comments

  • Eric, Thanks for excellent notes. For a small conference, there was so much to see. . . my own notes forthcoming, if I can get my act in gear. . .