Christian Heilmann

Showing different titles depending if the tab is active or not

February 10th, 2022

I just encountered a sneaky thing I had not seen, although it probably worked in 1999 already. A web site was showing a different title on the tab, depending on it being active or not. The whole trick is to use the blur and focus event handlers on the window to change the title. window.onblur […]

Sending email notifications from GitHub organisations to different emails

February 1st, 2022

I’m part of a few organisations on GitHub and had one email address for notifications. This annoyed me as I didn’t want company notifications to my personal account as I couldn’t answer these. As it turns out, you can set up several email addresses in your GitHub account. In settings, go to Access > Emails […]

A launch.json setting for end-to-end web development

January 26th, 2022

When I start a new project these days I create the following launch.json file and put in in a .vscode folder on the the root of my project. This turns Visual Studio Code into an environment that gives me everything I need to build a web product without ever leaving it. If you want to […]

Ever wondered what a Wordle social media update sounds to screenreader users?

January 19th, 2022

It’s not pretty. This isn’t a dig at Skoop, he was just first on my timeline with a result when I did some accessibility testing. Screenreaders read out the squares as “black large square”, “green square” and “yellow square”. As a saving grace, they cleverly do group them, so four yellow squares are announces as […]

Podcast recording: Development tools in the expert’s eye with Chris Heilmann

January 18th, 2022

Yesterday I was a guest on the JavaScript Master Podcast by Dariusz Kalbarczyk and we talked a bit more than an hour about my job as a Developer Tools PM, what annoys me the most about the toolintg situation and how the community can help. You can listen to the podcast on anchor.fm or Spotify […]

Newsletter

Check out the Dev Digest Newsletter I write every week for WeAreDevelopers.

Don't stop thinking, AI Slop vs. OSS Security, rolling your own S3 Despite AI you still need to think, Bitter lessons from building AI products,  AI Slop vs. OSS security and pointer pointer…
200: Building for the web, what's left after rm -rf & 🌊🐴 vs AI What remains after you do a rm -rf? Why do LLMs know about a seahorse emoji? What image formats should you use? How private is your car?
Word is Doomed, Flawed LLM benchmarks, hard sorting and CSS mistakes Spot LLM benchmark flaws, learn why sorting is hard, how to run Doom in Word and how to say "no" like a manager.
30 years of JS, Browser AI, how attackers use GenAI, whistling code Learn how to use AI in your browser and not on the cloud, why AI makes different mistakes than humans and go and whistle up some code!
197: Dunning-Kruger steroids, state of cloud security, puppies>beer

My other work: