Essays

I've been writing and publishing essays on this site since 2010. Here they are, gathered into topics. If you'd like to see them chronologically check out the full archive.

Best Of (start here)

Mastering Modern Payments: Using Stripe with Rails
A concise ebook packed with helpful tips and juicy best practices for integrating Stripe into your Rails application.
DNS: The Good Parts
Dig through the DNS and learn how and why it all works.
Program your Finances: Command-line Accounting
All about my financial journey, from debt-ridden towards debt-free. More importantly, this is a very basic introduction to how to use ledger to keep track of your finances. This has been described as the best introduction to ledger out there.
The Stripe Webhook Event Cheatsheet
Fourteen common scenarios and the hooks that Stripe fires for them, including full JSON samples.

book reviews

Book Review: The Box
After reading The Box by Marc Levinson I'm relatively certain the Millenium Falcon would be considered a breakbulk tramp freighter.
Book Review: Tubes: a Journey to the Center of the Internet
Take a journey through the literal tubes of the Internet, tracing cables to routers to data centers across the world.

business

Does an LLC protect me from a personal injury lawsuit?
LLCs have "limited liability" right in the name, but what does that actually mean?
Organizing Your Consulting Business
The best strategy for organizing your consulting business.
Pay Your Taxes!
Freelance software developers have to pay taxes too, just like everyone else.
What is the best modern payment provider?
A comparision of modern payment providers including Stripe, Braintree, Balanced, and more.
Five business lessons from an idle game
What a simple idle game can teach bootstrappers about their businesses.
Bootstrapping a Side Business - First Steps

dns

Your DNS Provider Should Not Be Your Registrar
By hosting your DNS nameservers at your DNS registrar you are exposing yourself to a large liability.
Fix Your Email Deliverability with DMARC
Improve your email deliverability using DMARC, SPF, and DKIM.
DNS: The Good Parts
Dig through the DNS and learn how and why it all works.
How and why I'm not running my own DNS
Running a DNS server is not without it's drawbacks. Eventually I decided not to do it.
How I run my own DNS servers
Running your own DNS server using Tinydns is cheap and easy and fun.

email

DKIM Deep Dive
DKIM (DomainKeys Identified Mail) is another type of email deliverability record that helps recipient servers be confident that you authorized any given email. This post is a deep dive into how it works and what it's good for.
SPF: Sunscreen for your Email
Sender Policy Framework (SPF) is a type of email deliverability record that helps servers that receive email verify the sender. This post is a deep dive into how it works and what it's good for.
Email: The Good Parts
There are an awful lot of interesting things happening between hitting Send and your email hitting an inbox. This post is an overview of how your message makes it's way to your recipient.

finance

Program Your Finances: Algorithmic Savings
Using algorithms to calculate savings targets instead of percentage-based automated ledger transactions.
Program Your Finances: Envelope Budgeting
Use Ledger's automated transactions to implement envelope-style budgeting.
A Robust Reporting System for Ledger
The reporting system I use to manage my financial life. Reports are just HTML and ERB with a smattering of SQL.
Program Your Finances: Automated Transactions
Walks through a simple but very capable and extensible reporting system for ledger written in Ruby. Reports are simple ERB pages with embedded SQL and javascript.
Program Your Finances: Vacation Tracking
Describes a system that I hacked together in an afternoon before a recent vacation that let me keep track of vacation finances on the fly without a laptop.
Program your Finances: Reporting for Fun and Profit
Outlines a reporting system that I used for awhile to run queries against my ledger data that I couldn't with the native ledger program. Also introduces a small tool for generating realistic sample ledger data.
Program your Finances: Command-line Accounting
All about my financial journey, from debt-ridden towards debt-free. More importantly, this is a very basic introduction to how to use ledger to keep track of your finances. This has been described as the best introduction to ledger out there.

hardware

Mounting a Magic Trackpad on a Kinesis Advantage Keyboard
The Kinesis Advantage is a funky keyboard with a blank spot exactly right for mounting a Magic Trackpad. But how to get it to stick there?
Quadrotor Update 3
Quadrotor Update Part 2
It moves! It flips itself over!
Quadrotor Update
Things are not looking so great in the land of Quadrotors.
Quadrotor Motors Are Alive!
Building up a quadrotor using an Arduino and Wii motion sensors.
I Soldered Something!
Knocking together a little Arduino demonstrator, including soldering something for the first time in about ten years.

networking

Building a Private Backplane Network for your VPSs with ZeroTier
See how I built a private network that ties together my VPSs and my laptop.
Increasing the Encryption Noise Floor
HTTPS is incredibly important for the survival of the Internet and installing it is easy.

politics

We (Probably) Have Two Years of ACA Left
Don't panic just yet. There are at least two reasons why.

software

