Tuesday, April 23, 2013

lessons learned from my first professional conference

I've attended a number of small Mozilla work-weeks, but I recently attended my first full-blown professional conference. I learned a lot of things, most of them not specifically about the conference's topic.

  • Conference facilities will have food I can eat about half the time, but that doesn't mean it will be good food.
  • Just because the better hotels charge for wifi doesn't mean their wifi is any good. Buy an air card for my laptop or a cellphone that supports tethering before my next conference.
  • Denny's can make pretty much the same breakfast food as the hotel, at half (or less) the price.
  • For a lot of people, they prefer meeting someone in-person before working with them online. I do better if I have an opportunity to work with someone online before I meet them in-person (I remember personalities rather than faces).
  • Even though I'm an introvert, it's important for me to have people I (already) know to talk to. I was missing out on at least a couple of hours a day of interaction with my partner, and it really wreaked havoc on my mood.
  • I shouldn't be required to talk to strangers before breakfast...the day I attended a breakfast meeting, I couldn't pronounce the name of my company until 10.
  • Whether or not I have time to exercise in the morning has a huge effect on how allergies impact me. (Increased CO2 load dilates the sinuses.)
  • I need to re-arrange the linens on the bed so that I have sheets up to my chin, but blanket only up to my waist. Temperature control makes a big difference in how well I sleep.
  • 2500 people will overwork whatever cellular network capacity the venue has. Turn phone to airplane mode to keep it from chewing thru its batteries in 2 hours rather than my usual 2 days.
  • Hotels don't have public spaces where people can sit and work together. Suggest the company gets at least one multi-bedroom suite so people don't have to ask coworkers into their 'bedroom'.
  • Anything that keeps me away from my code for days running is going to make me grumpy. Find a reason to actually contribute to the open source project about which the conference is being held, at the conference. Try to enable other people to contribute too.
  • Company logo t-shirts are not enough insulation against hyperactive A/C. Forment a fashion revolution and demand a company logo jacket instead.
While it would have been good had I been able to participate more in the conference, sometimes this kind of learning can be even more important.

Sunday, April 21, 2013

announcing nose-selenium

The Mozilla automated web test team is pretty much standardized on using py.test to run selenium related tests and Dave Hunt has written pytest-mozwebqa for their use. The SwiftStack development team is standardized on nose, so rather than hard-coding webdriver details into my tests, I spent the weekend writing nose-selenium and just published it to pypi, to make it pip installable.

nose-selenium lets you specify if you're running your tests locally, on a remote selenium server, on a selenium grid, or at Sauce Labs, what browser you want to use, what OS / browser version you want (if you're running on a grid or Sauce Labs), and set an implicit timeout. I recommend running 'nosetest --with-nose-selenium --browser-help' to get a list of what browsers, etc are available in which environment.

Enjoy.

Sunday, April 7, 2013

Visualizing My Job

I could call it my 'Dream Job', except I feel like the process of getting it was very much a conscious one.

About six months ago I realized that while I knew a lot about what I didn't want in a job, that isn't a very good answer to the question "What are you looking for in a job?". I also observed that my technical education had been rather general, and while I knew some things about a lot of areas, I didn't know any one area with particular depth. This did not leave me in a position of strength when looking for a job outside of my prior core-competency in network management. I needed to improve my skills, and I needed to do it in a targeted manner.

A short while after I had these realizations, I started writing a post entitled "A Visualization Exercise" where I wrote short statements about what I want my job and career to look like, in the present tense. I never published this post, but every few weeks I'd have a new experience and learn something new about what I want, and it would end up in that draft.

I am happy to announce that I am now gainfully employed again. The Software Developer in Test position at SwiftStack very closely matches my visualization. (The primary bullets were from the original list. The secondary bullets provide additional detail regarding the current situation, and may apply to more than one primary element in the group.)



  • I take classes related to Data Storage, Linux Administration, Security, and Performance.
    • It looks like it's not a great idea logistically for me to continue taking classes at UCSC-Extension in Santa Clara, and I wasn't terribly impressed with the level of their classes. I have, however, discovered similar certificate programs out of UC Berkeley, and they have a program in Virtual and Cloud Computing that neatly maps to what I want to learn and feel would be useful at work.
  • I work with people who help me learn
    • My manager will continuously challenge me to solve his quality related problems.
  • I work in / on / with open platforms, languages, and standards.
  • I code in object oriented, hardware independent scripting languages.
    • Python, Linux, Django, RESTful APIs
    • OpenStack architecture is predicated on the idea of running a Cloud on commodity hardware running Linux and the freedom from proprietary lock-in.
  • I contribute to open source projects 
  • The company I work for is a significant part of the open source ecosystem.
    • All SwiftStack employees are expected to be involved in the OpenStack family of projects.
    • Things I learned while volunteering at Mozilla have been instrumental in my being able to hit the ground running and make valuable contributions to SwiftStack even on my first day. I plan to remain involved, particularly in MozTrap development.
    • I expect to build out 90% of our automation infrastructure using open source tools and hope to be able to contribute my solutions to the problems we face back to that community.
  • I work on projects whose customers I can identify with. Particular areas of interest are medicine, exercise, education, government, economics, software development infrastructure, and quality assurance tools.
  • My career is concentrated on specialties that endure and are universal, like quality, dev-ops, data storage and manipulation, and security.
  • I work involves design, implementation, testing, documentation, and deployment.
  • I share my discoveries and methods of solving problems with my colleagues, both inside and outside the company.
  • I have an office-mate (or study buddy) with whom I can chat about whatever problem I am trying to solve. This person doesn't necessarily know the answer, but is familiar with the tools I am using and is on the same side of any applicable confidentiality fence.
    • This one is still pending. Most of the engineering staff live with their headphones on, but we're also hiring so the right person may come along yet.
  • I follow a number of professional blogs, and I use IRC or IM to communicate with my coworkers and colleagues.
  • My coworkers enjoy the work we do.
    • I work with people I can call friends.
  • My team uses Agile development methodologies.
  • My Acceptance Tests are run in a Continuous Integration environment.
  • My test code is well-factored and modular.
  • I participate in (both sides of) code reviews.
  • I have time to take care of my health and fitness.
    • Our office building has easily-accessible 5-story stairs. Instant exercise.
    • I'm still looking for lunch-time Zumba without a contract.
    • I'm still looking for / might build an open-source exercise tracking tool to manage my workouts and progress.

My career is clearly progressing.

Tuesday, April 2, 2013

5 Things To Do Each Workday / Workweek

Today J.T. O'Donnell's post 10 Things To Do Every Workday hit my inbox and hit home. I've only recently pulled my career out of a stall, and I attribute that stall to the fact that I was focused so much on completing sprint / iteration tasks for my employer that I wasn't doing anything similar to keep my career and professional relationships on track.

So, more for my benefit than anyone else's, here are my To Do lists:

5 Things To Do Every Workday:

  1. Read at least 2 articles on Quality
  2. Read at least 2 articles on relevant technologies
  3. Have short non-work related conversations with each coworker
  4. Check in with each coworker regarding our progress towards our goals
  5. Take a break and Get some exercise (without exercise, you can't be healthy. without health, you can't do a good job.)
5 Things To Do Each Workweek:
  1. Have lunch with a coworker or colleague
  2. Go to a class or meetup
  3. Make a post to this blog or other similar venue
  4. Try something new even if it means failing
  5. Evaluate the work I've done to see if it supports my growth
5 Things To Do Each Quarter:
  1. Update LinkedIn
  2. Take a professional level class 
  3. Contribute something substantial to Open Source
  4. Attend a conference
  5. Evaluate my goals and progress towards them