A developer’s field notes
Notes from
the web.
Little discoveries. Useful rabbit holes.
Things learned by building.
By Dillon de Voor · The Netherlands
More field notes
All writingYour own SSO provider using Better Auth
Build an OpenID Connect provider with Better Auth, use encrypted stateless client sessions across domains, and revalidate identity and permissions before writes.
12 min readBuilding a CSS-only responsive image gallery
Use aspect ratios, Flexbox, and responsive row breaks to build an image gallery with up to two rows and equal-height images. Includes a live example and CodePen.
7 min readA form that looks like JSON
A small React experiment: edit a form that looks like syntax-highlighted JSON, with nested objects, arrays, and all the JSON value types.
2 min readStale-while-revalidate caching with RxJS
Build a shareLast operator that shares requests, remembers the last response, and replays it while refreshing. Compare it with share and shareReplay.
9 min readHow I created a single element Slack loader
Taking apart an old CSS experiment: one HTML element, two pseudo-elements, four box-shadows, and a few keyframes recreate the old Slack loader.
8 min readDutch dates with a custom Angular Material date adapter
Let users type DD-MM-YYYY into an Angular Material datepicker with a small custom NativeDateAdapter and a placeholder that explains the expected format.
3 min readAngular date, time and datetime controls with NgControl
Reusable Angular Material date and time controls that work with nested reactive forms, without passing FormControl instances through your component tree.
4 min readThe AI efficiency paradox
AI helps me get more done, but somehow I end up with less free time. A few thoughts on productivity, keeping up, and knowing when to stop.
3 min readGetting back to writing
After years away, a PHP security advisory finally pushed me to migrate this blog and make publishing something I might actually do again.
3 min readGiving Markdown a lead paragraph with remark
A tiny remark plugin that adds Tailwind Typography’s lead class to the first paragraph of Markdown rendered with react-markdown.
3 min readReading query string values in JavaScript
To get anything useful from window.location.search you need to parse it in JavaScript to get individual values.
2 min readAsynchronous callbacks in Koa
Trying to send an asynchronous response in Koa but all you get is “Error: Can't set headers after they are sent.”?
3 min readNon-blocking web fonts using LocalStorage
You want custom web fonts, but without the performance drawback? Read how to use a simple script to load base64 encoded web fonts in a non-blocking way and cache them in LocalStorage.
5 min readAlways catch LocalStorage security and quota exceeded errors
Why you should always catch LocalStorage errors, and a cross-browser solution to catch the quota exceeded error.
4 min readHow to install SassC and LibSass on Ubuntu
Install guide of SassC and LibSass, from cloning their repositories to a working setup.
3 min readParsing emoji Unicode in JavaScript
JavaScript is limited in supporting emoji Unicode. This post describes the problem and a workaround.
7 min readMongoDB for DBAs: CRUD
Summary of the “MongoDB for DBAs” course at MongoDB University. Week 2 is about basic CRUD operations and administrative commands.
10 min readMongoDB for DBAs: Introduction
Summary of the “MongoDB for DBAs” course at MongoDB University. Week 1 is an introduction to MongoDB, not just how but also why.
11 min readIn JavaScript, almost anything is an expression
Article about JavaScript expressions, operators and operator precedence.
5 min readWelcome to my blog!
First article to kickstart this blog and introduce myself.
2 min read