Category Archives: eRubyCon

eRubyCon 2008 Day 3

I wrote a write up for eRubyCon 2008 Day 1 and eRubyCon 2008 Day 2.

Jerry Nummi's buddy icontheedgecase's buddy iconBTW – thank you to Jerry Nummi for all of the great pictures of eRubyCon. I haven’t had time to browse and put them in this post but I’ll do that tonight or tomorrow.

*Update – I added pictures…*

I’m sitting in the back of day 3 reflecting on the previous two days. It’s amazing the group of people that Joe has put together here to speak on Ruby in the enterprise.

Joe O'BrienJoe O’Brien started up the day with his DSL talk. I’ve heard the talk before but it’s still a fantastic talk. His sub-title on the talk “Why I love Ruby”. I like to add “(and Emacs chest thumping)” but that’s me… 🙂

I’m not going to explain DSLs here because I wrote about them after hearing this talk the first time at

Honestly, part of what is so great about the talk is that Joe is just infectious in his passion and delivery. He, like a lot of great speakers, is a story teller. He told stories that ranged from past work in tech to past work prepping food displays for a cruise liner.

One of the stories that he told was about a large company that he did some consulting work for. They realized that the core issues at the company really came down to two people being able to communicate – a DBA and an Accountant. The issue was that they weren’t speaking the same language. One was speaking in rows, columns, triggers, sprocs and so on. The other was speaking in points, rates, forecasts and so on. The solution was to write an ORM that the accountant could understand that the DBA could work with. This came in the form of a DSL.

The food story was that the great sculptures on the table displays are actually food – not really edible but food non-the-less. It’s made from refined beef fat. There are many different forms, some softer and more moldable and some closer to marble than clay, and depending on what was needed, the master sculpture would pick a different form. Similarly, Joe picks a language that he can shape and mold to his needs. That’s what Ruby is for him.

Back to Emacs, one of the reasons that Joe loves Emacs is that you can shape the commands and key-bindings and the whole environment to shape your way of working rather than the other way around. I’m still not convinced. My biggest problem with Emacs is that the learning curve before you can be even mildly productive is giant. I understand that once you climb that mountain that the view is nice. I’m just not convinced that the incremental jump over my current tools will be enough to be worth it.

Interested in the talk? You can watch it from when Joe did it at the Mountain West Ruby conference.

Chris WanstrathChris Wanstrath followed Joe with a talk about GitHub. They have taken the Git source control and given it a centralized source server. The reality, as he explained it, with Git is that every person has a full blown copy of the repository. The interesting part is that people can go client to server or they can go peer to peer or any combination that you can possibly imagine. When they want to make a change, they actually fork the project.
Especially with the Git peer to peer checkins, it’s actually not a checkin. Nobody actually has write access to anyone else’s Git repository. When they are ready, they let the other devs know that they should pull and merge. They way that it works all the way up the list is that there are devs that make changes who let the project managers know that they should pull. That project manager is the “blessed version”.
The simplest explanation of GitHub is that it gives the individual programmer an offsite repository so that they don’t have to be online when the other members want to make a pull.  

Jim WeirichJim Weirich did the lunch time keynote called “What the Enterprise Can Learn From Your Mom”. In the spirit of the previous talk, he told us that all of his slides were up on GitHub already. He started out talking about Moores law. The first thing that he points out is that the number of transistors on the chip doesn’t mean that the chips will be faster – it might, and does in current times, mean that we get more cores. There’s a possibility of 100 core processors in the near future. Similar to our moms, we will have to learn how to do more and more things at one time. The fun part is that most people don’t know how to write multi-threaded applications… Jim went on to do a fantastic explanation of race conditions and threading at large. Somewhere in here I missed part of the talk trying to track down why the air-conditioning was not on. As I walked back in Jim was telling war stories about collecting real time data off of a jet engine in a multi-threading system. They designed a system that would only fail one in a million times – except that it was collecting data about a million times a day – oops. They had designed the system to fail once a day. Back to the drawing board…
Then Jim shifted gears. He started talking about “Blub Programmers” and languages other than Ruby. Jim is definitely the guy to do this. Jim is always playing with some bizarre language that would twist a normal brain like a pretzel.
First language that he talked about was Erlang. It’s a bizarre language. For example, you loop by writing tail recursion functions and most of the communication is done by sending process messages. The next language that he talked about was Closure Clojure (thanks Stuart Halloway for the correction). The interesting part about it, especially in light of the rest of his talk, is that it’s got different types of variables that are aware of multi-threading inherently.

