Three-Year Moziversary

Another year at Mozilla. They certainly don’t slow down the more you have of them.

For once a year of stability, organization-wise. The two biggest team changes were the addition of Jan-Erik back on March 1, and the loss of our traditional team name “Browser Measurement II” for a more punchy and descriptive “Firefox Telemetry Team.”

I will miss good ol’ BM2, though it is fun signing off notification emails with “Your Friendly Neighbourhood Firefox Telemetry Team (:gfritzsche, :janerik, :Dexter, :chutten)”

We’re actually in the market for a Mobile Telemetry Engineer, so if you or someone you know might be interested in hanging out with us and having their username added to the above, please take a look right here.

In blogging velocity I think I kept up my resolution to blog more. I’m up to 32 posts so far in 2018 (compared to year totals of 15, 26, and 27 in 2015-2017) and I have a few drafts kicking in the bin that ought to be published before the end of the year. Part of this is due to two new blogging efforts: So I’ve Finished (a series of posts about video games I’ve completed), and Ford The Lesser (a series summarizing the deeds and tone of the new Ontario Provincial Government). Neither are particularly mozilla-related, though, so I’m not sure if the count of work blogposts has changed.

Thinking back to work stuff, let’s go chronologically. Last November we released Firefox Quantum. It was and is a big deal. Then in December all hands went to Austin, Texas.

Electives happened again so I did a reprise of Death-Defying Stats (where I stand up and solve data questions, Live On Stage). We saw Star Wars: The Last Jedi (I’m not sure why the internet didn’t like it. I thought it was grand. Though the theatre ruined the impact of That One Scene by letting us know that no, the sound didn’t actually cut out it was deliberate. Yeesh). We partied at a pseudo-historical southwestern US town, drinking warm beverages out of gigantic branded mugs we got to take home afterwards.

Then we launched straight into 2018. Interviews increased to a crushing density for the role that was to become Jan-Erik’s and for two interns: one (Erin Comerford) working on redesigns for the venerable Telemetry Measurement Dashboards, and another (Agnieszka Ciepielewska) working on automatic change detection and explanation for Telemetry metrics.

In June we met again in San Francisco, but this time without Georg who was suffering a cold. Sunah and I gave a talk about Event Telemetry, Steak Club met again, and we got to mess around with science stuff at the Exploratorium.

This year’s Summer Big Project… y’know, there were a few of them. The first was the Event Telemetry “event” ping. Then there was the Measurement Dashboard redesign project where I ended up mentoring more than I expected due to PTO and timezones.

Also in the summer I was organizing and then going on a trip to celebrate a different anniversary (my tenth wedding anniversary) for nearly the entire month of July.

In August the team met in Berlin, and this time I was able to join in. That was a fun and productive time where we settled matters of team identity, ownership, process, and developed some delightful in-jokes to perplex anyone not in the in-group. I acted as an arm of Ontario Craft Beer Tourism by importing a few local cans (Waterloo Dark and Mad & Noisy Lagered Ale) while asking (well-intentioned but numerous and likely ignorant) questions about European life and politics and food and history and …

And that brings us more or less to now. September was busy. October is busy. I’m helping :frank put authentication on the old Measurement Dashboards so we can put release-channel data back up there without someone taking it and misinterpreting it. (As an org we’ve made the conscious decision to use our public data in a deliberate fashion to support truthful narratives about our products and our users. Like on the Firefox Public Data Report.) I’m looking into how we might take what we learned with Erin’s redesign prototype and productionize it with real data. I’m also improving documentation and consulting with a variety of teams on a variety of data things.

So, resolutions for the next twelve months? Keep on keeping on, I guess. I’m happy with the progress I have made this past year. I’m pleased with the direction our team and the broader org is headed. I’m interested to see where time and effort will take us.

:chutten

 

Advertisements

Going from New Laptop to Productive Mozillian

laptopStickers

My old laptop had so many great stickers on it I didn’t want to say goodbye. So I put off my hardware refresh cycle from the recommended 2 years to almost 3.

To speak the truth it wasn’t only the stickers that made me wary of switching. I had a workflow that worked. The system wasn’t slow. It was only three years old.

But then Windows started crashing on me during video calls. And my Firefox build times became long enough that I ported changes to my Linux desktop before building them. It was time to move on.

Of course this opened up a can of worms. Questions, in order that they presented themselves, included:

Should I move to Mac, or stick with Windows? My lingering dislike for Apple products and complete unfamiliarity with OSX made that choice easy.

Of the Windows laptops, which should I go for? Microsoft’s Surface lineup keeps improving. I had no complaints from my previous Lenovo X1 Carbon. And the Dell XPS 15 and 13 were enjoyed by several of my coworkers.

The Dells I nixed because I didn’t want anything bigger than the X1 I was retiring, and because the webcam is positioned at knuckle-height. I felt wary of the Surfacebooks due to the number that mhoye had put in the ground due to manufacturing defects. Yes, I know he has an outsized effect on hardware and software. It really only served to highlight how much importance I put on familiarity and habit.

X1 Carbon 6th Generation it is, then.

So I initiated the purchase order. It would be sent to Mozilla Toronto, the location charged with providing my IT support, where it would be configured and given an asset number. Then it would be sent to me. And only then would the work begin in setting it up so that I could actually get work done on it.

First, not being a fan of sending keypresses over the network, I disabled Bing search from the Start Menu by setting the following registry keys:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search
BingSearchEnabled dword:00000000
AllowSearchToUseLocation dword:00000000
CortanaConsent dword:00000000

Then I fixed some odd defaults in Lenovo’s hardware. Middle-click should middle-click, not enter into a scroll. Fn should need to be pressed to perform special functions on the F keys (it’s like FnLock was default-enabled).

I installed all editions of Firefox. Firefox Beta installed over the release-channel that came pre-installed. Firefox Developer Edition and Nightly came next and added their own icons. I had to edit the shortcuts for each of these individually on the Desktop and in the Quick Launch bar to have -P --no-remote arguments so I wouldn’t accidentally start the wrong edition with the wrong profile and lose all of my data. (This should soon be addressed)

In Firefox Beta I logged in to sync to my work Firefox Account. This brought me 60% of the way to being useful right there. So much of my work is done in the browser, and so much of my browsing experience can be brought to life by logging in to Firefox Sync.

The other 40% took the most effort and the most time. This is because I want to be able to compile Firefox on Windows, for my sins, and this isn’t the most pleasant of experiences. Luckily we have “Building Firefox for Windows” instructions on MDN. Unluckily, I want to use git instead of mercurial for version control.

  1. Install mozilla-build
  2. Install Microsoft Visual Studio Community Edition (needed for Win10 SDKs)
  3. Copy over my .vimrc, .bashrc, .gitconfig, and my ssh keys into the mozilla-build shell environment
  4. Add exclusions to Windows Defender for my entire development directory in an effort to speed up Windows’ notoriously-slow filesystem speeds
  5. Install Git for Windows
  6. Clone and configure git-cinnabar for working with Mozilla’s mercurial repositories
  7. Clone mozilla-unified
    • This takes hours to complete. The download is pretty quick, but turning all of the mercurial changesets into git commits requires a lot of filesystem operations.
  8. Download git-prompt.sh so I can see the current branch in my mozilla-build prompt
  9.  ./mach bootstrap
    • This takes dozens of minutes and can’t be left alone as it has questions that need answers at various points in the process.
  10. ​./mach build
    • This originally failed because when I checked out mozilla-unified in Step 7 my git used the wrong line-endings. (core.eol should be set to lf and core.autocrlf to false)
    • Then it failed because ./mach bootstrap downloaded the wrong rust std library. I managed to find rustup in ~/.cargo/bin which allowed me to follow the build system’s error message and fix things
  11. Just under 50min later I have a Firefox build

And that’s not all. I haven’t installed the necessary tools for uploading patches to Mozilla’s Phabricator instance so they can undergo code review. I haven’t installed Chrome so I can check if things are broken for everyone or just for Firefox. I haven’t cloned and configured the frankly-daunting number of github repositories in use by my team and the wider org.

Only with all this done can I be a productive mozillian. It takes hours, and knowledge gained over my nearly-3 years of employment here.

Could it be automated? Technologically, almost certainly yes. The latest mozilla-build can be fetched from a central location. mozilla-unified can be cloned using the version control setup of choice. The correct version of Visual Studio Community can be installed (but maybe not usably given its reliance on Microsoft Accounts). We might be able to get all the way to a working Firefox build from a recent checkout of the source tree before the laptop leaves IT’s hands.

It might not be worth it. How many mozillians even need a working Firefox build, anyway? And how often are they requesting new hardware?

Ignoring the requirement to build Firefox, then, why was the laptop furnished with a release-channel version of Firefox? Shouldn’t it at least have been Beta?

And could this process of setup be better documented? The parts common to multiple teams appear well documented to begin with. The “Building Firefox on Windows” documentation on MDN is exceedingly clear to work with despite the frightening complexity of its underpinnings. And my team has onboarding docs focused on getting new employees connected and confident.

