Bret Cameron.
Software engineer & writer. Building Sight Reader on the side.
A browser-based sight-reading trainer for piano.
Try it outSight Reader.
A browser-based sight-reading trainer for piano — renders graded pieces, listens via MIDI, and gives real-time feedback on the notes and rhythms you hit.

Find writing by topic.
Writing.
React Native vs Capacitor
Why I chose Capacitor for my side project, despite 6+ years of React Native experience
Jun 5, 2026·6 min read·#react-native→How Learning the Piano Led to My Most Successful Side Project
An attempt to fix my weakest piano skill
May 9, 2026·3 min read·#side-projects→What Is My LLM Actually Doing?
grep, cat, xargs, pipes — the most common commands and red flags to look out for
Apr 24, 2026·4 min read·#ai→We’re Writing Code Faster Than We Can Understand It
How AI is creating a new kind of technical debt
Apr 20, 2026·3 min read·#ai→
The State of AI Programming Going into 2026
Have LLMs become a mandatory programming tool?
Dec 30, 2025·4 min read·#ai→Focus Doesn’t Scale
How to multitask when you’re wired for deep work
Jul 31, 2025·4 min read·#productivity→Are We Letting AI Code for Us — and Killing Our Skills?
The trade-off between mastery and speed
Jun 30, 2025·3 min read·#ai→My experience transitioning from individual contributor to team lead
Thoughts on moving from engineer to manager
Jun 30, 2025·4 min read·#career→Switching to a New Data Structure with Zero Downtime
A Practical Guide to Schema Migrations using TypeScript and MongoDB
Feb 2, 2025·7 min read·#javascript→
How to Automate Merge Requests with Node.js and Jira
A quick guide to speed up your MR or PR workflow with a simple Node.js script
Nov 30, 2024·7 min read·#javascript→Automate Your Release Notes with AI
How to save time every week using GitLab, OpenAI, and Node.js
Nov 16, 2024·11 min read·#javascript→Automate Your Mac’s Audio Input with a Simple Script
How a shell script and the HammerSpoon app can save you from microphone embarrassment
Oct 12, 2024·5 min read·#mac→How to Create a Super Minimal MDX Writing Experience
Learn to create a custom MDX experience so you can focus on writing without worrying about boilerplate or repetition
Sep 16, 2024·12 min read·#mdx→I Fixed Error Handling in JavaScript
How to steal better strategies from Rust and Go—and enforce them with ESLint
Jul 25, 2024·14 min read·#javascript→How to Containerize a Rust Web Server with MongoDB
Using Docker to create a container for a Rust web server with MongoDB as the database
Jul 19, 2024·5 min read·#docker→Building a Monorepo with Yarn Workspaces
In this article, we'll explore how to set up a monorepo using Yarn Workspaces. We'll also look at how to use it to manage dependencies and scripts across multiple packages.
May 30, 2024·5 min read·#yarn→Implementing a Linked List in Rust
An introduction to data structures in Rust with a simple linked list example
May 30, 2024·9 min read·#rust→How to Easily Support ESM and CJS in Your TypeScript Library
A simple example that works for standalone npm libraries and monorepos
May 23, 2024·5 min read·#javascript→
Get new essays by email.
Occasional posts on engineering, AI, and building software.
No spam. Unsubscribe anytime.
Get in touch.
For journalism, Sight Reader partnerships, or a friendly hello. Or fill out my form.
[email protected] →