Blog
- Unstructured learning
- Double shift for search in VS Code
- Feels like it’s always been this way
- What is craft?
- Ignore all whitespace with git diff -w
- My simple method of tackling a to-do list
- Set a direction, not a goal
- Doing things until completion
- Is Twitter worth my time?
- Hugo detecting CSS changes but not rendering new styles
- Two open source projects with great documentation
- WordPress AJAX example with fetch and nonce verification
- Fixing Google Search only indexing my homepage
- When a tool becomes a platform
- Design your website without CSS
- Hide trending topics on X with uBlock Origin
- Hide the LinkedIn news feed with uBlock Origin
- Personal blogs I enjoyed reading in 2023
- It seems the App source '/Applications/Docker.app' is not there
- Traits of blogs I genuinely enjoy reading
- A less heard of reason to single-task
- Effort is noticeable
- A fair B2B SaaS pricing model
- One hour is a lot of time
- LLM precision problem
- Nothing is difficult, blame the tools
- Analytics aren’t evil
- Where product marketing falls short
- Is typography commercially worth it?
- Feedback fuels progress
- Barely started projects I’ll never finish
- A consistent setup is a productivity hack
- The biggest problem with programming languages
- Bye Linux, hello Mac
- Source Serif and Charter: a tale of two typefaces
- Take on less than you think
- To-do lists are terrible for your health
- Why do we append to digital documents?
- A new typeface for my blog
- I like living near a busy street
- A roundabout approach to solving problems
- Your level of zoom determines your audience
- Choosing good personal domain names
- Reading 2,000 resumes
- Serifs are back in business
- I tried npm install after a few years, and this is what happened
- Tech is overrepresented in blogging
- Learn Linux the hard way
- No-code platforms cannot replace code
- Working for vs working with
- My upload script is 176 times faster than Travis CI
- To get it ready, use it in production
- Depth first, then breadth
- How to make choices
- Clojure vs Go: Making a spell checker
- Great content that no one has ever heard of
- XML signal-to-noise ratio
- Measuring a personal blog’s success
- My Git and other shell aliases
- Be careful about overfitting when learning new skills
- Things I didn’t know about TypeScript
- Hiring is hard
- Programming blogs that go deep
- Scraping a website with Node.js and json2csv
- TypeScript has oddly specific types like Pick
- Learn programming by doing
- Need more memory on your cheap VPS?
- You can’t recommend books without context
- Programming’s built-in feedback loop
- Making a command line countdown timer
- The maintenance cost of JavaScript frameworks
- Living in the terminal
- Cache busting with Bash
- The discomfort compass
- Hash tables for unsorted array lookups
- A repository for your dotfiles
- A guide to dwm on Debian
- Cache busting static assets in Hugo
- Make bootable USB drives with dd
- Clojure: Checking for uppercase letters in a string
- Why I moved back to GitHub
- The typographer’s serif system font stack
- Typefaces included with Ubuntu 18.04
- Off to a good start