Ultimately I believe this is probably as simple and as efficient as this process will get. Maybe it’s a good thing that I only undertook this after three years. That seems like a nice length of time to amortize the hours of cost it took to get back to productive.

Oh, and as for the stickers… well, Mozilla has a program for buying your own old laptop. I splurged and am using it to replace my 2009 Aspire Revo to connect to my TV and provide living room computing. It is working out just swell.

:chutten

Ontario’s 42nd Parliament, 1st Session: September 2018

english-logo
Logo used for education and illustrative purposes. This is not an official publication and I am not an agent of the OLA.

The House met for 10 days in September. My previous coverage only takes us up to day 4, so let’s start over.

The biggest topic early in the month was the Better Local Government Act and its successor, “Bill 31, Efficient Local Government Act, 2018” which was materially the same but included the Notwithstanding Clause so it could be passed despite being ruled unconstitutional by the courts.

But then the appeal was upheld, and the original act was ruled constitutional. Bill 31 remains on the books, but is unlikely to see further debate. Toronto will have 25 wards this coming election. And Ontario’s government has shown its willingness to invoke constitutional privilege over such a matter.

But what else did the Legislative Assembly do this month besides start a constitutional challenge?

Bill 4, Cap and Trade Cancellation Act, 2018, saw two days of debate in September. It’s the same thing going in circles: The Opposition says it is better than nothing and The Government says it is worse than nothing. I’m with the Opposition on this: make polluting industries pay and use the collected money to improve lives for people.

Bill 6, Poet Laureate of Ontario Act (In Memory of Gord Downie), 2018, was referred to committee. I like the idea of having a Poet Laureate of Ontario to champion the arts in the province.

Bill 7, Fairness in Petroleum Products Pricing Act, 2018, was referred to committee. This is pretty much as expected as it’s adapting what other provinces do to regulate consumer gasoline prices and there’s broad political support for it. I fret a little about anything touching the carbon economy, but I haven’t read anything against it.

Bill 28, Alternative Land Use and Services Program for Agricultural Land Act, 2018, which allows farmers to use parts of their fields as snowbreaks, windbreaks, or other natural features passed second reading and is referred to committee for implementation. It appears to be the first step towards funding farmers for doing so in specific ways. Broad support across the aisles, except on the details of where this might lead. I struggle to understand what this is even about given it doesn’t have funding and it doesn’t actually seem to do anything.

Bill 32, Access to Natural Gas Act, 2018, was introduced. Gas distributors need to invest in infrastructure to deliver natural gas to consumers. Some consumers are cheaper to deliver to than others. This act allows the Energy Board to protect the more expensive-to-deliver-to consumers from paying too much for distribution by allowing the gas distributor to raise rates across its customer base instead of requiring the expensive-to-deliver-to consumers to bear the full weight of the cost of delivery themselves. I’m okay with this so long as it doesn’t give gas distributors the leeway to raise rates in excess of what is necessary to deliver natural gas to consumers.

Bill 33, Rea and Walter Act (Truss and Lightweight Construction Identification), 2018, was introduced. Volunteer firefighters have died when roofs have collapsed on them earlier than expected. This is because lightweight trusses can burn through faster than wood. The bill requires buildings with such faster-to-burn construction to be identified with decals so that firefighters know what they’re facing. This is following the example of other municipalities and state jurisdictions in North America so I guess it’s a good thing? I have no strong opinion on the matter.

Bill 34, Green Energy Repeal Act, 2018, was introduced. It repeals the entirety of the Green Energy Act, 2009 in paper, but keeps several provisions in spirit by moving them to other Acts. The repeal seems mostly concerned with taking all the parts of the Green Energy Act and putting them in different Acts. I’ll need to read the debates to figure out whether there’s anything being left out. If not, I have no problems with the reorganization.

Bill 35, Human Rights Code Amendment Act, 2018, was introduced. It adds “immigration status, genetic characteristics, police records and social conditions” to the list of protected classes. I am 100% behind this and I hope that the fact that it was introduced by a Liberal MPP (Nathalie Des Rosiers of Ottawa-Vanier) doesn’t torpedo it.

Bill 36, Cannabis Statute Law Amendment Act, 2018, was introduced. It sets out a licensing scheme for private cannabis retail stores, administered by the Alcohol and Gaming Commission, while simultaneously forbidding the Ontario Cannabis Retail Corporation from opening retail stores. Online it will be the OCRC that holds the monopoly. The OCRC will also be the only supplier to the licensed private retailers. It also makes it so the Government appoints the board of the OCRC, not the LCBO board, and separates the LCBO and the OCRC more firmly. I worry this will diminish provincial income from cannabis sales. I also worry this could result is less adherence to regulations of sale, but given that these are basically the regulations under which tobacco is sold these days I’m not too torn up about that part.

