Do you want to Change the world?

Nb: In the intervening time, we changed our name to Jewelbots.
“Do you want to change the world?”
I hear it everywhere, and it’s normally crap. Your Uber-meets-Spotify-meets-AirBnB-meets-your-appetite-for-food-at-2am idea is not going to change the world.
I’ve heard it so much I’ve become jaded. I actually repel when I hear those words.
That was before I knew about Jewliebots.
I’ve known Sara Chipps since I’ve known about Twitter. She was one of the first tech people I followed. She produced a rad video on Ada Lovelace, and her enthusiasm about technology has always been inspiring to me.
When she first talked about Jewliebots in her medium posts on building a hardware startup, I became even more interested. My first and sole thought was: How do I become a part of this?
Let me step back. Jewliebots is (in our parlance) wearable jewelry aimed at exposing young girls to programming. It’s one part Minecraft, one part Arduino, and all social. In short, it aims to make programming interesting and accessible for young girls.
It also has the potential to change the world.
After meeting with Sara and Brooke and the rest of the team behind Jewliebots, I was even more on board.  Here I was, interviewing for a startup with a goal I believe in and the potential to work with people I believe in.  Normally it’s either a company I believe in or technology I’m passionate about; I’ve never been in the situation where both apply.
I’ve only been happier three more times than the moment Sara and Brooke offered me the chance to work on Jewliebots: my wedding day and the birth of my two daughters.
I believe in Jewliebots, I believe wholeheartedly in our mission, and I’m proud to say that starting today, I’m employee #1 and VP of Software Engineering at Jewliebots.
My goal: to make sure the software that powers Jewliebots meets our mission and to build a team who shares that goal.
I’ve never felt more strongly about anything in my professional life.
If you’re interested in learning more about Jewliebots and potentially joining us, please drop me a line. I’d love to hear from you.

Making the Leap

Today marks my last day at Higher Logic, and with it marks a year+ of working to build up the software infrastructure from startup to sustainable.
I’ve really enjoyed my time here; a year ago I had no knowledge of AWS, and a developer’s knowledge of SQL Server. I had only shipped one JavaScript project, and was still uncomfortable just going out and ‘doing’ on my own.
That year has also included:

  • Marking one year as a DBA; and 2 years as a Full Stack Developer.
  • migrating 500 databases from SQL Server 2008 to SQL Server 2014
  • Planning and implementing a Disaster Recovery solution for 500 databases;
  • Shipping Higher Logic’s Widgets platform
  • My first, second, and third pull requests into open source projects
  • writing fixes for Video.JS playlist plugin
  • digging deep on SQL Server improvements; query optimization and production troubleshooting
  • Making lots of mistakes along the way
  • Refactoring and putting in unit tests (I repeat myself) to allow improvements to infrastructural code including a hand-rolled ORM (not by me)
  • Giving several talks; including a talk at the HUG Super Forum on the new Widgets Platform and a talk to developers on Git
  • Building tools to provision SQL Server instances on AWS and to set up those instances according to the Brent Ozar SQL Server Setup Checklist
  • And even more mistakes and fixing of those mistakes; including two (brief) production outages

I’ve enjoyed my time in the .NET world; but I’m anxious to get back into other technologies, and to immerse myself in the JavaScript world. Time to leave the kiddie pool.
As to what I’m doing next? I’ll give two hints:

  • See the title
  • My career progression has been: Large Corporate -> Defense Contracting -> Medium Sized Business -> Small business that just left startup mode -> ?

Confusing UX and the CAN-SPAM Act

I tried to unsubscribe from Lumber Liquidators’ emails today:Screen Shot 2015-03-05 at 9.10.36 AM
There’s a button that says unsubscribe; but unless you notice and click the checkbox above it, you won’t be unsubscribed. Don’t believe me? Proof:
Screen Shot 2015-03-05 at 9.31.57 AM
You’d think this would be illegal under the CAN-SPAM act, however, it isn’t:

