59 posts since 2015
Writing
JavaScript runtimes, compilers, developer tooling, and engineering leadership.
Browse by topicStart here
2025
2 posts2023
1 post2022
1 post2021
30 posts- Musings on Developer Relations Four months into developer relations, a look at the work behind the talks and the value it brings. DevRel
- GitHub find which PR deleted a file Follow a deleted file’s Git history to the commit and GitHub pull request that removed it. Git
- Chasing accurate analytics: Server-side vs client-side analytics Comparing server and browser analytics through accuracy, performance, privacy, and the limits of each approach. Blogging
- Human Partner: How AI and Assistive Technology is Making Humans More Productive A 2021 look at how assistive technology and AI could help people work, alongside concerns about replacing jobs. Technology
- A Content Security Policy for Google Analytics Working through the scripts, images, and connections Google Analytics needs in a Content Security Policy. Security
- How to add custom headers to Eleventy with Cloudflare Pages Adding security headers to an Eleventy site on Cloudflare Pages, including the passthrough copy step. Blogging
- I minted (and sold) my first NFT What I learned while minting and selling an NFT, and the questions it raised along the way. Crypto
- Chrome DevTools Console Drawer Six ways to use Chrome’s Console Drawer, from finding unused code to simulating device conditions. DevTools
- JavaScript math methods I never knew existed A CPU-intensive JavaScript snippet sends me exploring the less familiar corners of the Math object. JavaScript
- Introduction to cryptocurrencies The documentaries and videos that helped me start exploring cryptocurrencies, wallets, mining, and NFTs in 2021. Crypto
- How to join Developer DAO My experience joining Developer DAO in 2021, from setting up a wallet to minting a membership token. Crypto
- Switching to DevRel from Engineering The surprises, creative demands, and shifting priorities of my first month moving from engineering into developer advocacy. Thoughts
- On Interviewing... The tradeoffs of full-day interviews, take-home projects, and contract-to-hire, from both sides of the process. Interviewing
- The age of the devtool startup Why the 2021 wave of developer tool startups made me hopeful about funding open source work. Blogging
- React Aria - A better approach to design systems How React Aria separates accessible interactions from visual styling, giving custom designs a useful foundation. JavaScript
- Exciting movement in JavaScript tooling What excited me about Snowpack, esbuild, Vite, and the push for faster JavaScript tools in 2021. JavaScript
- Wasted real estate: Blog homepage design Making a blog homepage a thoughtful introduction, with curated writing and projects that show what matters to you. Blogging
- On leaving a great job Leaving Adobe after a difficult year, and making space to recover from burnout. Thoughts
- Best online node js editor A look at Replit and CodeSandbox for writing, sharing, and running Node.js projects in the browser. Node
- jquery vs node.js Untangling JavaScript the language, jQuery the browser library, and Node.js the runtime. Tips
- Stable Node Versions Understanding Node.js release labels and finding a long-term support version for your project. Node
- Get React Version Find the React version an app uses through its JavaScript API, lockfile, or package manager. Tips
- How to update node js Updating Node.js with a version manager or the official installer, depending on how it was installed. Tips
- JavaScript if else syntax A quick reference for writing if, else if, and else conditions in JavaScript. Tips
- Increase Gatsby performance with Webpack Bundle Analyzer Finding oversized JavaScript dependencies in a Gatsby site with Chrome DevTools and Webpack Bundle Analyzer. JavaScript
- Setting up Gatsby Webmentions on your site Connecting Gatsby, Webmention.io, and Bridgy to display social responses beneath blog posts. JavaScript
- Webmention playground An early experiment in bringing responses from social media onto this blog with Webmentions. JavaScript
- Introduction to async JavaScript Compare callbacks, promises, and async/await by building the same small animation with all three approaches. JavaScript
- All I wanted was pretty links The surprisingly long journey from wanting animated links to migrating a Gatsby blog from Markdown to MDX. React
- Improving my content diet Making room for challenging books and ideas alongside the everyday stream of posts and news. Thoughts
2020
11 posts- I made a political twitter account for a week What a week on a separate political Twitter account taught me about attention, replies, and online debate. Thoughts
- Compiler Resources The books, courses, and videos on my reading list for learning about parsers, interpreters, and compilers. Compilers
- Best blog designs I want to steal everything from A tour of the personal blogs that inspired my 2020 redesign, and the details I love about them. Blogging
- Choosing a blogging platform: Gatsby vs. Wordpress vs. 11ty Weighing the writing experience, maintenance, and flexibility of three blogging platforms during my 2020 rebuild. Blogging
- Patreon layoffs seem cruel Questioning Patreon’s April 2020 layoffs amid growing creator activity and a difficult job market. React
- Avoid Rendering Empty Content with font-display: swap Keep text readable while a custom web font loads with one line of CSS. CSS
- Working with people who are smarter than you Finding ways to contribute, manage insecurity, and learn from coworkers whose strengths differ from your own. Thoughts
- 10 years is a long time Learning to value steady progress over bursts of motivation, in running, coding, health, and saving money. Thoughts
- Suspend a React Component from the DevTools Use React DevTools to hold a component in its suspended state and inspect its loading fallback. React
- A weird login flow How a broken password reset flow accidentally became my favorite way to sign in. Thoughts
- My first month as a remote worker The focus, flexibility, and isolation I found after moving from San Francisco to remote work in Florida. Thoughts
2019
6 posts- Outages and blame culture Why punishing people for outages makes it harder for teams to learn, collaborate, and prevent the next one. Career
- Managing Immutable State with Object Spread Use object and array spread to update application state while keeping the original data intact. JavaScript
- Compiled vs. Interpreted Languages Exploring how languages turn source code into machine code, bytecode, or another language along the way. Compilers
- Numbering a list with CSS! Add and style automatic list numbers using CSS counters and generated content. CSS
- Eleventy has me feeling more connected with my website Why moving from Gatsby to Eleventy brought me closer to the HTML and CSS behind my blog. Blogging
- Easier Type Safety in JavaScript Classes Use TypeScript constructor parameter properties to keep class declarations concise while preserving type safety. JavaScript
2018
4 posts- Writing a Babel plugin to convert arrow functions to function expressions A small Babel plugin that uses the visitor pattern to turn arrow functions into function expressions. Compilers
- Getting Started with ASTs An introduction to abstract syntax trees, with a small JavaScript example and resources for exploring further. Compilers
- Lighthouse Error: Content is not sized correctly for the viewport How browser zoom can trigger a misleading viewport warning in a Lighthouse audit. Performance
- Add a Service Worker to Jekyll blog on GitHub Pages Adding offline support to a Jekyll blog on GitHub Pages with the Workbox command-line tools. JAMStack
2016
3 posts- Staying Mostly Safe Online My 2016 notes on password managers, unique passwords, and everyday habits for protecting accounts online. Thoughts
- Sharing Styles with React and Aphrodite Sharing reusable Aphrodite styles across React components without passing them through every layer as props. Thoughts
- The Life of a PHP Developer How dismissing a programming language can discourage the people learning and building useful things with it. Thoughts