Ruby Midwest 2010 Friday

So people often ask me why I tweet so much at conferences (113 tweets today, for example). Well, usually I'm furiously typing notes into TextMate so I can blog about it later. Now, in the post twitter world, I type those thoughts into twitter and harvest them later for my wrap-up posts. That way people can follow a conf's progress live or wait for the recap.

So Tweets will be in italics and everything else is bonus commentary.

Generally the first day of the conference went amazingly well. Hard to believe this is their first year. Wifi was plentiful, food was decent, and the space was nice. Oh and the talks were good too.
  • At @RubyMidwest waiting for the fun to begin
  • So I think the official hash tag for @RubyMidwest is #rbmw or at least that's what the welcome tag said. Although #RubyMidwest is popular
So there was a lot of confusion about the official Ruby Midwest Twitter hashtag. The badges said one thing, the welcome screen said another, and everyone else chose a third: #RubyMidwest. I eventually just went with the most popular. That's about as much controversy there was on the first day so everything went pretty well.
  • "Open Source sucks and I'm to blame" - Chris Wanstrath at #RubyMidwest #rbmw
  • No one has more experience than me with running bad open source projects - @defunkt #mwrc #rubymidwest
  • The trick to getting better at things is Practice. @defunkt #mwrc #rubymidwest He played guitar for 10 years and never got better nopractice
Chris never got better at the guitar because he never practiced. The same applies to code. You can knock things out for years but until you work in a mindful manner you will never get better.

  • It's too easy to release open source software - @defunkt #RubyMidwest #rbmw

By which I take him to mean that lots of people throw something up on GitHub, push a gem, and provide a few lines of doc before something even works.

  • Levels of open source Massive (Linux kernal), Big (Rails, JQuery), Medium (homebrew) Tiny (most of the rest) @defunkt #RubyMidwest #rbmw
  • The tiny ones tend to be all the ones we use - and they tend to be managed poorly @defunkt #RubyMidwest #rbmw

Some open source projects are managed really well, but it's amazing how many we use on a regular basis that are not.

  • Always have a license file! @defunkt #RubyMidwest #rbmw
  • If it doesn't install easily it sucks because that's your first experience with the project @defunkt #RubyMidwest #rbmw
  • Why do we use MySQL instead of Postgres? MySQL was way easier to use early on in Rails @defunkt #RubyMidwest
  • JQuery no conflict mode is another example of making install easy. You could use it and Prototype super easy @defunkt #RubyMidwest
  • If your api is for a human, design it to be easy and don't assume just ruby developers will be using it. @defunkt #RubyMidwest
  • Lack of examples is the next biggest problem in open source - people need help getting started @defunkt #RubyMidwest
  • Public Api means having methods you know won't go away when you upgrade. @defunkt #RubyMidwest
  • man pages are important if you have a command line interface @defunkt #RubyMidwest
  • Set Expectations: explain what it's for. And make sure it does that! @defunkt #RubyMidwest
  • Projects that aren't maintained... OK, that happens. But say so: "Looking for a good home" note on home page @defunkt #RubyMidwest
  • "Too many features is a really bad thing" @defunkt #RubyMidwest
  • "It's way too easy to say yes" @defunkt #RubyMidwest #rbmw
  • "Much harder to remove a feature than to accept it later" @defunkt #RubyMidwest
These last 2 statements are particularly applicable to metric_fu right now. There's a bug in the way it computes Flog averages and I'm having trouble fixing it because of an undocumented "files to ignore" feature. I may have to rip it out.
  • Better to set up a plugin api and let people write their own extension functionality @defunkt #RubyMidwest
  • The lack of competition is horrible -- Look at how competition from Merb made Rails better @defunkt #RubyMidwest
  • Too few releases is horrible and wastes people time - Too many can be annoying too. hmm. @defunkt #RubyMidwest
  • Have a decent change log - super important for long time users. @defunkt #RubyMidwest
  • Arbitrary version numbers confuse people. Look up Semantic Versioning @defunkt #RubyMidwest
  • If you're using it in production it IS 1.0 - We have a lot of numbers and we're not going to run out of them @defunkt #RubyMidwest
