If you'd like to get my writings in your email, sign up for my newsletter.
October 2025
February 2025
January 2025
November 2024
September 2024
August 2024
July 2024
June 2024
April 2024
February 2024
October 2023
September 2023
August 2023
June 2023
May 2023
March 2023
January 2023
December 2022
November 2022
October 2022
August 2022
June 2022
- How I was extra as a parent and created a math worksheets generator
- How to tame your email inbox as a software developer
- Avoiding the hard for the easy
- How I've achieved success with my shutdown routine
May 2022
- Blender modeling preferences
- Seo Taiji reunion
- Mindful Slack status messages
- Stop, step back
- MCU burnout
April 2022
- Duplicate a project in Things with Apple Shortcuts
- Pass React component as prop to render as child in another component
March 2022
- The user guide to working with Michael Lee
- Growth
- How to set up the PARA system in your digital systems
- First impressions of Fathom Analytics
February 2022
November 2021
September 2021
June 2021
- Thwart bots from spamming your newsletter with double opt-ins
- Luca
- Oh, that's what it could look like
- 3 email rules to manage email
May 2021
- Dangerous, but not scary
- Remembering who you are
- Purposefully boring, but fun tech
- Running a software business like a local restaurant
- Simple email forwarding with Forward Email
April 2021
- My favorite Apple device, Apple Watch
- Refreshed my about page
- How to create drop-down lists in Google Sheets
- Google can't tell me what to write about, so why don't you?
- Switch Wi-Fi networks from macOS Terminal
- Eight years
March 2021
February 2021
- How I use an external monitor with my Mac for ergonomics
- How I use the Eisenhower matrix to figure out what to work on
- Reimagining year left
January 2021
- Storyworthy
- iOS Scriptable YouTube widget
- Think less and start
- Forget the tools, focus on the experience
- Streak rules
December 2020
- 2020 annual review
- Not time. But energy?
- At home with the Apple HomePod mini
- Text replacements in macOS
November 2020
- Creating an iPhone storage widget with Shortcuts, Toolbox Pro and Scriptable
- Stress sucks
- Getting editible text from a photo with Shortcuts on iOS with OCR
- Run a shortcut as an action in Shortcuts for iOS
- npm pre version 1.0 caret rules
October 2020
- 5 reasons why I use Buttondown for my newsletter
- Adding a cache policy to images hosted in AWS S3
- Generate a QR code image for your Wi-Fi in Shortcuts on iOS or iPadOS
- How to pronounce specificity
- How to pronounce canonicalization
- Set up a macro in Keyboard Maestro to quickly end Zoom calls
September 2020
- Changing domains for a website hosted on Netlify
- Assign quick actions to tapping on the back of your iPhone
- Installing Nova's Command Line Tool
- Launch websites from Spotlight using Terminal commands in macOS
- How to hide icons on your desktop quickly on macOS from Terminal
August 2020
- Linking together to-dos in Things with links
- A light touch web application
- What's old is new
- Resets
- New stuff page
July 2020
- How I use Shortcuts on iOS and a template to automatically setup my weekly note
- Tell stories
- Acknowledge a maker
- The journey to creating a coloring book for my kids
June 2020
May 2020
April 2020
- Buttondown tells you where
- The one feature that won me over to switch to Buttondown for my newsletter
February 2020
January 2020
December 2019
October 2019
- You are a software engineer
- Moved site from Netlify to Render
- Ephemeral software
- Git not working in macOS Catalina with xcrun error
August 2019
July 2019
- Resizing tmux panes video
- Unregistering service workers in Firefox
- Better product creation through design collaboration
June 2019
- Compile a site with Jekyll without installing Jekyll using Docker
- First step to making your website responsive
- Precompiling Rails assets for production
May 2019
- Access iCloud Drive quicker in Terminal by creating a symbolic link (symlink)
- iCloud Drive path in Terminal
- Simplicity is powerful
- :clap: Thanks!
April 2019
March 2019
February 2019
January 2019
December 2018
- Whee!, a newsletter highlighting the funnest web dev things
- My thanks to Learn AWS By Using It
- Avoid setting up an inbox for MailChimp by using AWS's Simple Email Service (SES)
November 2018
- The innovators always got to wear a different, more exclusive shoe than anybody else, mainstream consumers had the satisfaction of wearing the same brands.
- Rolling my own site sponsorships
- Multiple user management on iOS probably ain't happening
- In-App purchases are not shareable with Family Sharing in iOS
- Google Forms is neat
- Google Analytics gtag setup for Rails 5.2
- Toggle word wrap in Vim
- Weniger aber besser (Less but better)
October 2018
- Postcard for book
- Enjoying the moment
- Where did you go?
- Behind the scenes look at Spell It Out
- Show ignored files in Atom's tree view
- CSS Grid guide
September 2018
- Rails 5.2 Credentials + Heroku
- OAuth, whoa
- What teaching my kids how to play tic-tac-toe taught me about user onboarding experience
- Frustration with defining relationships
- ConfsList's tech stack: Rails, Node, Rails, Node, Rails
- Introducing ConfsList
August 2018
- Hugo, first impressions
- Real time
- Supporting multiple Heroku accounts from the CLI
- Flexible UI elements with Rails render blocks
- My jobs before development
- Where are the views for Devise in a Rails app?
July 2018
- The tools I use, July 2018 edition
- CTO?!
- Rails ActiveRecord data types
- List all routes for a Rails application
June 2018
- So do it
- Saying bye to a project
- Rotating viewport in Blender on a Mac
- Swift cheatsheet for JavaScript developers
- WWDC 2018 thoughts
- WWDC 2018 acronyms spelt out
May 2018
- The ask
- Kindness of strangers
- Page scroll in Terminal
- The easiest way to be at the top of your field, is to choose a small field.
- Reading and writing files with fs in Node during a cron job
- A single step won't take you far, but many steps covers a lot of ground.
- Introducing @tinyraces
- Programming is hard!
April 2018
- Case insensitive sorting in SQLite
- The best tech stack for projects
- HomePod: Welcome Home
- Show the current time in a tmux pane
- Exit time on tmux pane
March 2018
February 2018
January 2018
- Class notes from PyLadies Remote - Building Websites with Jekyll
- David Neal's 5 essential ingredients for an awesome tech talk
- Onboarding at Airbnb design team
December 2017
- The case for a gem-based Jekyll theme
- Search and replace all instances of a string in Vim with a confirmation prompt
- Search and replace all instances of a string in Vim
- Blogging with Netlify and Jekyll
November 2017
September 2017
- 826 Valencia + Google
- Don't use JavaScript to create a back button
- Added PhantomJS to my invoicing
- Finding time to work on side projects or businesses as a parent
- Rolling my own invoicing
- Open sourced @year_left my Twitter bot
August 2017
- Open Hours JavaScript plugin
- From Ember.js to React
- Remove all console.log()s using Regex in Atom
- Software that delights
- Sarah Mei on criticism and how to give it in a way that's useful
- Matt Swanson's observations and practices of a tech lead
- Prevent Google from indexing your site
- Stop Steam from running at startup on macOS
- Defining archive
July 2017
- Just Works
- Why ask why?
- What's the difference between a tilde (~) and a caret (^) in a npm package.json file?
- Tiny wins every day
June 2017
- What stage your client's business is in and how it affects your freelancing job
- Where do I find a programming mentor?
- Freelancing? Tell somebody.
- I'm freelancing
- Add date to macOS menu bar
- Dad of three, no more
- Just use what you have
May 2017
- Speed up Jekyll serve
- What's the purpose?
- Year Left: A Twitterbot with a sense of urgency
- Deleting a word in Vim
April 2017
- Baking in empathy
- Show up, do the work everyday
- git standup
- Unsolicited declaration of love
- Just use what you got
- Results from my digital tip jar experiment aka my pizza fund
- Ain't easy
- Hello again
March 2017
- Rendering unescaped HTML in Ember.js with Handlebars
- Ember.js log helper
- TinyWins' tasks progress bar
- What is a POJO?
- TinyWins' tech stack
- Prettier MongoDB output
February 2017
January 2017
December 2016
November 2016
- Restore deleted files on iCloud
- Long running businesses
- Solving intimidating problems
- So here we are
- Tell good stories
- The why
October 2016
September 2016
- Purpose behind archive and delete in OTDT
- Installing pip on macOS
- What would I be doing?
- Hands-on programming
- iOS 10 iMessage Sticker Pack Icon Template for Sketch
- One Thing Done Today
- My favorite new feature in iOS 10 is Bedtime
- Hardwired in our brains and bodies is a potential greater than we realize, and all we have to do to unlock it is believe.
- That was hard
- If you don't treat it as a business, others won't take it as a business.
- The last game
- Fixing AWS CodeCommit Permission Denied issue
August 2016
July 2016
- Suppress Rails from generating controller specific asset files
- Upgrade rbenv and ruby-build
- Lost heritage
- New pages: Tools of the Trade + Thanks!
- Swift for-in loop
June 2016
- Customer experience lessons from a donut shop
- Jekyll 101: Creating a new post and page
- jQuery .children() vs .find()
May 2016
- ntbk: a simple, command-line journal
- Making git tags available on a remote server
- Ember.js primer part 1: Install Ember CLI with NVM and creating your first project
- Mac keyboard symbols
April 2016
- Stop Ember.js from complaining about "Missing semicolon"
- Ain't about who had the idea first, it's about who executed on that idea and who just sat on it.
- Why Front Matter, matters
- Ember property as an object
- How to add a remote repository in git
- Google Analytics setup for Jekyll
December 2015
November 2015
- URLs in Safari
- Spectacle - window management for the Mac
- CodeHive year one: Part 2 - lessons and insight
- Settings metaphor
- Federico Viticci's iPad Pro review
- Dann Petty interview
- CodeHive year one: Part 1 - some numbers
- Tattly Parlor
- A better understanding of how to use Git submodules
October 2015
- Almost forgot
- What I expect when I successfully run a Vim command
- Jekyll 3.0 & Jekyll community
- Daniel Miessler's study notes
- Distraction-free writing in Vim with goyo.vim
- Guide to setting up Ruby on Rails
- Ruby doesn't have an increment operator
- Over 3
September 2015
August 2015
- Achieve readonly effect with HTML radio input fields
- Peek at your git stash
- Slingshot Coffee's origin story
July 2015
- Thoughts on Material Design by Google
- GitGutter was making my Sublime Text laggy
- How I automate some of my social networking with IFTTT
- Allowing default browser actions in Ember.js
- Persistence
- Invoking handlebars helper in helper
- Updating Rsync on a Mac
- Paths: browser-based SVG editor
- Ember file structure should reflect route setup
- Changing an ember-cli app's locationType
- Brackets 1.uhhh
- Looking up browser cookies
- How to get IFTTT to not shorten your links
- Group hug
May 2014
November 2013
October 2013
September 2013
August 2013
- Mein Sohn, sei glücklich
- Have Fun
- Three Factors in Achieving Dreams
- Wir lieben dich Sohn
- Mein Sohn
- Great Year 2013
July 2013
June 2013
May 2013
April 2013
January 0001
- YouTube thumbnails
- Why shark teeth are black
- Why I'm rebuilding my website
- What I Learned From Selling My Business For $1
- Vector icons for upcoming physical product
- Update rbenv's ruby-build List
- TRBL
- The Overlooked Features of CodePen
- The Other Hand
- The one thing
- Sweet Spot
- Suppress Sass Source Maps When Generating CSS
- Success & Happiness
- Store git credentials
- Stop Using Corner Banners
- Speed up Ruby gem install
- Spectral by jxnblk
- Space Underneath img Fix
- Source Serif Pro
- Social media vs E-mail
- Site redesign: Typography
- Site redesign: Technology Choices
- Site redesign: Layout
- Show Dotfiles in Finder on the Mac
- Shark teeth
- Sass Source Maps and Google DevTools
- Sass in your Ember-cli application
- Sass Directives and Maps
- Running Your Own Guerrilla Usability Testing
- Ribbon
- Retain Stroke Width While Resizing in Illustrator
- Responsive YouTube videos
- Responsive Line Breaks in CSS
- Repost: Met Brad Bird
- Rendering Liquid and Handlebars Expressions in Jekyll Code Blocks
- Reflections on My First Father's Day
- Reflection: iOS SSH client
- Reboot
- Real-Time iOS App Recording Coming in OS X Yosemite
- Pushing Past Fears & Sharing
- Program and Run Javascript from your iPad
- Produce More Than You Consume
- Pixelmator 3.2
- Path of least resistance
- Pair Programming with My Son
- Pain is part of the process
- Open Sublime Text from the Mac Terminal
- Open Current Directoy in a New Tab in ZSH in the Mac Terminal
- Open Atom with project folders collapsed from the Mac Terminal
- Oh-My-ZSH Cheatsheet
- Oh My ZSH Not Updating
- Oh My Zsh git aliases
- Nimble development
- New domain
- Native Haus
- Mystery iOS toggle
- My Last and First Day
- Multiline Nested Comments in Swift
- Morning shift
- Minify Your Javascript Like CodeKit with UglifyJS 2
- Looping through many-to-many Relationships in Ember.js
- Location of Core Data's SQLite Database
- Learning Vim
- Learn HTML and CSS: Live Webinar
- Learn How to Automate Tasks and the Basics of Python
- Launch MacVim from the Mac OS X Terminal
- Kelli Anderson on The Great Discontent
- jPlayer - A jQuery HTML5 Audio & Video Library
- Jekyll Layout Build Warnings
- It works
- Introducing CodeHive
- Instagram iPad app coming soon?
- I'm writing my first book
- I'm having a good day because...
- I'm A Flake and So Are You
- I was there
- I failed on a live Twitch broadcast
- Hybrid
- Humanae - Mapping human skin tone to the Pantone color scheme
- How to set an anchor tag's target to blank in Markdown converted with Kramdown
- How I let greed mess up my Instagram experience
- How ember-cli handles fixtures
- How Design Works
- Highlighted Parent Item in Dropdown Menus
- Hello, NC State
- Good enough is better than perfect
- Git Submodules: How to Deal with a Project within a Project
- Future proof your footer's copyright date with the current year
- Front-End Architecture
- Four Questions for Developer, Sam Soffes
- Font Icon Not Rendering, Check text-transform
- First Unofficial CodePen Meetup Mention on CodePen Radio
- Finally got SSL on my domain and it was free!
- Father, daughter beatbox battle
- Family unit
- Ember.js' shorter {{link-to}} helper syntax
- Ember.js skip link component
- Easy MongoDB setup on Mac with MongoDB.app
- Don't Forget the Address
- Digital Slap Simulator
- Daily Logbook
- Cut clutter
- Customer stories
- Custom Shapes in iOS
- Create a new Jekyll project in an existing folder
- Concise
- Comcast Frank
- Chief Design Officer
- Changing My Mind About Responsive Web Design
- Building Rome
- Beyond CodePen
- Beme: The new social media app from Casey Neistat
- Atom 1.ehhh
- An Intro to Node.js and Express
- A well written case to Consider Jekyll by Oliver Pattison
- A Simple Dasherize Method in Objective-C
- A lesson from video games
- 4 Things That Makes CodePen Awesome
- 2013 Year in Review
- 10 Commandments of Transit by Facebook's Analog Research Lab