I attended Strange Loop 2010, organized by Alex Miller, in St. Louis, MO (more precisely, in the University City Loop), on Octover 14–15.
This is the second year of the Strange Loop conference. It is held at the Pageant, the Moonrise Hotel, and the near by Regional Arts Center. Each day starts with a morning keynote, followed by sessions spread out in six tracks, and ends with an afternoon keynote. There is a party Thursday evening at the Pageant where the Strange Passions talks were given. There are two lunch time panel discussions on Friday.
Like last year, the keynotes are thought provoking:
The Thursday morning keynote was by Hilary Mason from bit.ly. The topic is machine learning, which is a part of artificial intelligence.
Most of the stories I hear about AI ends with "... and then came the AI Winter." Hilary filled in what happened next: AI found the next big thing in statistics. The probabilistic model fueled 10 years of growth of machine learning since the late 90's.
This new growth, which Hilary calls data science is at the confluence of engineering, mathematics, computer science, consumer demand and hacking. It provided algorithms to satisfy on demand computing in the face of a lot of data.
Key problems in this discipline are clustering, entity disambiguation and classifications. Key applications include spam filtering and recommendations.
She went into Bayes Law and some tools that she uses for her research: grwp and awk, Wikipedia, New York Times, lynx --dump. And she ended with a description of her OSEMN research methodology:
Obtain
Scrub
Explore
Model
iNterpret
This is really a thought provoking talk. And I believe I would not have gravitated towards it had I seen a link to it on the internet. My thanks go to Alex Miller for bringing this talk to town and to Hilary Mason for sharing this love story with us all.
The Thursday afternoon keynote was by Guy Steele. I personally think every programmer should know who Guy Steele is and be familiar with his contributions to programming languages.
Although I have seen a variance of this presentation on line, seeing him in person is one of the things that drew me to the conference. My only tweet during the conference was ... Guy Steele just walked by.
Guy started off with a nostalgic reverse engineering of one of his IBM 1130 assembler programs in one punch card, noticing several places where he was squeezing the program size down by reusing a value for multiple purposes and by doubling up the duty of a code word for data.
He then showed a routine for calculating sinx by using the triple angle formula:
sin 3x = 3 sin x - 4 sin3x
He then turned to the main point of the talk, which is "How to think about writing parallel applications." His preferred answer is to not think about parallelism. But to achieve that, we have to abandon some of the habits of thinking about programming that have worked for the last 50 years. And a theme that was hit upon again and again in the rest of the talk was the following:
He finished the talk with an example of eliminating the accumulator thinking and instilling divide-and-conquer strategies in an algorithm for splitting a string into words.
Implicit in Guy's theme is the desire that a future programming language will automatically parallelize our programs.
The Friday morning keynote was by Billy Newport on the topic of NoSQL, a name I first heard at the St. Louis Lambda Lounge and assumed it's a topic I know nothing about until I read somewhere that Berkeley DB which I wrote about 1446 days ago qualifies as NoSQL.
For some reason, my mind associates the name Billy Newport with IBM WebSphere. However his presentation comes across as a very reasonable account of the pros and cons of both the traditional relational database solutions and the new-fangled NoSQL solutions. If he sounds a little bit down on NoSQL, it is not because he represent a relational database vendor (IBM also sells a number of NoSQL products), but because he has some good reasons.
I highly recommend reading the presentation slides or watching the presentation video (which Alix Miller promised will show up in InfoQ in the coming months) to get the full picture of this presentation. I'll just put up a few quotes that resonated with me (being from my notes, they may not be accurate word for word):
The Friday afternoon keynote was delivered by Douglas Crockford of Yahoo! I have watched numerous presentations by him on the internet, and I have read interviews with him in Coders at Work. Plus I also read his book JavaScript: The Good Parts. So I thought I pretty much know what I expect from this presentation.
But I was wrong in my assumptions. What Douglas delivered is an irreverent recounting of his fights against stupidity. Anyone in his way was ridiculed: RMS, IBM, XML, Software Patents, IE6, IE7, IE8, etc.
His recount of evolution of markup languages did bring back memories of LaTEX, which is in the heritage of Scribe, which he mentioned (slide 24). The following Scribe (also LaTEX) syntax:
@Begin(Quote)
Any damn fool
@End(Quote)
brought on my (solitary) applause which prompted Douglas to remark "A Scribe fan in the audience."
The audience laughed all the way through the presentation. For somebody who was described repeatedly (in private as well as mailing list conversations) as "not a nice person," not bad at all.
The NoSQL Panel
The first 30 minutes panel discussion was about NoSQL. St. Louis's own Ken Sipe was the moderator. Panelists include:
Steve Harris (Terracotta)
Roger Bodamer (10gen, MongoDB)
Chris Biow (MarkLogic)
Mike Malone (SimpleGeo)
Rusty Klophaus (Riak)
I thought the questions were sharp and deliberate (good job Ken) but the answers were a little bit muddy. Here's the question that I took note of. The answers in my note are incoherent and makes no sense (only my notes are that way, what the panelists said made perfect sense at the time, I just can't reconstruct them from my notes) so I'll omit them and point you to the video on InfoQ.
Why NoSQL?
What about the DBA role in a NoSQL environment?
Is the NoSQL name offensive to DBAs? Is it true it's always developers who are looking into NoSQL?
How do you categorize NoSQL products? Which one is better?
What is the value proposition of NoSQL?
Does NoSQL require more code?
What about security? Is there such a thing as NoSQL injection attacks?
The Languages Panel
The second 30 minutes panel discussion was about the future of programming languages. Ted Neward moderated (Donahue style). The panelists are:
Bruce Tate
Josh Bloch
Guy Steele
Alex Payne
Douglas Crockford
This panel's questions and answers are more comprehensible to me. Here's a sample of them:
Q: What do you see coming?
Tate: Erlang beam. Transactional Memory, futures, actors. Lazy semantics Bloch: Trand towards complexity. Concurrency. End-to-end web development language Steele: Crash early. Trand towards sloppy programming. Payne: VM convergence: Scala, Clojure, JRuby Crockford: We had FORTRAN/COBOL for a while. We had C++/Java for a while now. We are in a more acceptable phase towards new languages. It should have better concern for security
Q: With parallel programming becoming popular, do we see us throwing out JVM and CLR?
Bloch: Cliff Click of Azul have scaled the JVM to thousands of cores. The VM is not the weakling here. Tate: The JVM does shape our thinking.
Q: What's the future of type systems?
Payne: Scala can almost be programmed as if it's a dynamic language. Clojure is have to add type hints. Steele: We need to put the static information somewhere. Maybe IDEs can help us in showing the static information when we need to see them. Bloch: But annotations are a lot of trouble. Tate: There are examples of both static typing and dynamic typing getting in the way.
Q: Do you see static typing as beneficial in tools like FindBugs?
Bloch: Absolutely.
Crockford: Find bugs early is important. DBC is an important tool here.
Q: Hasn't Design By Contract been more trouble than its worth?
Crockford: (note unclear) Steele: If assert is free and does not clutter my code, I would use it everywhere. Bloch: Assert beautifies the code! Tate: I agree.
...
Q: Can you suggest a language to learn in order to gain benefit in using another programming language?
Tate: IO is a beautiful language. Prolog. Bloch: Scheme: it's simple, small and it informs programming in general. Steele: Any three. Clojure. Haskell. Payne: Forth, especially for the generation of programmers who grew up with Java. Crockford: Scheme. Rebel(?). Bloch: So many people are disconnected from the metal. I suggest people learn an assembly language: x86 or ARM.
Other sessions
As for break out sessions, I attended the following ones:
The flickr architecture
Virtual machines using GO
Lua (Kyle Cordes)
NoSQL @ Twitter
Solving the expression problem with Clojure
Java performance tuning (Kirk Pepperdine)
HTML 5 (Scott Davis)
Java puzzlers (Josh Block and Bob Lee)
jQuery - RIA Miracle! (Mark Volkmann)
I liked Kyle's stick to the points delivery of his 20 minutes of Lua advocacy. I liked Mark Volkmann's paced but content rich presentation of building a GUI application with jQuery and jQuery UI.
And of course the Java Puzzler are always entertaining and educational at the same time. Josh Bloch did make us promise not to leak the puzzlers on blogs because they will be reused later this year.
Personal delights
Meeting old friends and colleagues at conferences is always a delight. My highlight of the conference is to have lunch with Eric Burke and Dennis Stephens, and dinner with Bob Lee, Josh Bloch and Charles Sharp at Blueberry Hill.
PS. This blog has become longer than usual because I want to convey a lot of information to you. It also took longer to write because we are having perfect weather here at St. Louis on the Saturday and Sunday following the conference. The kind of weather that we would be fools to not taking advantage, so we visited Forest Park and enjoyed all the Sun Sunday afternoon.
It took so long that I've forgot what my subject line. I just noticed that I have not mentioned anywhere in this blog what the two questions are, let alone why I though they were not answered. So here they are.
I think the two themes of this conference are concurrency and NoSQL. Yet on the concurrency front, what we here from the researchers is that we are not ready to let the everyday programmer to use a tool to naturally take advantages of the coming thousands of cores to the desktop machines. And on the NoSQL front, I saw more repudiation than advocation for choosing a NoSQL solution in an "enterprise" environment.