UTC+5 and Above: My 2017 DevRel Wrap-up

kids

I'm on the developer relations team at Mozilla. The "devrel" role has many parts, but generally means communicating to developers about web technologies important to Mozilla and our mission, and being an advocate for developers in our product development process.

I spent 2017 on typical developer relations activities - coding, writing, speaking - but entirely in UTC+5 and higher timezones. I'd lived in Asia before, and learned how much presence matters in order to learn about a place, and also I wanted to reduce my carbon footprint by not flying back and forth across mega-oceans.

From a "devrel at Mozilla" perspective, I had specific reasons for doing this:

I'll be publishing a series of briefs on what I learned this year about things like mobile payment patterns and the rise of physical computing, the transient nature of mobile web task workflows, where technical decision making happens, the relationship between the web and messaging apps, cultural and community verticalism, timezone bias, app investor ecosystem, ethical echo-chambers, Chinese maker spaces, a survey of noodle soups across Asia, and more.

But first, here's my 2017 in review.

Firsts

It was a year with a few firsts:

Events

In 2017, I spoke at or facilitated 22 events in 12 different countries.

I specifically chose a diverse set of events, in an effort to learn about communities of technology decision-making outside the typical web developer or open source events. I spoke to high school and university students, designers, developers, open source die-hards, startup founders, entrepreneurs, investors, device manufacturers, academics, and people in various levels and roles in governments.

Some of the speaking happened because I submitted a proposal to conference CFPs, some from events reaching out to Mozilla for a speaker, some because I reached out to the organizer asking to speak, some from just being present and offering to speak, and one because I had a drink with a friend who introduced me to another friend whose dad ran a conference and thought I'd be a good match.

I also spoke at, designed and ran or facilitated various trainings, workshops and briefings:

Intent To Ship

Early in 2017 I scratched an itch I'd been having around the "Intent to..." messages on Mozilla's dev.platform mailing list, and Blink's blink-dev mailing list. These "intent" messages are sent when either of these engines is changing their implementation of the web platform. These messages are extremely useful for communication between the browser vendors - which was validated by how quickly the tweets from this account got picked up by key members of Gecko and Blink development teams, being retweeted and favorited regularly.

Now, nine months after starting the account, it has only ~1600 followers, but they are largely influencers in web/browser devrel, or web platform implementors. And the tweets from the account had 375k impressions in the last month, according to Twitter's analytics.

Feed-to-tweet is a module I wrote for easily creating Twitter bots driven by feeds

Infinite-rss is a module I wrote for generating test feeds through URL configurations

Performance

Around the Quantum launch I started some work around performance testing, digging into some low-level performance characteristics of Firefox while running the Speedometer 2.0 benchmark. It resulted in some handy cross-browser automation tooling - I implemented part of Chrome's Puppeteer API in Node.js.

Once it was easy to run Speedometer with multiple browsers and different versions, I added some measurements of things like CPU usage and disk IO. The work isn't done yet, but the most interesting learning yet is that it's beginning to look like the quantity of writes, irrespective of the amount of data, is the determining factor in performance on Mac for this particular test. More to come in 2018 on this.

Speech Recognition

I worked with Andre Natal to take the work done in the Voice Fill Test Pilot experiment for Firefox, and make it accessible to developers both for web and Node.js use.

Voice Fill is an extension, which uses a cloud-based speech recognition service run by Mozilla. It's a private cloud service - not connected to any type of account, and no audio is saved on our servers.

This means that developers who want to add speech recognition to their web pages, apps and devices can do so without having to buy into a cloud provider ecosystem.

I started by modularizing the extension code into a single library for web pages.

I also wrote a module for using the service from Node.js in your own devices - a RaspberryPi with a USB microphone, for example. This was a fun jaunt through the various libraries that deal with mics and recording and codecs and I only cried a little bit. But it works pretty well now, so time well spent.

WebExtensions

I've been writing browser extensions for Firefox since 2005, and in 2017 Mozilla made the biggest change in how extensions are written since they were initially added to the browser: The WebExtensions API. It's a change that sets the stage for Firefox to be much faster and safer while still being customizable. I spent some time migrating some of the extensions I'd written that I just couldn't live without, and also doing some experimentation with making new browser APIs and a few more experiments.

Miscellanous Projects

Writing

While I had a few posts that I really liked and were successful, I really thought I'd write more this year, and am disappointed by how little I managed to publish. I have a huge number of partially completed posts in my drafts folder. I need to create a habit of flexing the writing muscle regularly.

The big traffic post was about my absurd number of tabs. I did some basic performance testing across a bunch of versions of Firefox, which showed dramatic improvements in startup time even with more than 1000 tabs. I really didn't expect such a response - #1 on HackerNews (537 comments!), coverage by loads of mainstream tech news outlets like ZDNET, and pretty massive comment thread on /r/programming.