Back on WebFaction (again)

If you’re seeing this post, I’ve moved my site back to WebFaction (again). I decided a while back that I don’t want to sys admin a Digital Ocean box and, surprise, it took me a bit of time to sit down and actually move everything over. In doing so, I’ve set up a fancy SSL certificate too.

This site’s history: switched from 1&1 to WebFaction in June 2009, to Slicehost in May 2010, back to WebFaction in September 2010, and to Digital Ocean last March.

Riley’s pie crust

Leah has been making pretty amazing quiche on an almost weekly basis. It’s a filling, wholesome breakfast for the two of us, and a godsend given our crazy weekly schedules.

The crust makes or breaks a quiche. We love our friend Riley’s recipe, so much so that Leah pre-makes a half dozen crusts and sticks them in the freezer so we always have one ready.

Ingredients:

  • 3 cups flour
  • 1 1/2 teaspoon salt
  • 1 1/4 cup butter, warmed to room temperature
  • 1 egg beaten
  • 5 tablespoon water, cold
  • 1 teaspoon vinegar

Directions:

Mix flour and salt together, then knead in butter. Work until butter is well-mixed. Mix wet ingredients in a separate bowl, then add to other ingredients. Work together. Form into four balls. The dough can be frozen for up to two months. (Makes four crusts)

How Fusion does agile

As a part of NYU Studio 20’s project with Storyful, I did an interview on how Fusion applies agile in its product development methodologies. For lack of a better word, this is the funnest thing I’ve written in a while — it encapsulates my current thinking on distributed teams, open source, and many topics in-between. It was originally published on Fusion Next.

What do you do in your role at Fusion?

As interim Director of Engineering, I consider my primarily responsibility to be very similar to a janitor — keep the lights on, clean up messes, and make sure things are happening in an orderly manner. And, when they aren’t, I jump in to get things back on track.

For instance, over the past week, I’ve:

  • Helped with on-boarding two new full-time employees.
  • Reviewed and provided feedback on code written by potential hires on trial.
  • Edited job descriptions to go with the positions we’re hiring for.
  • Reviewed and deployed code from Fusion’s engineering team.
  • Worked with editorial to figure out the best way to do X, Y, or Z
  • Stayed up late to build a new feature for editorial, the night before the story ran.
  • Wrote code for a variety of bug fixes, feature tweaks, etc.
  • Wrote Github issues for problems we want to solve over the next few months, and need product definition and UX for.

Really, it’s anything that needs to be done to keep the team on track and working on the right things.

How does Fusion use agile in its development processes?

Before we make too many assumptions, let me frame the conversation. I think Agile™, as a formal process with right and wrong procedures, is bullshit. To me, agile means the minimum process needed to ship code that exceeds product goals. What that process specifically is depends on the composition of the team and what we’re working on.

Many digital news organizations publish an article when it’s good enough to go, and then revise from there. This is in contrast to print publications, where you can’t edit a story after it’s been printed. In a similar vein, the proper way to ship web software is to deploy your Minimum Viable Product and iterate, fixing bugs and tweaking features. Your development process should foster this process — just like it shouldn’t take 15 minutes for an article edit to appear on your website, it shouldn’t take two hours for your bug fix to make it to production.

Fusion is still experimenting radically with it’s “agile” process. Our two leading tools right now are Slack and Github.

We have two Slack organizations: Fusion Product for technology and product, and Fusion Digital for editorial. Given how easy it is to simply strike up a conversation with anyone, I cannot imagine being in an office of the same number of people, having to go over to someone’s desk, see that they’re not there, etc. etc.

However, Slack comes with costs too. It can be very easy to become overwhelmed by the number of conversations happening that you’re inadvertently following along. Also, text is a low-bandwidth form of communication, where subtlety is lost.

For the technology team, because our work is so closely tied to the products we’re building, Github issues are the best place to have conversations. Currently, we have repos for each product we’re responsible for, as well as a “Fusion for the Future” repo for discussing future projects, and a “Let’s UX This Puppy Up” repo for UX / design requests and our style guide. To add a light project management layer to our repos (e.g. determining which state each issue is in), we are using Huboard.

The goal for our Github repos is that no one should ever have to wonder what’s next to work on. Backlogs should be chock-full of well-scoped issues and features to pick from.

One of Storyful’s biggest problems is communication between departments. How do you overcome this obstacle?

I love this question! It’s right up my alley.

One of my favorite phrases from my days at Automattic is “communication is the oxygen of a distributed company.” Meaning, the success of a company is directly correlated to its ability to communicate. And, if a company is struggling, it’s probably because communication is breaking down in some way.

Given this assumption about the importance of communication, it begs the question: how do you communicate well? For me, it boils down to these things:

  1. Use the appropriate medium.
  2. Be deliberate in how you speak.
  3. Meetings and emails aren’t communication.

