November 10, 2008
Can't Miss RubyConf Wrapup
I lost the steam to write about each day individually as the last two days always seem to fly by much faster than the first. That said, here are the notes I could gather from my moleskin and varioius sheets of paper I scratched on.
Jon Dahl had an interesting talk on Aristotle and Software.
Ben Scofield talked about All I Really Need to Know* I Learned by Writing My Own Web Framework. I can’t say that we need another web framework for ruby right now but I enjoyed this talk. Ben’s whole point was how much he learned by writing a web framework from scratch. I couldn’t agree more. I haven’t written my own web framework but writing pure ruby is really the best way to learn ruby. You can’t really learn ruby by just writing rails apps.
Dean Wampler talked about Better Ruby Through Functional Programming. Functional programming seems really interesting. Basically, variables are immutable. Because they don’t change state, it is easier to write “side effect free” concurrent code. Recursion is big in functional programming. Basically recursion in functional programming is equivalent to loops in sequential programming (ruby is sequential). I haven’t really looked at any functional languages and I thoroughly enjoy thinking about things in a different way so this talk was good.
Jim Weirich had an awesome presentation on “What Every Rubyist Should Know About Threads.” Threads were a hot topic as I mentioned in my day one summary. Jim explained that Moore’s Law is no longer true, so concurrency is going to be important. Instead of getting faster CPUs, computers are getting multiple CPUs. In order to fully take advantage of multiple CPUs, you have to be able to have native threads. Ruby 1.9 gets closer to native threads but isn’t there. In order to safely program concurrently in Ruby, Jim gave four tips:
- Protect every shared memory access with synchronize block (check out mutex core library)
- Be aware of extended situations that need to be atomic.
- Need strategy to avoid deadlock.
- Evaluate every line in every library used by your program, not just your own code.
Basically, threading is hard. He gave a really quick mention of Clojure, a dynamic programming language that targets the Java Virtual Machine.
Yehuda Katz gave a worthwhile presentation on “Writing Code That Doesn’t Suck: Interface Oriented Design.” The talk started pretty slow and I nearly tuned out as he just covered concepts, but gave no code examples. Once he finally got to the code, I enjoyed the thoughts and examples.
The premise is that most of us test implementation more than we test results, which is what we really care about. Test what you do not want to break. Unit testing is great for isolation but it is not regression testing. I’ve been thinking about something similar to this a lot lately since I started using RSpec on all projects, so it was interesting to hear this perspective. I’ll definitely be testing more based on results rather than on implementation in the future.
Rich Kilmer presented on OS X Application Development with HotCocoa and man was it hot. HotCocoa is an awesome wrapper around MacRuby that makes building cocoa apps sane. I cannot wait to try this out. It comes bundled with MacRuby so simple install and enjoy. There is not much online about HotCocoa as it is only about 3 months old but when the video comes out give this talk a watch. You’ll be amazed. It appears to make cocoa development as easy as HTTParty makes web services.
Thursday night after Dave’s keynote, Pivotal Labs threw a poolside party in honor of Tracker, which was a good time. I had a great discussion about Merb and about CouchDB with Matt Aimonetti and was nearly pushed into the pool, during a discussion of whether or not I should open source a sweet web analytics app I’m working on with my friend Chas.
Friday I only attended one presentation, but it was possibly my favorite day. Over lunch and through most of the afternoon, I had a great chat with Ryan Daigle, Nathaniel Talbott and Geoff Grosenbach. I think often times at technical conferences we get caught up in code and miss out on a wealth of business knowledge. We talked about “to partner” or “not to partner”, predictable markets, passive income, productivity, efficiency, ideas and a whole lot more.
RubyConf was a blast this year. I finally felt comfortable pretty much the whole time and felt like I opened up a lot. Thanks to all who said hi and to those I did not get to meet…cheers to next year.