20 years on the web

>> Friday, May 16, 2014

Note: I started writing this a long time ago as part of #mynerdstory but never got around to finishing it until recently.  So I changed it a bit when I noticed it had been over 20 years since I first used the internet.

I found this picture the other day.  It's me on graduation day at Acadia,  twenty years ago this month.  A lot has changed since then.

In the picture, I'm in Carnegie Hall, where the Computer Science department had their labs, classrooms and offices. I'm sitting in front of a Sun workstation, which ran a early version of Mosaic.  I recall the first time I saw a web browser display a web page, I was awestruck.   I think it was NASA's web page.  My immediate reaction was that I wanted to work on that, to be on the web.

As a I've mentioned before, my Dad was a manager at a software and services firm in Halifax.  He brought home our first computer when I was 9.  Dad was always upgrading the computers or fixing them and I'd watch him and asked lots of questions about how the components connected together.  In junior high, I taught myself BASIC from the manual, wrote a bunch of simple programs, and played so many computer games that my dreams at night became pixelated.  When I was 16, I started working at my Dad's office doing clerical work during the school break.  One of my tasks was to run a series of commands to connect to BITNET via an accoustic coupler using Kermit and download support questions from their university customers.  I thought it was so magical that these computers that were so physically distant could connect and communicate.

In high school, I took computer science in grade 12 and we wrote programs in Pascal on Apple IIs.  My computer science teacher was very enthusiastic and welcoming.  He taught us sorting algorithms, and binary trees, and other advanced topics that weren't on the curriculum. Since he had such an interest he taught a lot of extra material.  Thanks Mr. B. 

When it was time to apply to university,  I didn't apply to computer science.  I don't know why, my grades were fine and I certainly had the background.  I really lacked self confidence that I could do it.  In retrospect, I would have been fine.  I enrolled at Acadia in their Bachelor of Business Administration program, probably because I liked reading the Globe and Mail.

I arrived on campus with a PC to write papers and do my accounting assignments.  The reason I had access to a computer was that the company my Dad worked for allowed their employees borrow a computer for home use for a year at a time, then return it.  Otherwise, they were prohibitively expensive at the time.  My third year of university I decided that I was better suited to computer science than business so started taking all my elective courses from the computer science faculty.  I still wanted to graduate on in four years so I didn't switch majors.  It was such a struggle to scrape together the money from part-time jobs and student loans to pay for four years of university, let alone six.

One of my part-time jobs was helping people in the university computer labs with questions and fixing problems.  Everything was very text based back then.  We used Archie to search for files, read books transcribed by the Gutenberg project and use uudecode to assemble pictures posted to Usenet groups.  I applied for a Unix account on the Sun system that only the Computer Science students had access to.   It was called dragon and the head sysadmin had a sig that said "don't flame me, I'm on dragon".  I loved learning all the obscure yet useful Unix commands.

My third year I had a 386 portable running Windows 3.1.  I carried this computer all over campus, plugging it in at the the student union centre and working on finance projects with my business school colleagues.  By my fourth year, they had installed Sun workstations in the Computer Science labs with Mosaic installed.   This was my first view of the world wide web.   It was beautiful.  The web held such promise.

I applied for 40 different jobs before I graduated from Acadia and was offered a job in Ottawa working for the IT department of Revenue Canada.  A ticket out of rural Nova Scotia! I didn't like my first job there that much but they paid for networking and operating system courses that I took at night.  I was able to move to a new job in a year and started being a sysadmin for their email servers that served 30,000 users.  It was a lot of fun and I learned a tremendous amount about networking, mail related protocols and operating systems.  I also spent a lot of time in various server rooms across Canada installing servers.  Always bring a sweater.

I left after a few years to work at Nortel as technical support for a telephony switch that offloaded internet traffic from voice switches to a dedicated switch.  Most internet traffic back then was via modem which were longer duration calls than most voice calls and caused traffic issues.  I took a lot of courses on telephony protocols, various Unix variants and networking. I traveled to several telco customers to help configure systems and demonstrate product features. More time in cold server rooms.

