Why I don’t feel like presenting at conferences any more

I’ve delivered a handful of talks over the course of my career and my experience tells me that there are better ways of getting the message out there. Ways that require much less time and can reach bigger audiences.

Here’s how I believe that the different mediums compare to each other with regards to effectiveness, in ascending order:

  1. Books
  2. Face-to-face discussions
  3. Conference talks
  4. Podcasts
  5. Conference talks that are recorded and available online
  6. Conference workshops
  7. Lightning talks at local meet-ups
  8. Blog posts (hi!)

A poor return on investment

I like my presentations to be of a very high quality, so I tend to work hard to make them be visually and structurally good and delivered in an interesting. This process is enormously time-consuming: I reckon I spend 20-30 hours preparing a 60 minute talk.

I can’t point to how I’ve benefitted from this other than that I’ve gotten better at giving presentations and gotten a few pats on the back. I haven’t made a dollar from speaking (barring the free conference ticket). I’ve not made any lasting and deep contacts with interesting people as a direct result from speaking. I’ve never gotten a job offer based on a presentation I’ve made.

I write blog posts every now and then and some of them are read by thousands of people. One hour spent on a piece of text that can reach a potentially large audience makes a lot more sense than working for days on a talk that maybe a few hundred people will see.

I’ll stick to writing, thank you very much

I’d have to have a very good reason to ever sign up for speaking at a conference again. I’ll write my blog posts and use the time that I don’t spend on rehearsing a talk to help the poor or whatever.

Ps. Please note that I’ve only presented at a very small number of conferences, and most of the times I’ve delivered lightning talks. As far as speakers go, I have very little experience and therefore your mileage may vary. Ds.

jQuery Mobile experience report

I am currently working on a mobile-optimised web app and have been doing so for the last month and a half. In order to get widgets like sliding panels, searchable drop-downs etc for free, we started looking for a JavaScript framework that would make our development go faster.

I evaluated, rather hastily might I add, jQM (jQuery Mobile), YUI and Sencha Touch and found that jQM seemed to hit the sweet spot of giving us a lot of functionality for free but without being very invasive. Other people reported that for e.g. Sencha you need to accept a different way of writing your markup, whereas working with jQM should feel more like your are just enriching your HTML.

Enriching your DOM

What I didn’t understand until later was just how must extra stuff jQM added, it dynamically inserts a lot of classes and divs in your HTML (n.b. I intuitively FEEL like this is what happens after using it for a few weeks, but when I inspected my HTML to find good examples of this I didn’t find anything horrendous).

There are advantages to this approach; sites work without JavaScript and you write standard HTML. But the major disadvantage is that it takes a lot of mental effort to reconcile what HTML you had written and what HTML you see in the browser inspector when trying to understand why the heck something looks the way it does. And you need to fix it, which brings be on to my next point.

So much cascading

We have constantly felt the need to write ugly CSS hacks, like very chatty/aggressive selectors to get around the jQM selectors on the elements that it adds to the DOM. I didn’t want us to start modifying the jQM stylesheets themselves, since that would make upgrading to a newer version much harder. But after spending too much time on writing said hacks, we gave up and are now making changes directly in jquery.mobile.css.

To conclude

I would absolutely use jQM on a project where the mobile website’s design deviate very little from the examples you can see on demos.jquerymobile.com. When speaking to our designer, he mentioned that other teams he had worked with echoed this statement.

If I was to work on a project with a more customised look and feel, I’d probably settle on using small plugins and/or write my own instead. I believe that this would have made us move faster on this particular project, which used a bunch of fancy solutions for how to fill out forms etc.

Local and global

The opposite of “local” is “global”. Many lean and kanban enthusiasts, myself included, look down on individuals and teams trying to improve their efficiency, calling it “local optima”. The answer is to instead look at optimising the whole, but that whole tends to be at a company or organisation level. Even if the organisation is a huge multinational one, it’s not global. Just because you’re taking a few steps back doesn’t mean you’re seeing the whole picture.

As far as I understand (and I don’t understand much) systems thinking seems to be confined within the system of producing and manufacturing. It doesn’t take into account the environment, the poverty and suffering of millions of people, or what the world will look like three generations from now. To me it seems like it’s not “systems thinking” as much as it is “a system thinking”.

These are things we rarely discuss in the tech community, but I think we should. We live in the golden age of IT. We can create enormous value out of ideas, a bit of electricity and a few thousand keyboard strokes.

Problem solving can never be morally neutral. What did you disregard to solve problems today?

Philosophy for the software engineer

The weekend is here. You now have the time to sit back and think about what you are doing with your life. How much of your time is spent pondering this important question?

“The man who has no tincture of philosophy goes through life imprisoned in the prejudices derived from common sense, from the habitual beliefs of his age or his nation, and from convictions which have grown up in his mind without the co-operation or consent of his deliberate reason. To such a man the world tends to become definite, finite, obvious; common objects rouse no questions, and unfamiliar possibilities are contemptuously rejected.”

- Bertrand Russell, The Value of Philosophy

The reason why I’m asking is because you have this remarkable skill that nearly everyone wants to put to use in their organisations. But so much of our potential is wasted on work that, in my mind, doesn’t make the world a better place.

“The best minds of my generation are thinking about how to make people click ads”

- Jeff Hammerbacher

“To be true to yourself, in this problem-resolving business, you must consider moral questions before you get close to a solution, or even a definition, and thereby begin to lose your sensibility”

- Gerald M Weinberg and Donald C. Gause, Are Your Lights On?

As a software engineer, you have a unique possibility of creating something out of pure thought. Of going almost anywhere and doing almost anything you want. Are you?

We should all just decide on JavaScript and solve the interesting problems instead

Our endless bickering over the merits of different languages and paradigms isn’t all that productive, nor is it very interesting. You’re not a Ruby/C#/Java/Elixir developer, you’re a goddamn problem solver. Remove the programming language from your LinkedIn/Twitter bio, that’s not who you are.

All the things that make other languages and platforms more or less sexy are 90 % community and culture. All the loudmouths in the developer community hype things that aren’t “enterprise”. So only 10 % of the sexiness is the actual language*. And the goods news are that we humans can change culture, that’s what we do best when we really want to.

* except for Ruby of course, it is so beautiful. But I digress…

The time is right

We’re now at the stage when JavaScript is hugely popular and a lot of innovation is taking place in that community. Also, it’s a pretty open language, i.e. it’s not owned by Oracle, Microsoft or IBM. We have the chance of running the same language on the front-end and the back-end. Heck, you can even use it as an officially supported language to write FirefoxOS, Ubuntu Touch and Windows 8 desktop/phone apps.

Easier to find developers, easier to find a job

When the language barrier is removed, you can choose look for the things that matter in potential recruits and employers. Like cultural fits/misfits and interesting problem domains. You know, the hard stuff. It’s not automatically good just because it mentions “Scala”, “F#” or “Objective C” (or “agile”, “XP” or “kanban” for that matter).

It’s a pretty good language

Yeah, I don’t love JavaScript. It’s decent. To me, as a Swede, JavaScript feels like English. I don’t love it, but it’s the de facto business language in many parts of the world. Even though I could probably express myself much more poetically and succinctly in Swedish, the benefits of talking the same language as millions and millions of other people far outweighs that.

“The downsides?” you ask

Sure, there are no silver bullets, just a bunch of trade-offs. Here are a few:

You can’t easily talk about every problem in one language

Whenever I try to explain the small cultural differences between Australia and Sweden, like the concepts of “lagom”, “fika” and “allemansrätten”, I struggle with coming up with English words that do them justice. But most of us don’t need to understand those tiny concepts, they only affect 9 million out of the 7 billion people of this world.

Much in the same way, most developers I meet to aren’t solving very exotic technical problems. They’re solving business problems, like:

  • understanding what is the most important next step for you
  • figuring what your customers might need
  • deciding on what you need to say no to in order to survive as a business

I think that for the most of us, JavaScript is good enough to solve these problems.

JavaScript is becoming fragmented

Now that CoffeeScript is a real language (and ClojureScript is trying to become one), that adds a few weird jazzy chords and beats my “one language to rule them all” tune. But maybe having JavaScript as a common platform is almost as good as having it as the only language.

What about multi-core? Parallelism? Concurrency?

I don’t know yet, we’re still not sure how to approach this problem. Some people use Clojure, Java or Erlang to run all cores at full utilisation. Some just throw a bunch of cloud servers at it. Some find that all the latency comes from the database calls anyway.

A bit of non-blocking here and callbacks there doesn’t make this problem go away. But it is certainly not beyond the realms of possibility that we could solve this problem with JavaScript.

As always, the pendulum keeps swinging

Like so many other things, fads in IT go in 10-20-30 year cycles. In the 90′s we all hoped for Java, then the polyglot/NoSQL movement came along. We might be ready for another round of badmouthing the language and platform fragmentation. I just hope that we get together and solve the hard problems instead of declaring our geeky love for things that don’t really matter.

 

Editor wars. Ugh.

