HN user

TheRealPomax

8,196 karma

I'm Pomax. I make things on the web. Typically you'll know me from https://pomax.github.io/bezierinfo or maybe https://pomax.github.io/are-we-flying

Software engineer at the Mozilla Foundation for 10 years, now working on Glitch at Fastly.

Posts37
Comments3,337
View on HN
github.com 19d ago

Make Claude Fix the Claude VS Code Extension

TheRealPomax
2pts1
pomax.github.io 1mo ago

Making the Smallest Possible Webfont

TheRealPomax
3pts1
pomax.github.io 1y ago

Using flight simulation rudder pedals as MIDI pedals

TheRealPomax
3pts3
pomax.github.io 2y ago

Flying planes in Microsoft Flight Simulator with a JavaScript autopilot (2023)

TheRealPomax
284pts64
pomax.github.io 2y ago

Writing a Node package using Rust on Windows

TheRealPomax
1pts1
testing-hill-shading.glitch.me 3y ago

Turning a height map into a nice looking 2D map

TheRealPomax
2pts1
pomax.github.io 3y ago

Flying planes with a JavaScript autopilot (2023)

TheRealPomax
4pts0
pomax.github.io 3y ago

Just use Photoshop to make some LUT for OBS

TheRealPomax
1pts1
github.com 4y ago

Tex2utf, for those three times you need plain text maths

TheRealPomax
3pts1
pomax.github.io 5y ago

An open source browser-based Mahjong

TheRealPomax
2pts1
pomax.github.io 5y ago

Implementing strict three-point perspective

TheRealPomax
133pts51
pomax.github.io 5y ago

Creating a MIDI pass-through recorder

TheRealPomax
13pts8
news.ycombinator.com 5y ago

Ads should have a comment section

TheRealPomax
3pts4
github.com 5y ago

A Unicode Version of Tex2mail

TheRealPomax
2pts1
deezer.io 6y ago

Spleeter, a Python+tensorflow voice-from-everything-else separation algorithm

TheRealPomax
13pts1
github.com 7y ago

A simple script to catch up on your favourite image subreddits

TheRealPomax
3pts1
pomax.github.io 7y ago

Curvature of a Bézier curve (2018)

TheRealPomax
2pts1
pomax.github.io 7y ago

Play a drawbar synth organ in your browser with a MIDI controller

TheRealPomax
1pts1
pomax.github.io 7y ago

Playing a MIDI-controlled drawbar synth organ. In the browser

TheRealPomax
4pts0
pomax.github.io 7y ago

A Primer on Bezier Curves: finding y, given x

TheRealPomax
3pts1
pomax.github.io 8y ago

Computing normals for 3D Bézier curves

TheRealPomax
74pts19
math.stackexchange.com 8y ago

Getting constistent normals along a 3D (Bezier) curve

TheRealPomax
1pts0
pomax.github.io 8y ago

Curve fitting – A Primer on Bézier Curves

TheRealPomax
2pts1
trumptwittering.com 8y ago

The People, Places, and Things Donald Trump Has Insulted on Twitter

TheRealPomax
2pts0
pomax.github.io 8y ago

Listening to birds from inside the house

TheRealPomax
2pts0
ben.balter.com 8y ago

Why you probably shouldn’t add a CLA to your open source project

TheRealPomax
1pts0
pomax.github.io 9y ago

Localization is hard (updating a not even particularly complex codebase)

TheRealPomax
1pts0
github.com 9y ago

Have Fun with Machine Learning: A Guide for Beginners

TheRealPomax
27pts0
www.warmplace.ru 9y ago

SunVox – a small, fast and powerful modular synthesizer

TheRealPomax
2pts0
pomax.github.io 9y ago

A Primer on Bézier Curves, §39: B-Splines

TheRealPomax
2pts1

I can't see any specific "and then AI happened" in this graph? SO made a lot of dumb choices that made it less and less useful for people independent of forcing AI in there, nothing in this graph is a clear indicator that AI was even a blip on the rapid decline of a service intent on making itself as poor an experience as possible for folks wanting to help other folks.

Input. A sorted list of 32bit unsigned integers vals: Vec<u32>.

Okay, but that's not even remotely like the kind of input that this tree was created for. From the next paragraph, this work is in part

[...] to make efficient datastructures to index DNA [...]. One such datastructure is the suffix array, that sorts the suffixes of the input string. Classically, one can then find the locations where a string occurs by binary searching the suffix array.

So where is the analysis of how it performs for that use-case? Searching through "already sorted 32 bit numbers" has nothing to do with searching a 3 billion character string (that by definition cannot be internally sorted) for substrings.

If you think those two contexts are equally secure, your machine is incredibly insecure and I hope you run daily incremental full system backups.

You have far too much data in unsecured locations, and you have far too little understanding of what an agent would do, to go "I trust whatever this user account will be doing on my machine".

On your own machine that leaves two bad options. You approve every command (and babysit a prompt every few seconds), or you run --dangerously-skip-permissions and hope nothing important is one rm -rf or one leaked token away.

Literally everyone has the option to use a VM - it's built into Windows, UTM on MacOS, Docker on Linux. Yes, "a tool that automatically builds a VM" is useful, but we've had a third option (four, if you count "actually I disagree with the idea that it's only useful if it's fully agentic") from day one.

