The Open Web, Fuck Yeah!

Some douchebag wrote a thought-leadering rant about the pain of using the open web vs native apps – this is my rebuttal.

The problem with that rant isn’t that it’s false.

The pain is real and the challenges of building amazing web experiences that can compete with native apps are something every company should take into account. That post never claimed it wasn’t possible to build great web experiences, just that the cost was higher and required more developers of higher skill which of course, translates to higher cost and higher risk. All the great innovation in the framework space like React Native solve the overall front end architecture problem, but not the bits and pieces of the actual experience where shit meets fan.

The problem with that rant is that it’s incomplete, and largely misses the point. Continue reading

The Fucking Open Web

Nine years ago I was part of an idealistic group of web advocates looking to free the web from the tyranny of the big silos. We saw web identity as a core part of the web’s future and fought to build it with web standards. That’s how I got sucked into the delusional world of open standards and web specifications. We appealed to other developers working at the big co.’s to adopt our work through any means necessary, from high ideals to public shaming. And we got some traction. Aren’t you glad everyone is using fucking OAuth now? (That group, btw, has mostly sold out taking high paying jobs at Facebook and Google, and have not heard from since).

A decade later, I’m the founder of a scrappy startup trying to reinvent web conversations. We have limited resources and a staff of almost 3, struggling to tame this fucking web. It is amazing how hard it still is to build innovative, quality web experiences. It is very much possible – there are plenty of amazing web developers building mind blowing experiences. The problem is, I can’t afford to hire them, especially since a big chunk of them work for Google and Facebook.

It’s hard running a small business. No matter where you stand in the political spectrum, the amount of regulation an American business has to deal with is fucking insane. From incorporation, liability, accounting, human resources, and taxes, the system is rigged for those who already succeeded. We have 2 full time employees and we spend over $6000 a year to make sure we comply with all the payroll and labor laws across multiple states and the federal government. But at least government regulation is a known, predictable cost.

The web on the other hand. Fuck. Continue reading

How to Use Open Source and Shut the Fuck Up At the Same Time

First, I do not speak on behalf of the hapi.js community, only for myself. hapi.js is a friendly, diverse, tolerant, and welcoming community.

We have a serious problem of user entitlement in open source. We have now seen many lead maintainers quit their own projects over constant abuse.

This affects everyone. Over the last year I have stopped supporting hapi users. The tone and attitude of open source users have become so negative, so demanding, and so persistent that I’ve decided I’m just not having any of it. I still write plenty of code, and most of it published as open source. I just don’t talk about it anymore. The only people who get my attention at this point are other hapi.js lead maintainers and a select group of people who get my “platinum support service” via private channels. This premium support is free and is offered to friends and people I highly respect in the community.

As for everyone else –

If you don’t pay me for my services or contribute meaningful value to me personally, I don’t owe you shit. You are not my customer and you are rarely right. Open source is not an invitation for harassment and making demands. If you choose to interact with me about my open source work, remember it was your decision and you can stop interacting with me at any time. No one is forcing you to use my code. I am giving you a lot of free modules to do with as you wish. That license does not extend to my time or my attention.

I am a big supporter of Code of Conducts. Every project where people interact with one another should have one. What I am not supportive of is harassing maintainers to adopt one. The only right approach here is to nicely ask the maintainer if they would consider adding a CoC using a well establish template (ideally from a closely related project), and if they say no, to move on. Enough with the fucking indignation, the public shaming, the boycotts.

Same goes for documentation. I see more bitching and entitlement around quality documentation than any other issue. You are not entitled to good (or any) documentation. If you don’t have the time to read the code, the tests, and the examples, shut up or fuck off. I don’t have the time to explain shit to you. I document my work for my own needs. I publish a lot of code without any documentation. Don’t ask me to add some. The only right thing to do is to ask if I am willing to take a pull request adding or improving the documentation. That’s it.