Open, archived text should be the default medium for conversation. It’s helpful to have everyone in the company in a communal, synchronous chat application for quick one to one exchanges. If the conversation doesn’t need to be real-time, then there should be an open, archived space for asynchronous communication. Fusion uses O2, the successor to P2, for this. It’s a blog with threaded commenting where anyone can post or easily review past conversations. See Sara Rosso’s presentation for how it’s changed Automattic. Lastly, if the conversation needs to be higher-bandwidth than text, go to audio or video. But a team that communicates well can conduct 90% of its conversations via text.

As an aside, it’s funny to me that Slack is now worth billions of dollars, and has taken over companies like wildfire, because IRC has been around for years. But, I guess that’s what happens when you get the UX right. Many people I’ve seen hesitant with IRC love Slack.

When you do communicate primarily through text, you need to be very deliberate in how you speak — it can be much easier to miscommunicate, because you’re lacking the subtlety you normally get in face to face conversation. Emojis can help with nuance. Screenshots are often worth a thousand words. Taking a pause to edit can greatly increase impact.

I love Michael Pollan’s “food-like substance” phrase because it can be re-used in so many ways. Meetings and emails are “communication-like activities”.

Meetings, because of their coordination costs, should be used sparingly. Just think — six people in a one-hour meeting represents six hours of lost productivity. If you do need the communication bandwidth that comes from meetings, a meeting shouldn’t be allowed to begin until it has an agenda with specific discussion points and a note-taker. These notes should then be archived to your open, archived asynchronous communication space.

Granted, face-to-face interaction is still important for keeping your team human. Fusion’s technology team has twice-weekly standups of 15 minutes or less, and Hangouts as needed. Because we’re a distributed team (currently NYC, Miami, Portland, Philly, and India), we plan to have a couple in-person meetups in 2015 too.

Similarly, emails are blackholes for the information a team needs to be productive. The context and details associated with an important discussion between person A and B is totally lost when person C joins the team. Do you really want to forward your entire email archive when person C joins the team? Or lose institutional knowledge when person A leaves the team? The types of conversations that happen in email can easily be done in Slack, O2, Github issues, or whichever open tool a team chooses to use. Archives are worth their weight in gold.

Scott Berkun wrote a book, “A Year Without Pants”, about his time with Automattic’s distributed culture that many people find a useful introduction.

How should other news organizations implement agile?

Once your communication is like oxygen, agile goes best with a heavy dose of open source software. Let me give you a real-world example.

Last night (Wednesday, December 3rd), Alexis Madrigal pinged me in Slack asking whether Fusion had a native way to embed a PDF in an article. DocumentCloud and Scribd are great, but also subject to DMCA requests. Alexis and Kevin Roose were working on story about the Sony Pictures hack, and wanted to embed a PDF version of a budget at the end of article.

“Give me 30 minutes,” I said. It ended up taking an hour and a half, but I was able to cobble together a solution using Mozilla’s PDF.js and putting the PDF in an Amazon S3 bucket Fusion controls. Thus, any DMCA requests will have to go through Fusion legal. Problem solved, powered by flat, effective communication.

Open source doesn’t just mean using open source software though. It means being a responsible member of the open source communities you’re a part of. And if you use any open source software, you’re a member of its community. Your product is dependent on that software — you want it to be healthy and thrive.

Just like being a good neighbor means picking up trash when you see it, being a good member of an open source community means taking the extra effort to open bug reports or create pull requests. Open source is a tremendous catalyst for software development — aka idea to production in a couple of hours — but it’s an informed, deliberate, and strategic activity.

Whoa, AppleTV

We’ve had an AppleTV sitting at home, boxed, for a couple months now. I purchased it when I bought our ridiculous TV, and have been one HDMI cable shy of getting it hooked up. Today I picked one up from Freddie’s.

Whoa, AppleTV is an amazing experience now. My parents had a version one or two several years back which was a bit meh — ok, so I can play the media I already have in my library, or purchase from the iTunes Store. With the addition of AirPlay and content from Netflix, YouTube, and other providers, it’s become much, much better.

Speaking of, Fusion has some real estate in the AppleTV digital storefront (not sure what the appropriate terminology is). When the channel launched in December, I didn’t think much of it. But it’s really neat! And Fusion produces great content. I’ve watched more clips in the past half hour than I’ve watched on the website in the last month.

Experiencing Fusion through AppleTV underscores how version 1.0 this whole post-cable video business is though. I have my iPhone out, and I’m just using it as a remote. The experience could be so much more.

While I’m watching a given clip, I want a synchronized second screen experience where I can dive deeper into the story — videos with links. When the clip is over, I want answers to "what next?" Stories like that of San Pedro Sulas shouldn’t dead end, they should take me deeper into the issue — from informational to educational to empowering.

Integration ideas:

  • Every video has a unique URL.
  • Web experience for the video is highly visual and interactive — engagement that doesn’t take me 100% away from the video like text does.
  • When I visit the video’s web page, I’m promoted to sign in via Facebook or Twitter so Fusion can keep track of the clips I’ve watched and let me follow topics, personalities, or series.
  • Like Amazon has on product pages, functionality so I can ask a question of the clip and have the producer or other viewers answer.

