RubyConf 2012 notes
My notes, in a somewhat sketch-esque fashion, from RubyConf 2012. I hope they’re useful and/or amusing to you!
[gallery link=“file”]
My notes, in a somewhat sketch-esque fashion, from RubyConf 2012. I hope they’re useful and/or amusing to you!
[gallery link=“file”]
The give a penny, take a penny jar is a logical conundrum. It is not, on its surface, a rational thing. I have no data, but I suspect very few people who put money into them are doing so because they plan on taking money out later. A bank is different from a give/take a penny jar.
Personally, I put money in because I can and because I fancy myself not a jerk. The latter is what makes more rational sense. I put money in because it’s utility to me is marginal, but the utility of feeling better about myself is non-marginal.
In My Blue Heaven, Steve Martin plays a semi-reformed mobster in the witness protection program. He starts compiling a book of his truisms for living life. One is “it’s not so much tipping I believe in as over-tipping.” His character does this partially because he’s a little flashy, and partially, I think, because he has to be a likable protagonist.
I’d like to be a likable protagonist too, but I like over-tipping whenever possible for another reason. Pretty much anyone who works for tips is working really hard for every dollar they make. An extra dollar here or there is trivial to someone with a desk-job like myself, but less trivial to tip-earners who are technically paid less than minimum wage. An extra five or ten percent on a single tip won’t change their life, but it probably doesn’t hurt either.
I like making people’s day better with laughs and smiles, but I’m not above buying a tiny fraction of a better day for someone else. Marginal pennies and dollars add up.
This year was my fourth RubyConf. I’ve always come away from RubyConf energized and inspired. But, I’ve yet to follow through on that in a way I found satisfying. I have a feeling I’m not alone in that camp.
This was the first year I’ve given a presentation at RubyConf. At first, I had intended to use this watershed-for-me opportunity to ask whether Ruby was still fun. There’s been a number of “drama moments” since my first RubyConf; I thought it might be worth getting back to my early days of coding with Ruby, when I was exploring and having a great time turning my brain inside out.
As I started researching, it turned out that there are a lot of people having fun with Ruby. Some are doing things like writing games, making music or just tinkering with languages. Others are doing things that only some of us consider fun. Things like hacking on serious virtual machines, garbage collection, and asynchronous IO frameworks.
So, back to my talk. I saw my failure to harness the motivation what I’d seen at previous years at RubyConf as an opportunity to figure out ways to line up some tactics to make sure that after the conference, I was able to create awesome things, contribute them back to the community, and enjoy every minute of it.
Thus, I came up with a sort of “hierarchy of open source developer needs”. At the bottom is enjoyment; there’s little sense doing open source work if you’re not having fun. Once you’re having fun, you probably want to figure out how to find more time for making codes. Once you’re making more codes, you want to figure out how to get people interested in using your stuff. I’ve taken these three needs and identified several tactics that help me when I find myself in a rut or unable to produce. Call them patterns, practices, whatever; for me, they’re just tricks I resort to when the code isn’t flowing like I want to.
The talk I ended up with is equal parts highlighting people in the Ruby community that are having fun and highlight ways to enjoy making things and contributing it back to whatever community you happen to be part of. I hope that I avoided sounding too much like a productivity guru and kept it interesting for the super-technical RubyConf crowd.
If all of this sounds interesting you, grab the slides (which are slightly truncated, no thanks to Keynote) or watch the recording from the conference itself.
I wrote the proposal for this talk right after Why disappeared himself. His way of approaching code is what inspired me to write a talk about getting back to coding for fun. “Just for Fun” starts with a tribute to Why the Lucky Stiff. The sense of fun and playfulness that Why had is important to the Ruby community. I’ve tried to highlight some of his most interesting playful pieces. And in the end, I can’t say “thanks” enough. Why has inspired me a lot and I’m glad I got to meet him, experience him and learn through his works.
Even if you don’t take a look at my presentation, I strongly urge you to give a look at some of Why’s works and let them inspire you. My favorites are Potion and Camping.
Some other things I mentioned in my talk as interesting or fun:
Like I said, I think the market for simple applications is probably saturated and now is the time for Ruby and Rails to go up-market and tackle bigger problems. We’re well equipped to do that, having learned from what sorts of simplicity help reduce tricky problems to tractable problems.
In my RailsConf Europe 2008 presentation, I play the role of the messenger. I’m not bringing any new science that makes building more involved applications easier. Instead, I’m trying to tie it together into an understandable package. You take the gems described herein (money, acts_as_state_machine and acts_as_versioned) and a couple concepts (domain driven design and queueing) and you can build some really cool applications that solve pretty tricky problems. To me, that’s big fun.
You can check the presentation out on Slideshare or grab the PDF. Also, make sure to check out the code on GitHub. Enjoy!
RailsConf Europe is next week. I’m so there!
I’m giving a talk on complexity and how I heart it. Ruby, and Rails in particular, started out with a very strong statement against complexity. Mostly this was about the complexity that imposed by ceremonious frameworks and technologies.
My stance is that all the really simple applications are done. But perhaps there are some ideas, some complexity, we can add to our problem-solving repertoire that let us tackle much larger applications. Some levers we can use to apply a little force and get a lot of result. Please to be joining me!
I took a couple years of German in high school, which is hopefully going to pay off as Courtney and I travel about Germany. If you’re at the conference, please come say hi, but forgive my Texan drawl. Ich spreche ein bisschen Deutsch! How little? Here is the translation of my first attempt, from my memory of German: “I am a small German language!”
(Oh, and rumor has it that there may be one more MVC video. Maybe.)
The second part of my interview with David Flanagan is online. This time around we talk about the craft of programming in general. Its good stuff.
Last week I interviewed the author of The Ruby Programming Langauge, David Flanagan. We posted the first part of it today - Five Questions with David Flanagan, Part 1. The second part will go up next week. Enjoy!
When I go to speak about Ruby at non-Ruby groups, my go-to schtick is only mildly subversive. Sure, I tell them that Ruby is a fantastic language that will make them a better programmer. But, I don’t expect them to switch to Ruby right away. Instead, I lead them down the path of borrowing ideas from Ruby and using them in their day-to-day coding, no matter what language they use.
This week at OSCON 2008, I applied the same tact, but I did it on Ruby programmers. See, there are tons of great ideas in languages like Haskell, Io and Erlang. Some translate really well to Ruby and some don’t. But they’ll all twist your brain around in interesting ways.
That’s the idea. Here are the goods: just the slides, the code and the slides. Enjoy!
Please to enjoy my presentation for RailsConf 2008: Oh, The Fail I’ve Known (PDF).
Its on the things that aren’t normally covered in books and websites programmers read. The things that you really need to know if you’re going to achieve truly awesome developer status.
Obviously I think they’re really important topics. Digging into them has really helped me as a software developer. I hope its helpful to you too.
Thanks to everyone who caught me afterwards or emailed to say they enjoyed the talk. And of course, if you enjoyed those videos, kudos to you as well!
As hordes of Ruby and Rails folks begin the annual migration to Portland for RailsConf, I thought I’d let you know how to find me there this year:
That rounds out the conference activities. But I’d be remiss if I didn’t inform you that FiveRuns would like to buy you a drink or two Friday night at Jimmy Maks from 6 to 8 PM. Please to be joining me there!
What I am perhaps most excited about is the RailsEnvy videos that will premiere this weekend. You see, Jason and Gregg were kind enough to invite me to join them in making the funnies this year. Making them was a blast! I’ve seen the finished product and, in my completely biased opinion, I think you’re going to like it.
Of course, I’d love to chat with you (yes, you) at any point in the conference. So if you see me (and I will probably stand out), come say “Hi!” I’m hoping to have something interesting for those that do…
Yesterday I spoke to a pleasant mix of Java, .NET, Ruby, Python and PHP developers at Dallas TechFest. My goal when speaking to enthusiast crowds of this sort is to show the light that I’ve found in my programming journeys over the past couple years. This time around I tried to take a page from the inimitable Richard Feynman by structuring my talk into two sets of “Six Easy Pieces”.
The first part starts off with the stance that programming shouldn’t suck. From there I talk about the intercontinental railroad, Sapir-Whorf, Pattern Languages, the Gang of Four and flattery. In the end, we have an idea of how to better approach programming so we can have fun doing it.
The second half is partially showing off Ruby and partially a gauntlet thrown down to other languages. The main point is to show a progression of ideas I see in lots of Ruby code, from sensible naming to closures ending up with metaprogramming powering declarative programming and internal DSLs. You can implement the ideas from the beginning in any language. However, the ideas towards the end require a more progressively designed language. I’d love to see non-Ruby implementations of the programs towards the end of the presentation, if only for comparison and Rosetta Stone purposes.
Thanks to everyone who was in attendance and especially those who stopped to chat with me before and after the presentation. Without further ado, please enjoy Six Easy Pieces (Twice Over).
For the past couple of months I’ve been -procrastinating- helping to organize the Ruby track for the Dallas TechFest Dallas TechFest. Its is a language and technology agnostic conference on May 3rd. There are tracks covering Ruby, Java, .NET, Emerging Technologies and Flex. Its a great opportunity to see sessions on your own language of choice while learning what the other guys are up to, all under one roof.
Confirmed speakers for the Ruby track are:
…and myself. Other presentations of interest to Rubyists:
I hope you’ll come out on May 3rd, 2008 learn something new, either in the area you work with today, or in a new technology that interests you.
Cost: $0 (!) Where: Addison Conference and Theatre Center When: May 3rd, 2008, 8 AM to 7 PM
Not only do you get a Mega-MIX, I’ll try it in haiku form. Because, I’m feeling sassy.
h2. On IIS
Metabase to angle brackets; FastCGI now, Mongrel later on
Decoded: they dropped the metabase for XML configuration, they can PHP and Rails apps through FastCGI now and they’re working on something like @mod_proxy_balancer@
h2. On IE 8
Security blah Many fancy features; ask Chris for IE validator
Decoded: even more security improvements, lots of fancy new features (see Ajaxian for more coverage), and over beers, Chris Wilson thought it was not entirely implausible to build some manner of Firebug extension that warns you about possible IE incompatibilities in the current page.
h2. On IronRuby
Rails someday; outside people build test suite; polyglot code reality
Decoded: they want to run Rails on IIS at some point, some non-MS contributors built them a test suite so they know what Ruby interpreter APIs they need to build but didn’t have to poke around in MRI to figure it out, programming in multiple languages using the DLR on top of the CLR is possible.
Ding Ding Ding! We have a winner. Anders Hejlsberg is quite possibly the most clued-in designer of a mainstream programming language. The work that Anders Hejlsberg is doing with C# is amazingly progressive and forward thinking. He’s putting ideas like lambdas, type inference and anonymous classes in a mainstream languages used by armies of programmers. This, to a programming language nerd like myself, is a big deal.
So what’s the motivation behind all this? Well, he started off by saying that data does not equal objects. We’ve got data in XML, databases and all manners of weird files. Thus begat LINQ (Language Integrated Query) which makes querying data a first class citizen in C#. In doing so, you start to insinuate a declarative language inside an imperative one.
During his quick tour of LINQ, Anders made a point to emphasize his idea that “we over-specify the solution” in our programs, leaving little room for the execution infrastructure to do intelligent things. He shows some imperative code for ordering, grouping and filtering data, basically a rats nest of loops and conditionals. Using LINQ he refactors the code down to a simple, albeit SQL-ish query.
Once you’ve declared just the essence of your program to the implementation, it can do clever things to make it go faster. For instance, there’s a parallel version of LINQ in the works. Your average developers gets this “for free” by expressing his queries in LINQ. Thankfully, LINQ is just sugar for a straight-up .NET API, so the younger generation of developers who have never used SQL, let alone @malloc@ can still play. ;)
When he was wrapping up, Anders made a comment that, in the future, they are looking into making languages more like services. I think this is a strategy that they share with Sun – it’s not so much about Java or C# as the interesting runtime bits they ship with. I’m not sure where this idea will go, but I like the sound of it.
Some other great Anders pseudo-quotes:
This was my favorite presentation of the week. I’m looking forward to talking to friends who use C# about the clever programming tricks I use every day in Ruby. And it should prove fun to gang up on Java folks too! ;)
In a former life, I worked in a Microsoft shop. So I’m not completely foreign to the Microsoft development tool landscape. At the time, C# and .NET were just slightly better than Java, from my perspective as a language nerd. Lucky for me, I haven’t done extensive work in J2EE frameworks or ASP.NET so I have no frame of reference for how they compared at the time.
Given my obvious interest in languages, frameworks and how that affects what programmers build, I enjoyed hearing about the new ASP.NET MVC framework from Scott Guthrie. The most promising thing about this tool, to me, is that MS is guiding people down the unit testing path by default. I don’t know if any other Visual Studio tools are doing this, but it’s a pretty big deal to me. I think that right now only the most enthusiastic programmers do some any form of TDD or BDD. Putting it in the hands of “vocational” programmers has the promise to significantly raise the state of the art in programming. As a side note, it was interesting to observe that 40-50% of the audience raised their hand about doing TDD and 33-50% raised their hand for using an MVC framework.
The framework itself is nothing surprising if you’ve looked at Rails, Django, CodeIgniter, et. al. What was interesting to me is to see how the framework is colored by running in the CLR. On the plus side, you get LINQ and a really good VM. On the downside, you have to use for
loops and nullable types (wink, nudge). The rest is pretty much what you’d expect to see when you transliterate an MVC framework to C#, though they did display some creativity in making it decent to look at in terms of code style.
There was a pretty strong message that the tool is cross-platform (works with Mono) and cross-language. You can write a model in C#, a controller in Ruby and a view in Python. Scott even suggested that you could write unit tests in PHP, to which I thought, “PLEASE GOD NO!”
Scott a somewhat typical response, “Hey, I did this in Smalltalk in 1974!” – funny because it’s true. He also acknowledged its not for everyone. Some people need a car and some people need a motorcycle. Even so, the ideas that MS is putting in front of a ton of programmers are progressive and important. That’s the most important part to me.
So, as I’ve alluded, I’m at Microsoft Intergalactic Headquarters this week for the Microsoft Technology Summit. The crux of the biscuit here is to invite people from communities not using Microsoft technology and show them what Microsoft is up to.
There’s particular emphasis on what MS is doing in the Open Source Software space. Sam Ramji opened up the event to give us a sort of rundown on what MS is now doing in OSS and interoperability. I was unaware that IIS7 will support PHP, that MS is changing their practices to suit the Samba project or that HyperV will, in part get released as OSS.
Sam mentioned that he is committed to not confusing Open Source and Shared Source. It’s a slight distinction to most people but it really tends to rankle those who know the difference. I think he best summed it up by saying OSS at MS is in year 3 of a 10 year project and to judge it by what they actually do, and not their overtures (big nod to Ballmer rattling sabers about OSS and patent litigation).
Next up, Kevin Schofield showed off some of the work MS Research has been doing. His first point was that research does pay off. Research money into technologies like VLSI, databases, parallel databases and workstations have yielded multi-billion dollar industries. Projects that start out as pure academics can evolve into major players such as Oracle and Sun.
MS Research’s mission is to advance the state of the CS art and ensure that MS has a future. By the latter, he means that MSR is a hedge on the company’s agility. They don’t want to turn a corner and find customers demanding something that MS doesn’t know about.
To this end, they hire the best researchers around and then don’t tell them what to do. In this way, they refer to themselves as the “world’s largest CS department”. However, knowledge transfer is critical. If they don’t transfer technology to the product groups, what they’ve done is useless.
I found it very interesting that Kevin said “tech transfer is a social process.” For this reason, he specifically hires people with good relationship management. People Hacks at work ya’ll!
For the fourth time, I’m at the annual geek retreat in Austin. Since I went when it was but 300 people, I’m obliged to marvel at how big the conference is getting. I remember when we had to walk uphill, through the snow, both ways, on fire, to get to every panel.
This year, I’m going to retire the hoodie I got five years ago wen I first attended SXSW. It’s a big deal, mind you. FYI.
Anyhow, I’ll attend a subset of these sessions, if you’re curious. I’m hoping on “attending” the “hallway track” more often this year. Also, I’m going to take the leap and not bring my laptop with me. Just a Moleskine and my trusty tricorder.
More importantly I’m going to the Austin on Rails Happy Hour and playing at the Rock Band party with The Rural Jurors.
If you aren’t are coming, I will continually lament your absence. Otherwise, I look forward to seeing you there!