Writing
Essays on work and craft, technical articles on databases and Laravel, every issue of my newsletter, and a few pieces I wrote for other people’s sites.
Filter
Kind
Topic
Year
All 113 pieces
- I built a Google Docs for me and Claude
- The takeaway is what’s taken away
- Act like you’re already friends
- Ask for what you want
- Stop writing code by hand, but don’t stop caring
- Everyone wants to belong
- I hired someone to be my boss
- My identity was never “developer”
- What happens to technical conferences now?
- I launched Solo and worked around the clock
- The last 10% of any project
- Don’t build AI tooling
- I haven’t opened my IDE in two months
- What’s our value when code is a commodity?
- Database School is live, and AI got really good
- Take things seriously
- Nothing changes, and then it changes all at once
- Games of Luck and Games of Skill
- No social media before noon is working
- It all comes down to doing the work
- I bought a chalkboard and built a classroom
- A week of no social media before noon
- I went on a Vision Quest
- Two new YouTube channels for Database School
- Can a business be art too?
- Beauty is its own justification
- Do the work you don’t want to do first
- Finding a brand for Database School
- This is a season of Type Two fun
- Big strong kids use their hands for helping
- Maybe I should be a professor
- Become known for a thing
- Strategies for increasing your odds of success
- You can't trust a nice guy
- A cookieless, cache-friendly image proxy in Laravel (inspired by Cloudflare)
- I was a kid once too
- Year in review: 2024
- Reputation is portable
- Reservable models in Laravel
- This doesn't warrant a blog post
- Make 5x faster outbound requests in Laravel
- Setting up Tailscale and Synology for sharing video files
- Configuring (and viewing!) logs in Laravel
- Because I wanted to
- SQLite is not weakly typed!
- Finding missing orders with a recursive CTE
- Clean up after yourself
- Laravel's higher order collection proxies
- Don't undo what you haven't done
- An argument for logging off
- File based routing in Inertia.js
- You're always doing something wrong
- What if you tried hard?
- Do literally anything
- Year in review: 2023
- Shipping SQLite to Lambda (with Laravel Vapor)
- Creating a custom Laravel Pulse card
- Rendering Blade components in Markdown
- Targeting only inline code elements with Tailwind Typography
- Self-healing URLs in Laravel
- Read the docs like a book
- Datetimes versus timestamps in MySQL
- Generated hash columns in MySQL
- Finish your projects
- Using redundant conditions to unlock indexes in MySQL
- Character sets and collations in MySQL
- Why isn’t MySQL using my index?
- Year in review: 2022
- Dynamically Generating Thousands of OG Images for a Viral Twitter Campaign
- Laravel's safety mechanisms
- Indexing JSON in MySQL
- Sometimes they say yes
- Pagination in MySQL
- Is COUNT(*) slow in MySQL?
- Marketing for maintainers
- Publishing your work increases your luck
- Adding a microservice to your monolith
- Efficient MySQL pagination using deferred joins
- Inertia server side rendering on Laravel Vapor
- Using Ziggy with Inertia server side rendering
- Bitmasking in Laravel and MySQL
- Using Laravel's schema builder outside of migrations
- Efficient distance querying in MySQL
- Hiring a Personal CFO
- The exceeding cleverness of Laravel's atomic database locks
- Fixing images on Laravel Vapor with League\Commonmark
- Laravel + Vue: ReferenceError document is not defined at insertStyleElement
- The perfect Vercel + GitHub Actions deployment pipeline
- Separate marketing + app sites with Laravel Jetstream and Inertia.js
- Blogging with markdown in Laravel
- Reliably building frontend assets with NVM and Yarn (or NPM)
- Modularizing to improve the developer experience
- Fixing "Laravel PackageManifest.php: Undefined index: name" in GitHub Actions
- Is making software Sisyphean?
- Handling large CSVs with Laravel
- Ensuring consistent polymorphic relationships with Laravel
- Realtime spreadsheets with Laravel
- Laravel pseudo daemons
- Introducing Vue Model
- Hosting an advanced Yii2 app on Heroku
- Encrypting and encoding information in URLs with PHP
- My Aperture backup strategy
- Remaking "Snake" in Excel
- Using MySQL triggers to ensure immutability
- Yii and the asset pipeline: part 2
- Scheduling jobs with Yii
- Automating Yii migrations on Heroku
- Wrangling timezones in PHP, MySQL, and Yii
- Importing transactions into Mint
- Yii, Heroku, and the asset pipeline
- How I use Evernote and IFTTT
- Idea extraction gone terribly wrong
- Carving the statue of David