Year in Review: 2014

A reflection on family, business, and travel. See also: 2013.

It goes without saying: the biggest event in 2014 was the birth of our daughter, Ava Lucille. The past nine months have flown by; watching her experience the world brings new meaning to life. Furthermore, the home birth experience, which Leah wrote about, was amazing, empowering, and priceless for the both of us.

From Instagram, here are some of the highlights:

Professionally speaking

This year has been more, uh, turbulent than others in my career. I started 2014 as a Senior Engineer with Human Made, splitting my time between client services and product. In early February, I was fired. Don’t worry — we’re on good terms, and have since worked together on a couple of projects.

Getting fired turned out to be a blessing in disguise. Later in February, I landed my dream job with Digital First Media. I had grand plans to reinvent digital publishing using open source across DFM’s 100+ properties. But, while on my unofficial paternity leave, my business unit imploded, leaving me without a job again.

When you get fired and laid off within the span of a couple of months, working for yourself becomes incredibly appealing. I announced Hand Built, my WordPress consulting shop offering bespoke development, data migration, code review, and devop services. Since April, I’ve gotten to work with a variety of clients including:

  • Airbnb
  • Billy Penn
  • The Chicago Sun-Times
  • Easy Digital Downloads
  • Fusion
  • Investigative News Network
  • The New Republic
  • Pantheon

Solid list, huh?

Given my time with Human Made and WordPress.com VIP, I was fortunate to have a good sense of the consulting business. Still, solid advice always helps. Mike Bijon and Boone Gorges were nice enough to give me the rundown on how they operate their businesses (also worth mentioning: Modern Tribe’s freelancer guide). One of Mike’s invaluable tips: target 20 billable hours per week for 48 weeks out of the year, as you’ll likely spend 20 hours or more per week on non-billable admin, sales cycle, etc. In 960 working hours, I need to make all of the revenue I’d like to make in a year, also keeping in mind added costs of benefits and additional tax. This was a great framework for determining how I needed to sell my services.

A highly-relevant aside: I made an early decision to switch from Freshbooks to Harvest. Harvest is so much better than Freshbooks. One of Shane Pearlman’s, uh, pearls is to get religious about time-tracking. Before I started my business, I hated budgeting my time. Work estimates were the last thing I ever wanted to do. Once you get hooked though, you never go back — time-tracking is the only sane way to manage your most valuable resource. Harvest has really awesome Mac and iOS applications for logging hours against projects, and Freshbooks is basically a faff to work with.

Hand Built turned out to be viable. In 2014, I’ve gotten to:

  1. Work with (mostly) great clients on (mostly) interesting projects.
  2. Be pretty good about working sane hours and having a proper work/life balance.
  3. Put in 1,282.72 billable hours and 444.51 non-billable (including open source) hours since March.
  4. Prove it’s financially viable to be an independent software developer.

Closing the year, I’m spending the majority of my time with Fusion as interim Director of Engineering. It’s a somewhat of an odd limbo state — Fusion can’t yet extend a full-time offer because they don’t have a business presence in Oregon. If / when they do, I’ll probably accept, as I really enjoy the team and what we’re working on. But the limbo state has its advantages too — I’m on the hook for a fixed number of hours each week, and get to have my side projects.

2014-12-31 at 4.16 PM

In 2015, I’d like to improve upon two areas: open source contributions, and my product offerings.

In starting Hand Built, my goal was to spend roughly 25% of my time on open source. Even though I’ve become the maintainer of WP-CLI and a co-leader of WP-API, I’ve a bit fallen short: 28.66 hours on WP-API, 116.17 hours on WP-CLI, and 56.95 hours on other projects including WordPress core. But, this does equal ~12% of my tracked time so I guess I’ve exceeded Matt’s 5% goal. Setting monthly time budgets, as with any client project, is likely the best way to meet the commitment.

When I chatted with Boone, he mentioned 75% of his business comes from recurring, on-going contracts, avoiding one-off pick-up projects. In his opinion, it’s the most viable way to be a solo web developer. My past eight months echo this — the majority of my billable hours are priced hourly and a part of a long-term contract. I’d like to do more code reviews and migrations though, so I need to invest time productizing these offerings, marketing, etc.

Jet-setting

Both Leah and I love to travel. In 2011 and 2012, I managed to hit ~130k miles flown each year. According to TripIt, here’s the tally for 2014 compared to 2013:

  • 18 trips over 90 days (2013: 24 trips over 139 days).
  • 64,193 miles flown (2013: 99,228 miles).
  • Visited 19 cities in 4 countries (2013: 33 cities in 8 countries).

Not quite as impressive, but still pretty good.

Cemre Güngör put together a neat app for visualizing your TripIt profile. Here’s how mine turns out:

Time to go celebrate my sister’s 21st birthday. Happy New Year’s Eve!