Making software better without sacrificing user experience.

As a designer/developer hybrid, I help software companies improve their user experience and ship more performant products. I also actively maintain several open source projects.

I'm passionate about open source software, usability, performance, privacy, and minimal design. This small piece of the internet stores a growing collection of my personal brain dumps.

Skills & Languages

Core tools are Figma, HTML, CSS, JavaScript & WordPress. Currently improving my skills with Ruby, Rails, MySQL & PHP. I also enjoy tinkering with basic shell scripts and Unix systems.

Design Thought Experiments

Stop Using Hamburger Menus (Sometimes)
Common performance and accessibility issues caused by using hamburger menus.

Better Search Results
Rethinking the UX flow of modern search engines.

My Coffee Maker Just Makes Coffee
How products should focus on doing one thing very well.

Blog Anonymously
A basic starting point for those wishing to blog privately.

Articles & Tutorials

2024-01-02 · My Text Edtior is Not Open Source
2023-12-17 · Switching Things Over to ikiwiki
2023-11-02 · Bringing dwm Shortcuts to GNOME
2023-09-26 · The X220 ThinkPad is the Best Laptop in the World
2023-09-11 · Installing Older Versions of MongoDB on Arch Linux
2023-07-21 · Converting HEIF Images with macOS Automator
2023-06-24 · Blogging for 7 Years
2023-06-13 · Improving Laptop Battery Performance on OpenBSD
2023-06-05 · Running VSCode in Chromium on OpenBSD
2023-05-19 · My Robotic Mower Woes
2023-05-11 · Working with `git` Patches in Apple Mail
2023-05-05 · Stop Using Hamburger Menus (Sometimes)
2023-05-01 · Converting My X201 ThinkPad into a Slabtop
2023-04-25 · Applying Email-Based Git Patches in Evolution on Linux
2023-04-13 · Launching Sublime Text with dmenu on Alpine Linux
2023-04-11 · HTML Dark Mode
2023-04-02 · Bypassing the WiFi Hardware Switch on the Lenovo X201
2023-03-16 · Installing Ruby with RVM on Alpine Linux
2023-03-14 · Stop Using Custom Web Fonts
2023-03-09 · Replacing My Eero Mesh Network with Two Mangos
2023-03-03 · Why I Stopped Using an External Monitor
2023-02-08 · Dynamic Viewports with CSS
2023-01-09 · My Coffee Maker Just Makes Coffee
2022-12-23 · I Want to Suckless and You Can Too
2022-12-08 · Adventures in Creating a Minimal Alpine Linux Installer
2022-12-02 · Building openring with Jekyll Build
2022-11-23 · Do You Have an Extra $10?
2022-11-22 · Embracing Slow Tech
2022-11-14 · Migrating from GitHub to sourcehut
2022-11-07 · Never Do Spec Work for Free
2022-11-04 · Setting Up AdGuard Home with Eero
2022-10-14 · Avoiding Featurism
2022-10-03 · Simplifying the Craigslist Gallery
2022-09-22 · RE: Creating a Simple HTML/CSS Notice Box
2022-09-20 · Installing Custom Fonts on Linux from the Command Line
2022-09-19 · Setup Jekyll from Scratch on a New Linux System
2022-09-10 · Don't Make a Blog, Make a Brain Dump
2022-09-08 · A Warning for New Designers: Avoid Dribbble
2022-09-02 · Setting Up Jekyll on Windows
2022-08-12 · Looping Through Jekyll Collections
2022-08-02 · Making a Website Under 1kB
2022-07-29 · Hosting with Codeberg Pages
2022-07-14 · The Linux Desktop is Hard to Love
2022-07-06 · Yet Another Static Site Generator Switch
2022-06-29 · Happily Paying For macOS Apps
2022-06-20 · Clickable Links Inside XML
2022-05-30 · Schools Should Be Using Open Source Software
2022-05-23 · RSS Hacks With XSLT
2022-05-17 · Two Weeks with the DuckDuckGo Browser
2022-05-13 · This Site is Now a Shinobi Website
2022-04-18 · Dear Apple, Please Fix Safari's Default Dark Mode Link Color
2022-03-21 · My Static Blog Publishing Setup and an Apology to RSS Subscribers
2022-03-14 · Setting Up a Pi-hole Server with Eero
2022-03-12 · Transferring Media from macOS to a Jellyfin Server (Raspberry Pi 4)
2022-02-23 · February 2022 Update
2022-02-03 · My Cheapskate Commenting System
2022-01-28 · Convert Files to HTML with macOS Automator Quick Actions
2022-01-06 · Chrome OS Could Become the Future Leader of Computing
2021-12-17 · Icons Should be Complementary - Text is Always Better
2021-12-06 · Hosting a Jekyll Site on Sourcehut
2021-12-03 · Using Netlify for Dynamic URL Redirects
2021-11-25 · Using a New Domain and Switching Static Hosts
2021-11-09 · Modern Improvements for Default Browser Styles
2021-11-03 · A Reality Where CSS and JavaScript Don't Exist
2021-10-28 · Setting Up 1.1.1.1 for Families on a Pi-Hole
2021-10-15 · Batch Converting Images to webp with macOS Automator
2021-09-23 · Enabling Safari Extensions with the macOS Catalina Patcher
2021-09-08 · Create a Performance-Focused WordPress Blog
2021-08-13 · Stuffing an SSD Inside the Raspberry Pi 400
2021-07-24 · Sharing The Things We Use
2021-06-20 · PS4 Download UI with Pure CSS
2021-06-07 · CSS Slope Graphs
2021-05-29 · SOMA Inspired Terminal Display with CSS
2021-05-19 · My Changing Opinion on Personal Website Design
2021-04-27 · Shiny, Animated CSS Buttons
2021-04-22 · 89 Blog Posts in a Single HTML File
2021-04-13 · Create a Mac App Icon with Pure HTML and CSS
2021-04-12 · The Lazy Developer's Dark Mode
2021-03-25 · Click to Load Website Images
2021-03-11 · Introducing PageRoast
2021-02-25 · ThriftyName: $5 Brand Names
2021-02-02 · Self-Hosting Fathom Analytics with DigitalOcean
2021-01-19 · Setting Up Fathom Analytics with Netlify
2021-01-13 · Introducing Notez
2021-01-05 · Animated Radio Tab Toggles
2020-12-28 · Disabling Comments in WordPress
2020-12-08 · Pure CSS Bar Graphs with Graceful Mobile Fallbacks
2020-12-04 · Obvious Javascript 'Injection' Fallback
2020-11-09 · Bidirectional Scrolling: Why Not Both?
2020-10-19 · Menu Toggle with Pure CSS
2020-10-07 · Poor Man's CSS Full-Bleed Layout
2020-09-29 · Simple Navigation Setup in Jekyll 3.9.0
2020-09-16 · Portable Pi: Cheap Raspberry Pi Zero Hacker Terminal
2020-09-09 · Over-Engineering an Oil Tank Gauge
2020-09-02 · My Raspberry Pi Desktop
2020-08-16 · Linux Mint MacBook Air Setup
2020-08-13 · Goodbye WordPress, Hello Jekyll (Again)
2020-07-07 · Improving Github's New Design
2020-06-22 · Keynote Slides with Pure CSS
2020-06-14 · Audio Hotkeys on Linux Mint
2020-06-04 · Quick and Dirty Theme Switcher
2020-05-13 · Mini Interactive Keyboard with Pure CSS
2020-05-06 · Fixing LocalWP on Fedora 32
2020-05-05 · WP Enqueue for Beginners
2020-04-29 · Faking 3D Elements with CSS
2020-03-31 · Stripe Menu Dropdowns (CSS)
2020-03-18 · Base64 All The Things! (Sometimes)
2020-02-07 · How to "FLOSS" as a Web Designer
2020-01-07 · Web Development on a $200 Chromebook
2019-11-29 · Billing for One CSS Change
2019-11-13 · Very Basic Form Styling
2019-11-01 · Improving Tufte CSS for Jekyll
2019-10-06 · Stop Using Sticky Navigation on Mobile
2019-09-28 · Being More Efficient as a Designer and Developer
2019-09-09 · Plain Text Emails, Please
2019-07-30 · Dynamic Checkboxes
2019-07-17 · Styling Empty Table Cells
2019-07-05 · Using HTML Validator Badges Again
2019-06-25 · They Won't Wait: A Warning for Slow Websites
2019-06-20 · Publishing Simple Books With Jekyll
2019-06-14 · Using Hamburger Menus? Try Sausage Links
2019-06-11 · Making Tables Responsive With Minimal CSS
2019-06-06 · Write HTML Like It's 1999
2019-06-04 · Using User-Select
2019-05-29 · News Websites Are Dumpster Fires
2019-05-22 · Text Align: Justify
2019-05-15 · Improving Receipt UX
2019-05-09 · Cut Your Forms in Half
2019-05-03 · First Letter Pseudo Element
2019-04-26 · Minimal CSS: Dropdown Menu
2019-04-23 · CSS Character Unit
2019-04-20 · Browser History Sucks
2019-04-15 · Yes, I Still Use jQuery
2019-04-13 · CSS Value: `currentColor`
2019-04-05 · CSS: Indenting Text
2019-03-26 · Simple Does Not Mean Ugly
2019-03-25 · Skip to Content Button
2019-03-13 · Prescription Form UI Improvements
2019-02-27 · Animated Card Tiles
2019-02-18 · Easy Toggle Switches
2019-02-15 · Super Mario Blocks in CSS
2019-02-05 · Proper UI Hierarchy
2019-01-28 · Tabbed Content Without JavaScript
2019-01-21 · Easy Custom Radio Inputs
2019-01-15 · Basic Gulp Build for Sass
2019-01-08 · Better Box Shadows
2019-01-06 · Over-Nesting
2018-12-19 · Using Parent Selectors in CSS
2018-11-28 · Width or Flex-Basis?
2018-11-22 · Adaptable Flexbox Grid
2018-10-18 · What Happened to Self-Hosted Blogs?
2018-09-28 · Using Multiple CSS Background Images
2018-09-20 · Pure CSS Simple Dropdown Plugin
2018-09-07 · Simple Accessibility
2018-08-07 · Setting Up a Free SSL
2018-04-16 · CSS Video Backgrounds
2018-03-24 · CSS Variables
2018-02-12 · Stay Hungry
2018-01-25 · Open Source Typeface Pairings
2018-01-14 · ET-Jekyll Theme
2017-11-20 · Chasing Performance
2017-11-01 · The Death of Personality
2017-10-10 · Unsolicited Design Review - Dropbox
2017-09-07 · Goodbye CSS Preprocessors
2017-07-10 · Designers Need Thicker Skin
2016-11-15 · The Wonders of Text Ellipsis
2016-06-28 · Aqua UI CSS Buttons