Posts

Showing posts with the label RubyConf2008

Photos from Ruby Conf 2008

Image
The Omni Resort was beautiful -- this was our view during lunch: I liked the Hotel but everything was very expensive. Breakfast buffet? 20 bucks. Awesome (really good bacon) but still 20 bucks. Dinner? 40-50 bucks. Cab ride there from the airport? 80 bucks. There was a tanning bed convention being held right next door. They got a security guard in front of their door while we did not. The next 2 pics are of the lazy river. I did a couple of laps (assisted by the current) and it was very nice. A fountain and one of the many pools. During the Matz Q&A my friend and fellow Obtivan Andy Maleh got up and asked some questions.

Ruby Conf 2008 Last Day

A wonderful, awful idea: ruby in the browser (and oh by the way it actually works!) by Christopher Nelson Chris thinks that while Javascript is an excellent programming language, he likes choices so why not provide people with the option to run Ruby in the browser? Also, while programming rich web apps he found that oftentimes he ended up with business objects in Javascript and in duplicate objects in Ruby. Not very DRY. He wanted to be able to use his Ruby logic server-side and in the browser. Two ideas that didn't work out: JRuby - the java security manager stopped him from doing just about anything Silverlight wasn't available for his operating system when he started the project Rubyjs is what he ended up using. Rubyjs is a ruby compiler that uses ParseTree to produce javascript. http://github.com/superchris/rubyjs The translation is, of course, not without some changes: Strings become Immutable strings Procs become Functions Hashes becomes custom hash object Chris then...

Ruby Conf 2008 Second Afternoon/Evening

What Every Rubyist Should Know About Threads by Jim Weirich Concurrency is becoming bigger as computers get more cores. If you look at a graph of clock speed they flattened out in 2003. Past performance gains: clock speed (not so much anymore) execution optimize cache results So if clock speed is not going up at a rapid pace anymore, now what?: hyperthreading multicore (the new saviour) caching Applications will need to be concurrent to exploit multicore machines. 100 CPU machines are on the horizon. Race conditions are trouble: If thread one has this: shared_variable += 1 And thread two wants to do the same thing: shared_variable += 1 What if the first thread looks up the shared_variable and find that it's 25 but before it can change it the second thread reads the value (still 25 because it hasn't changed). Now the first thread will add one (shared_variable becomes 26) and write the result back to memory, then the second thread will add one to the...

Ruby Conf 2008 Second Morning

Aristotle and the art of software development by Jonathan Dahl How do you identify a good programmer? Jon says Ethics. Ethics is about how you live your entire life. He thinks the what makes a good software developer and what makes a good person have parallels in their answers. Kant -- Only act on principles that you would like to become universal law. Kant would have loved Haskel. There are principles in software, but sometimes they conflict such as DRY vs write understandable code. DRYing something up can make it hard to read. John Stuart Mill Utilitarianism -- what matters is the effect of the action. The ends justify the means. However, It's hard to know whether the effects will be good ahead of time. The Pragmatic Programmer is a good outcome of Utilitarianism. But Utilitarianism may lead to sloppy code and processes. Or the Cowboy coder. Aristotle - ethics as virtue. The person is the important part. For Aristotle: ethics == a life well lived == happiness == virt...

Ruby Conf 2008 First Evening

Better Hacking With Training Wheels by Joe Martinez "We all have a stake in each other" -- we use each other's code in many, many libraries. What automatically checks the quality of our code? Joe wants to encode rules in a standard way (called wheels) so that you could drop it into Training Wheels and it would enforce your rules on the code. People who write new libraries could include a wheels directory in their library which would offer suggestions. Interesting idea -- on my current project we've be having problems with people calling destroy_all on an ActiveRecord class for no good reason. We could define a rule that shoots out a warning every time you do that. http://github.com/capitalist/training-wheels NeverBlock, trivial non-blocking IO for Ruby by W. Idris Yasser "Neverblock enables concurrent DB and network access without thew need to change the program flow" Which is awesome. Idris said that the Evented model is good but you must adjust your co...

Ruby Conf 2008 First Afternoon

Image
I was thinking today that most people design their talk to last 50-55 minutes but I've noticed that conferences have shorter and shorter times slots. 40 minutes + 5 for questions is becoming the standard. So the end slides tend to go by pretty fast. Another thought: Print the ID badge for the conference on both sides. Exactly the same information on both sides. Fully 50% of the people at Ruby Conf have their badges turned around to the white side and when I can't remember their names (even though we were just introduced) I can't cheat because all I see is a stupid white rectangle. Somehow GLSEC managed to figure this out, why can't other conferences? JRuby: What, Why, How...Try It Now by Tom Enebo and Charlie Nutter Why JRuby? Well the JVM is awesome. 15 quadriliion man years of work or something. 15 quadriliion Sun man years can't be wrong, right? They have declared that Ruby 1.8 is "done" (again) and 1.9 mode can be triggered with a flag. Full ...

Ruby Conf 2008 First Morning

Woke up 15 seconds before my alarm went off again today. Perhaps I'm a little keyed up? Keynote - Matz "Reasons behind Ruby" Matz's presentation started out with the question: Why Ruby? He asked why even though Ruby has lots of problems, like all languages, why do we love it? Which is interesting. I've seen Matz talk a few time now and he always talks about the love of languages. The idea of loving what you do is never far from his mind. When Matz was young, his first computer was a pocket computer in 1980 -- only 1400 steps allowed. Only 150 memory places. And the Language was BASIC. Later he found Lisp and it was the opposite of everything in Basic -- total freedom to do just about anything. And he loved it. That was, however, before he started using Lisp. When he started using Lisp in practice, he wasn't having a good time. Basically Matz felt that Basic took all the power from him, but Lisp gave too much back. He wanted to have a framework to ...