Know How To Roll (Your SSL Certificates)
Learn how to keep your SSL certificates up to date and valid.
Command Line Faxing
The fax machine is an archaic technology. Let's mash it up with another one!
Start a VirtualBox VM at Boot on Mac OS X
Sometimes you have a VirtualBox VM that's critical to your workflow. Start it at system boot with launchd.
Self-hosted Git Server
Moving off of Github and onto my own public Git hosting.
Using the Mailchimp API for Sales
Auto-adding purchasers to a Mailchimp list makes sending them email much lower effort.
A Practical Exercise in Web Scraping
Using Ruby and Docverter to pull down a whole website and convert it to an eBook.
Simple Git-backed Microsites
Make new websites on the fly with nothing but a git push.
Simulating a Market in Ruby
Public markets are fascinating entities, and at the core of most markets is a data structure called an Order Book.
Little Data: How do we query personal data?
Our lives are awash in little silos of data. How can we pull those together in a comprehensive way?
Post-mortem of a Dead-on-Arrival SaaS Product
My side-business Marginalia has not done well so I decided to put it out to pasture.
DRY your Rails CRUD with Simple Form and Inherited Resources
Building admin interfaces is a drag. Make it easier with a few handy gems.
Essential Tools for Starting a Rails App in 2013
Gems and other handy tools that make building a Rails app easier.
Making eBooks with Docverter
Building an eBook is not a trivial endeavor but Docverter makes it easier.
Page Viewer, a Simple Markdown Viewer
Page Viewer is a little Sinatra app that just renders a directory full of Markdown files into HTML.
Design for Failure: Processing Payments with a Background Worker
Making requests to external services during a web request cycle is a recipie for pain. Learn how to make them in the background.
Distributed Personal Wiki
Putting together a personal git-backed wiki using Gollum and SparkleShare.
Full Text Search with Whistlepig
Whistlepig is a small in-memory full-text search engine. This is how I embedded it into my blog engine.
Deploy 12-Factor Apps with Capistrano::Buildpack
Capistrano::Buildpack is a gem for deploying apps originally meant for Heroku onto your own hardware.
Deploying a 12-Factor App with Capistrano
Deploying Heroku-style applications to bare metal with the help of Capistrano and Foreman.
Run Anything on Heroku with Custom Buildpacks
Heroku is an incredibly flexible platform for running applications. You can compile your application exactly how you want it with custom buildpacks.
Private Git Repositories with Gitolite and S3
How I host my private git repos on my own hardware.
On-the-fly Markdown Conversion to PDF and Docx
How to convert markdown content into other formats using Docverter.
Keeping a Programming Journal with Marginalia
Task-oriented Dotfiles
I set up my dotfiles by task instead of program, making them much easier to maintain.
Dokuen, a Personal App Platform
Deploying apps on your own hardware shouldn't be so hard.
Another Tiny Webapp
A little webapp for managing a painkiller schedule.
Concurrency on Heroku Cedar
One way of adding more concurrency to a single Heroku dyno using Unicorn and Resque.
Perl with a Lisp
My attempt at writing a Lisp in Perl using just the original Lisp micromanual.
Managing Your Processes with ProcLaunch.
Managing user-space processes with ProcLaunch, a Perl user-space init system.
Daemons are Our Picky, Temperamental Friends
A survey of available user-space process managers for running modern web applications.
Data Mining "Lost" Tweets
Gauging Twitter's reaction to the LOST finale in real time.
Iterating Elements in boost::tuple, template style
Building recursive template iterators for serializing boost::tuples
Everyone Needs Goals
Adding goals to the Calorific data format
Building Battle Bots with Clojure
Tiny introduction to Clojure via a bot contest system named RealTimeBattle.
Actionable Information
How do you get from data to information? How do you make it useful?
Moose vs Mouse and OOP in Perl
Comparing performance of two Perl class metaprogramming systems: Moose and Mouse
Calorific, a Simple Calorie Tracker
A simple system for tracking calorie consuption in a plain text file, inspired by Ledger

stripe

Stripe removed SSLv3 support. Here's how to fix the HTTP 401 errors.
Here are three solutions to fixing HTTP 401 errors caused by Stripe removing SSLv3 support.
Payola v1.2: Now with Subscriptions
Payola is a drop-in Rails engine for accepting payments with Stripe, now with Subscription support
Building Payola Extensions
How to extend Payola with your own functionality
Introducing Payola
A drop-in Rails engine for accepting credit card payments with Stripe
Stripe Account Balances for Service Credits
Your customer earned a referral fee. You can pay them with a credit to their Stripe account balance.
Using Stripe Checkout for Subscriptions
Stripe provides a gorgeous pre-built credit card form called Stripe Checkout. Learn how to best use it for subscription applications.
The Life of a Stripe Charge
How Stripe processes a credit card charge, from soup to nuts.
Adventures in Self Publishing
My journey from an empty text file to a successful book launch, including pretty graphs!
Shipping with Stripe and EasyPost
Make a thing, sell it with Stripe, ship it with EasyPost. Cruise control for cool.

updates

One Thousand Days
New Book: Handle Your Business
Let's Begin Again
I am now an independent consultant!
Mastering Modern Payments Is Out Today!
MMP is available to buy today!
Announcing: Mastering Modern Payments: Using Stripe with Rails
I wrote a book about using Stripe with your Rails application.
Cancer
2013 was a terrible, horrible, no good, very bad year.
Blog Relocation
I've moved my website to petekeen.net and managed the redirects like a pro.
New Blog Design
I redesigned my blog again. This time it's better.
Docverter is now Open Source
Marginalia: A web-based journaling and note taking tool
Journal and take notes on the web with a built-in email workflow.
Dokuen 0.0.8, Now with Linux Support
Dokuen Update
Yet Another (not very) Static Blog Generator
The second major version of the engine that runs this site is a small Ruby/Sinatra application.
Introducing FivePad
What sucks about apartment hunting?
Remindlyo is a Go
Random Remindlyo Things
ProcLaunch v1.2
ProcLaunch Improvements and v1.1
ProcLaunch v1.0
Blog Generator Updates
Adding RSS and Other Things
Adding RSS to the old Perl-based engine
Yet Another Static HTML Blog
The very first post on this blog describing a very out-of-date backend engine.