Shortly after Mr. Releng and I got married we moved to Athens, Georgia where he was completing his postdoc.  I found a great job as a sysadmin for the UGA's computer systems division.  The group provided FTP, electronic courseware and email services to the campus.  We also secured a lot of hacked Linux servers set up by unknowing graduate students in various departments.  When I started, I didn't know Linux very well so my manager just advised me to install Red Hat about 30 times and change the options every time, learn how to compile custom kernels and so on.  So that's what I did.  At that time you also had to compile Apache from source to include any modules such as ssl support, or different databases so I also had fun doing that. 

We used to do maintenance on the computer systems between 5 and 7am once a week.  Apparently not many students are awake at that hour.  I'd get up at 4am and drive in to the university in the early morning, the air heavy with the scent of Georgia pine and the ubiquitous humidity.  My manager M, always made a list the night before of what we had to do, how long it would take, and how long it would take to back the changes out.  His attention to detail and reluctance to ever go over the maintenance window has stayed with me over time. In fact, I'm still kind of a maintenance nerd, always figuring out how to conduct system maintenance in the least disruptive way to users.  The server room at UGA was huge and had been in operation since the 1960s.  The layers of cable under the tiles were an archeological record of the progress of cabling within the past forty years.  M typed on a DVORAK keyboard, and was one of the most knowledgeable people about all the Unix variants, and how they differed. If he found a bug in Emacs or any other open source software, he would just write a patch and submit it to their mailing list.  I thought that was very cool.

After Mr. Releng finished his postdoc, we moved back to Ottawa.  I got a job at a company called OTI as a sysadmin.  Shortly after joining, my colleague J said "We are going to release an open source project called Eclipse, are you interested in installing some servers for it?"  So I set up Bugzilla, CVS, mailman, nntp servers etc.  It was a lot of fun and the project became very popular and generated a lot of traffic.  A couple years later the Eclipse consortium became the Eclipse Foundation and all the infrastructure management moved there. 

I moved to the release engineering team at IBM and started working with S who taught me the fundamentals of release engineering.  We would spent many hours testing and implementing new features in the build, and test environment, and working with the development team to implement new functionality, since we used Eclipse bundles to build Eclipse.  I have written a lot about that before on my blog so I won't reiterate.  Needless to say, being paid to work full time in an open source community was a dream come true.

A couple of years ago, I moved to work at Mozilla.  And the 20 year old who looked Mosaic for the first time and saw the beauty and promise of the web, couldn't believe where she ended up almost 20 years later.

Many people didn't grow up with the privilege that I have, with access to computers at such a young age, and encouragement to pursue it as a career.  I thank all of you who I have worked with and learned so much from.  Lots still to learn and do!


Release Engineering Special Issue

A different type of mobile farm  ©Suzie Tremmel, https://flic.kr/p/6tQ3H Creative Commons by-nc-sa 2.0

Are you a release engineer with a great story to share?  Perhaps the ingenious way that you optimized your build scripts to reduce end to end build time?  Or how you optimized your cloud infrastructure to reduce your IT costs significantly?  How you integrated mobile testing into your continuous integration farm?  Or are you a researcher who would like to publish their latest research in a area related to release engineering?

If so, please consider submitting a report or paper to the first IEEE Release Engineering special issue.   Deadline for submissions is August 1, 2014 and the special issue will be published in the Spring of 2015.

IEEE Release Engineering Special Issue

If you have any questions about the process or the special issue in general, please reach out to any of the guest editors.  We're happy to help!

We're also conducting a roundtable interview with several people from the release engineering community in the issue.  This should raise some interesting insights given the different perspectives that people from organizations with large scale release engineering efforts bring to the table.


Mozilla pushes - April 2014

>> Monday, May 12, 2014

Here's April's monthly analysis of the pushes to our Mozilla development trees.  You can load the data as an HTML page or as a json file.


  • April (as March did) has the highest number of pushes ever.
  • We will soon have 8,000 pushes/month as our norm, this seems to be the case this month.

  •     8109 pushes
  •     270 pushes/day (average)
  •  Highest number of pushes/day: 414 pushes on April 14, 2014
    • 14.8 pushes/hour (average)

