This week
- Try Grid Paper I’ve been getting into drawing dungeons on isomorphic grids. It’s fun but I was a little frustrated with the process of sourcing and printing out graph paper with an isomorphic grid on it. You have two bad options, basically: Download a low-res JPG you found on...
Last week
- In iOS26, Safari dropped support for/broke theme-color; the meta tag you coud add to your head to get colored bits at the top and bottom of your websites. This matters because their current manner of providing the appropriate color for tab-tinting doesn’t work either. Aside: You...
- I redesigned maxleiter.com this week. I've wanted to make it more personal and opionated for a long time, but felt I lacked the expertise to do it justice. With v0 and Claude Code (and some manual cleanup) it only took a few hours. If you haven't played with the homepage yet,...
- My sabbatical is soon coming to an end, and I am looking for a new job. In particular, I am looking for a job at a company that would like to sponsor a working visa for me in Japan, where I’d like to relocate within the next year. If you can sponsor a software engineering visa...
Two weeks ago
- I got tired of writing if-else statements to validate the HTTP request like this: ```tsx:route.ts showLineNumbers export const GET = async (request: Request) => { const { searchParams } = new URL(request.url) const name = searchParams.get('name') if (!name) { return...
- Whenever Apple does a visual refresh in their OS updates, a new wave of icon archiving starts for me. Now that “Liquid Glass” is out, I’ve begun nabbing the latest icons from Apple and other apps and adding them to my gallery. Since I’ve been collecting these icons for so long,...
- Learn how to use the Gemini API File Search tool with JavaScript/TypeScript to build a Retrieval-Augmented Generation (RAG) system....
- One personal project to add callout component to Obsidian that quickly spiraled out of control. No regrets though....
- TLDR: I’ve shipped a new NPM module called gif2vid that enables video encoding of GIF files in the browser, in your terminal and in a web app backend. I’ve also created an uber simple website at https://gif2vid.com where you can use it. My kids enjoy building cute (and sometimes...
- After a decade of React dominance, it’s time to remember that frameworks run inside the web, not the other way around....
About a month ago
- What is the View Transition API and how to use it....
- Commonly used JavaScript patterns....
- Authentication on the web is a complicated problem. If you’re going to do it yourself, there’s a lot you have to take into consideration. But odds are, you’re building an app whose core offering has nothing to do with auth. You don’t care about auth. It’s an implementation...
- Howdy y’all, I hope your October was not as hectic as mine. Mine was ridiculous! It’s been a super hardworking year overall, and I’m looking forward to a trip with my family at the end of the year. We are going to spend December in Sri Lanka, so if you have any tips and...
- Previously on meyerweb, I crawled through a way to turn parenthetical comments into sidenotes, which I called “asidenotes”. As a recap, these are inline asides in parentheses, which is something I like to do. The constraints are that the text has to start inline, with its...
- In which I turn inline asides into sidenotes, but not in a way anyone should actually use....
- The “linear()” timing function is a game-changer; it allows us to model physics-based motion right in vanilla CSS! That said, there are some limitations and quirks to be aware of. I’ve been experimenting with this API for a while now, and in this post, I’ll share all of the tips...
- I was watching Alex Petros’ talk and he has a slide in there titled “Incantations that make HTML work correctly”. This got me thinking about the basic snippets of HTML I’ve learned to always include in order for my website to work as I expect in the browser — like “Hey I just...
about 1 month ago
- This year, JSON module imports became baseline 'newly available', meaning they're implemented across browser engines. import data from './data.json' with { type: 'json' }; // And… const { default: data } = await import('./data.json', { with: { type: 'json' }, }); I'm glad...
- The joys of vibecoding....
- I’m happy to announce a new, bigger than ever, 5th edition of the best-selling book, Responsive Web Design with HTML5 and CSS. Where can I buy it? It’s been many months in the making, and as ever, I learnt heaps in the process. If you want a bang up to date resource on the...
Rows per page