Excellent point. How many gems have you deployed to production that claim to be version 0.194 or some such nonsense?
  • Define how to contribute to your project - don't assume every knows how you want it. @defunkt #RubyMidwest
  • Be a lazy maintainer - Write a road map and people will do your work for you. @defunkt #RubyMidwest
Excellent point - this totally worked for metric_fu.
  • Link rot - don't point to your svn repo if you've moved to git - update old blog posts if you use them as doc @defunkt #RubyMidwest
  • Google your project name before you create it - Find problems early @defunkt #RubyMidwest
  • Examples of great open source projects: Rails, JQuery, Redis, homebrew, Django, Unicorn, Linux, Git... @defunkt #RubyMidwest
  • Chris Wanstrath - @defunkt always delivers an great talk. He has a style that feels conversational but gets points across #RubyMidwest
Good talk - Chris is always an engaging speaker.
  • "Ruby Techniques by Example" Jeremy Evans is up next at #RubyMidwest
  • "Singleton class" has been said 20 times in the first 5 minutes of this talk @jeremyevans0 #rubymidwest
Yowza, kind of a rough start to the day. Had to stop tweeting for awhile just so I could focus (the horror).
  • ruby-sequel's plugin method looks cool. Let's you easily add modules that add class and instance methods @jeremyevans0 #rubymidwest
  • string evals dangerous but fast, define_method safer but slow. @jeremyevans0 #rubymidwest
  • The default argument of a ruby method can be any ruby expression. @jeremyevans0 #rubymidwest
  • Wrapping underling exceptions (from different implementations) with your own is a good to keep your code sane @jeremyevans0 #rubymidwest
Jeremy gave an intense, but good, talk. It's had to make those deep internals of Ruby not sound dry but he did an admirable job.
  • "JRuby" by Charles Nutter is up next at #rubymidwest
  • Jruby: Real Threads and access to all of the Java. Compelling points. The slow test cycle (starting up the JVM) is a problem #rubymidwest
  • I know there's solutions for starting up a test server, but I've found them wonky in the past - have they gotten better?
What I hear from my friends who develop in JRuby is that it's awesome in prod but slow to develop in (you're always waiting for the JVM to start up). And the lack of C extension support often means that the gem that would totally do what you need is just not going to work.
  • RT: @clam_tea #rubymidwest jruby allows you to do ruby on google app engine, android, anywhere java lives jruby is in the closet with a knife.
  • RT: @clam_tea Mmmmmm, Ruboto = Ruby on Android. Epic win. #rubymidwest
  • I like how @headius voice drops an octave when blatantly selling JRuby #rubymidwest
  • C extension support is being worked on by Google summer of code people for JRuby - Awesome. @headius #rubymidwest
If they can get C extensions working that would really be something. Maybe I'd have to give JRuby another look.
  • Next up is "Civic Hacking" by Luigi Montanez @LuigiMontanez at #rubymidwest
  • Sunlight Labs - developers and designers dedicated to improving government through transparency @LuigiMontanez #rubymidwest
  • Open Data + Open Source = Open Government @LuigiMontanez #rubymidwest
  • Of the hashtags #rmw #rbmw #rubymidwest, #rubymidwest is winning by volume For the Ruby Midwest Conference so that's why I'm using it
  • mines gov data to predict flight times. neat. @LuigiMontanez #rubymidwest
  • uses crime data to help you avoid crime when coming home drunk in DC @LuigiMontanez #rubymidwest
  • RT: @rumblestrut Thanks @LuigiMontanez, I somehow missed this entertaining drama that @aaronsw ran into last year #rubymidwest
  • Like Teach for America but with %90 less soul crushing @LuigiMontanez #rubymidwest
  • Service to your country doesn't have to be joining government or the military - it could be code. @LuigiMontanez #rubymidwest