General Remarks
  • Try continues to have around 50% of all the pushes
    The three integration repositories (fx-team, mozilla-inbound and b2g-inbound) account for around 30% of all the pushes

  • April 2014 was the month with most pushes (8109 pushes)
  • April 2014 has the highest pushes/day average with 270 pushes/day
  • February 2014 has the highest average of "pushes-per-hour" is 16.57 pushes/hour
  • March 4th, 2014 had the highest number of pushes in one day with 435 pushes


The data collected prior to 2014 could be slightly off since different data collection methods were used.                                  


Releng 2014 invited talks available

>> Tuesday, May 06, 2014

On April 11,  there was a Releng workshop held at Google in Mountain View. The two keynote talks and panel at the end of the day were recorded and made available on the Talks at Google channel on YouTube.  Thank you Google!

Moving to mobile: The challenges of moving from web to mobile releases, Chuck Rossi, Facebook https://www.youtube.com/watch?v=Nffzkkdq7GM

Some interesting notes from Chuck's talk:
  • Facebook has more users on their beta apps than most companies have on their release apps.  Number one app for IOS, number one non-Google app for Android. They have more beta users on Android than most people have users.
  • There are three things we look act as software developers: features, quality, schedule.  As release engineers we focus on quality and schedule.  Because we ship on time.  New features can go in the next mobile release which is only four weeks in the future.
  • Developers have karma, if you release to many bad changes you lose karma.  Developers start out with four Karma stars.  You can only see you own karma.  The release engineering team can reduce your karma if you release too many breaking changes.
  • The release engineering team has a lot of respect within Facebook, they are the ones who determine if your feature gets in a release.   He notes that you should make sure that you work for a organization that respects you for your judgement and skillset as as release engineer. As an aside, it seems the release engineering at Facebook has responsibility that corresponds to release engineering + release management at Mozilla.
  • Compute power and storage are infinite at Facebook for their build and test infrastructure. It's not a contraint. 
  • They run 28 - 30,000 builds a day.  Wow.
  • They have a ui for developers to look at their build and test results called shrubbery. It looks like a fork of Mozilla's tbpl (Facebook's release engineering team has Mozilla alumni :-) They also run Buildbot as their continuous integration engine too.
  • Like Mozilla they have sheriffs to monitor builds but this role is rotated among the developer teams.  If you put developers on call, they will make it less likely that they will get paged by being more careful when releasing changes because they share your operational burden.
  • They have 17 apps to upload to the Google Play store.  In the presentation, he asked Google to provide and API to be able to do so. Right now they have to a person interact with the UI and press buttons for all these apps they need to upload. Very painful.  
  • 15 minutes to deploy a new (web) facebook.com. Of course, this doesn't happen all at once.  They deploy to a certain percentage of their users, and evaluate the data and then deploy to more users.
The 10 Commandments of Release Engineering Dinah McNutt, Google

Some notes from Dinah's talk. 
  • Release engineering is accelerating the path for development to operations
  • You want to be able to reproduce your build environment and source code management system if you have to recreate a very old build
  • Configuration management and release engineering as disciplines will probably merge as the next few years
  • Reproducibility is a virtue. Binaries don't belong in SCMs.  However, it's important to be able to reproduce binaries.  If you do need a repo with binaries, put them in a separate repo. 
  • Use the right tool for the job, you will have multiple tools.  Both commercial and open source.
  • View the job of a release engineer and making a developers job easier.  By setting up tooling and best practices.
  • Package management.  Provides auditing, upgrading, installation, removals. Tars and jars are not package managers.
  • You need to think about your upgrade process before you release 1.0.
  • Customers find problems we cannot find ourselves. Even if we're dogfooding.
  • As release engineers, step back and look at the big picture.  Look and see how we can make things better from a cost perspective so we have the resources we need to do our jobs.
  • It's a great year to be a release engineer. Dinah is the organizing committee for Release Engineering Summit June 20 in Philadelphia as part of USENIX. There is also one as a part of LISA in Seattle in November.  Overwhelming interest for a first time summit in terms of submissions!

