P
A
B
C
A
S
Thoughts, links, pictures on music, food, wine, film, tech etc.

2011-05-17

I hell yeah'd on this:

My RailsConf Talk 2011

“And all these things you say never matter to anyone And all these things you’ve said never mattered to anyone Well they matter to me

Rise up and bathe your face in the morning sun Put a good dress on this day has just begun And it matters to me

You open your eyes and it’s so perfect it hurts And only I know what it’s worth

So tired of trying and failing Trying to make some sense of this all I’ve got no idea of where I’m going Just a haunting hint of where I went wrong

I think maybe you can help me Cos I think maybe you can see I think maybe you can help me Cos I think maybe you can see

That it’s so perfect it hurts All these things you said never mattered to anyone”

This is my third RailsConf. Who’s here for the first time? Second? Third? More?

You’re all very welcome. Very very welcome. Especially newbies. Some day, you can be like me. Cos I know you’re dreaming about how you could be checking in to an airport hotel in Washington at midnight when the bar is closed so that you can eat cheetos and snickers for dinner.

Seriously, you’re very, very welcome. Thank you SO much for having me. Thank you. Thank you. Thank you.

I have no slides. Where we’re going, we don’t need slides. Fold away your laptops, hold on to your seats, because shit is about to get emo.

The other Meta: On Rails and What Matters to Me?

I am a troll. Every time I read something, see something out there, I’m on the attack. I’m quick to criticise. To find fault. To ask: “why would I need that?”. To catch folks out. To bicker and attack. The more I learn, the more I troll. The more I troll, the more I learn.

I just don’t write any of it on the internet.

I am a hater. Every day, I direct so much hate at so many things. So much anger quietly channelled here or there. A lot of it at myself. Sometimes I wonder why I bother to do anything. Not suicidal, but just: what’s the point? You don’t belong, Paul. You don’t belong.

I just don’t write any of it on the internet.

I am an egoist. I’m constantly aware of my identity. Is he looking at me? Is she listening to me? Whether or not I actively go out and seek to craft a particular persona, I often slip into the self-centered mind-set, and I get frustrated at who I am, and why I am not a better me.

I just don’t write any of that on the internet.

ME AND WHERE I’M AT

I’m 27 years old. I have a girlfriend. We live together. I have a wonderful nephew and a beautiful niece; 4 of the best siblings you could wish for. I love and thank my parents very much.

Every morning, I open my terminal, fire up Textmate. I type “cd Sites/blah/blah/blah” and I run “git pull”. I run “passenger start”. I run “bundle” and I run “cucumber features” and “rspec spec”.

Before all that though, I take a deep breath, and imagine sitting on a wooden balcony in a villa in Tuscany. I imagine sipping a fine Montepulciano and chewing on a triple cream Piemonte cheese.

Oh, wait. No. I’m at my desk, staring at a backlit screen, about to enter the wonderfully lavish world of Ruby on Rails.

FUUUUUUUUUUUUUUUUUUUUU…………

What’s it all about? REALLY? All this syntactical sugar. This modular design. The managed dependencies, multiple migrations, the lazy evalutation, the autoloading, the bleeding edge, the cream of the crop, the …

wait.

Wasn’t it all much easier before without all of this crap?

Trolls gon’ troll. Haters gon’ hate.

The Other Meta. On Rails and What Matters to Me.

The first thing that comes to mind anytime I think of this question is music. Why do I think of music when I think of why I enjoy software?

Music.

I grew up in a family that was more or less music obsessed. My dad played in a band and actually toured the DC area for six months playing Irish ballads for drunken Americans. In the car on holiday, we listened to everything from the Beatles to Simon and Garfunkel, Van Morrison, Nancy Griffith, the Travelling Wilburries. Really fantastic stuff.

Music is amazing because it transcends language and lives in the world of direct emotional experience. You don’t have to learn anything to appreciate a piece of music.

Cliché and awkward as the term “rock star” is, today’s conference whore workaday software craftsman agile evangelist developers really are akin to working musicians, who travel the world spreading crazy ideas using tools that go beyond natural language, sharing ideals and challenging people to reject the status quo, daring people to throw down false idols and invent their own future.

Music is also an expression of an abstract construct: musical notation, an ethereal thing, a state machine with a programmable instruction set. A bridge between the natural world and the world of logic, that brings people together with shared emotional experiences. Music takes a logical base, converts it to a physical manifestation, but it is consumed via a one to one emotional connection between the artist and the listener.

Software is exactly the same. Music matters because it joins us all with a common language. Code and the resulting software has the same effect.

So what’s this other meta all about?

Metaphysics

