Sign in

Max Duval

@mxdvl.com
102 followers 320 following 241 posts

Web + Data + Tools + Design I lead UK property data exploration & visualisation at Hometrack on data.hometrack.com (parfois j’écris en Français…)

PostsRepliesMedia
Max Duval @mxdvl.com · 26/09/2026
Take two… not much more readable, but a lot prettier! Quick feedback helps so I built a web tool: www.mxdvl.com/tools/boussole
A custom watch face indicating 14:33 with single white arc, the edge with tick indicates hours, the other minutes. Two other arcs indicate step count and sunset.
010
Max Duval @mxdvl.com · 17/08/2026
Case in point…
Photograph of a custom Garmin watch face with three arcs/rings. The innermost is labelled 07, outermost is labelled 05. Blue lines are mysteriously placed in the void.
210
Max Duval @mxdvl.com · 12/07/2026
This may not fit your use case at all, but on iOS the built-in text recognition works (and can be triggered without even taking a picture)
100
Max Duval @mxdvl.com · 13/12/2025
Trail of Parkrunners emerging from the fog in Hackney Marshes. A crow hovers above the silhouette skyline.
010
Max Duval @mxdvl.com · 14/11/2025
hello @ffconf.org 👋
A view of the beach & sea in sunny* Brighton, UK

*cloudy, more like
010
Max Duval @mxdvl.com · 05/11/2025
1. Here’s how I avoid a FOUC on my own website: github.com/mxdvl/mxdvl/... 2. See attached video on the right side — maybe a stroke-dasharray / -dashoffset issue?
110
Max Duval @mxdvl.com · 22/08/2025
e.g. from Mathieu’s tool’s banana: mxdvl.deno.dev/tools/svg?d=...
a screenshot showing the link between an SVG representation of a banana and the line of code that represent one of the middle segments: c 21 68 -4 242 -204 196
000
Max Duval @mxdvl.com · 08/08/2025
So silly it won’t allow to post even a mere 249 characters…
A screenshot of Hyperbulletin failing to submit a post with 249/255 characters.
000
Max Duval @mxdvl.com · 16/07/2025
It is indeed a limitation of TypeScript’s static analysis… I’ve found more often than not the benefits of being able to know exactly which type of element I’m getting, which attribute it may contain and direct links to MDN worth the cost of a small `instanceof HTMLAnchorElement`
Screenshot of TypeScript’s type information for HTMLAnchorElement.href:

Returns the hyperlink’s URL.
Can be set, to change the URL.
MDN Reference

Full code snippet:

for (const email of document.querySelectorAll('a[href*="mailto:"]')) {
  if (!(email instanceof HTMLAnchorElement)) continue;
  const button = document.createElement("button");
  button.classList.add("copy");
  button.innerText = "Copy";
  /** @type {number | undefined} */
  let timeout;
  button.addEventListener("click", () => {
    navigator.clipboard.writeText(email.href.replace("mailto:", ""));
    button.innerText = "Copied";
    clearTimeout(timeout);
    timeout = setTimeout(() => button.innerText = "Copy", 3600);
  });
  email.insertAdjacentElement("afterend", button);
}
110
Max Duval @mxdvl.com · 06/07/2025
Five fuzzy goslings huddling by a pond, with the leftmost one gazing at the camera with its beak open. Beneath them an warm orange lichen spreads.
030
Max Duval @mxdvl.com · 14/06/2025
Saturday Parkrun iOS tip: you can create a shortcut to display a QR code for your athlete’s number, then add it to your lock or home screen. Here’s mine, for example – in French:
A shortcut in iOS showing the following steps (in French):

- Create a QR Code from A5045313
- Display QR Code
210
Max Duval @mxdvl.com · 16/12/2024
Finally got the gingerbread reindeeno sticker! I think that’s as far as I’ll go this year… mxdvl--aoc-2024.deno.dev/aoc/2024/day...
010
Max Duval @mxdvl.com · 10/12/2024
And another one – ten days done! mxdvl--aoc-2024.deno.dev/aoc/2024/day...
A trail map based on Advent of Code 2024 Day 10 challenge
110
Max Duval @mxdvl.com · 12/08/2023
Making a CSS only slideshow has a lot of moving parts — it helps to visualise layers: svelte.dev/repl/20177b676e9d4f3893b…
Screenshot of three slides stacked. The middle one is translucent.
040