Stephanie Bellomo, one of my colleagues from the organizing committee for this workshop moderated the panel.  Really interesting discussions, well worth a listen.  I like that the first question of "What is your worst operational nightmare and how did you recover from it?"  I love war stories.

As an aside, we charged $50 per attendee for this workshop.  We talked to other people who had organized similar events and they suggested this would be an appropriate fee.  I've read that if you don't charge a fee for an event, you have more no-shows on the day of the event because psychologically,  they attach a lesser value to the event since they didn't pay for it.  However, we didn't have many expenses to pay for the workshop other than speaker gifts, eventbrite fees and badges.  Google provided the venue and lunch, again, thank you for the sponsorship. So we donated $1,531.00 USD to each of the following organizations from the remaining proceeds.

YearUp is an organization that in their words "Year Up empowers low-income young adults to go from poverty to professional careers in a single year."  I know Mozilla has partnered with YearUp to provide mentoring opportunities within the IT group and it was an amazing experience for all involved. 
The second organization we donated to is the Tanzania Education Fund.  This organization was one that Stephany mentioned since she had colleagues that were involved with for many years.  They provide pre-school, elementary, secondary and high school education for students in Tanzania.   Secondary education is not publicly funded in Tanzania.  In addition, 50% of their students are girls, in an area where education for girls is given low priority.  Education is so important to empower people.

Thanks to all those that attended and spoke at the workshop!


Remote work in review

>> Monday, May 05, 2014

I recently read two books on remote work.  Scott Berkun's Year without Pants and Remote: Office Not Required by Jason Fried and David Heinemeier Hansson.  The first book describes Scott Berkun's year as a remote manager at Automattic, which runs Wordpress.com.  The second book describes the authors' experiences at the fully distributed company 37signals, which has since renamed itself to Basecamp to reflect the importance of its flagship product.  Both books were interesting reflections on the nature of remote work in the context of their respective companies.  They were not books that addressed the nature of remote work in general, but described the approach they felt was successful within their companies. Of the two books, I would really recommend reading the Year Without Pants.  Remote isn't as compelling but it's a short read.

Some notes from "The Year without Pants" 

"To work at a remote company demanded great communication skills and everyone had them"

Chapter 4 on culture always wins is  is a fantastic read, it's available for free on his website. 

"Trust is everything". 

"1. Hire great people
 2. Set good priorities
 3. Remove distractions
 4. Stay out of the way"

In other words, treat people like grown ups and they will do good work.
"In every meeting in every organization around the world where bad behavior is happening, there is someone with the most power in the room who can do something about it.  What that person does shapes the culture.  If the most powerful person is silent, this signals passive acceptance of whatever is going on."

Wow, this is very significant.  If you are the most powerful person in the room, speak up and call out bad behaviour.  The people with less power are often hesitant to speak up because there may be consequences for them and they feel they lack authority.

"Hire self sufficient, passionate people"

I often get questions from people who don't work at home how I don't get distracted and goof off all day since I work from home.  It's simple.  I love my job.  It's a lot of fun.  I want to be shipping, not slacking.

Shipping every day gives people a sense of accomplishment.  Many bug fixes are deployed to Wordpress.com every day. No gatekeepers to deployment but the people deploying the change are expected to watch the site after they deploy for a few hours to ensure there aren't unexpected problems.

Some notes from "Remote: Office Not Required"

The book suggests asking managers or employees to work from home a few days a week to level the playing field with respect to communications between employees who work in an office and those who are remote.   This will ensure they appreciate what hinders communication and take steps for improvement.  And it will reduce the tendency to treat remote workers as second class citizens and cut them out of essential conversations.

"...coming  into the office just means that people have to put on pants.  There is not guarantee of productivity."

"If you view those who work under you as capable adults who will push themselves to excel even when they're not breathing down their necks, they'll delight you in return"

Again, trust people and have high expectations of them and you'll be rewarded with excellence. 

