Unlocking A/B Testing with PostHog: Improving Newsletter Signups
Optimizing signups by testing, trusting statistics, and fine-tuning UX
Read more →I'm a startup founder, a designer, and a maker. I share my writing on this site, but you can also find me on threads @irreverentmike Mastodon and GitHub.
I work as a co-founder & CTO at Craftwork — however, the things I post here are my own, and don't necessarily reflect the views or opinions of Craftwork.
11-19-2024
How the most productive people use fundamental truths to navigate complexity and stay focused
Optimizing signups by testing, trusting statistics, and fine-tuning UX
Read more →Subscribe and join other builders
My weekly newsletter for product builders. It's a single, tiny idea to help you build better products.
Once a week, straight from me to you. 😘 Unsubscribe anytime.
This video dives into the process I used to diagnose and debug a conversion problem on my personal website using Posthog, a powerful product analytics tool.
Read more →
This video dives into the process I used to diagnose and debug a conversion problem on my personal website using Posthog, a powerful product analytics tool.
Read more →
Powerful advice gleaned from a quote by Ira Glass - your taste will always outpace your creative abilities.
Read more →
Learn how to seed your Supabase database with this simple pattern.
Read more →
Canonical tags are a powerful tool to help search engines understand which version of a page is the original one. This can help you avoid duplicate content issues and ensure that your content gets the credit it deserves.
Read more →
Structured Data can be added to your site tell Google and other search engines what type of content is on each page using a metadata format called JSON-LD.
Read more →
A YouTube live coding stream, learning to build content-driven sites with the Astro Web Framework.
Read more →
A YouTube live coding stream where we explore how we use a variety of dynamic images with Next.js using Satori.
Read more →
A coding livestream where integrate Resend's new Broadcasts feature into my next.js site to use for sending newsletters.
Read more →
Set up self-healing URLs with the App Router in Next.js for better SEO, accessibility, and usability
Read more →
I built a tool for summarizing podcasts Using Open AI's GPT and transcription APIs. This is a sample of its output for an episode of the Acquired podcast about Costco's history and business.
Read more →
Learn how to add custom fonts to your Next.js app using next/font and Tailwind CSS. Improve user experience without sacrificing performance.
Read more →
Tiny Improvements has seen 350% growth in the last 6 months. This is my reflection on that growth, and tips for anyone interested in writing a newsletter.
Read more →
Sometimes fixing a TypeScript or eslint error in VS Code can feel impossible. Here's what I do when I have exhausted all my resources.
Read more →
Extracting types from a JavaScript object is a common task in TypeScript. This post shows how to do it with VS Code.
Read more →
Learn how to sync your About page and your personal GitHub README bio on your Next.js site, as a step towards owning your content on social media.
Read more →
Reflections on the current state of Twitter, and its similarity to the shocking results of a 1961 experiment by Yale Researcher Stanley Milgram.
Read more →
Embrace no-code tools to save time, boost efficiency, and complement your coding skills. No-code is the future - don't be left behind!
Read more →
Use previous issues of your newsletter to attract new subscribers, using the ConvertKit API with your Next.js site.
Read more →
Learn how to use the ConvertKit API to publish your newsletter to your Remix site.
Read more →
Implement the Orton Effect in CSS and React. The Orton Effect creates a surreal, dreamy image effect, named after photographer Michael Orton.
Read more →
The Third Place is thought of as a space different from home (the first place) and work (the second place), where people can socialize and find community.
Read more →
I use these tools on every project to help track source code, monitor traffic on my site, and optimize content for better Search Engine Optimization (SEO).
Read more →
This is the right format to use if you want to add a subtitle below an h1 tag on your html pages. Semantic HTML makes your site more accessible and better for SEO, since it is easier for search engines to process.
Read more →
Building a website using the Remix.run webb app framework? This tutorial will teach you how to add privacy-first analytics to your Remix site with Fathom.
Read more →
Let's call it an experiment. I'm building a tiny product to see if I can make something people will buy.
Read more →
You're building relationships with all of your customers, whether you know it or not. Setting up the right CRM for your product can help make those relationships stronger.
Read more →
I migrated apisyouwonthate.com, a site with 20k+ monthly visits, from Gatsby to Next.js at the end of 2021. Let's talk about what I learned from that experience.
Read more →
This tutorial will teach you how to automatically add links to heading tags in your mdx posts on your Next.js site with a plugin called rehype-slug. This should work for most nextJS sites that use MDX for content, as well as many other JavaScript-based sites which use MDX.
Read more →
The article discusses the ESLint rule no-floating-promises which disallows promises without await. The rule is designed to prevent developers from accidentally forgetting to await promises, which can lead to unexpected behavior.
Read more →
Since its release, teams around the world have been using dependabot to automate the process of keeping your project's dependencies up to date. In this article, I'll show you how you can run dependabot on the command line using dependabot-core.
Read more →
Powerful AI tools like ChatGPT make it super easy to generate inaccurate and dangerous and inaccurate content. Relying heavily on AI to write can be messy.
Read more →
If you're running an Apple Silicon Mac (with an M1, M1 Pro, or M1 Max chip), you may be able to speed up VS Code massively with a quick update.
Read more →
Buildspace offers free, online, cohort-based courses on building web3 blockchain apps. If you're interested in dipping your toe into the world of Ethereum apps, the blockchain, or NFTs - it's a great starting point.
Read more →
For years I did a weekly coding livestream of my React and Python work on Twitch every week, and I'm getting back into it again. This is what sticks out to me as the most valuable learnings from those experiences.
Read more →
Let's take a look at the Nullish Coalescing operator (??) in JavaScript, which returns the right operand if the left is null or undefined.
Read more →
If you come across array.filter(Boolean) in JavaScript code, never fear! It's a handy bit of functional programming that cleans up arrays with null and undefined values in them.
Read more →
Have you noticed that your favorite IDE has been slow to load lately? Try removing these before losing hope.
Read more →
Stop using centered text. It's bad for usability, accessibility, and eye scanning -- and nobody anywhere wants to read like that.
Read more →
My review of Working in Public: The Making and Maintenance of Open Source Software by Nadia Eghbal
Read more →
If you're dealing with Open Graph metadata for your site, and you can't figure out how to get your OG content to update after you make changes, this is your guide.
Read more →
Put simply, gitignore.io is a tool that is so profoundly helpful that I've forgotten what life was like without it.
Read more →
I added support for mdx to my site, and it's made life much bettter.
Read more →
I fully switched my personal site from Google Analytics to Fathom - something that I had been considering for a while, and finally decided to go all in on.
Read more →
On my walk this morning, I found myself wondering what it's going to be like when things go back to normal.
Read more →
This post came from my work on Surviving Other People's APIs. I've been working on a chapter on Async - the content below came from that writing, but doesn't quite make sense in the context of the book. I didn't want to scrap it entirely, so it's found its way into a blog post. I'd love to know what you think!
Read more →
My guess is that if you’re reading this, you’re a newly remote worker, due to the rapid and terrifying expansion of the COVID19 Pandemic. I’m not here share medical advice; if that’s what you’re after, there’s far better places to look.
Read more →
If you follow me across the various other social networks I use, you'll likely stumble across my passion for cycling. For the past 8 or so years, road cycling has been my primary form of exercise. I love cycling; it keeps me sane, and helps me live a healthier life, while seeing the world. If you haven't been on a bike recently, you should give it a shot - I can't recommend it enough.
Read more →
So, like all good things, the idea for this post comes from a tweet...
Read more →
Dependabot is an automation service that will automatically create PRs to keep your projects' dependencies up to date, and it is really powerful.
Read more →
This is an article about CSS and usability. The ch unit in CSS was a revelation for me, and I promise that if you don't know about it already, you're gonna love it.
Read more →
This is a follow-up to my first post on the upcoming Promise.allSettled() function, coming soon to a node application near you.
Read more →
Part 2 in a series of posts on destructuring syntax for JavaScript and Node.
Read more →
Promise.allSettled() is a new API coming to the JavaScript / ES6 standard which can help you more efficiently build node applications that make simultaneous asynchronous API calls
Read more →
If you're not careful, your node projects can start to fill all the spare disk space on your computer. This one weird trick (lol) can help avoid that.
Read more →
Last week I posted about some stickers I designed and had put up for sale to benefit victims of the shooting in Christchurch, NZ. They sold out far, far more quickly than I ever would have guessed.
Read more →
Destructuring syntax in es6 (or es2015, etc) JavaScript is a wonderfully useful bit of the language. It allows you to extract values from an Object and assign them to a new variable in one statement -- but it can be confusing to read.
Read more →
Uninstalling Postgres database software from a computer running MacOS isn't super straightforward - this is what I found helpful.
Read more →
Get yourself some of these eggtastic stickers - gun violence is intolerable, and we need sensible gun reform. 100% of proceeds go to charity!
Read more →
An efficient workday is helped tremendously by having a handful of productivity boosters in your quiver. I use these extensions for Chrome to make my day a little nicer.
Read more →
No, really, it doesn't work that way. It will sound loads better if you stop talking into the top of your Blue Yeti mic. It's an easy mistake to make.
Read more →
Prettier.js is a fantastic way to systemize and automate your project's code style.
Read more →
I've got some strong opinions on things - I hope that's okay. Thankfully, this is not just another 'hello world' post
Read more →