You know those people who leave product reviews on Amazon on items they will never buy? Don’t be those fucking people. If an open source project is not working out for you, just don’t use it. Don’t go posting on Twitter how shitty it is and how dickish the maintainer is. Just move on. Publishing code on GitHub is not an open invitation for abuse and humiliation. Every time I publish a new breaking release of hapi, people who have never (and will never) use hapi post shit about it on Twitter. What the fuck is wrong with them?

Why am I posting this? Why am I acting up so angry and negative?

Because I can afford to behave like this while other maintainers cannot. I am not going to lose work, reputation, or sleep over expressing these feelings publically and forcefully. However, this is not true for many new, young, inexperienced, or just sensitive maintainers who find themselves suddenly maintaining a popular open source project. They cannot afford to tell people to shut the fuck up or go fuck themselves without doing significant damage to their careers, reputation, or risk diving into deep depression.

I am posting this because someone needs to tell you to shut the fuck up, you entitled asshole.

Why I Do Not Support a Node Foundation

I’ve been aware of the node foundation plans for a while. I have been part of the initial discussion group with Joyent back in May, was part of the node technical advisory board (for a bit), and had extensive discussions about this with pretty much every major players in the community. I have opted to keep my opinions offline until now because I didn’t want my (strongly held) positions to become the “opposition” and add more friction to what was already a pretty messy process. But now that the decisions have been made by both the io.js folks (to fork) and Joyent (to form a foundation), I am free to rant publicly.

For the sake of full disclosure, I am generally opposed to any foundation.

This comes from extensive first-hand experience with participating and forming similar foundations. I was an active participant of the early OpenID Foundation, I represented Yahoo in the formation of the OpenSocial foundation and wrote the intellectual property and working group process documents, I was a founding member and first president of the Open Web Foundation, and I had extensive engagement with the W3C organization. These experiences taught me that foundations are an unnecessary evil.

My main problem with foundations is that as soon as money is involved, the organization takes on a life of its own, and the mechanism will do anything to sustain itself. The first words out of IBM’s Todd Moore’s mouth about the foundation was that the next step is going to be to hire an executive director. I don’t know if Mr. Moore was expressing the position of the foundation or his own agenda but this is exactly the kind of misguided attitude that dooms such efforts.

Consider this – once you hire people to work for the foundation, these people’s livelihood depends on the foundation’s financial stability. This means they spend a significant amount of time raising funds and ensuring their paying members are happy and getting value out of it. No matter how much you try to balance the needs of the community the foundation was allegedly created to serve, it inevitably becomes a voice for its moneybags.

This is not to say all foundations are evil or unnecessary.

There are many examples of foundations that add value and support their communities effectively. The important distinction is what triggers the creation of the foundation and who are the main players behind it. In the node foundation case, the triggers were lack of technical progress on node and some concerns about ownership of the node trademarks. Both of these issues could have been quickly resolved without a foundation.

The great thing about the io.js effort is that it grew out of strong frustration with specific shortcomings in the Joyent process. Namely, the governance model, the lack of code of conduct, the sharp drop in contributions, and a release process that was predictable in its unpredictability. These concerns triggered the initial discussions about a foundation but when it came time to actually address them, the io.js community realized that all they needed to do was to simply focus on fixing things. They didn’t set a foundation, raised money, or registered marks. They simply created the work space needed to get shit done.

On the trademark side, Joyent has long claimed that their work to protect the node marks provided an important service to the community and to node. I disagree. I think trademarks should only be used to protect business interests, not to put someone in a benevolent position to decide what’s in the best interest of a community, especially one as diverse as node. I don’t think a node trademark adds any value. What exactly do we need protection from?

(As an aside, I’d like to point out that my disagreement with Joyent on the trademark policy and foundation plans does not take away from my gratitude and appreciation for everything they have done for node and the huge impact their support had on its success so far).

Node is a subset of the JavaScript community which is flourishing without any active trademark protection. Can you imagine what would have happened to the language and innovation (especially the recent work) if the Oracle corporation who owns the mark for JavaScript dictated to people what is a certified version of the language? I think there is value in someone registering important marks (and then not defending them) only so no one else can do it for evil purposes. Joyent owning the marks and not protecting them would be the ideal. While Oracle owns the JavaScript mark, I cannot find any record of that mark being used or enforced.

