Friday, May 8, 2015


When I left Etsy at the end of February, it was because I wanted to join something small where I could have a lot of impact. I did that, becoming a co-founder/CTO at a three person startup in Boston in the online grocery space. Unfortunately that business didn't work out, and closed its doors for good on April 6th. That left me wondering what to do next, and I spent the month of April talking to a lot of companies and exploring opportunities. I wanted to stick with my original plan of joining a small company, but I decided to make post-Series A companies my main focus, to take away some of the risk that I experienced at a seed stage, pre-product company.

I was introduced to Attend by a friend, and the company fit all of my criteria. It has a popular product in the market, has around 30 employees (~5 full-time engineers), just raised a Series A, is in growth mode, and has a great team. There's a ton of potential for me to learn technically there and grow as a leader. Attend provides an event management software product, which is also appealing to me since I like to go to a lot of conferences. The company's current focus is in higher ed, but it's only a matter of time before we tackle the tech conference circuit :-).

I'm starting this coming Tuesday as the "Lead Front End Engineer", although I plan on touching a lot more than just the front-end. That's where the biggest need is right now, but I'm excited to apply my knowledge across all layers of the stack and help grow and scale the business.

I'm really looking forward to this next challenge - wish me luck!

Thursday, April 30, 2015

Reflecting on 2.5 Years as a Remote

