If you look at the early versions of both projects, they look remarkably similar
mustache.rb was a huge hit in Ruby land right away and soon after I did my port a number of very smart people came around and rewrote the existing RegEx based “parser” (eugh) into a proper parser and compiler combination to make sure all proper computer science theory is applied and things run most efficient.
I looked back at the code then and couldn’t find my way around, things were split over dozens of files and I am sure it all made sense to a very organised brain, but I couldn’t even begin to start to understand what the whole thing did. And I remember distinctly that I was happy that I found
mustache.rb in the before state so that I had a chance to port it. I would never have begun to try if I had found the “more optimal” solution.
The realisation there though made me also a bit sad. I am all for doing the right thing and executing things faster and everything, but it bugged me that the clarity of the code was all gone now.
Then other smart people came and wanted to do the same for
Until Nate showed up and wrote a parser/compiler in ~350 lines of code (that was roughly the acceptable limit for me then) and I finally lost that argument too. But it took a while until
mustache.js finally got its well needed superpowers, with huge help from Michael.
Meanwhile, I met Yehuda Katz at a conference and someone introduced me as “Jan, he does CouchDB and mustache.js” and Yehuda just said “Oh boy, I’m going to upset you soon.” and then avoided me for the rest of the conference (or it was just coincidence, I don’t know :). A week later he released
mustache.js-inspired templating engine with some extra features that were really useful. But it wasn’t according to spec, just close enough, that a lot of people started using it. I though “good for them”, but I secretly (or not so secretly) wanted to steal the best ideas and get people to use
mustache.js instead. That didn’t really go anywhere because people stopped working on the spec in a sensible manner and we couldn’t agree on more features. And eventually, I spent more time with CouchDB again.
In the meantime many more mustache implementations in other languages appeared and one implicit design goal between was it to allow sharing of templates between them and produce compatible output. There is even a spec.
Around the same time Twitter started using
mustache.js in the frontend and it was a great honour. But they too preferred a proper parser/compiler implementation so @fat & team went ahead and wrote Hogan, a
mustache.js-compatible implementation with a faster load and runtime. @fat talked about this at his 2012 JSConf US talk, he got asked why he didn’t submit a pull request to
mustache.js instead of making a new project. He said that a Pull Request that consists of “Hey, I threw away all your code and replaced it with mine” isn’t such a good idea. I agree, it wouldn’t have left the best impression.
He praised though, that they were able to build a compatible implementation that could compete on its own merits while still being compatible with a spec and he said that all library development should be done that way. Too often we conflate a great idea with its implementation and we would be better of allowing different ones and let users pick and choose their poison.
While watching @fat speak, it dawned on me that if I look at things this way, then the RegEx implementation of
mustache.js is just another implementation of the same spec and its merits are tight and accessible code. And I could have hugged him for it. In fact I ran up on stage during the talk and nearly ran him over (22m:15s). My beloved implementation still had a reason to exist and that made me very happy. Until today, the 0.4 branch of
mustache.js is still around.
Accessible code has merit over optimised code, even if the optimised code should be used most of the time.
Build libraries with a spec, encourage competing implementations. (We plan to do this for Hoodie)
The state of mustache today is alright, the implementations are all reasonably mature projects and people just use them. But there are a few that want to move it forward but are hindered by the complacency of the early adopters who have moved on to other things (including me). I hope we can get that resolved eventually.
On that note,
mustache.js has a number of interesting Pull Requests and issues open and if anyone is interested in taking over maintainership, please make yourself heard in on the GitHub project.
I will not die for you
I will not kill for you
I will not fight for you
I will hold your burning flag in my hand
— Coup d’etat by Refused
History is filled with two types of people: the ones that want to maintain a comfortable status quo and the ones that want to move humanity forward.
The maintainers of the status quo tend to be the ones on top of the food chain. The ones that want to bring humanity forward are usually the ones who are questioning the laws, the mechanics, the inner workings of whatever is going on at that time.
Over the centuries the ruling classes set up schemes to structurally keep everybody else out. Over the same centuries though, they had to cede step for step that more and more people could benefit from the privilege of an upper class.
There is this phrase “on the wrong side of history”. We use it when we look at societal issues that are discussed at a certain point, today, or in the past. Democracy, slavery, racism. A contentious issue will always have people arguing either side, and over time we see who got it right. The others are on the wrong side of history.
Giving the same opportunities (at least on paper) to women is a novel concept as of as little as 100 years ago and is still not evenly spread around this planet, especially in the western world.
The USA have built a whole country around that idea that you can work your way up from the lower classes to power, fame and wealth. Under the hood, however, you see the same structural oppression of the lower classes that you can trace through the middle-ages, Rome, Athens and ancient Egypt.
For the most part, I think it is obvious what history tends to align with: making things better for a large group of people at the expense of a few privileged ones.
Let’s Talk About Money
Money is what enables business, enables society, and thus enables progress.
People who manage money should never be the ones making final decisions or define culture, work or otherwise. However, today, they dominate education, culture and business. And we all suffer for it.
The focus on money today is obscene. Just look at some of the language around it: “money works”, bullshit, money does nothing but representing a value, people work.
People get compared by what they are “worth” as if merely having money has any meaning. Only if you do something good with your money, you are an asset to society, are worth something.
We allow current generations to be exploited for short-term capital gains, while feeding the next generation the same ideals and thus manifest this whole travesty into our culture for generations to come.
Over the past few decades though, we have forgotten that, because it enables things, money is a utility, and yet we treat it as means in itself.
We need to get back to understanding that money is a tool and that people who manage money are enablers for the ones who push for progress.
This is our Time
A few weeks back Dennis Plauk was on German TV. You have likely never heard of him and likely never will again, but his appearance made a distinct impact on me.
He was on a national TV news show, giving his expert opinion as the editor in chief of a music magazine.
More importantly though, THAT DUDE WENT TO MY HIGH SCHOOL. He was a year ahead of me, and from the fifteen hundred people that went to that high school, he was one of the very few that made an impression that lasts until today.
Seeing him on TV solidified a feeling that I had for a while. My generation, I was born in 1982, is gearing up to be the generation that runs this world. We are gradually being passed the baton of history to carry it all forward to make a mark. If we so choose.
If you’d ask me to characterise my generation in one word I’d choose apathy. I see early 20s today that have a much keener sense of making their mark in world than my generation ever had.
This is our time. Let’s make our mark.
Of Privilege and Social Responsibility
My industry is high-tech, software to be precise.
My job is to take ideas that are of certain value to certain people and tell computers how to provide that value.
With “job” in the getting-paid-for-it sense, I get to do what alchemists have failed at for millennia: making Gold. Making Gold out of thin air (and coffee).
On top of performing alchemy on a daily basis, the people in my profession get treated like unicorns. We get to choose what we work on, when to work on it, for how long to work on it, where to work on it. And if we bloody please so, we take a week off and hang out in Dublin and speak at a conference along with and in front of like-minded unicorns.
In order to do our job, or taking a step back, in order to live, we rely on a modern society built on people who “do their job”, whichever that one is. On any given day, we rely on people who maintain the civic infrastructure, water, power, waste, provide us with ways to purchase food in various forms, people who clean our homes, offices and gardens, people who cut our hair, who drive us around town and many many more that we don’t even see or interact with.
I don’t suggest that these people can’t or won’t find pride, honour and fulfilment in their work, but they sure have to live with a lot fewer every-day liberties than the lucky bunch that is us technologists.
We are privileged. Privilege is when you don’t see a major problem with the world around you. When you don’t understand why someone or even a large group of people would be angry, after all, they all grew up here, they could just have done the same things that you did and they’d be fine.
Privilege is not something I was particular aware of growing up. That’s usual for people who grow up privileged. Sure, there were things I wasn’t particularly satisfied with, but looking back, my parents had steady jobs, I went to an o-kay school, we went to France for our summer vacation, in one of the two cars we had.
Understanding privilege was, for me, a very grown-up thing to do (yes, I still use “grown-up” in the sense that I don’t think I really am one).
My first reaction when it dawned on me that I did have a sort of privilege was shame, I was better off than others through no fault of theirs or feat of my own. That was a bitter realisation to make. In fact, it made me not think about privilege too much, which is yet another privileged thing to do (but I wouldn’t learn this until later).
I finally came to terms with my position when I understood that privilege is not inherently a bad thing (and if you tell me it is, fuck you for shattering my self-view). While it is very easy to exploit privilege, by simply doing nothing, or actively building upon your advantage to further it to the disadvantage of others. But, and here is where things turned around for me, you can use privilege for good.
Now, as a unicorn alchemist and accepting my privileged position in society, I understood that I do not only have the ability to use my privilege for good, but that I have a social responsibility to do so.
And given all the liberties we are given through our privilege, we don’t only have a responsibility of turning our powers into good, we have an exceptional opportunity to make this world a better place.
How to Revolt
If we are looking at the ingredients for a revolution, we are half way there. We have the motivation, the opportunity and the timing. Let’s find out how to revolt.
An entrepreneur’s job is to find out how to create and extract value from current historic, societal and economic circumstances.
At its core business is a-moral. Money changing hands for goods and services does not care who made what under which conditions.
Yet, business gets to define so much of our culture. Our life revolves around working five days a week, working 40+ hours, working to maximise shareholder value.
There is plenty of scientific evidence that this status quo actively harms people, physically and psychologically, and as a consequence, holds back society. People get sick from too much work and stress, costing the healthcare systems more money than they can handle and people are no longer capable or able to do any good.
Business at large, “capitalism”, is a fantastic tool to achieve great progress at scale, but business for business sake, or profit for profit’s sake can never be a cultural goal, only a side-effect.
Yet, as it has always been in history, the people in charge, the privileged ones, keep this up for their own benefit.
We live in a culture that teaches everyone that you need a job to be happy, to be a useful part in society, to work hard to be someone.
The way this work “un-ethic” is engrained into our culture is deeply vicious. Through media and entertainment the people who are interested in keeping this status quo pay artists, filmmakers, TV producers, actors, musicians etc. vast amounts of money to keep retelling this story, a story a young person born into this world has little chance of escaping.
We need to prop up a counter-notion: the idea that the working-hard story is just that, a story told by people who benefit from you working hard.
We need to let life define work, not the other way around.
Revolting Daily: An Experiment
I don’t have a tried and trusted system, but I’ve started to experiment. Feel free to follow my ideas, or build upon them or experiment with your own ideas, and tell us all about it. Here is what I am doing:
Optimise for happiness. Nothing that is supposed to bring society forward is worth doing if it makes people miserable.
De-emphasise “work” as the defining constant in life. “Life” is the defining constant in life. We should be able to turn enough profit to support life and growth on working two days a week. Encourage that the rest of the time is spent volunteering, teaching kids to code, work at a charity, or just enjoy life with friends and family.
Get the money-people out of the decision line. Make them advisors, make your CEO the Chief Happiness Officer, or even better, turn the leadership of the company over to a non-profit that is bound by ethical statutes that will always override short-sighted monetary decisions.
This is a good start, let’s get that going and then address the next steps:
- Figure out how to make all this available to less unicorn-heavy sectors. Run society that way, not just high tech.
- Figure out the balance between being able to create a sustainable, moral, business and being on the right side of history.
- Spread the word, inspire others to follow your lead. Learn from other’s successes and mistakes. Find giants to stand on.
There are about five billion years in this solar system in front and behind our lives. This is our one shot. And we can make a difference.
We have an exceptional opportunity to make this world a better place.
We are in a perfect position to lead change.
Now is the perfect time to start leading that change.
The culture of business today is on the wrong side of history.
Let us change that.
Let us start a revolution.
This essay was created from the notes for my opening talk for the 2013 edition of brio. My thanks to Lena Reinhard for her invaluable editing help.
Here’s my battle tested recipe for giving amazing technical presentations.
Have a Topic / Know Your Topic / Know Your Audience
This recipe assumes that you have something interesting to talk about. It assumes you know your topic, the better the better, but you don’t have to be an expert. Especially, don’t sweat that there might be someone in the audience that knows more. Don’t be afraid to say “I don’t know” to questions, deferring it to looking up the answer.
You are on stage, this is your show.
Performance > Content
Again, you should know your stuff, but more important than stating what you know is how you state what you know. A presentation in front of an audience is 90% performance and 10% content, or 80/20, doesn’t matter really.
You don’t have to be a great entertainer, but people look up to confidence, be bold. If you are not usually bold, assume a stage persona that isn’t actually the frightened you. Put on a masquerade, a show for the masses. It is totally okay for you to be frightened, but the audience need to never know.
And never forget, even the most professional speakers, musicians, anyone on a stage, is frightened and nervous before the gig.
With that out of the way, here’s my recipe for giving kick-ass technical presentations, based on my experience giving and seeing many good and many more bad technical presentations. My thanks to all the speakers that I could learn from and to anyone who has ever given me constructive feedback.
Say hi, introduce yourself, give a bit of a background, say thanks for being let on stage. Build empathy. I am one of you, we share the same problems/goals/values etc. We understand each other.
Grab your audience’s interest. Make them listen, ask intriguing questions, or make some outlandish statements that you come back to later for clarification. Build enough suspension to keep your audience’s attention.
Manage expectations Here’s what’s going to happen, and this is why it’s relevant to you.
2. Show & Tell
Blow the audience away. Answer the questions you asked before, back up the outlandish claims you had. Sing, dance, do whatever it takes to get your audience to drop their jaws, two, three times.
If you show off some software, parade it around, try a live demo, or point out important snippets and results. If a demo is hard, pre-record and talk over a video.
Start with your strongest point first.
Make weaker points more relevant by binding them to the previous point or using them as a segue to the next one.
Have a narrative that carries you through your talking points.
End on something concise your audience can tweet.
Here is where you get to explain the magic. You get to dive into technical details, you get to explain the design philosophy behind your topic. This is where you win your audience’s hearts.
Say thank you. Take a breath, you are done.
The Q&A serves multiple purposes:
it gives you feedback on how well the talk went / how relevant the topic was to your audience. The more and the harder the questions, the better.
it gives you feedback on what to do better next time. Maybe there is a point you forgot to make, a connection that you didn’t walk the audience through, maybe there is a technical aspect that many are interested in.
it gives you an opportunity to do a deep-dive into a topic that you only mentioned briefly, or not at all, before.
Know the rules, then break them.
I’ve heard before: What’s the harm? Why not at least try to include ‘Hey there!’ if every little bit helps? Somewhat of a fair point. Using a word does no harm in the same way a daisy does no harm to your front lawn, or a shade of grey does no harm to your shadow.
Here’s where I’ll join the rest in unquantifiable hoodoo: I believe words are aesthetically damaging. I believe a white space free of words is more pleasing to the eye, more easily consumed, and thus more likely to be retweeted (which is a proven way of growing your audience).
These are my notes from my Node Dublin talk about “Open Source Communities”. I don’t think I did the title justice in the end, but I’ll keep it for consistency’s sake. The video shows that I was fairly nervous giving the talk and I wasn’t quite happy with the sound engeneer and my snouting into the mic while breathing. For those of you who can’t stand to watch, here are the notes.
I am Jan Lehnardt: @janl, Apache CouchDB, mustache.js, JSConf EU.
Open Source Communities
I was gonna look at Node through the lens of other Open Source communities I had been involved in and conclude that by avoiding most of the mistakes it became the most exciting community of all time.
Lukily Isaacs and Mikeal made a way better case for why Node is successful, and why the key success is not yet manifsting itself in dominating anything, but setting us on a trajectory to disrupt all of IT (and if you believe Clay Shirkey— and you should — disrupt society & politics).
To reiterate, Node’s core accomplishments are:
- Small Core.
- Clear Module Abstraction.
- NPM (I add).
And finally, Node’s whole premise is to be good at building networked servers.
Not be an immersive development environment, like .NET, Java, Cocoa, or frameworks like Rails, Django & the like.
It turns out that the concept of a neworked server is a really good abstraction for building all sorts of software.
So by trying hard to avoid being everybody’s darling, Node focussed on one thing and perfected that thing that makes it everybody’s darling.
(My dayjob is working on Apache CouchDB. It is written in Erlang.
The whole programming paradigm of Erlang revolves around building miniature networked servers that do one simple job for robustness and fault tolerance, easy of reasoning and finally parallel execution, and to put them together in a way that creates bigger software, not just servers.
Many other components of desktop and mobile software can be expressed as being a networked server.
Heck, even the original definition of OOP is independent entities that hold data and have behaviours attached that would send messages to each other to invoke that behaviour.)
With the keynotes yesterday morning and after looking at all the fantastic technical talks we saw over the past two days I hope you get a sense not only for how succesful Node is, but also why, and why that is even more important than the current success.
Taking a step back.
We can also control flying quad-copters and robots and power moblie experiences.
This is where this talk becomes emotional.
We will be powering the ongoing digitalisation and networkification of the world, of commerce, of governments.
Not the enterprise Java folks, not the PHP people, not Rails. Us.
That isn’t to say the others won’t have their place, but we’ll have lion’s share of things to do.
To invoke Clay Shirky one more time: they are from a time before GitHub.
Taking another step back, a couple in fact.
We, the programmers, the designers of the world, we have an incedible gift.
A gift that nobody else has, and many have tried to gain for millennia: We can create gold out of thin air (or, maybe out of thick coffee).
A show of hands, who here in this room considers to be in her or his dream job? We get to dictate the conditions of our employment.
We dictate salary, we dictate working hours and we dictate what we want to work on. Nobody else has that freedom.
Yet, we are relying on a society that “does their job”.
Many of the speakers here have come from far away to share their thoughts with us and to hang out, to have fun.
We came by plane, rode in cabs, staying in hotels, or friend’s houses.
We enjoy coffee and lunch here and in the city, use public transport.
We build upon education, rely on medical service.
All of it built & run by people who do their job, that do not get to dictate salary, working ours or what to they fancy to work on.
We live such abstracted lives that we can concentrate on creating immense value from literally and figratively nothing.
On top of that we get paid ridiculous amounts of money (absolutely and in comparison) to do so.
It is absolutely fabulous, and I love every minute of it. It is an immense privilege that I get to live this life. A life I choose.
But reflecting leaves me with a sense of responsibility towards my fellow people.
Those who don’t get to burn through billions of venture capital money to play table tennis all day.
Not the ones that actually manage to return an investment and make the obscenely rich people even richer.
At the expense of innovation, at the expense of personal freedom, prosperity, security.
Jeff Hammerbacher said: “The best minds of my generation are thinking about how to make people click ads, that sucks.”
I agree and I feel responsible to build a future, technologically and socially that values humanity over profit.
I hope you feel that responsibility as well.
(We Are) The Future
Given the premise that we, the people in this room, are on the verge of setting the stage for the world, what can we do to make sure our reign will be rememberd as a good one?
And given that we accept that through the way things are set up today, that we are in an incredibily privileged position that comes with a social responsibility, what should we do with it?
I’m not here to try to plaster my own agenda over you. Instead, I’m sharing a few points of view to encourage you to actively think about your own.
Where a non-profit organisation owns a for-profit company.
The non-profit keeps to set the goals for the company, while the company uses capitalism, markets & money as a tool to build stuff that benefits everybody.
Firefox, Persona (née BrowserID), Do Not Track. All build expressly against finanical benefits of one single institution.
Why don’t we have more organisations like this?
Nerds imagined and built Mozilla.
We can do, too.
Imageine a mobile carrier, that is set up like Mozilla.
Globally run, with the user in mind, engaging the community for support.
Imagine sane data-plans, free roaming between GSM technologies and community provided wifi.
Net access for everyone, cheaply, not bullshit telcos that just screw over everyone, when their job is administrating a public resource.
Let’s build a mobile carrier like this. You and me, let’s do this.
Better yet, let’s encourage others to do this as well, let’s build ten, or a hundred.
Let’s take this idea and apply it to many many more areas of life.
Or, in Mikeal’s footsteps, defy organisations, just build stuff in losely coupled communities that circumvents and dominates all the current institutions who are set up to exploit, rather than support us.
Let’s hack and fork business models and community patters as freely as we do code.
Let’s work on problems that matter.
Let’s work at a scale that makes an impact.
The future is ours.