I just got back from SmartWebConf in Romania. I gave the closing talk. I wanted it to be of a slower pace and more reflective than what I normally deliver. I messed that up, as I got passionate about the subject again, but it was for the better. I am happy and humbled about the feedback I got. Many people thanked me for putting their worries into words. That’s why I offer the recording and slides here, and write a longer post about the ideas covered in them.
This is part 1 of 3.
Part 1: never stop learning and do it your way
Part 2: you got what you asked for, time to use it
Part 3: give up on the idea of control and become active
The Slides are on Slideshare and have been featured on their frontpage.
The wheel is spinning but the hamster is almost dead – Smartweb 2015 from Christian Heilmann
The end of a conference is always a wonderful time. You are inspired, fascinated, excited, hopeful and ready to apply and play with all the cool stuff you heard. You had interesting talks with people. You found out that other people have the same problems and worries you have. You’re driven to tackle them head on (the problems, not the other people). That’s what happens when the presenters and organisers did their jobs right.
The problem is that these fuzzy feelings tend to evaporate when you go back to work. Conferences are a cocoon of being with people who get you – as they have the same ideas and deliveries.
Going back to your daily work can make you feel not as good any more. You go online. You get overwhelmed by the avalanche of stuff you find on our industry’s social media channels. You feel you should know a lot more than you do and use all the clever solutions the cool kids use. Instead, you look at a huge list of bugs you need to plough through. You look at the product you worked on for a year. And you suffer the convoluted processes it has. And you get frustrated by the code you’d love to clean up but can’t touch.
The impostor syndrome rears its ugly head and brings those darker feelings.
- That feeling that you don’t belong…
- That feeling that you’re not good enough…
- The feeling that you can’t contribute anything useful…
- The feeling that you should apologise for not using the newest and coolest…
All these are bullshit and you should not spend a second of your precious time on them. You don’t have to impress anyone, you don’t have to beat others. All you need to worry about is being a better you tomorrow than you are today. You can do this in many ways. Be a kinder person. Learn something new. Question your biases. Try to understand why someone dislikes what you do. And many more.
In our little world, we started to put ridiculous pressure onto each other. And it is based on one thing: engineering and technology. OK, that’s two things but one tends to lead to the other.
We turned engineering into a religion. With all the dogma and holy wars that comes with that.
This manifests itself in a few ways:
- We measure our worth by quantity and visibility, not by how we contribute. As Sarah Mei put it on Twitter Here’s my github contribution graph. I write code all fucking day. I want to do something different outside of work. Is she less of a coder as she strives to make a difference in her job rather than her free time? Is our creative work disconnected from our deliveries?
- We consider automation the end goal of everything. Humans should do other things than menial tasks that computers can do better. We value libraries and scripts and methodologies that automate tasks more than repetition. Repetition is considred failure. It could also be good for building up muscle memory. By automating all our tasks, we rob new developers of the learning why these automatisation tools are so useful. We remove them from the original problem. And they could learn a lot by facing these problems instead of relying on a magical solution they don’t understand.
This is dangerous thinking. Being human, we are more than number crunching machines. We can’t work at the breakneck speed of machines. Taking time off doing nothing is an important part of our mental health. By creating machines to make our lives easier, we might eventually end up with a world that doesn’t need us. This can be good, but the economics of it are pretty screwed up. CPG Grey’s Humans need not apply is an interesting 15 minute show about this.
This unhealthy focus on technological solutions for all our problems lead to a change in our hiring practices that annoy me. It seems we celebrate social ineptitude in our hiring and training. We have ridiculous brain teaser questions in interviews like the Fizz Buzz Text, which helpsfilter out the 99.5% of programming job candidates who can’t seem to program their way out of a wet paper bag.
Arrogance like this doesn’t go unpunished. For example Estelle Weyl showed that a few lines of CSS can solve the Fizz Buzz test. That she framed her tweet as a “CSS interview question” scares me. CSS is not about cryptic coding puzzles, it is about describing interfaces and interactions. Once more we bring something that has an important role to play back to “code”. Thus we make it more palpable for the engineering crowd. A crowd that had not much respect for it in the first place.
Interview questions like these are scary, arrogant and short-sighted. We keep complaining about a lack of diversity in our market. Yet we put trip-wires like these in our onboarding process instead of celebrating diversity. And don’t get me started on the concept of hackdays to increase diversity. There is no silver bullet to force integration. If we want to be more diverse, we have to change our hiring practices. We also need to adapt our promotion and compensation paths. Right now our market values the “rockstar ninja coders” who are in constant competition with their peers. That’s not a good start to build teams.
Diversity isn’t a goal – it is a beginning. Your products will be more resilient, interesting and delivered faster with diverse teams than with a group of likeminded people. You add spices to food when you cook it. This is what diversity can bring to our market.
The way we teach shouldn’t be about hypothetical examples but about the medium we work in. Three years ago Brett Victor released Learnable Programming, a hands-on training course taking a different approach to learning to “code”. We should have more of these, and less of yet another resource to learn the coolest and newest.
There is no shortage of resources to learn our craft from these days. The problem with a lot of them is that they assume a lot of knowledge and expect a certain environment.
Learning is a personal thing. If you feel stupid trying to follow a learning resource, don’t use it. You’re not stupid – you’re using the wrong resource. We all are wired differently. If you don’t understand something – ask the person teaching the subject to explain it. If there is an aggressive answer or none at all, you know that the goal of the teaching resource was not to educate, but to show off. That’s fine, but it shouldn’t be something that frustrates you. Maybe you don’t need this new knowledge. Find something that makes you happy instead. Something that you are much better at than others are because you like doing it.
Continued in part 2, where I will look at what we have and why we don’t use it.
Our September Brantina speaker, Deanna Zandt, has generously volunteered to speak with us about the neuroscientific dynamics of online communications. She'll provide a deeper understanding...
Mozilla’s mission is to promote openness, innovation and opportunity on the Web. We therefore welcome the call from publishers’ associations DCN and WAN-IFRA for stakeholders in the open Web to join the discussion on digital advertising practices.
The Web is a unique medium. In contrast with proprietary software platforms the Web is:
- permissive to publish on
- free to implement
- intentionally device agnostic
These properties make the Web the most publicly beneficial medium of our time and the proliferation of content on the Web is crucial to its continued growth. All participants in the ecosystem have interests that must be acknowledged and respected, including users and publishers.
We believe that the only way that the Web continues to exist as an open and vital asset is if we focus on its long term health. We have been advocating for this focus both in product and in policy. We are happy to see others recognize this need in both making and responding to this call to action.
We believe there needs to be leadership from all parts of the Web ecosystem in order to ensure the long term health of the Web – and while publishers must do their part, they cannot do it in isolation. Mozilla intends to participate in this effort, especially contributing our perspective on how advertising should exist in our product. We will continue to focus on, amongst other things:
- tracking and privacy
- page performance
- page payload sizes
- auto-playing media
- pop-ups, pop-unders, other advertising-initiated browser events
And naturally, we will continue to listen to our users, whom Firefox exists to serve. We will continue to focus on delivering them transparency, choice and control. We look forward to collaborating with industry partners who share these principles.
Wissam is one of the most active Reps in middle East, located in Jordan, a mozillian with great ideas, someone who is eager to help the other fellow Reps and Mozillians. the last big event he took par to it was the Jordanian Task Force – Mozilla Jordan’s first RTL Bugs fixing training.
Hossain is the awesome leader of QA community Bangladesh. He created an awesome team of QA BugHunters in Bangladesh, organize regular Community calls to mentor new people and did the QA Marathon Dhaka. Together with the team , he attends the Bug Verification and Triage days, testdays dedicated to beta builds or major features. He also organized Maker Parties and several MozCoffees that help many new contributors to ramp up specially in fields like Mozilla QA, Firefox Os or Webmaker.
The usage share of IRC clients has always been something I’m interested in. This is partially to see how many people are using Instantbird or Mozilla Thunderbird for IRC (as I’ve written much of the IRC code for those clients). Usage share of browsers is quite a researched topic, but I’ve never come across this data for IRC. Most  IRC clients implement a part of the CTCP protocol which allows a client to query another client for their version. Thinking of this as a user agent is probably a good analogue. I don’t think this would imply that there is much of an issue with user agent spoofing, as there would be for web browser statistics since (as far as I know), no one uses the version response to do capability negotiation. It also is not used by servers.Technical Bits
So how’d we do this? I wrote an extension for Instantbird which handled both the backend and the display of the results. I think that this really showcases the extensibility of Instantbird and the effort we’ve put into ensuring their are generic APIs available for developers. In particular this uses the IRC handler API and the add panel API (added by one of our GSoC students a couple of years ago.)
Anyway, at the actual protocol level, I simply send a CTCP VERSION query to each user I know of on the IRC network (based on who is in the same channels as me) and then record the responses. I tried to be nice to the network here and rate-limited myself to 1 query per second. No one complained after ~100 queries and I didn’t seem to have any fakelag issues. I then dumped the results and made a pretty(-ish) plot of this. (If you’re a network administrator reading this and think this is insane, I’d be very curious to hear a better way to do this!)Results
In order to get some results I hooked my client up to moznet on July 23rd, 2015 and let it run on many channels (pretty much anything with more than 20 users) for a few hours . I was in Europe and started early in the morning and let it run through the evening, so it should encompass some “normal” usage by Mozillians. I would expect a bit of skew in these results toward Mozilla-esque IRC clients (Instantbird, Thunderbird and ChatZilla).
Of course these numbers are just a single sampling and I have no idea how much variance there is day-to-day or over time, but I found the (un-scientific) results to be interesting!Responses
The first thing I noticed is the large amount of information some version responses gave (in no particular order):
- KVIrc 4.3.1 svn-6313 'Aria' 20120701 - build 2013-02-14 17:47:33 UTC - Windows 7 Ultimate (x64) Service Pack 1 (Build 7601)
- xchat 2.8.8 Linux 3.17.4-1-ARCH [x86_64/2.90GHz/SMP]
- HexChat 2.10.1 [x64] / Windows 7 SP1 [4.09GHz]
I don’t understand the rationale behind sharing a user’s operating system and CPU speed. Most clients responded with a simple <software> <version number>, although quite a few also include a URL.
Additionally, some bouncers respond in weird ways which might skew the results:
- ZNC responds only if there are no clients connected OR, depending on the version, it appends itself to the client response. 
- bip responds with it’s own version if no one is connected OR the version of all connected clients. 
Lastly, some clients just don’t respond (or respond with an empty string). The results below aren’t really a count of “users”, but a count of “clients” where some users might be counted multiple times.Client Summary
Initially I visualized the data by plotting it two serparate ways: first by showing the count of each version response and then grouping by “client family”. The first plot had too many columns to reasonably show in this post: thus I’ve only included a plot of the client families . There are two plots, the first shows a subset of the data by cutting the tail (arbitrarily including families with at least 10 users).
A “client family” is counting all versions of the same client together. This was calculated by taking the text up to the first whitespace or digit and converting to lowercase:family = version.split(/[\s\d]/).toLowerCase() Points of Note
I have to admit that I was fairly shocked by the number of IRCCloud users as I found it pretty unusable when messing with it . I suspect it being an 'easy' bouncer draws many people to it. The bouncer-like software (IRCCloud, ZNC, bip) represents almost half of the users surveyed (692 / 1549 ≈ 45%)!
I'm surprised so many people are using purple as their IRC client, as the support there is really barebones. (It makes sense if you're already using Pidgin and don't want another client.) I think we've made a significant amount of improvements in Instantbird's IRC support to make it simpler for a user to get started (give it a try if you haven't!).
The last thing I'll note is that, when taken together, Instantbird, Thunderbird, and Icedove, come in as part of the top 10 (63 users, right before ChatZilla)! There's a lot of great clients out there and I'm happy to say I've helped to create one of the more popular ones (on moznet, at least!).
I post these updates every 3 weeks to inform add-on developers about the status of the review queues, add-on compatibility, and other happenings in the add-ons world.The Review Queues
- Most nominations for full review are taking less than 10 weeks to review.
- 163 nominations in the queue awaiting review.
- Most updates are being reviewed within 7 weeks.
- 88 updates in the queue awaiting review.
- Most preliminary reviews are being reviewed within 10 weeks.
- 152 preliminary review submissions in the queue awaiting review.
The unlisted queues aren’t mentioned here, but they have very low numbers. We’re in the process of getting more help to reduce queue length and waiting times for all queues. A new admin reviewer started helping us this week and we’re looking for a second one.
If you’re an add-on developer and would like to see add-ons reviewed faster, please consider joining us. Add-on reviewers get invited to Mozilla events and earn cool gear with their work. Visit our wiki page for more information.Firefox 41 Compatibility
The compatibility blog post has been up for a while. The compatibility bump was run on Monday, which is way too late, and I apologize for that. I just lost track of it. Fortunately it was a fairly small validation with very few developers affected.Firefox 42 Compatibility
Expect the blog post to come up soon. Again, this is something I expected to have done sooner, but it’s coming.
As always, we recommend that you test your add-ons on Beta and Firefox Developer Edition (formerly known as Aurora) to make sure that they continue to work correctly. End users can install the Add-on Compatibility Reporter to identify and report any add-ons that aren’t working anymore.Extension Signing
The wiki page on Extension Signing has information about the timeline, as well as responses to some frequently asked questions. The new add-on installation UI and signature warnings are now enabled in release versions of Firefox.
We recently announced an extension to the signing deadline. The current plan is to turn on enforcement by default in Firefox 43.Electrolysis
Electrolysis, also known as e10s, is the next major compatibility change coming to Firefox. In a nutshell, Firefox will run on multiple processes now, running content code in a different process than browser code. This should improve responsiveness and overall stability, but it also means many add-ons will need to be updated to support this.
If you read Kev’s post on the future of add-on development, you should know there are big changes coming. We’re investing heavily on the new WebExtensions API, so we strongly recommend that you start looking into it for your add-ons. If you have requests for new APIs, please suggest them in the uservoice forum.