February 27th was my last day at Etsy, concluding 2.5 years as a remote employee (more on what's next in a future post). A lot has been written about remote work, including a recent book, but I wanted to talk about my own experience and some of the lessons that I learned over the past few years.

Overall Etsy does a great job with remote employees, and it continues to get better. During my last couple of weeks at Etsy they were rolling out a new policy that added a number of additional benefits for remotes (including the ability to bring your spouse with you to the main Etsy office in Brooklyn for a week once a year). All that said, at the end of the day I believe that how much you enjoy working remotely is more a function of your personality than the perks that your company provides.

Generally I think there's a correlation between how introverted you are and how much you enjoy remoteness. Here's how I put it in my last lecture at Etsy, discussing how my expectations matched reality.

Why the mismatch? A few reasons:

  • Being remote makes you want to get out more
  • I like having close friends at work, and this is harder as a remote
  • The pace of learning is slower as a remote, and a big reason why I came to Etsy was to learn from the amazing engineering team that Etsy has
  • Fear Of Missing Out translates to the Reality Of Missing Out. There are always activities, free food, and get-togethers that are happening in the office, and as a remote you can't take part in these things
One thing that really stuck out to me throughout my time at Etsy and from reading a lot about remote work is that really successful remote companies/teams have one thing in common: they are mostly remote. For a long time I was the only remote on my team, and part of a company that has roughly 10% remotes. While Etsy does a great job with their remotes, it's tough when you are a small minority at the company or on your team. 

Alright so it's challenging, but what are some specific things that companies can do to make remote life more enjoyable?

Team Off-Sites

My team came up to Boston for a week, stayed in an Airbnb near my house, and generally just hung out with me and got work done. This was a great way to make me feel like a true member of the team, get to know the folks on my team a little better, and interact socially as opposed to only communicating in a work context. I highly recommend doing team off-sites if you have remotes at your company. 

Communication Tools

You need to have some sort of real-time chat application with remotes. Etsy uses IRC, many companies these days are using Slack. Pick something and have as much conversation as possible there. 

You also need to have outstanding A/V setups in all of your conference rooms. Every time I was part of a meeting with 6+ people huddled around a laptop trying to video chat with me I died a little bit inside. It's ineffective, frustrating, and makes remotes feel like they aren't valued members of the conversation. Luckily Etsy recognized this, upgraded all of their conference rooms, and for the past year or so that I was there this wasn't a problem.

Buy high quality webcams for your remotes. The difference between a $100 webcam and the built in one in a Macbook is incredible, and the cost is negligible. This should just come as part of the package when a remote starts. Here's your computer, here's your webcam. 

Remote Bootcamps

If your company is serious about having remotes, every employee should have to go through a "remote bootcamp", where they work from home for 2+ weeks straight. This will uncover all sorts of small barriers that are likely easy to fix, and will help everyone understand the challenges of remote work. 

Trips to the Office

During my time at Etsy I came to the Brooklyn office roughly once every two months, for a full week. Really successful remotes tended to come more often, up to once every month. This meant that they were in the office 25% of the time, which can be pretty disruptive to your home life, but definitely helps work relationships. I have a lot going on in Boston, so it was tough for me to come to the office more often. I think it's great that Etsy encouraged frequent trips and paid for all of them, but the solution to being a great remote can't simply be "come to the office more". 

One big takeaway from these trips was that from my perspective the trip was special - something fairly unusual where I got to spend a lot of time with my coworkers and feel like I was a true part of the team. For everyone else in the office, generally it was just another day at work. My team did a great job planning lunches, dinners, and in person meetings when I was there, and I think it's really important to have a pretty structured week when remotes are in town. Without deliberate planning, you might spend 80% of your week sitting at a desk in the office coding away with headphones on - not the best way to spend your time. A big part of the responsibility for this planning rests with the remote employee, but anything you can do to facilitate that as a team member is beneficial. 

Wrapping Up

I'm glad that I had the opportunity to spend a couple of years as a remote. I learned a lot about the benefits and drawbacks of remote work, and how to do it effectively. I saw first hand what works and what doesn't, and what companies can do to make remote work as enjoyable as possible. I think my personality is slightly better suited to working closely with other people in an office environment, so I am unlikely to take another remote job in the near future, but I think having remotes can be a great way to access the best talent from around the world. If you are going to take a remote job, just be aware of the challenges and make sure that you are working for a company that takes remote work seriously (to reiterate, Etsy is a great fit in that regard).

Wednesday, November 5, 2014

Refocusing the Content on This Blog

I've decided to narrow the focus of this blog, exclusively covering the following topics:

  • Software Engineering
  • Web Technologies
  • Web Performance
  • My Career 

All of fitness related posts (pushupdates, GORUCK events, etc.) are moving to my new blog at I realize that the overlap between people who care about web technology and people who care about my crazy fitness goals is vanishingly small, so head over there and subscribe if you are interested in the latter.

Sunday, September 21, 2014

GORUCK Light After Action Review

I completed my first GORUCK event on 9/13, a Light in Boston. We covered about 8 miles in 5 hours and I was carrying roughly 30 pounds. Overall it met my expectations as a challenging event, although with significantly less focus on calisthenics than I expected. The vast majority of our time was spent rucking around Boston, with minimal time spent doing push-ups, flutter kicks, etc.

My class met at the Soldiers and Sailors Monument in the center of Boston Common, although we quickly had to move to the garden nearby to avoid a marijuana legalization festival. Our cadre checked everyone in, opened our rucks to check that we had the right amount of weight, and had us form up to listen to a little background on GORUCK. This particular event was special because it was a 9/11 commemorative event, so we spent extra time talking about the events of that day and why the cadre chose to serve in the military. We were informed that this “would not be a normal Light” and to “get ready for a difficult event”. Being that this was my first GORUCK experience, the apprehension started to mount a little bit.

We were taken over to the 9/11 memorial in Boston Garden and one of our cadre talked a bit more about the loss of life that happened on that day, what it meant to the people who were involved, and all of the lives that it touched. It was clear from the outset that this was going to be a serious, reflective event. Overall the class seemed motivated, respectful, and ready to begin. We had a moment of silence at this memorial: each person doing 200 flutter kicks on their back quietly - our first physical challenge.

Our class was large (66 people) so one of the first orders of business was to get a clear count and split us up among the two cadre. Unfortunately our group had a little trouble counting off, and we got a quick lesson in attention to detail. Counting off in a front leaning raise with a 30 pound ruck gets tiring quickly, especially when you have to count 60+ people 5-7 times.

After this we did a few more exercises in the garden, practiced some buddy carries, and split up into two groups of 33 people each. The rest of the event consisted of the two groups racing each other around Boston, visiting various landmarks, statues, and memorials that were relevant to either 9/11, servicemen and women, or the founding of our nation. The loser of each race had to pay some sort of penalty, typically a few burpees or some crab walking. On our first movement my team made the mistake of trying to cross a street when there wasn’t enough time left on the walk signal, and we stranded half of our team on the other side of the street. This was a stupid mistake (that I’m at least partially to blame for), and we paid for it by bear crawling and spending some time sitting in a fountain at our destination. It took this mistake for me to realize how long it takes 33 people with rucks and flags to cross a street (obvious hint: never try to cross when the red hand is already flashing).

Another lesson that we had to learn was how important it is to pick a sustainable pace. We had a wide range of fitness abilities on our team, and this resulted in people in the front breaking into a run, folks in the back yelling for us to slow down, and then other people yelling for us to speed up again. I know that a few of the team leaders got confused during this process, and weren’t sure how to fix the problem. In addition, some of the more experienced members of the group were frustrated that we were pounding the weaker members into the ground with the haphazard pace. My takeaway from this is that it is necessary to circulate among the entire group, make sure that people are okay, and move the slowest members to the front of the column so they can set the pace. This way you can keep up a consistent “GORUCK shuffle” that everyone can sustain for the duration of the movement. It pays to be a winner in these races, but it is more important to make sure that everyone is having a good time and that no one is left behind - especially during a GORUCK Light (the shortest event they offer).

We finished the event where we started, back at the garden and at the 9/11 memorial. After some final words about the people who lost their lives in the attack, we told each other our stories about where we were during it, and how it impacted our lives. This was a powerful reminder of the damage that was done that day, and it was also a good way to connect with the other members of the class. While this was happening, the cadre handed out our patches and then had us form up one final time to say goodbye. I know that a lot of the people who participated in this event will be back for another one, and the experience made me even more excited for the Challenge that I’m doing on Halloween night.

Physically the event was difficult, and I was sore for 3 solid days afterwards (my shoulders were the worst part by far).  That said, I really think that as the website states anyone who can complete a 5K can finish a GORUCK Light. The more you train the less you are going to suffer, but even someone with a really modest level of fitness can gut out a Light and have a great time. If this kind of thing sounds even remotely interesting to you, I highly recommend signing up. You will get way more out of it than your typical road race or obstacle race, and there’s a good chance that you’ll make some new friends.

Wednesday, July 30, 2014

Fixing jQuery Animate Flickering

I just spent over a hour wrestling with this bug, and I'm hoping this post will help spare someone else the same pain.

The problem that I ran into was an annoying flicker when using the jQuery .animate() function to change the opacity of a DOM node.  I did a bunch of Googling, but none of the solutions worked for me. I tried:

What ended up working for me was removing a CSS transition from the element being animated.  

The code in question (simplified):

listing.animate({opacity: 0}, function() {
    // some code

The listing element had the following CSS rules applied (simplified by removing vendor prefixes):
.listing-card {
        background: #fff;
        position: relative;
        border: 1px solid #ececec;
        border-radius: 3px;
        box-sizing: border-box;
        transition: all .1s;
        margin-bottom: 26px;

I deleted the transition and the flickering went away completely.

If none of these solutions work for you, I suggest doing the following to troubleshoot your specific issue:

  • Make a button on the page that toggles your animation back and forth.
  • Open up Chrome DevTools, and start deleting HTML, testing the animation with the button after each deletion until you have a minimal test case.
  • Now start turning off CSS rules in DevTools until the animation works smoothly without flickering

Hopefully this helps someone else avoid a few hours of debugging!