The authors note that international exposure is good as a selling point with clients.  Hiring around the world increases the talent pool available, but is not without tax or legal complications.  Also, given the degree of written communication with remote work, it's best to hire people with the language skills that can thrive in this situation.  

The book stresses that workflow tools need to be available to all team members at all times in order to be productive. i.e. recording the state of a project in a wiki, bug tracker and recording meetings.  If a team member is working in a timezone offset from the majority of team members and doesn't have this in place, it can be a productivity drain.

 "Would-be remote workers and managers have a lot to learn from how the open source software movement has conquered the commercial giants over the past few decades. Open source is a triumph of asynchronous collaboration and communication like few the world has ever seen."

Absolutely.  I learned so much working in open source for so many years.

The authors also mention that you'll have to worry about your employees overworking, not underworking.  Because they office is physically in your home, it's easy to get sucked in at all hours to just work on one little thing that takes longer than you expect.

My thoughts on remote work
If you had asked me five years ago  if I ever thought I'd work full time from my home my answer would have been a definitive no.  But I wanted to work for Mozilla, and wasn't interested in moving to an city where they had a physical office. Here are my personal suggestions for working successfully on a remote team, given my two years of experience being a part of one:
  • Work for a company with strong culture, tools and process that support remote work.  Mozilla is a great example, there are many others.  It's not optimal to be the only remote worker in a company that has no experience or culture that supports distributed collaboration.
  • Get up, shower, eat breakfast and put on clothes you wouldn't be ashamed to seen in outside the house.  Despite the title of the book I reviewed above, this means wearing pants.
  • I think it's helpful that I have people on my timezone that I collaborate with on regular basis.  I think I would find my job much more difficult if this was not the case.
  • Do stuff to get out of the house on a regular basis - visiting friends, family or regularly scheduled activities such as sports or hobbies.  Otherwise, you will become, as Laura Thomson so eloquently put it a "lonely code hermit".  This isn't healthy.
  • Talk about stuff not directly related to code with your coworkers so you have some rapport for them as people outside the context of work.
  • Meet up with your team in person on a regular basis.  At Mozilla releng, we do this three or four times a year.  As much as irc, bugzilla, wikis, video conferencing and other tools are great for collaboration, there isn't anything that can substitute for talking in person.  Also, it's great for getting to know them more as people.  And when you know them as people, you are more willing to help each other and feel more cohesive as a team.
  • Ship.  If you are worried that you don't appear to be productive because you aren't physically in the office, ship awesome stuff.  Then nobody cares where you're sitting and you get to have a 30 second commute.
  • If you work in software, you aren't constrained by geography to determine the kind of job you can have.  If you don't want to work for the software companies that have offices in the town you live in, you have a choice to choose a better job.  Life is too short to get up every day and work at a job you don't like.   There's a lot  opportunity for those who work in many fields to work remotely.

As aside, I was supposed to be at a Mozilla work week in Portland this past week.  But I didn't fly there because I came down with a bad cold.  Despite this, I could connect to the same room the they were in and see all the talks they were giving and also give a presentation.  This was so excellent.  Since we are so used to being a distributed team, having one person remote when we were supposed to be all together wasn't a problem.  We already had the culture and tools in place to accommodate this. Thank you Mozilla releng for being such an amazing team to work with.

My idea for another book on remote work would be to have one with the format where there were about 10+ chapters, each written by an employee from a different company about how they approach it, what tools they use and so on. I think this could be a very interesting read.

I'll close with some thoughts from Scott Berkun's book on whether remote work is for everyone 

"For me,  I know that for any important relationship I'd want to be physically around that person as much as possible. If I started a rock band or a company, I'd want to share the same physical space often.  The upsides outweigh the downsides.  However, if the people I wanted to work with were only available remotely, I'm confident that we could do great work from thousands of miles away."

What do you think are the keys to successfully working as a remote employee?

Further reading
John O'Duinn's We are all Remoties Talk


  © Blogger template Simple n' Sweet by Ourblogtemplates.com 2009

Back to TOP