Now, I can understand why IBM, a company who never turned down an opportunity to exploit and make a buck wants a foundation. It’s how they manage their relationships with communities to promote their business agenda. I am not calling them evil – just that as a large corporation with a lot of history, I am confident their best interest is not aligned with mine. I would like to note that I am no hater of corporations – I’ve happily worked for Citi, Yahoo, and Walmart to name a few.

What I cannot understand is why the community should want a foundation. What will a foundation provide that we are not already doing a fantastic job at? I am hearing foundation supporters talk about events, sponsorship, marketing, and training. Sounds like a lot of people excited about potential funds flowing their way.

Node and JavaScript events are doing amazing with nothing but grassroots efforts all around the world. Companies are eager to sponsor node development by hiring full and part time developers to work on node and io.js. Node is one of the fastest growing technologies without anyone hiring an ad agency or paying for marketing. And between the free node schools effort and the paid offering of many node companies, along with a growing selection of books, training is well taken care of.

When my employer was approached to be a founding member of the foundation, I recommended they pass on the grounds that it adds no value to them. Walmart already employs two node core developers, along with almost 100 developers who use node on a daily basis and contribute significantly to open source. Walmart has also been a top sponsor of NodeConf for the last few years. Since they are not going to double their support, should Walmart direct all these funds to the foundation instead? How would that increase their influence and improve an already fantastic community?

(I do not speak for, or necessarily represent the position of the Walmart corporation).

The only real argument made so far in support of a foundation is the issue of controlling the trademarks. It could have been easily resolved by Joyent releasing them to the public domain and allowing the community and the market to sort things out. I can tell you for a fact that my employer would not have had any problems dealing with the “ensuing confusion and chaos”. Every other platform has multiple flavors competing, some open source and some commercial. What makes node so special it needs trademark protection?

Since the node foundation is a foregone conclusion, we’ll just wait and see what value it adds. Meanwhile, we should stay alert to make sure the sponsoring corporations are not fucking node up.

Got comments? I’m @eranhammer.

Names and Diversity

(Previously titled Nipples and Poop)

Last month I got to experience a childhood dream, one I never imagined possible. I got to sit in the front row and watch Monty Python live on stage. Twice! It was magical. It was the best 40th birthday gift to myself possible – getting to relive being 10 with the fully emotional impact of reliving well memorized moments.

I grew up watching VHS tapes of the Flying Circus. It had tremendous influence over my humor, but more importantly, the way I look at life. The absurdity of it all. The total disregard for institutions and sacred cows. If you’ve ever spent an evening with me, I am sure you’ve heard some fucked up stories about something I did against the very fabric of the institution I was part of – school, army, college, work. It’s who I am.

When I set course on hapi, an explicit goal was to change the way enterprise software is created.

Not just technically, but culturally. The configuration architecture was designed to make it simpler for entry level developers to jump right into complex requirements. The plugin architecture was designed to support a large team by breaking up large monolithic systems into smaller, self-contained parts. And the module names, logos, and references were designed to make people smile and stop taking enterprise engineering so fucking seriously.

Not everyone finds the same jokes funny.

People who grew up loving the Ren and Stimpy cartoons come into the hapi world with a grin on their face. A sense of giddiness from bringing that world of silliness into their day job. Others find it silly and just ignore it dismissively. That’s ok. The trick is to know who you are going to offend and lose as the price of making a joke.

When I was asked to name a hapi plugin that takes automatic core dumps when the process fails, I named it ‘poop‘. It was a perfect pun. We now have a module that very serious ops people at large companies, my employer included, have to use and they have to say ‘poop’ in their very serious meetings. This is powerful change, and it is because it is silly.

