This week
- 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...
- 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...
- One personal project to add callout component to Obsidian that quickly spiraled out of control. No regrets though....
- Learn how to use the Gemini API File Search tool with JavaScript/TypeScript to build a Retrieval-Augmented Generation (RAG) system....
- TLDR: I’ve shipped a new NPM module called gif2vid that enabled 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...
Last week
- 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...
Two weeks ago
- 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...
About a 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...
- As President of Web Components, it’s my duty to publicly comment on every Web Component library and framework that exists. Today I’m taking a look at Quiet UI, a new source-available web component library soft-launched by Cory LaViska, the creator of Shoelace WebAwesome. You...
- A practical guide to working with AI coding agents without the hype....
- One unsung feature in the web components space that I don’t think gets enough attention is the Custom Elements Manifest initiative. I think it’s the killer feature of web components. Known as “CEM” to its friends, a CEM is a community standard JSON format that surfaces...
about 1 month ago
- I use incremental selections in Neovim all the time. This is where I tap, tap, tap, and on every single tap, the selection expands starting from the cursor position and climbs up by the node or the whole scope. This feature uses Tree-sitter under the hood, so it respects the...
- This blog really isn't just for beating up on Apple for the way it harms users, the web, standards, and society to maintain power and profits. So here's some fun stuff I've been doing in my 11ty setup to improve page performance. Contents Page-Specific Resources via Shortcodes...
- A collection of battle-tested React hooks that I've used in various projects over the years....
- React just released the new version 19.2.0 which brings several new features including the new [useEffectEvent](https://react.dev/reference/react/useEffectEvent) hook. The doc says that it is a React Hook that lets you extract non-reactive logic from your Effects into a reusable...
about 2 months ago
- There was a time when I could ask, “Did you see the latest NPM attack?” And your answer would be either “Yes” or “No”. But now if I ask, “Did you see the latest NPM attack?” You’ll probably answer with a question of your own: “Which one?” In this post, I’m talking about the Qix...
- In the wake of the largest supply-chain attack in history, the JavaScript community could have a moment of reckoning and decide: never again. As the panic and shame subsides, after compromised developers finish re-provisioning their workstations and rotating their keys, the...
- Part of my role at Mozilla is making sure we're focusing on the right features, and we got onto the topic of fetch upload streams. It's something Chrome has supported for a while, but it isn't yet supported in either Firefox or Safari. I asked folks on various social platforms...
- In which I update a bookmarklet to load all the comments on super-long GitHub threads....
Rows per page