About This Website

Created: Feb. 24, 2018
Modified: May. 10, 2020
Tags: meta, personal

This Website

The motivating idea for this site is that it become a sort of garden that I will tend over time. Revising some parts, pruning others, grafting on new notes.

Less metaphorically, it is a perpetual draft. I am fascinated by human projects that take a long view, that unfold over the years, and that reward patience. My ambition is that this website can be such a project for myself.

Colophon

The core principles guiding the design of nwj.cc are:

In keeping with those principles, the site is static HTML and CSS. It loads no Javascript at all. I write all content in CommonMark Markdown and compile to HTML using Hugo. I use the excellent TailwindCSS framework for styling. Hugo Pipes and PostCSS handle CSS minification and other asset compilation. A full revision history is in git (see this Github repo).

I host the site on the smallest, cheapest Digital Ocean droplet available (currently 1 GB RAM + 1 CPU). Nginx serves it. I deploy it using Ansible. There is no user tracking code, though I monitor basic traffic via server logs and GoAccess.

Me

I am a software developer and engineering manager living in NYC. Since 2014, I have worked at Braze, where I manage one of their engineering teams. In a prior life, I worked as a policy analyst for the New York State Governor's Office. And before that, I studied history and philosophy at Swarthmore College.

Websites

Projects

Uses This

Hardware

Computer-wise, my daily driver is a 2017 MacBook with 16GB of RAM. Apple has since replaced this model with the MacBook Air, which is the same idea but with two USB-C ports instead of one and a slightly larger screen. Anyway, this is the best computer I have ever owned. It is sleek and thin and light. It has more than enough power for my needs. If I need a bunch of compute, it's trivial to spin something up on AWS or Digital Ocean.

For gaming purposes, I have a custom built desktop. Its core components are a Ryzen 5 3600X processor, a GeForce RTX 2070 Super graphics card, the Asus X570-Plus motherboard, Fractal Design's Meshify C case, 16 GB of RAM, and a Samsung 970 Evo SSD. This is hooked up to a Roccat Kain 120 Aimo mouse, a Varmilo VA87M mechanical keyboard with colorful keycaps, and Sony WH-1000X M3 noise canceling headphones. I wouldn't recommend those headphones, by the way, because they have a design flaw that causes the headband to break really easily. Mine are currently wrapped in electrical tape because of that.

At work, I use the standard startup issue 13” MacBook Pro. How boring.

My phone is a Pixel 3a XL. I especially love that it runs stock Android and that it has a fingerprint reader. All the other Android phone manufacturers keep self-sabotaging by adding their own bloated, crappy software to Android and never issuing OS updates. More broadly, my take on the current phone ecosystem is that the hardware is amazing. Is anyone using modern phones in a way that pushes the limits of the hardware? The software, on the other hand, is so limiting. It's all walled garden apps with no interoperability and design that trades power and creative expression for “usability”.

When I'm not reading on my phone, I read on a Kindle Paperwhite. And I listen to music and shelter from the sounds of the subway with a pair of Jabra 65T earbuds.

While I am, by tradition and upbringing, a PC gamer, most of my gaming over the last few years has been on the Nintendo Switch. The Switch is an instant classic. I hope its form factor and flexibility inspire a bunch of future devices.

I carry some of these things around in a Tom Bihn Synapse 25 backpack. Do not be fooled by the conservative and somewhat dull appearance. It is an exceptionally well designed bag.

Software

I spend the most time in Firefox (extensions: HTTPS Everywhere, uBlock Origin, Neat URL, Momentum, 1Password). All my writing (of code or text) is done within Neovim (my config) running inside Alacritty + zsh (with oh my zsh) + tmux.

My go to programming languages are Ruby (version managed with rbenv), Javascript, and Elm. I've worked a little bit with Go. I'm learning Rust. I prefer Ansible (my playbooks) for configuration management and deployment. While I sometimes use tools like docker and (to a lesser extent) kubernetes, they strike me as excessive complication unless you are running large distributed systems.

I use the same UNIX command line tools as the rest of the world, but a few exceptions are worth mention. ripgrep is a blazing fast replacement for grep, written in Rust. tldr is a simple alternative to man pages. fzf is a fuzzy finder which I use for path and shell history searching. bat is a cat replacement, but with line numbers and syntax highlighting. exa is an ls replacement with some nice features, like git integration and better colors.

For facts and ideas that I really care about, I use Anki to remember. Technology aided spaced repetition is the closest thing to a super power I have encountered, other than maybe modern contact lenses. My personal note taking system is just a folder, synced with Dropbox and managed with Zeke, which has a bunch of markdown files in it. I track other things in Todoist (todo lists…), Pinboard (bookmarks), YNAB (finances), and Beeminder (goals).

Other miscellany. Alfred, Bartender, Rectangle, and Day-O are nice quality of life improvements for macOS. f.lux keeps me from messing up my sleep schedule. And there's this lovely tea timer built by Michael Villar.

All of this software is installed and kept up to date via homebrew. I back everything up via Dropbox and Borg.