Yesterday I noticed that the “Sublime Text 3 Public Beta” link was on the front page of Hacker News. And now, 21 hours later, it is still there, 226 comments and all. I know we love our tools, but sometimes all the energy and time put into editor discussions dishearten me.

Arguing that an editor makes a big difference to productivity feels a bit like choosing your commuter car based on how well that model performed in the World Rally Championships. Sure, it might be fast, but was that the right kind of fast? Would you have gotten to the office faster buy having a standard car but with a GPS, so that you didn’t take any wrong turns? Or is speed not the matter, should you perhaps carpool to save money instead? Or can you take the train and do some work from there, while traveling? Or should you work from home instead, freeing more time to be with your family and/or friends?

You can type faster with an editor that you like and know more. But does it make you think better? Be more creative? Collaborate better with your teammates? Understand the user requirements better?

That being said, I do love using Sublime. Mainly because it looks good, and tools that look good make me happy.

RubyKaigi 2013 – great conference, but I probably wouldn’t go next year if I was a woman

RubyKaigi 2013 is over and it has been a very positive experience for me, I applaud the organizers and the attendees. But one incident left a bad taste in my mouth.

During a presentation, the speaker mentioned that he wanted us to come visit a conference in Taiwan next year. He gave us many good reasons of why, but one that stuck with me was that he said “Taiwanese girls are ‘kawaii’”. Kawaii is a Japanese word that means “cute”.

This was said in a joking manner. The largest room in the venue, full to the brim, lit up with cheers, applause, and laughter.

At a conference where I estimate at least 95 % of the attendees are men, how will such a thing affect how women feel about coming next year? Would this comment and reaction give the impression that this kind of conference is for men and women are meant to be looked at?

Note that I don’t mention who the presenter was. I don’t think he is a bad person, he seemed very nice. It is not only what he said that is the problem, but how almost the entire audience reacted. This is a problem in our community culture, not the fault of a single person. So I see it as my duty to bring it up, so that we can learn from it and improve. It would be much worse if I saw a problem and kept quiet about it.

Many people at RubyKaigi are also involved with RailsGirls. So there is awareness that female participation at Ruby conferences and, more importantly, in the programming community, is a problem.

I know, I know. This is not a DongleGate, nor is it a “Perform Like a Pr0n Star”. This was a minor hiccup at an otherwise great conference. But since we already have so few women here, we need to be really careful not to scare off the ones that show up.

If I was a woman, I’d feel a bit alienated. Wouldn’t you?

I’ve moved to Australia to write code

September last year my wife and I moved to Australia. I work as programmer at an awesome company called Cogent (join us!). We’re a small consultancy and product shop in the beautiful, sprawling and “Look at the size of the biceps on that kangaroo! This really is on the other side of the planet!” city of Melbourne (pop: 4 million).

accra

Accra, Ghana (source: Wikipedia)

To start from the beginning: late 2010, fed up with the cold and darkness of Sweden and its people, we moved to Ghana. There I worked as a developer at ExplainerDC, another small consultancy and product shop based in the sprawling, messy and “What is that smell? Oh, just the open sewers everywhere and people burning trash in their backyards. I really am in Africa!” city of Accra (pop: 4 million). Living in West Africa was an awesome experience: the weather was fantastic, Ghana is safe and stable compared to many neighbouring countries, the people are very kind and easy going, and beer was cheap. But after a while my wife and I started getting fed up with power/water/internet supplies coming and going, policemen requiring bribes all the time and nothing really turning out the way you’d expect. Plus, being white, having long curly hair and a beard in and very christian African country means that people will yell “Jesus!” (or worse: “Hey, Judas!”) after you everywhere.

melbourne

Melbourne, Australia (source: Wikipedia)

So after 18 months there, I went through a bunch of Skype interviews with companies in Australia and the US (boo US immigration policies, might I add), we packed our bags and flew down under. I haven’t regretted it so far, I love this place.

The process was super easy: Cogent sponsored my four-year e457 visa which also means my wife could tag along to work and study as she pleases. It took roughly a month to get everything sorted, compared to 18 months to still not have everything sorted in Ghana. A big bottleneck was us having to send over chest x-ray scans, since African TBC is not welcome here.

Life in Melbourne is very different from that in Accra, it is a lot more like my native Sweden. The hierarchies aren’t so strict, people curse the public transport system, the money is good and beer is expensive. It is safe and reliable, maybe a bit too reliable. Once I got used to everything going to shits all the time in Ghana, a stable life can seem a bit boring at times.

One mistake that I made and many other do as well: I assumed that the entire country would have nothing but sunshine all year round. Melbourne has certainly slapped that misconception out of me, since it has four proper seasons. No, not in a year. In a day.