Metaphysics is an abstract term used in philosophy to represent things that are “beyond physics”. Things that are beyond physics. There is some debate in general about whether metaphysics itself even exists. But that’s seriously meta.

Indeed, there is debate about whether consciousness exists. Or whether anything exists. But anyway.

Back in the Ancient Greece, there weren’t too many computers for people to hack on. Back then, we all would have been philosophers, changing the world with just the power of our minds, and writing it all down.

Let me tell you, if Aristotle was alive today, he’d be super excited about the upcoming asset pipelining in Rails 3.1.

One of those “knowledge-hackers” was René Descartes. Descartes’s meditations on first philosophy formed the basis for much of the succeeding thought on the nature of reality.

Let’s take a journey then, for one small moment, on a Cartesian meditation. We close our eyes. We lose our grip on the things we call our bodies, focussing on only our minds. We become aware of our thoughts. Just our thoughts. Not inside our heads, because we’ve let go of any concept of a body. Just pure thought.

Then we go a step further, beyond our thoughts, and we consider what it is doing the thinking.

One of my favourite quotations from all of philosphy is from Wittgenstein:

“And from nothing in the field of sight can it be concluded that it is seen from an eye.”

The same applies here with Descartes: we’re attempting to look somewhere with our minds that we potentially can’t even conceive of.

Welcome, folks, to the edge of reason. Out here, nothing matters. Things simply are. A causes B, and C follows. Logically. Out here, you can argue anything as long as it is valid. In fact, out here, you could probably invent new logic.

John Rawls appeals to the edge of reason too, in his Theory of Justice, where he defines the modern concept of justice. Out here, we’re all bodyless. Just floating about. There’s no materials, so no wealth. In Rawls’s version, we all know what the real world is like, but we don’t know what body we’re attached to, and we have no sense of who we are. In that situation, Rawls concludes, the only rational decision is to agree on a that we are all equal.

Basically: when we’re all equal, we gotta focus on the things that matter most, irrespective of wealth and position.

Anyway, we’re still here, hanging out at the edge of reason. It’s pretty perfect. Shit is good here, because, well, good and bad are equal. Up and down are equal. Everything is equal.

But there’s something about it. There’s something not real about it. Oh shit and suddenly you realise, that it’s all a dream. That your boss is calling, your customers need your help, your girlfriend wants attention or your mom needs to print a photo of her grandchild. Somebody wants you to fix something and as you sit up from the bed and the physical world hits you like a jackhammer popping a balloon, you’re reminded that that fifth gin and tonic last night was the one they call “the one.”

My name is Paul, and I am a Rails Developer.

The other meta is the stuff that joins us all together that is not code. The common themes that keep me coming back to Rails, even after I explore other technologies and techniques.

Open

I love open source software. Watching Open Source software get developed is like watching evolution happen at a million miles an hour. A branch here, a fork there. A decision here. Rails has what, 1886 contributors? Did you know that _why the lucky stiff has one commit?

Have you ever read the Rails commit history from back in 2004? It’s a real tear-jerker. Anyone remember rhtml? fastcgi? Back when REST meant taking a break between coding. And whatever happened to lighttpd?

It reads like a film-noire history. It’s an education in the evolution of large scale software development. 7 years of evolution, open for everyone.

Imagine you could see every decision your local government representative made for the last 7 years, along with a little note explaining what they did and what just changed.

Open matters.

Curated

John Gruber gave a presentation last year at DConstruct about the “auteur theory of design”. He posited that the quality of a project is a function of the taste of the person, the auteur, who has the most final decision making in the project, rather than the combined talents of everyone involved. We all know who the auteur of Rails is.

Every orchestra needs a conductor. Rails, to me, is a wonderfully orchestrated manifestation of its stated goals: to be opinionated, to be simple, to be sustainable.

It is by no means perfect. But as my taxi driver on the way here told me:

“If you want a perfect world, then you better find a better world to live in.”

Rails 3.1 is adopting the CoffeeScript transpiler as the default for writing your javascript in new apps. CoffeeScript is no more than a year old. Make no mistake though: it’s a big deal. At JSConf, Jeremy Ashkenas’s presentation was “hijacked” by Brendan Eich, the author of javascript. Brendan loves coffeescript, and will be putting forward proposals based on coffeescript for the next version of javascript. When it comes to getting on board with nascent technologies that carve out the future, you’re in good hands with Rails. REST is not a commonplace buzzword by accident.

Jeremy is a true auteur: the numerous forks of coffeescript and the number of things he says NO to are testament to that.

Big, ballsy, yet careful decision making that ensures we’re riding a wave of innovation, keeping Rails as the pack leader, the framework that the others copy, borrow and steal ideas from.

Rails 3.1 is adding jQuery as the default javascript framework choice, even though Prototype development has been synonymous with Rails development for a long, long time.