Michael LetterleMichael Letterle followed Jim’s session with a session on IronRuby. To be far, I was supposed to follow Jim. However, I convinced to sw
itch me and Michael because I thought his talk was more core IronRuby than mine and would free me up to concentrate on Silverlight more than spending my time talking strictly about IronRuby. I was right and I liked the order. But I do deserve the comment that Michael started with where he called me an “ass” for making him get up right after Jim Weirick who is a phenomenal speaker.

Michael is one of the community contributor to the IronRuby project and has done a lot of work. He started with a lot of discussion about how the culture at Microsoft is shifting to be more and more open. With projects like CodePlex and Port25, there’s a lot of great new things.
Michael ran a lot of the test that were run at the Ruby Shootout in 2007 to see the differences and where things are now. While the functionality was largely complete, the perf was not great. It was a little worse than twice as slow as Jruby and MRI. As it’s still in beta and heavily under development, I’m not dismayed by that at the moment. If that’s still the case in a year, I will be.
Michael’s take on the talk was that since IronRuby is Iron, we should look at it with battleship grey windows applications. 🙂 He was adamant that there be an IronRuby talk that wasn’t about web technologies. He wrote a small windows app that hits a database and does normal IO type work similar to any and every enterprise application out there in the world. The next thing he did is fire up ir.cmd which is the IronRuby’s interpreted runtime. Then he attached to the running windows application and modified the application’s GUI and business logic to include tax information. Some of the cool things that he did was opening up base class library items and started adding Ruby things to them. For example, he added method_missing to the base Windows.Forms.Form class.

It’s awesome that there are guys like Michael out there in the world that are passionate Microsoft, Open Source, Ruby, .NET, Enterprise and Community. He’s a great ambassador from one world to the next carrying those passions with him everywhere he goes.

Josh Holmes– I followed Michael talking about Ruby in the Browser through Silverlight. I started out by talking about what evangelists do. After that I talked about User Experience and what that means to software. Then I started talking about some companies where the user experience, and their use of Silverlight, are making a great difference. I showed off the Olympics and the Hard Rock Cafe live and online. Then I pulled up some of the great work that Jimmy Schementi has been doing with a project that he calls Silverline. It’s pretty fantastic – it’s a number of different IronRuby samples running in Silverlight. The one that I missed showing and discussing was the idea of moving the controller in a Rails app out to the browser with IronRuby. Oh well. Next year.

I think that my talk was well received but welcome any comments. 

– Lance Carlson followed my session and closed out eRubyCon with a talk about an open source project that he’s writing called Anvil. It’s a framework for creating desktop applications that’s platform agnostic. The goal is to wrap all of the possible desktop frameworks from Shoes to RubyCocoa in one common framework. It’s a very interesting idea.

– Closing thoughts. Joe O’Brien did a fantastic job putting together this whole conference. The quality of the program, the speakers, the logistics, the whole package is fantastic every year. This is one of the highlights of the year for me every year. The other absolutely non-negotiable item on my calendar is CodeMash. The ton and the maturity of the conference coupled with the passion that not only the speakers show but the attendees as well is unparalleled

It’s an honor to me that Joe has invited me to come and associate with this group of elite and influential speakers/friends/attendees/geeks/passionate people that makes up the Ruby community. I’ve really enjoyed getting to know everyone at the conference.

I was thrilled that Joe wanted to host the event at the Microsoft offices in Columbus. We’re not going to be able to do that next year because we’ll overflow the venue but this year is was the perfect size. We can fit about 120 in the bigger meeting room without having to sit on laps and we had right at 106 in there. It was full but not crazy.