Other miscellaneous governmental business:

  • The province put 220 new GO trains on the Lakeshore corridor. It doesn’t help me (on the Kitchener line) but I’m glad to see improved transit.
  • The government scrapped the Anti-Racism Directorate, the Ministry of International Trade, and the Poverty Reduction Strategy Office.
  • The Premier posed for a picture with a far-right Toronto mayoral candidate with ties to neo-Nazi groups. The Premier, after being pressed, denounced “anyone who wants to talk hate speech.”
  • The Minister of Finance released a report that Ontario has $338B of debt, and reclassified $15B of line items in previous budgets that had been improperly classified as assets.

All in all it seems to be more of the same. No one’s answering the others’ questions (except when the Government asks questions of itself). The House continues to fly into disorder whenever the Premier is asked a question.

It continues to be discouraging to keep up with the assembly month-after-month. But I plan on continuing, because I think it’s important.

Canadian Holiday Inbound! Thanksgiving 2018 (Monday, October 8)

Monday is Thanksgiving in Canada[1], so please excuse your Canadian colleagues for not being in the office.

We’ll likely be spending the day wondering. We’ll be wondering how family could make such a mess, wondering why we ate so much pie, wondering if it’s okay to eat turkey for breakfast, wondering if pie can be a meal and dessert at the same time, wondering how we fit the leftovers in the fridge, wondering why we bothered hosting this year, wondering whose sock that is by the stairs, wondering when the snow will melt[2] or start to fall[3].

We’ll also be wondering who started the family tradition of having cornbread instead of buttered rolls, wondering where the harvest tradition began, wondering about what all goes into harvesting our food, wondering what it means to be thankful, wondering what we are thankful for, wondering why we ate the evening meal at 4pm, wondering whether 4pm is too late to have a nap.

With heads full of wondering and bellies full of food, we wish you a wonderful Thanksgiving. We’ll be back to work, if not our normal shapes, on Tuesday.

:chutten

PS: Canadian Pro-tip: Leftover food often turns into regret – but this regret can turn back into food if you leave it in the fridge for a little while!

[1]: https://mana.mozilla.org/wiki/display/PR/Holidays%3A+Canada
[2]: Calgary had a (record) snowfall of 32.8cm (1’1″) on Oct 2: https://www.cbc.ca/news/canada/calgary/calgary-october-snow-day-two-1.4848394
[3]: Snow’s a-coming, already or eventually: https://weather.gc.ca/canada_e.html

Distributed Teams: Regional Holidays

Today is German Unity Day, Germany’s National Day. Half of my team live in Berlin, so I vaguely knew they wouldn’t be around… but I’d likely have forgotten if not for a lovely tradition of “Holiday Inbound” emails at Mozilla.

Mozilla is a broadly-distributed organization with employees in dozens of countries worldwide. Each of these countries have multiple days off to rest or celebrate. It’s tough to know across so many nations and religions and cultures exactly who will be unable to respond to emails on exactly which days.

So on the cusp of a holiday it is tradition in Mozilla to send a Holiday Inbound email to all Mozilla employees noting that the country you’re trying to reach can’t come to the phone right now, so please leave a message at the tone.

More than just being a bland notification some Mozillians take the opportunity to explain the history and current significance of the event being celebrated. I’ve taken a crack at explaining the peculiarly-Canadian holiday of Christmas (pronounced [kris-muhs]) in the past.

Sometimes you even get some wonderful piece of alternate history like :mhoye’s delightful, 50% factual exploration of the origins of Canadian Labour Day 2016.

I delight in getting these notifications from our remotees and offices worldwide. It really brings us closer together through understanding, while simultaneously highlighting just how different we all are.

Maybe I should pen a Holiday Inbound email about Holiday Inbound emails. It would detail the long and fraught history of the tradition in a narrative full of villains and heroes and misspellings and misunderstandings…

Or maybe I should just try to get some work done while my German colleagues are out.

:chutten

So I’ve Finished Owlboy, Her Story, The Room, and Ni no Kuni II: Revenant Kingdom

I’ve been less than diligent in continuing this series on games I’ve played and my thinking thoughts I have about them. So here’s a short grab-bag of some recent and not-so-recent completions.

Owlboy

It was a while ago I played this, but what I remember about this shooter-platformer was its charm, its easy climb up the difficulty curve, how pretty it was, and how smoothly it ran. It was exactly as long as I wanted it to be, the characters were fun and empathetic, and I only had to repeat the final boss four times. (I am not the best at video games)