Well, duh, about time, but again: this is a carefully curated decision, not made in haste, not made in anger, just the ability to go with the flow as well as riding the wave. If it’s NOT the right decision, or something better comes along, I’m sure we’ll see that take jQuery’s place in time.

Finally, last year we saw Rails 3.0 adopt XSS protection by default for the first time. XSS protection by default was a principle oft poo-poo’ed on the Rails mailing list in the early days, but it was encouraging and rewarding to see Rails adopt this obviously beneficial feature after seeing Django adopt it successfully without blowing up any apps.

Curation matters.

Constraints

A good conductor makes a piece of music his own. Let’s face it : there are tons of ways to write a web application or an API. The constraints that Rails provide are choices, made my folks who want to maximise their OWN use of the framework, and by extension, choices made on our behalfs as users and community members.

Rails gives you a paintbrush and a canvas. What really matters is what you put on that canvas.

Rails’s constraints are one of the most oft-criticised points of Rails, particularly with regard to ActiveRecord.

Like most constraints though, if you fight them, you will tend to end up unhappy. Kayaking upstream just isn’t going to work, but if you kayak downstream, the river’s gonna take you.

Boating analogies aside, Rails’s constraints really aren’t all that big of a deal any more. If you run with them, they’ll accelerate you from 0-first feature super quick. If you really need a custom setup, there’s never been a better time to plug in components that better suit your use case.

Constraints matter.

Feeling Like I’ve Made a Difference.

Take a look at the little donor card beside your nametag in your LanYard. Last year, the release of Rails 3.0 raised nearly $40k for Charity:Water. It’s always hard to judge the impact of charitable donations, but everything from the RailsConf 5k to Ron Evans teaching schoolkids at BohConf yesterday. I don’t know about you, but I definitely feel the undercurrent of GIVING when I hang out here.

Charity matters, but Rails gives us another kind of empowerment. Look at all the things you don’t have to do when you’re building a Rails app. It’s pretty easy to underestimate just how empowered we are as Rails developers.

Empowerment is important because it is democratising. It takes away many of the lines between big and small, between wealthy and poor. It’s really hard to measure economic effect of software directly. In his post “The Great Ephemeralization” recently, Timothy B Lee argues that “the real lesson […] may not be that the American economy is stagnating, but rather that the government is bad at measuring improvements in our standard of living that come from the software industry”

Rails is part of that. With the abundant ecosystem of gems, with the relatively low friction of getting up and running, and with the constant focus on programmer happiness and productivity, Rails makes each one of us wealthier, without taking a penny from our pockets.

Empowerment matters.

Using Tools that are built for people

I’ve used plenty of tools both Ruby and not so much in my 10 or so years as a budding hacker. Sometimes, I feel like I’m missing something, sometimes the programming metaphor as a human machine interaction is a lot less human and a lot more machine. I get that this turns a lot of folks on, but heck, so do transistors and resisters and single coils. Rails has always definitely had that timeless characteristic of being “easy to learn, hard to master”.

Rails helped me to learn programming by giving me lots of the product and much less of the history. gem install rails. bundle install. script/server. There we go.

Again, there’s lots to improve, and maybe it will be something else, but, even 6 years in, I appreciate the little human touches. Code generators, scaffolding, inline comments with helpful instructions and context, syntactical sugar. Even if I don’t use a lot of it any more, I still really appreciate that it’s there.

I like being treated like a person, rather than a machine. That matters.

Stories about attention to detail

I don’t have time to go through all of the wonderful care and attention to detail that Rails has given us down through the years. One in particular spans almost the entire development history, and since I mentioned _why’s commit earlier, I’d like to draw attention to that. Does anyone know what the commit was?

Why introduced Object#blank? to Rails in 2005 for version 1.0.1. Object#blank? is a bit like Ruby’s “unless” statement : you don’t really, really need it, but it’s such a joy, such an expressive way to test any object.

Three years later in 2008, we got Object#present? the seemingly obvious inverse of Object#blank? … simple expressive, a joy to use.

Skip to last August and Rails 3.0.0. I was lucky enough to follow the decision making in both the mailing list and the rails core chat room for the addition of Object#presence. It was at least a couple days, maybe weeks and there were various suggestions. In the end, again, presence seems so obvious, and it’s reflected in ActiveRecord’s validators, but when other suggestions such as “existence”, “objectifpresent” etc. are on the table, it’s the careful attention to detail that matters.

Make no mistake, these are one line methods ; but they were the one-liners I longed to have by default when I was making the transition from 2.3 to 3.0.

Care and attention to detail matter.

Community

