Reading List

The most recent articles from a list of feeds I subscribe to.

Deploy static sites to Digital Ocean with Travis CI

This blog is written with Hugo, a static site generator written in Go. I also have a second blog that uses Hugo as well - and while I love the speed and simplicity of this system, it’s still a pain to deploy by ssh-ing into my remote machine, pull updates, and build manually. Even when I can authenticate via YubiKey ;) So over the Christmas holiday, I automated the deployment of this blog whenever I push to the master branch.

Set up 2FA on Ubuntu with YubiKeys

What’s a YubiKey? A YubiKey is basically a tiny device that plugs into your USB slot and pretends to be a keyboard. When you tap the little golden disc, it types out a One Time Password (OTP). Through the Yubico API, you can easily validate this password, and use it in combination with another method of authentication (such as a password or ssh key) to achieve two-factor authentication (2FA). Many popular websites like Google, Facebook, and Github allow you to enable 2FA via YubiKeys.

The Perils of Outsourcing Your MVP

A few months ago, I had a brilliant idea for a website. Then, I had an even brillianter idea: build the website, but outsource all the work.

Every great website starts with an MVP: the minimum viable product. It demonstrates the idea in its simplest form to test whether anyone is interested. When Twitter launched their MVP, you could only tweet pictures of Russet potatoes. Slack famously launched with language support limited to pig latin. Netflix is now so synonymous with instant streaming that you may have forgotten its first version, which required you to select a movie, then wait several days until Reed Hastings arrived at your house to act out the plot himself.

KetoHub: Month 2

Prior to February 2019, I published all my retrospectives on Indie Hackers:

Sia-Minio Integration Postmortem

One of the best things I learned from working at Google is the practice of blame-free postmortems. When something goes wrong, you wait until the dust settles, then write a report analyzing what happened. The report explains how the problem occurred and defines concrete steps the team can take to mitigate the problem in the future.

I saw a good opportunity for a postmortem last week. Work officially completed on a bounty-funded project to integrate Sia support into Minio, but it took several months longer than expected and went through multiple large-scale rewrites.