I traveled to St. Louis last week to attend my first Strange Loop conference. (It is a strange name. The FAQ offers an explanation, but because I get the feeling that most of its attendees would like to “strangle OOP,” I’m a little suspicious.)
ANYway, Strange Loop is a fairly new conference (this is its fourth year) aimed to attract developers from various disciplines. Talks cover a variety of areas, including databases (both big and small), emerging languages, web and mobile development, etc. I first learned about the conference less than a year ago when I watched Rich Hickey’s keynote at last year’s conference. I was hooked.
From talking to other attendees, I gathered that the overall theme changes from year to year, and this year there seemed to be lots of discussion about databases — in particular their methods of persistence, and the relevance of transactions and/or ACID. Opinions varied widely, and it was both amusing and informative to watch it play out.
This year’s venue was the Peabody Opera House, which is gorgeous. There was ample room for attendees, the facility was clean and kept after, the acoustics were great, the WiFi was excellent, and the coffee was plentiful. The organizers of this event did a tremendous job putting all of this together.
Day 0: Pre-Conference and Pre-Party
I did not attend the Emerging Language Camp pre-sessions, but I heard they were terrific. I did, however, attend the pre-party at the Schlafly Tap Room, enjoyed an Oktoberfest and listened to Teddy Presberg and the Restoration Organ Trio tear it up for about and hour and a half. Those guys were excellent. It was the perfect way to end the day, and to start off the conference.
Day 1: Databases, Bootstraps, Lies and Oh! The Arch
Michael Stonebraker keynoted the event with his talk titled “In-Memory Databases – The Future is Now!” Michael talked about what he calls “NewSQL” (that is neither traditional SQL nor NoSQL) and his implementation of it. I’m a little suspicious because the whole thing is single-threaded, and in my mind, that processor had better be bangin’ to handle all of that work. To be fair, though, multi-threaded databases incur a ton of overhead dealing with concurrency, and by making the database itself single-threaded, a tremendous amount of complexity can be eliminated.
I remember not long ago when Twitter Bootstrap came out, and I made a mental note to check it out. Well, Howard Lewis Ship beat me to it and gave a very nice overview, complete with working examples. I’m not an active web developer, and am not up to date with all the latest frameworks (and there are many — it makes my head hurt, to be honest), but the promise of cross-platform and consistent look and feel coupled with ease of use make Bootstrap quite compelling.
Stuart Sierra gave a talk titled “Functional Design Patterns,” in which he identified a series of coding patterns much like the Gang of Four, but specific to functional programming. One pattern he introduced as the state/event pattern, which, from what I can tell, is the same thing as event sourcing. He introduced a number of other patterns that I probably would have appreciated more if I was more proficient in a functional language. Apparently, many of these patterns are “monadic” in nature.
(Everyone laughs here when someone says “monads.” Either everyone has a 10-year-old’s sense of humor because it rhymes with “gonads,” or there’s some kind of inside joke that I don’t know about.)
Gary Bernhardt blew our minds with his talk titled “A Whole New World,” wherein he developed a new console, complete with interactive visuals. Impressive, no? Indeed … until we realized that he built the whole thing in Keynote. Lame! His point wasn’t lost on me though. We should not settle for old, dusty tools. Sure, the console is tied to the kernel, but so what?! We should want better tools, and we should build them … just not in Keynote.
Amanda Laucher and Paul Snively duked it out in their “Types vs. Tests: An Epic Battle” talk. Epic is kind of a strong word, but the talk was interesting. They worked on some code katas independently, and neither seemed to agree on the initial approach. E.g., do I write out all of my unit tests first, or define all of my types? They did seem to agree, however, that both types and tests have their places. As a C# developer, I’m quite comfortable and proficient with types. But, I’m really dragging my feet with TDD, and I was glad to hear that I’m not the only one who dreads the thought of writing tons of unit tests. Say what you want, but it’s downright dreadful.
Rich Hickey challenged my thinking with respect to databases with his talk, titled “The Database as a Value.” Relational databases historically have been a necessity in order to minimize storage space. Today, however, storage is cheap and ubiquitous, allowing developers to consider data persistence alternatives. Rich made the argument that developers commit code to version control systems without regard for space consumption, and such systems keep each revision forever. No relational database offers that, but we should want it. In fact, we should demand it! (Permalinks, anyone?) Not only is Rich demanding it, he’s building it.
Day 2: Neuroscience, Philosophy, Abstractions and Expressions
For the keynote, Jeff Hawkins gave us an education on the neocortex of the brain and how Numenta is using this information to build learning systems. The neocortex is a predictive modeling/memory system, not a computing system, and Numenta’s system(s) are built similarly. Artificial intelligence has a bright future, and Jeff envisions a future in which it’s used for continued information discovery, particularly in areas unsuitable for humans. (Think deep space travel.)
Matt Butcher proposed that all of computer science can be traced back to Plato, much like A. N. Whitehead suggested that all philosophy is a footnote to Plato. Matt theorized that Plato’s focus on being would likely place him in the OOP camp, and that Aristotle would be a champion of functional programming as he was far more interested in the becoming, the perpetual change of state. And, to wit, if you attempt to combine both philosophies, you end up with Scala. (Laughter ensued, but I’ve never written a line of Scala, so the joke was lost on me. I bet it was really funny though.)
I went on to attend three other talks, all of which were interesting:
- “Eventually Consistent Data Structures” given by Sean Cribbs
- “The Audubon Society for Partial Failures” given by Cliff Moon
- “Expressing Abstraction, Abstracting Expression” given by Ola Bini
In summary, the conference accomplished exactly what it set out to do. It attracted really smart people from various disciplines, covered a variety of topics, and blew people’s minds. Quality was high, all around. In fact, even the tunes were great! I can’t think of a single thing to really complain about, and that speaks volumes because complaining is something I’m incredibly skilled at. (OK, the hotel WiFi SUCKED, but that’s about it.)