Sure, some people find it offensive enough not to use, and that’s fine. It’s a tiny module that is trivial to recreate. It’s not like I named the entire framework ‘doodie’. But the key here is that the group of people who might find ‘poop’ offensive isn’t exclusively any segment of the population. People who take themselves too seriously are not a protected class.

That’s not the case with ‘nipple’.

The nipple module was initially created as an internal component that no one was meant to use except for those working on hapi core. I know this sounds like an excuse for picking an inappropriate name, and it is, but it was also what was going through my mind – a public private joke. And I’m sorry for that.

The problem is, that in the larger context of a community built around the hapi framework, this turns off women from using and contributing to the project. That’s unacceptable! There is no acceptable rationale for creating an environment hostile to any segment of the population.

Creating an environment in which a woman is forced to say “nipple” to a predominately male audience is unacceptable. I don’t think that requires any explanation. It might also create a situation considered sexual harassment in many places. This has nothing to do with political correctness which is all about appearances.

What is interesting about the ‘nipple’ experience is that no one brought this issue up. I’ve had very open, frank conversations with women about making a significant shift in diversity within the hapi community and while other topics came up, this didn’t (even though it turned out to be on their mind). But when I asked plainly on Twitter what did people think, the response was strong, quick, and overwhelming.

The issue only came up as part of my review of all hapi language for potentially offensive words or expressions. I have made it my goal to dramatically change the makeup of the hapi community. I want to create a project that’s the role model of inclusiveness and diversity. The gold standard in how to build the most inclusive and safe environment in open source. Clearly we have a long way to go.

A big part of that includes reaching out to people and soliciting contribution. You change a community by starting with the diversity of its leadership. So I set to contact people from under-represented groups within the hapi leadership. All of a sudden, I felt a bit uncomfortable asking a female developer if she wanted to take lead on ‘nipple’. It stopped being funny in my head.

An hour after asking for feedback, the ‘nipple’ module was renamed to ‘wreck’, a pun on ‘req’ (common short name for ‘request’ in node). It’s still silly. We are going to continue and review the language used around the project and solicit feedback. I am going to continue asking questions, and I am confident we’ll get this right.

Bringing this topic up surfaced some unhappiness with our use of non-descriptive (and outright silly) names for modules. Turns out, a lot of people don’t share my sense of humor. No surprise there. But that’s missing an important point. hapi was created to be silly, to change the stiff corporate culture, one silly module name at a time. We take our code more seriously than most.

Looking at the audience at the Monty Python show, gender diversity was very much present. Silly humor doesn’t automatically translates to a boy’s club environment. The burden is clearly on me (us) to make sure that’s the case, but I am not ready to give up on silly.

I think the line between ‘nipple’ and ‘poop’ is clear, between offensive and silly, but this perspective, of course, is open to a community debate.

Speakers Creativity Budget

Node in the enterprise

TL;DR – if you are producing a conference, please offer your speakers a ‘creativity budget’ to make their presentations better.

I’m been a public speaker for a while. I derive great pleasure from speaking to a live audience, big or small. While preparing for and then delivering a talk takes huge amount of my time and energy, I keep accepting more speaking opportunities because it forces me to push the envelope on my craft. That is, my engineering, creative craft.

I set very high standard for myself (which I usually fall short of, but isn’t that the point?) which include:


  • Talks should be entertaining first, educating second
  • Slides and props are meant to delight and excite, not document or narrate
  • Never repeat a talk (training sessions excluded)

For the same reason I believe most developers should not do design, I contract the artwork for my presentations. Over the past few years, I’ve enjoyed a fantastic artistic collaboration with Chris Carrasco who has created all the artwork used in my presentations. I have also learned to rely on props and other costly production elements. These all play a significant role in enhancing my talks.

They also cost money.


Most of my talks this year cost around $500 to produce. Some much more.

My ReatimeFood presentation cost over $5000 (which was paid for jointly by &yet, me, and the 24 participants who sat the special tables where food was served). My Fuck OAuth talk cost $1200 on artwork and shirts (and it would not have been as good without the shirts – it was absolutely an essential element). The Leek Seed bedtime story at NodeSummit cost $450 to produce (and it will be the main thing anyone will remember from that talk).