I can’t give a talk about what matters to me without mentioning the word “community”. Community, though, is a loaded word. It sort of makes it feel like there’s something that you have to enter in to, or be born in to, or have a right to be a part of.

Being part of the Rails community is more about what you don’t do to remain a part of it. I’ve never hung out with a more inclusive bunch of people. People so enthusiastic at every level. People willing to listen to me tell stories about my nose hair, or sleeping patterns or other nonsense, but also people willing to talk to me on their level, and let me smile and nod, but as a peer whilst talking about computer science principles, techniques and tools that I can only hope to understand within my career.

5, 6 years ago, my decision to learn Rails wasn’t just a decision to learn a web framework. It was a door to wonderful, ongoing relationships with great people. It was a channel to empassioned discussions that started with code, but blossomed way beyond. It was the beginning of so many friendships, both within the Rails sphere and outside.

Community matters.

PLAY MUSIC (Beethoven’s 9th)

Finale

And so we come to the finale. The deep, soul searching moment where our protagonist pours his heart forth, meditating on what truly matters. rails generate meaning. 0:28 (BIG CHORD)

0:40 There are some things that Rails simply cannot generate. 0:47

The Other Meta

A lot of the “magic” within Rails is the meta-programming power provided by Ruby itself. Code manipulation that allows you to focus on building applications rather than servers; scoring your application using a shared notation rather than re-inventing a new notation from scratch. A notation that quickly makes sense and is efficient.

1:10 The “magic” of the Rails community is the lengths that people here go to ensure that things are consistently amazing. Rails teaches us that code is art. Art divides people. That’s ok. I like the divide.

1:30

So anyway. I’m nearly done talking. What really matters are the bits in between. Family, Friends, Loved ones. I never met my grandparents, but for me, it’s my mother, my father, my brother and sisters, my girlfriend, my nephew, my niece. Family is always first.

1:50

But that’s something of a Cartesian meditation in and of itself. When it comes to reasonable reflection on the important things; for me, saying that family comes first is an absolute. But it has to be said.

2:10

What’s next though, is something more fundamental to us as programmers, as makers. The tools themselves don’t matter that much. It’s not that it’s Ruby or Rails or Coffeescript or whatever.

What matters most is that these tools are the products of Creativity and Imagination.

2:28

Creativity and Imagination

Dear Rails,

You’ve been with us for 7 years now. You were always a cantakerous kid, with your strong opinions and your rebellious nature. Please don’t lose that.

I love how you take away the boring bits and let me focus on the blank canvas. It’s hard, and sometimes I want to break the canvas apart just for the sake of it, but I think you’re cool with that too.

2:50

I love how you challenge me to be creative with everything I do. Because you are carefully crafted and because you come out of the wash so clean, you encourage me to keep things clean, to keep the things I do carefully crafted.

Rails, you took the status quo, ate it up and crapped it out. But that was 7 years ago. Now you are the status quo. You’re no longer the upstart, but I feel like maybe, maybe your day is not done.

3:10

As long as you stay open, Rails, I think I’ll be in good hands, but only as long as you remain carefully curated. As long as the constraints you give me are based on your original goals ; my happiness, my effiency, my ability to keep going. As long as I can sit down and within a few keystrokes, feel like I’m the master of my domain. As long as you continue to empower me ahead of my peers, I’ll stick with you. As long as you feel, Rails, that behind you is someone who gives a damn that I matter, then I’ll still enjoy being here. As long as I keep noticing details that entice, delight, tickle me to use them and explore them, then I’ll keep using and exploring.

3:50

As long as I keep meeting the kinds of people, Rails, that I meet when I hang out with you, then I’ll keep coming back. As long as I continue to feel humbled when I’m surrounded by so many damn, damn good people, Rails, I’m damn proud to be here.

Rails. Sometimes we don’t get along. Sometimes I hate you. Sometimes, I know, you hate me too. But I keep coming back to you. You’re like an artist, Rails. You can be insufferable, unbearable at times to be with, but deep down, I don’t know anyone with quite the imagination, quite the creativity as you have.

Thanks for the good times, Rails,

4:30

Homage to _why day

At last year’s RailsConf, Glenn Vanderburgh announced _why day “to remember Why’s contributions to our community and culture by hacking just for the fun and joy of it”. _why day is really cool. But _why is dead. He’s Mary Poppins, and hopefully, we’ve taken our spoonful of syntactical sugar.

4:50 We can all be a little bit _why in everything we do. Experimentation and creativity don’t have to be the realm of the eccentric. Art and magic and poetry and rhythm … who’s going to say no to that?

5:00 Creativity and Imagination matter.

5:05 I have a new name for _why day. It’s called today.

Thank you.


 
Made by Paul Campbell. paul@rushedsunlight.com. Twitter. Github.