5. Tell recipients how to opt out of receiving future email from you. Your message must include a clear and conspicuous explanation of how the recipient can opt out of getting email from you in the future. Craft the notice in a way that’s easy for an ordinary person to recognize, read, and understand. Creative use of type size, color, and location can improve clarity. Give a return email address or another easy Internet-based way to allow people to communicate their choice to you. You may create a menu to allow a recipient to opt out of certain types of messages, but you must include the option to stop all commercial messages from you. Make sure your spam filter doesn’t block these opt-out requests.
6. Honor opt-out requests promptly. Any opt-out mechanism you offer must be able to process opt-out requests for at least 30 days after you send your message. You must honor a recipient’s opt-out request within 10 business days. You can’t charge a fee, require the recipient to give you any personally identifying information beyond an email address, or make the recipient take any step other than sending a reply email or visiting a single page on an Internet website as a condition for honoring an opt-out request. Once people have told you they don’t want to receive more messages from you, you can’t sell or transfer their email addresses, even in the form of a mailing list. The only exception is that you may transfer the addresses to a company you’ve hired to help you comply with the CAN-SPAM Act.
(source: CAN-SPAM Act Business Compliance Guidelines)

The UX may be designed to confuse visitors into staying subscribed; but (using a plain reading) it complies with the letter of the law.
Bonus: The CAN-SPAM act never uses the word ‘unsubscribe’, and only uses the word ‘opt-out’ three times.

On "Minimum Vacation"

Vacation days: Wherever you go, it’s a topic that makes CFOs groan and workers cheer. It’s generally understood as one of the best perks of a company in industries where pay is relatively fixed or there isn’t much competition for talent. In places where there is a lot of competition for talent; it’s a paper benefit usually. Yea, it’s there, but you’ll be working so hard that you won’t even realize you have it.
Thinking about Developers, we tend to work very long hours, even though it empirically hurts us and the company. Extreme Programming tried (and failed, sadly) to introduce the notion of the Eight-Hour burn; a reasonable spin on what programming should be. But with distractions aplenty, it’s hard to justify an eight-hour burn.
Whether we want to admit it or not, programmer culture is destructive both to itself and the businesses that hire us. Some businesses have tried to turn this negative into a positive force, by having Game rooms (Google, Stack Exchange, Twitter, Facebook, Zynga, Dropbox, and a lot of others (I didn’t link individually because I didn’t want Google to think I was a bot, incidentally)). But the unfortunate quality of a gameroom is that if you’re putting in an eight hour burn, you don’t have time to use one. In effect, its presence is a signal you should be putting in more than eight hours a day — unsustainable if you want a happy and healthy workforce.
Some of these same businesses have also tried the concept of ‘unlimited vacation’; the idea that you can take as much time off as you need, so long as you deliver results expected by the business. This requires clear expectations (which isn’t always easy if you don’t have a rigid feedback structure), and trust.
In reality, unlimited vacation really means that depending on who you are and what you’ve done, you either have two weeks off a year or four (still not bad). It also means that if you’re on a team where no one takes time off, you’ll be the odd one out if you do — never a good idea (even if it’s supposedly culturally acceptable). The old adage: “Get in before your boss, leave after” still applies. It’s also a cost-saver for the business: No paying of vacation days when a worker leaves, and no need to pay for costly (and usually bad) PTO tracking software.
Other businesses, recognizing the problems with unlimited vacation; have instituted the idea of a ‘minimum vacation‘, or unlimited vacation with a culturally mandated (and therefore acceptable) floor. The CEO of Travis CI, Mathias Meyer, explains the shift:

When Travis CI turned into a business with employees, one of our ideas was to not constrain people in how much time they take off for vacations. We didn’t track the days people were taking off, and as the people running the company, we didn’t actively encourage people to take times off. In short, we had an open vacation policy.
The cause was intended to be noble, as we didn’t want to get into the way of people taking time off as much time as they need to recharge. I myself am a big fan of disconnecting for a vacation and staying away for more than just a few days to free the mind, gain new energy and fresh insights.
Two years later, this idea turned out to be a failure, and we’re changing our vacation policy.

Deeper into the post, he talks about what Travis CI’s minimum vacation policy actually means:

Starting in 2015, we’ve implemented a minimum vacation policy. Rather than giving no guideline on what’s a good number of days to take off, everyone now has a required minimum of 25 (paid) vacation days per year, no matter what country they live in. When people want to take time off beyond that, that’s good, and the minimum policy still allows for that.
[…]
We removed ambiguity of whether or not someone should check in by having explicit guidelines on what constitutes a vacation day and what doesn’t. Our expectation is that when you’re on vacation, you do everything but stuff that’s related to Travis CI.

The whole post is well worth the read.
Vacation will always be a thorny issue, and minimum vacation may not solve the problem of programmer burnout, but it is a good step in the right direction. There are other steps we can take, but it should really start with dropping the keyboard and remembering that there’s a life beyond the compiler.