Tuesday started off with misty morning. I probably should have headed out for better photos of the arch and other landmarks disappearing into the fog, but I only got a few out of the hotel windows
Bryan O’Sullivan talked about “Running a Startup on Haskell”. He talked about a lot of things besides Haskell, including evaluating people. He found that knowledge of a language was not a big roadblock, but it might be an indicator for general ability. Tough languages tend to have good users, but of course the more common something is, the worse it is as an indicator. He also talked about their choice of data store, and observed that everybody complains about their data store, so complaints are not a good signal. He also recommended that everyone find “QuickCheck”, a random testing framework, for their own language.
Jeremie Miller talked about “A P2P Digital Self with TeleHash”. He observed that HTTP was meant to be peer-to-peer, and compared NATs (Network Address Translation) to plantations of slave IP addresses. He described his choice of Kademlia for the distributed hash table, because it was the simplest algorithm. TeleHash is designed to support the LockerProject, which then provides NAT transport, identity, trust, etc.
Sarah Allen gave a talk titled “Teaching Code Literacy”. I probably could have read the description more, but she was really talking about teaching kids programming. Her point was that we teach chemistry but don’t expect kids to become chemists – yet programming is becoming more essentially in an increasingly digital world. She described, Pie, a Ruby DSL for making graphical adventure games. It’s online, because kids view desktop apps (e.g. Shoes) as something to do homework with. One major challenge is that kids under 13 don’t have email.
I only wrote down one thing from the lunch language panel. Language adoption is often driven by association with the latest fads: GUI/Smalltalk, web/Ruby, concurrency/?.
The second keynote was Clojure’s Rick Hickey discussing the difference between simple and easy. He goes back to the roots of the words. Simple comes from sim-plex, or one-fold/braid, in contrast to com-plex, many-folds/braids. Simplicity/complexity is absolute – no matter how good you are at something complex, it’s still complex. Rich made up the word ‘complect’ to mean braiding things together (e.g. complicating them). He contrasts simple with easy, which derives from nearness. This is relative – if your skill improves you get ‘nearer’ to something, and it gets easier. Related words are compose: to place together (nearer) and abstract: drawn away. A particular example (a favorite of functional programmers) is state: easy, but complex. Rich also got a lot of people riled up by expressing his doubts about unit testing. He compared unit testing to guard rails – if you hit them, you’ve already done something wrong. And of course test only cover what you’ve tested.