One of those awesome talks that points out some very cool things you could do with your open source time. Transparency is within our reach.
  • Free book time at #rubymidwest
  • Lunch was an enjoyable, if fairly standard, boxed lunch affair. Quite good quality considering the price of the Conf #rubymidwest
  • RT: @rumblestrut I love that @wycats was the first book winner at #rubymidwest book giveaway. Hilarious.
  • I just won a copy of "Beautiful Code" at #rubymidwest
Another book to read. At some point. w00t?
  • "Migrating Legacy Data" by Patrick Crowley & Rob Kaufman is up next at #rubymidwest
  • Trucker is a gem for migrating legacy data into a Rails app @mokolabs #rubymidwest
  • Trucker is hard to google: @mokolabs #rubymidwest
  • "Trucker helps you move, but you still have to pack your stuff up" @mokolabs #rubymidwest
Trucker looks pretty cool and if I had some legacy to migrate, I'd look into it.
  • There are 12ish adapters for ActiveRecord, but there are tons of JDBC adapters. JRuby to the rescue. @mokolabs #rubymidwest
  • RT: @ajsharp "ALTER TABLE mytable CONVERT TO CHARACTER SET utf8" #rubymidwest
That last line is a particularly useful bit of MySQL that will help you convert to UTF8.
  • Next up is John Hwang (@tavon) with "Object Oriented Unobtrusive CSS" at #rubymidwest
  • Rename! the talk is now just "Unobtrusive CSS" @tavon #rubymidwest
He had to cut some scope to fit the deadline.
  • .@tavon says CSS frameworks (like 960grid) are almost as bad as using tables. Strong words. #rubymidwest
And he comes out swinging. I like it.
  • CSS is like assembly programming, frameworks - procedural coding, and Sass works at a higher level of abstraction. @tavon #rubymidwest
  • Sass: Nested Rules, Variables, mixins, compiles to css, Fully CSS3 compatible @tavon #rubymidwest
  • .@tavon says Sass is almost Turing complete #rubymidwest
These are great points. Sass lets you do things you should have been able to do years ago. How did we ever live without it? Wait, my project isn't using Sass... I need to talk to my designer.
  • .@tavon feels like HAML is an unnecessary abstraction. Sass is a much bigger game changer #rubymidwest
  • "Programmers: HTML/CSS is your problem" @tavon #rubymidwest
  • "Programmers: You probably don't know CSS" @tavon #rubymidwest
  • I think @tavon just called me lazy #rubymidwest
Hey now! I've been busy. I'll get around to doing a deep dive on CSS. Really.
  • .@tavon will not work on a project if you won't let him use Sass. #rubymidwest
A man of principles and conviction.
  • Stupid @tavon, making me feel bad for not knowing CSS very well #rubymidwest
He made my feel bad. Jake no like feel bad.
  • "Integration Testing Strategies: Locally And In The Cloud" is next at #rubymidwest by Ryan Felton and Kyle Ginavan
  • Live coding Capybara Selenium slowness and fail at #rubymidwest Sorry guys, I've been there
  • Using specjour to parallelize his capaybara tests on another machine. Go. Go. Go! #rubymidwest
  • And it worked. mostly. live demos are hard. #rubymidwest
  • is another an to run your integration tests in the cloud. Many have tried this. #ihopeitworks #rubymidwest
  • Don't get me wrong, I want "selenium shots" to succeed but I've seen a lot of smart dudes fail at parallelizing in the cloud. #rubymidwest
  • RT: @bellmyer I just signed up for selenium shots! #rbmw #rubymidwest
  • Re: Last re-tweet. Got a 500 after signing up for "Selenium Shots" #rubymidwest