I vaguely remember that there was a completionist percentage mechanism for collecting coins or something that I didn’t enjoy (I went through an area several times and couldn’t find the three coins I was missing), but that didn’t detract from the experience.

Her Story

Mystery video games are often like point-and-click adventures. Try everything everywhere until you progress, then repeat. Through the necessity of giving you what you need to tell the video game you’ve solved it, you can accidentally spoil the mystery for yourself. And if you’ve solved the mystery, but don’t have the one piece you need to prove it to the game, it’s frustrating. Mark Brown covers it in this excellent episode of Game Maker’s Toolkit:

Her Story gives you a database full of interview clips chopped into pieces and indexed by the words the interviewee speaks. Type “murder” and you get all the clips where the word “murder” is mentioned. Through listening for key words and repeated phrases you can dig through the database and watch these clips to piece together a complex story of who murdered whom and why.

It’s ingenious, but imperfect. How do you then prove to the game that you’ve solved it? How, other than by not ending, can the game explain to you that you missed something?

There’s a mechanism in the game I didn’t experience where, after watching enough of the clips, a chat window pops up and gives you the last piece of the story before it ends. I didn’t experience it because I already thought I had it all worked out.  And then I checked a wiki and found out I was right… but the game didn’t know I had it. And I couldn’t prove my knowledge to it.

An interesting piece of art, this game. I look forward to seeing what refinements the follow-up “Telling Lies” will have when it arrives (if it arrives).

The Room

A point-and-click puzzle box game. Far shorter than I thought it’d be, and far less interesting. I’d recommend Windosill over The Room: it has a much more approachable and appropriate-to-the-mechanics tone… and most crucially its toy puzzles are far more rewarding to tease apart (it reminds me a lot of The Manhole, of all things).

So, uh, yeah. Play Windosill and The Manhole.

Ni no Kuni II: Revenant Kingdom

A worthy successor to the first game, this is a charming JRPG romp with a fiendishly-diverting kingdom-building mechanic. I do love to watch those numbers go up.

It is comfortably easy on Normal, the hardest thing about it is the grind in the postgame. I don’t mind it, though, as the atmosphere is aided by it.

On the negative side is the sadly-mandatory squad-based strategy portions. Uneven difficulty and underwhelmingly-undeveloped mechanisms made for a shallow experience. There was also the Tactic Tweaker for weighting how much money vs loot you get from battles or whether you’re stronger against fire or ice enemies… but it was introduced and then abandoned, so I mostly just forgot it was there.

All in all a lovely way to spend some dozens of hours, with visuals that maintain a Studio Ghibli style without just slapping a cell shader on the GPU and calling it a day.

Next:

I’ll probably pick up the demo to Octopath Traveller as it’s right in my wheelhouse… though its similarity to I Am Setsuna might make it a game my wife plays instead. (and its price might make it something we wait to buy in any case).

I tried to start Tacoma, but my computer refuses to play past the intro without seizing up. Come to think of it my computer had problems with The Room, too, but mostly in the performance angle, not stability. Maybe something’s up on my PC.

Ontario’s 42nd Parliament, 1st Session: Midnight Sessions

english-logo
Logo used for education and illustrative purposes. This is not an official publication and I am not an agent of the OLA.

Well that’s weird. Remember when I said that the House stood adjourned until Wednesday, September 19?

Remember when Mr. Stephen Lecce, the Deputy Government House Leader said it?

Remember when Acting Speaker Ms Jennifer K. French said it?

Well, apparently we were all wrong? Because the House had an afternoon session on Saturday September 15, and had a midnight session this morning, Monday, September 17 which will continue through the day today.

The Saturday session was a so-called “emergency session” inasmuch as it was called abruptly and against the stated calendar. There were a couple of points of order raised by the Opposition House Leader (on Standing Order 23 that maybe the House shouldn’t debate something currently before the courts, and on Standing Order 52 that a second Bill shouldn’t be proposed in the same Session if it is concerning the same subject matter as a previous Bill in that Session), and the Speaker said they’d take a look at it and make a decision later.

The house then adjourned until 1030 on Monday the 17th.

And at 12:01am the 17th, the House met again. Stop messing with my schedule, dagnabbit!

( The Speaker ruled that neither Standing Order 23 nor 52 apply in this case so debate about Bill 31 can proceed while Bill 5 is appealed in the courts (SO 23g), and Bill 31 isn’t out of order because it is sufficiently different from Bill 5 (SO 52). )

I’m getting a little frustrated. It is hard to be engaged in the process when they keep playing with the schedule.