Last year, Joe closed with question as to whether or not they were going to do it again. This year, Joe ended with a definitive – “We’ll be announcing dates soon for next year, keep an eye on or the mailing list”. Me… I’m very happy about that.

eRubyCon 2008 Day 2

Yesterday I wrote a write up of eRubyCon 2008 Day 1.

Erubycon – Charles Nutter started up with JRuby. I’m always impressed by people that are able to make their weekend project their full time job. I was further impressed that Charles was up with the rest of the speakers until closer to 4am than any of us should really admit, drinking really good scotch and solving the world’s problems.

Charles talked about the JVM and Java as both a problem and a great asset. There are a lot of people that look at the J in JRuby and automatically associate it with all of the things that they don’t like about Java. Charles answer is to separate the JVM from the Java language. He did a really good job of talking about the things that the JVM brings over the standard Ruby runtimes such as world class garbage collection, memory compaction, thread handling and the like. He did a number of really compelling demos around threading in particular. One of the things that he said here is that JRuby and IronRuby are really the only Ruby implementations that are able to do native threads because they are the only ones that are built on production quality VMs that handle that native threading for them.

0816080915One of the great quotes was “We write a lot of Java. So you don’t have to…” – Charles Nutter

After setting the stage, he pulled up a long list of features and said – “There’s way too much for me to cover in the time left – what do you want to see?”. that was fun. The first suggestion that he showed was 2D graphics that flashed a bunch of little balls around the screen. It was even responsive to voice commands. The second suggestion was to show Rails running on JRuby. He showed that they are running Rails on Ruby 1.8.6 (java). Next he brought up image_voodoo to do more 2D libraries. Lastly, he showed “java_inline” which allows you to inline Java code similar to the Ruby_inline which allows you to inline C right in your Ruby code.

  – Evan Light came up next. Unfortunately I was putting out a few small fires. Fortunately Michael Lettere wrote up a small write up so that I could include it here.

Evan Light hates EJBs.
EJB encourages difficult to test idioms, private fields, private static final fields.
Nice demo code “public class DeepThought” <— How do you test that?
You COULD shoot the guy who wrote it, but don’t do that.
Very good use of humor, engaged the audience.

Stuart Halloway, Neal Ford – The lunch keynote was Neal Ford. Neil Ford is an amazing speaker. What’s cool about him is that every time I see him speaker, I wonder how he could get any better. And then he does. Today’s talk was about complexity. One of the core concepts that he talked about is the idea of Language Lockdown. It’s when language writers put in features to protect people from themselves and cut down on the stupid things that you can do. The idea is that if you do that the lower end (read cheaper) developers will still be productive. “What they are trying to do is strap a rocket to the ass of a turtle. What they are actually doing is putting chains on the rabbits than can go fast.”
The problem with that take though is two fold. First, it is not a linear line between the top developers and the lower end developers. What that means is that on the curve, a highly productive programmer will get done in one day what it will take an average developer more than a week to do and the weak developer a month or more. To point out the second issue, Neal quoted one of my other favorite speaker – “Bad developers will move heaven and earth to do the wrong thing” – Glenn Vanderburgh
One of the huge questions that he put out there is “How much of your enterprise software simple services accidental complexity?”. It’s a great question.
As he was wrapping up, he left us with the thought that “Courage is contagious. Cowardice is infectious”.

Stuart Halloway– Following Neal was Stuart Halloway again. He was talking this time about how one can fail with 100% test coverage. It’s an interesting topic because for so many people, 100% test coverage is the holy grail that they shoot for. The first thing that he pointed out is that you might cover all the lines, but not all the branches so it depends on how you measure things to get to 100% coverage. The second thing that he points out is that you can cover all the code, but not all the corner cases. The example that he used is testing if a value is above or below $25.00 but forgetting $25.00 even. Oops. Then you can start writing way too much code and too much complexity into your tests. Now you need to test your tests and you’ve taken too much time writing them. Then he talked about the “ugly mirror” where the test is really a mirror of the code where you’re covering the line but using the code that you are trying to test while testing – oh dear I have a headache. This is where he says that you are allowed to write literals in your tests.
Neal Ford piped in – “It’s ok for your test to be moist, not drenched”.
The next topic was slow tests and how dangerous they are. The short version of the issue is that if the unit tests don’t run in under 1 second, developers are not going to run them. Functional tests should run in under 2 minutes. If they don’t, then factor them so that they run on different schedules, parallelize them on different machines to get the normal check-in process back under the 2 minute mark if possible.
The last type of fail that he talked about is shallow tests. The quote that he referenced is “No automated test suite can ever replace exploratory testing.” – Jay Fields. The goal is that once the unit and functional testing passes, that people will put themselves in the clients seat and go spelunking and try out a bunch of stuff.