There's a lot of stiff competition out there trying to run tests in the cloud. May the best project win. Also, live coding and examples that rely on a network are to be avoided.
  • "Metawhat? A look into the mysterious metaclass" next by Brandon Dimcheff @bdimcheff at #rubymidwest
Another talk where I couldn't tweet because I needed to focus. Intense and worth tracking down the video when it comes out.
  • "Redis Persistance Power" - Nick Quaranto (@qrush) happening now at #rubymidwest
  • Redis is Batman's utility belt @qrush #rubymidwest
  • Redis can take a command that waits for something to arrive in the queue - meaning you don't have to 'sleep' @qrush #rubymidwest
  • .@qrush is working on hosting Redis in the cloud Ready soonish. #rubymidwest
Cause that guy needs more side projects. And they're all awesome. Yes, I'm jealous.
  • "Three thousand years ago, the Omnipotent Disc King started a campaign to ravage Sector 5 of the Moon." from
Weird placeholder site: Go see it.
  • RT: @qrush My slides from Redis: Persistence POWER! (With way more examples than I could cover!)
Bonus content? What a deal!
  • RT: @clam_tea $redis.sadd should have a $redis.happpy to balance it out.
Yes it should. Well not really, but fun to talk about but not do. Like yielding 42 for no reason in complicated bit of Ruby -- funny but you wouldn't want to actually do it.
It is a pretty town and university.
  • "Chef - Cooking 101" by John Williams (@j_m_williams) is up next at #rubymidwest
  • Chef: Automate building a server up from bare metal to a ready to deploy machine. pretty awesome. @j_m_williams #rubymidwest
I talked to John the night before and I think it was his first talk. He was a bit shaky. It didn't help that server set up is dry, dry stuff. And, to be honest, most of the crowd doesn't care about the topic. Sorry John but we're coders.
  • One more Talk! "Surviving the last 20%" Mark Daggett (@heavysixer) at #rubymidwest
  • Speaking of Surviving the last 20%, I am mentally exhausted. #rubymidwest
  • I do! RT: @gregrhansen does anyone else see the irony of everyone leaving before the last talk of the day... the last 20%
  • "Facebook development is like building a ship in a bottle. Inside another bottle. While wearing mittens" @heavysixer #rubymidwest
  • RT: @tswicegood Regarding Facebook dev: FBML == Duplo, IFrame == Lego. #rubymidwest
Rough to be the last talk of the day. A good percentage of the crowd has bailed, lots of us would rather drive a spike through our cornea than write a Facebook app, and everyone in the room has a severe case of mental fatigue. Still he did a good job.
  • Demi Moore is to Facebooker as Patrick Swayze is to Rack. In the movie Ghost. In the clay spinning scene. @heavysixer #rubymidwest
  • You really kinda needed to see the slide to get that last tweet #sorry #rubymidwest
That was a great slide. Well played.
  • "Use Rack to wrap the plugins and gems to give them the params they expect instead of monkey patching them." @heavysixer #rubymidwest
Clever solution. Mark strikes me a smart man fighting an insane API. And winning.
It is a great name. From Urban Dictonary:
OMGWTFBBQ: A meaningless acronym which most often stands for "Oh My God What The Fuck Barbeque." It most likely originated on Something Awful ( It can be interpreted simply as gibberish, or used when one wants to emphasize one's own incoherence, lack of understanding, or to mock others. It usually has an air of mockery, specifically with regard to teenagers who a lot of use three-letter acronyms.
  • Evans just gave a lightning talk on singleton classes of singleton classes and had the room rolling with laughter. Only at #rubymidwest
You sorta had to be there. The rest of the lightning talks were good, but I was too tired to Tweet it up so they will be lost to the internet forever. Apologies. The BBQ was excellent, however. I can still smell sauce on my hands and I've washed them 3 times.

Time for bed.


Popular posts from this blog

What's a Good Flog Score?

SICP Wasn’t Written for You

Point Inside a Polygon in Ruby