Anthropic can't be bothered to actually fix any VS Code extension bugs that people file. They could just let Claude fix them, but instead they let Claude close bugs as stale so they don't have to pay any attention to their users. Who needs users? I guess the retort to that in this case is "who needs Anthropic? Extensions are just web apps, Claude can fix those just fine". So I told Claude to fix the things Anthropic can't be bothered to, and now there's this repo that Claude can use to remove the "whimsy" nonsense that Anthropic refuses to remove, and add in proper syntax highlighting to code blocks, which is literally built into Monaco but Anthropic couldn't be bothered to hook into.

Sometimes I won on points and lost the person. More often I won nothing at all: I’d watch someone grow more certain of the very thing I had just disproven, while the room quietly drifted to their side. I would walk away technically right and completely alone.

This is why debating is taught in school in the Netherlands (and I'm sure other countries, too). Winning an argument is not the same as convincing someone they were wrong: that's something you need to learn how to do and then something you need to actively practice with others.

Just having good arguments makes you a dick. Having good arguments and being able to empathize with the opposition's and conceding their position on any merit, while showing there's a solution that'd they'd prefer even if they don't know that yet, makes you someone helpful and trustworthy.

No, the shortcut was alt+s. That's what people typed. Then on Windows, which used alt-combinations already, it became rightalt+s (as the rightalt wasn't used by Windows itself) but instead of having a dedicated rightalt code, Windows would rewrite that key into a ctrl+alt code combination.

If you're going to tl;dr, at least get the most important detail right. People only ever pressed alt, and Windows went "and now you're pressing ctrl+alt", so that alt+s becomes ctrl+s with an alt that no one's looking for when it comes to intercepting and killing off key events.

Funny, that was already true in 2006. It's the thing people keep saying, and yet anime keeps coming out.

Right now they're stuck in the whole "ten shows from the same budget, each run by their own 'committee' and each competing for cash that runs out well before the show's over, and the poor performance very quickly get less per episode". Great for networks, shit for shows. Even worse for animators who need to get paid a living wage.

This is a 2026 update of a 2011 article about writing a tiny zero-width font for doing webfont load detection for drawing text on a canvas element, as the browser landscape, as well as font support, has changed radically in the last fifteen years. IE no longer exists, Opera is just another Chrome, Safari fixed most of the bugs that broke this approach some fifteen years ago, and pretty much everything's using OTS for font sanitization and Harfbuzz for shaping.

In the article we'll run through the byte layout of an OpenType 1.9 font, using TTF vector tables for our glyph outlines (which will contain exactly zero outlines!) and figure out which values we can just rip out, and which ones we can at least null out to make a font that's as small and as compressible as possible, leading to a 520 byte (100% spec compliant!) font file with a Base 64 string that we can pack in 298 bytes of JS for embedding directly on a web page.

"Why would we still need this in 2026??" To be clear: you probably don't. But that's not the fun part. The fun part is to see how far off the beaten path we can get in terms of creating a spec-compliant font that goes about as hard as possible in the opposite direction of what the spec designers had in mind.

IT doesn't even need to be open source, a walled garden that you can afford is perfectly fine. Someone's going to find the cracks in the wall anyway.

But a walled garden that costs $400 for personal use (we're ignoring yearly licensing, because f that noise) is utter nonsense, and the clearest sign you have no idea how to sell and then upsell products to users over the course of several years.

I think you'll find XeTeX (with XeLaTeX because no sane person uses plain TeX except for package authors of course ;) predates LuaTeX by almost a decade.

(Something I ran into in 2008 when I was writing a multilingual book and heard about LuaTeX, only to find out it was still extremely incomplete and was roadmapped to not be done until 2012. And I couldn't wait 4 years)

A dollar is a dollar, and suppliers chose to screw over the world for not-even-profits: they would have sold the exact same number of chips if they changed how they prioritized delivery while making sure everyone got chips instead of just a handful of industries.

So, no: it's nothing like what you replied with and that was a rather dumb thing to say.

"Fueled by greed". It would be trivial to say no to AI companies because dollars are dollars, it doesn't matter who pays them, and prioritizing literally all of humanity instead of "five companies" is a choice that every single supplier could make, but decided not to. This problem was 100% manufactured by suppliers.

Some firms don't understand how to do data management, and if we draw the venn diagram of those and the ones that ban sqlite, it'd be pretty close to a circle.

Yes, databases could have any extension. No sane dev team would accept code that doesn't use an object extension for a sqlite database.

Yes, databases can contain PII but no sane product manager would go "yes, that's a good use of sqlite".

Yes, you can trivially copy database files, but no sane product needs to in the same way that no sane product should require folks to just clone the db just to do some work.

Pretty much every reason a company has for banning sqlite is a red flag for working there.

I am so confused. There's already a native version of LaTeX... it's... it's LaTeX. Why would a Rust implementation need to match KaTeX instead of properly implementing a real (and modern, so unicode-out-of-the-box) TeX engine, that LaTeX (which is a set of convenience macros) then trivially runs on top of?

600 comments and yet no one's questioning the math, just running with "4GB" even though the fsevents log literally says that the file is the result of an unpack operation?

The file might be 4GB but the transfer sure as heck wasn't, so what are we even talking about? How much data is actually transferred? Can someone just grab that weights.bin file and zip it up with max compression and report a more realistic number that we can do the math with, if the number is even worth doing the math for?