Joe O'Brien, Chris Nelson, Jim Weirich – The next talk was a very unique idea called “Dialogue Concerning the Two Chief Modeling Systems”. They wrote a play! The guys from EdgeCase, Joe O’Brien, Jim Weirich and Chris Nelson, acted out a normal project for them. They started out on twitter talking about the new project that they just landed. Then they actually started with the early on meetings that they have. Joe played the cowboy dev lead who insists that it’s a “simple rails app” and decides to do a data first model. Chris played clueless nub and Jim played the seasoned architect that was concerned about requirements analysis, separation of layers and behavior driven models. Joe, ready to start slamming code out, starts pairing with Chris. The first thing that they tackle is a simple calendar event. Then they have to schedule r
eoccuring events. Joe, the cowboy, just decides to replicate the events in order to do the reoccurence. The next requirement is rescheduling the reoccuring meetings…. Oops. They have neatly coded themselves into a corner and start hacking out a solution. At that point, Chris decided to take a walk and went to see what Jim thought of it all. Jim started writing out CRC cards and started thinking about higher level ideas, bringing in light-weight design patterns around temporal expressions from Martin Fowler and so on. Jim, the architect, is blithely ignoring “implementation details” such as where to store the data and performance. When performance sucked – they went back to the drawing board. Jim and Joe had to eventually come together. Of course the answer was to write a DSL… 🙂
Great talk. The good news is that Neal Ford is following them so there won’t be a let down as we end the day…

– The last talk of the day was Neal Ford talking about Design Patterns in Ruby. One of the things that he pointed out fairly early on is that the Design Patterns book, even according to one of the authors ( Vlissides), should have been called “Making C++ Suck Less”. Even the Smalltalk that’s in the book was really C++ written in Smalltalk syntax. He covered a number of different patterns including the Iterator and the Interpretor pattern. There were a number of circumstances where he pointed out that the issues addressed by the pattern were addressed by the Ruby language. For example, the interpretor pattern’s intent is really addressed by DLSs which are dead easy to implement in Ruby. The only problem with this session is that it’s at the end of the day and my brain is a little mush at this point.

CodeMash Conference – January 10-11, 2008

codemash logoCodeMash was, once again, a huge success. For those of you who don’t know, it’s a cross technology, cross platform, cross discipline that is help in January in Sandusky, OH at an indoor water park. The meme is that we are there to Mash not Bash. Everyone is expected and encouraged to go learn about new technologies and bring new and fresh ideas back to their own shops and technologies.

We had 375 people show including attendees, speakers, sponsors and so on. That’s a big growth over last year. It’s big enough that we are trying to figure out what to do next year with marketing because we’re not sure if we’d loose the vibe and the close contact that the 375 person conference affords.

CodeMash 020It was a much more mature vibe this year than last year. In it’s inaugural year (2007), it was interesting hanging out at lunch, dinner and the bar at night meeting new people and making new friends. However, on the first night there was a lot of trepidation and anxiousness as people were really unsure as to how or if they should really talk to everyone else. By the end of the conference there were interesting conversations happening between the PHP, Python, Ruby, .NET and Java guys. Brian Prince and I even shaved our heads as an incentive to get people to blog about the conference.

This year, on the first night there was an established context for the conversations on the first night. By the end of the conference, people from all technologies and disciplines were exchanging email addresses, Twitter accounts, Facebook IDs and more. It’s truly amazing how this little conference has started a cultural brush fire. The only blocking issue is the UM/Ohio State rivalry… 🙂