Creativity is expensive and I’ve been fortunate enough to have the means to cover these costs out of my own pocket (I rarely ask my employer to cover these costs since they don’t really benefit from them). You can see a sample of my slides on the right and can find some of my decks here.

Quality conferences like NodeConf and RealtimeConf have long offered to cover speakers’ travel costs. They are produced by people who care deeply about quality and they recognize that top speaking talent demands top treatment. Conferences are business after all. But I think we need to go one step further.

I’d like to propose a new speaker benefit: a creativity budget.

Fuck OAuth

This is pretty simple. Each conference will make available a budget to reimburse speakers for costs such as artwork, props, hardware, or other materials that will enhance and elevate their presentations. For most conferences, I would set this at $300-500.

This will work similarly to how travel is covered today, by reimbursing speakers for submitted invoices, or by the event produce paying the costs directly. I would also encourage the organizers to promote and push speakers to spend the money. Almost every presentation can benefit from higher production value and the conference as a whole will be elevated. There is a reason so many people attend conferences these days, just to stare at their laptop all day.

Sled and OAuth 2.0

As for how to fund it, there are many creative ways. Asking for talk sponsorship, selling premium experiences, asking those with means to crowdfund it, or simply charging a bit more for tickets in exchange for a better conference experience. We’ve seen conferences with incredible production values over the last couple of years, but we have not seen any noticeable improvement in the quality of the talks. Let’s fix it.


The biggest misconception about affirmative action is that it puts less qualified individuals ahead because of their gender or the color of their skin. If an affirmative action program results in lesser individuals getting ahead, it is poorly designed. This misconception is based on the misguided notion that we can score every person on a linear scale and simply pick off the top of the list. Human beings just don’t work that way.

In a rich, multidimensional reality, we must consider not only the attributes of the individuals, but also the makeup of the community we are trying to build. Setting a goal of more women, blacks, gays, etc. is pointless. That’s a stupid goal. Setting quotas is mechanical and more likely alienate others instead of bringing them in.

The point is to take a look at your community and ask yourself what would make it more open and accepting? Who are the people at the margin trying to join? Why don’t they feel comfortable and welcomed? This is not an academic, theoretical exercise. You actually have to ask and listen.

In geek culture at present time, that’s often women. When men hang out together, especially at a conference where alcohol is served, they create (without intention or malice) an environment that can be unwelcoming to women. This is something we’ve been hearing from many people trying to be part of our community.

Affirmative action is not about getting less qualified women to speak at a conference at the expense of more qualified men. That would be wrong and unsustainable. It is about finding the best female talent and showcasing it so that other women feel motivated and welcomed. So that everyone will benefit from a diverse range of opinions. When hiring a new engineer or curating a conference, the goal is to enrich the team or experience, not just to add a few skill sets.

I resent members of an outsider group (be it women, blacks, gays, etc.) use their own personal success story as a way of dismissing the real adversity others in their group still face. The fact that I have been very fortunate in my life as a gay man to never experience intolerance aimed at me does not, even for a second, diminish the real and painful challenges facing many gay men today. Drawing a conclusion that just because I found a welcoming home within my community means that it is no longer an issue for others is egotistical and hurtful. I wouldn’t even assume that the geek subculture I belong to is completely beyond bias, given that I don’t know more than a handful of other openly gay men within that subculture.

If you have been successful, you have a responsibility to help those who are still looking from the outside in. If you are a woman or a minority, just showing up can accomplish plenty. If you are gay, vegan, Mormon, etc., talk about it so that others will know and appreciate the unique perspective you bring in from that experience. You don’t need to perform an interpretive dance on stage or put it on a t-shirt. Just mention it in conversation, on Twitter, or in a blog post. Letting others know that they are not alone is an immensely powerful gesture.

The measurement of diversity isn’t in numbers. It is in the perception of those trying to join as to how welcoming a community is.