Even new comers to the conference such as Scott Hanselman noticed the vibe of the conference

‘It’s a cross-platform, cross-cultural, cross-language conference with a very positive vibe. The “vibe” or general feel of a conference matters more than you might think. I started out asking folks “are you a Ruby person or a .NET person?” but soon I got with the program and started asking folks “what are you working on?“‘

Steven Harmon described the conference well when he called it the “biggest-little-conference around’. The type of person that CodeMash attracts is that top developer who is fascinated by technology and is desperate to expand their horizons and learn more. It’s not surprising that great consulting companies like Quick Solutions and SRT Solutions are at the very center of the conference doing much of the heavy lifting organizing and running the conference.

Another big thanks goes out to Chris Woodruff who did a ton of podcasting from the event. He even interviewed me here. I haven’t had a chance to listen to the podcast yet but I remember rambling on forever. I know – you’re shocked that I had a hard time shutting up…

imageIn true CodeMash fashion, I did a talk on the DLR based on the great work by Jim Hugunin and John Lam. I covered a little bit of IronPython and even did demos with IronRuby. I ran out of time before I did all the demos that I wanted to do, like doing WPF with IronRuby, ASP.NET with IronPython and so on. It was great, however, to have Joe O’Brien in the room to help me with the semantics of Ruby and dynamic languages. Joe O’Brien is a guy that I met last year at CodeMash and we’ve since become really good friends and are working on getting together on eRubyCon (The Enterprise Ruby Conference). Hopefully I’ll see you there this year. It was a fun conference last year with a very CodeMashish type vibe. I’m really hoping that we get to do another fishbowl style talk at some point there.

 100_6129Oh and did I mention that they doubled the size of the water park? 🙂 My one regret this year was that I didn’t book over to Sunday with my family. the past two years my family has joined me on Friday evening and we’ve stayed until they kick us out on Saturday. Next year, I’m booking over to Sunday! I didn’t spend nearly enough time at the water park. Some of the guys (Yes, I’m talking about you James) went to the water park every day for multiple hours.

Plans for next year, I’m going to continue my work with the DLR and hope to have a much more advanced talk that includes Silverlight 2.0 and maybe even a demo on Moonlight. I’m also planning to spend more time at the water park on Day 0 and on the weekend. I have a hard time spending the conference time at the park because there are so many cool sessions and people to talk to.

I’m going to do more podcasting. I really missed an opportunity here and only caught one interview with Joe Brinkman  about DotNetNuke and working on an Open Source Project full time (check out soon).

I’m going to spend more time at the water park… 🙂

And hopefully, I’ll see you there!

CodeMash Conference – January 10-11, 2008

erubycon – Columbus, Ohio 7/16-7/18

I’m speaking at eRubyCon next week (7/16-7/18) joining the other speakers such as Neil Ford, Justin Gehtland, Jim Weirich and Joe O’Brien among many others. It’s going to be an exciting conference. I’m speaking on Silverlight (keep scrolling down – it’s about halfway down). Here’s the Abstract:


Introduction to Silverlight

Silverlight is the latest in the continuum of technologies from Microsoft to help you create differentiated user experience in the supplemented web space. Based on XAML (eXtensible Application Markup Language) for its UI and backed by a number of different options for logic including C#, JavaScript, Visual Basic, IronPython or IronRuby (once it’s released) – it’s a exciting new tool in the back of tricks for any web developer. It brings with it a rich networking stack, fantastic media support, scalable vector graphics and much more on both Windows and the Mac in all of the major browsers including IE, FireFox, Safari and Opera. In this session, we will explore the boundaries of Silverlight, see the integration points and hosting options between Ruby and Silverlight and talk some about what’s coming with IronRuby.


I gotta say, it’s been a ton of fun putting together this session (not implying that I’m done). I’m playing with so many new technologies and ideas that I’m sure that I’m doing things exactly wrong but it’s fun and I’ve got a cool demo working. I wish that I had IronRuby bits, but the IronRuby bits are to be released at Oscon the following week according to John Lam

erubycon – Columbus, Ohio