HNHacker News
TopNewBestAskShowJobs

kbaker

1,412 karma · joined February 9, 2012

Embedded systems engineer + software developer... My 'full stack' means PCB design and layout, RF + RFID, components + sourcing + product design (even some mechanical), kernel dev + bare metal embedded OS distros, add more layers of C, Python, Java, or .NET to tie it all together, then a nice-looking web frontend to top it off. Lots of fun to be had at every level!

send me email! username at gmail. [ my public key: https://keybase.io/kbaker; my proof: https://keybase.io/kbaker/sigs/sGOx8W59UuZWbo2z0B_5fbOKqvu0qyn42orx8wi2x_I ]

submissionscomments
kbaker··on eMudhra to exit global SSL/TLS certificate business
> There were no end entity certificates issued out of the affected CA’s.

What does this mean from the press release? Were they only issuing other chained intermediates? Or did they never issue any ECC certificates from these at all, and everyone is paying the price?

I wonder if big roots with chained intermediates will now need to have serious pressure on their downstream intermediates to re-prove their need to exist. I know RHEL and Debian's strategy (if not others) was to pull the Comodo AAA Services root as well ...

kbaker··on Ask HN: What are you working on? (September 2026)
Yes that sounds like a good idea. Good luck! Django is a great framework for a forum and getting ideas out quickly.
kbaker··on Ask HN: What are you working on? (September 2026)
Haha, along the same lines [1] [2] but trying to target and stay inside Cloudflare's free plan (workers, D1, R2 etc.) for hosting small simple forums of a couple hundred users. Along with AI-powered moderation.

JS-ful in some parts - but mostly Rust cloudflare workers WASM. It can self-host as well in a single binary + sqlite. MIT.

Trying to figure out a good defense to the bot-infestation problem next.

[1]: Test site (readonly example data - not yet ready for the public): https://dev.notespace.org

[2]: https://github.com/kevinbaker/notespace

kbaker··on Reducing tick density along recreational trails in Ottawa, Canada
We have (had?) some ticks in our backyard and I came across these which I thought was a clever attack angle: tick tubes.

Permethrin-soaked cotton balls in a tube, mice find them and build nests out of the freely available cotton, ticks that the mice have gathered while walking around die when they come back to the nest.

kbaker··on Is it time for a new Embedded Linux build system?
(For the unaware, OP above is the article author.)

As a long time user of Bitbake and Yocto, and watcher of Yoe Linux... I kind of have to respectfully disagree with the approach.

One look at the Python or Node packaging ecosystem, and you can see how difficult trying to integrate those in a 'sane' way in embedded, with repeatability and security in mind, nevertheless wrangling something like C/C++ dependencies and native packages in a qemu-cross (or binfmt emulation) environment.

I feel like Bitbake and the wider Yocto ecosystem has essentially 'solved' cross compiling. Sure there are the incredibly complex codebases like Chromium that require lots and lots of study and patience, or esoteric compilers, etc. but for most applications I feel that especially AI tooling can write up a good basic recipe for integration with Yocto.

The unfortunate thing about AI tooling is Kernighan's law (where debugging is twice as hard as writing it the first time.) Especially in Embedded Linux, where 99.99% of the product code is written by others, trying to figure out where the AI didn't quite get it right or missed something can break things unexpectedly and impossibly for the unaware developer to fix, even breaking at runtime. So the build environment has to be simple and predictable. I think Yocto/Bitbake already strikes a good balance here, with other nice things like offline builds, repeatable builds, sstate caching across machines, PRbuild servers... things useful for big teams, so consider those as well.

Although, if someone does a 'uv'-like rewrite of Bitbake into Rust with the same feature set but faster, I am all for it...

Maybe, having Yoe or some other centralized distro make specific opinionated choices and then provide an open sstate feed, working inside Bitbake, could get a lot of the speed and customizability gains back without a big rewrite effort.

kbaker··on Everything Is BOM: Bill of Materials Encyclopedia
Seems like a LOT of AI generation.

I wonder where this wiki format would be useful vs asking an AI directly.

kbaker··on A dot a day keeps the clutter away
Almost all retail RFID tags are on hanging labels, like with the price, or a sticker on the item. Although I did find one inside a pillow once.

A huge number of items at Walmart, Kohls, Target, Academy, Old Navy, and many other stores now (those are just the ones I've seen in store.)

Look for the 'EPC' logo, GS1 is the same standards body that controls the UPC barcode numbering.

https://www.gs1.org/standards/rfid/guidelines

Though - you don't want to use those types for this application, they are too long distance / not selective enough, and the readers are expensive.

Buy a big pack of NFC stickers instead, or print up some QR codes.

kbaker··on Apache Arrow is 10 years old
Because it's a binary format?
kbaker··on Making geo joins faster with H3 indexes
Maybe this comparison with S2 will explain:

https://h3geo.org/docs/comparisons/s2/

kbaker··on How to effectively write quality code with AI
The GSD tool (get-shit-done) automates a very similar process to this, and has been mind-blowing for larger projects and refactors.

https://github.com/glittercowboy/get-shit-done

You still need to know the hard parts: precisely what you want to build, all domain/business knowledge questions solved, but this tool automates the rest of the coding and documentation and testing.

It's going to be a wild future for software development...

kbaker··on Autonomous cars, drones cheerfully obey prompt injection by road sign
Just tell him that Waymo is now sharing videos of this behavior with auto insurance companies.

I don't know if they are or not. But why wouldn't they...

kbaker··on China Has Three Reusable Rockets Ready for Their Debut Flights
> The Far Side is the only place in the Earth Moon system where you can hide military hardware and basically disappear. No optical tracking, no radar, no interception.

What prevents someone from sending a Lunar-orbiting imaging satellite to image everything on the Far Side? The Lunar Reconnaissance Orbiter has already been imaging the Far Side for over a decade.

I agree with your general points about it being a difficult location to get to, but if it's possible to put regular satellites in Lunar orbit, surely its possible to park some warheads too just in case...

kbaker··on API that auto-routes to the cheapest AI provider (OpenAI/Anthropic/Gemini)
Hi, curious, did you know about OpenRouter before building this?

> OpenRouter provides a unified API that gives you access to hundreds of AI models through a single endpoint, while automatically handling fallbacks and selecting the most cost-effective options. Get started with just a few lines of code using your preferred SDK or framework.

It isn't OpenAI API compatible as far as I know, but they have been providing this service for a while...

kbaker··on Precise geolocation via Wi-Fi Positioning System
That would be a fun project. Capture some WiFi geolocation data and rebroadcast it later with an ESP32 that switches its BSSID/SSID/frequency/transmit power to match an existing fingerprint.

And then see if you can be magically transported somewhere else.

kbaker··on Waymo robotaxis are now giving rides on freeways in LA, SF and Phoenix
I mean, if the scenic route is longer anyways, the revenue potential is there to fund it...

just a 'take me the scenic route' checkbox?

kbaker··on Email verification protocol
But not every email provider would support this new (from scratch) protocol either?

Just don't see the need to reinvent OAuth but with a reduced scope for just email validation. Just add a happy path for this into OAuth itself?

kbaker··on Email verification protocol
This section

https://github.com/WICG/email-verification-protocol/blob/mai...

could easily be done by malicious JS, an ad script, or the website itself, and then as the RP gets the output of 6.4) email and email_verified claims.

I'm guessing that this proposal requires new custom browser (user-agent) code just to handle this protocol?

Like a secure <input Email> element that makes sure there is some user input required to select a saved one, and that the value only goes to the actual server the user wants, that cannot be replaced by malicious JS.

kbaker··on Email verification protocol
Why is the solution not OAuth/OIDC?

Or maybe creating some sort of reduced OAuth "Anonymous-Site-Verifying-Your-Email-Exists" flow?

kbaker··on AI surveillance should be banned while there is still time
Lol. I got perma-banned for violating rules under my alt accounts.

But I don't have any alt accounts...??? Appeal process is a joke. I just opted to delete my 12 year old account instead and have stopped going there.

Oh well, probably time for them to go under and be reborn anyways. The default subs and front page has been garbage for some time.

kbaker··on SQLite's documentation about its durability properties is unclear
Yeah, I see the comments down below in pager.c which explain it a bit better. I guess I thought its behavior was more like PERSIST by default.

    **   journalMode==DELETE
    **     The journal file is closed and deleted using sqlite3OsDelete().
    **
    **     If the pager is running in exclusive mode, this method of finalizing
    **     the journal file is never used. Instead, if the journalMode is
    **     DELETE and the pager is in exclusive mode, the method described under
    **     journalMode==PERSIST is used instead.
So I guess this is one of the tradeoffs SQLite makes between extreme durability with (PERSIST, TRUNCATE, or using EXTRA) vs speed.

I know we have used SQLite quite a bit without getting into this exact scenario - or at least the transaction that would have been rolled back wasn't important enough in our case, I guess when the device powers down milliseconds later to trigger this case we never noticed (or needed this transaction), only that the DB remained consistent.

And it seems like if DELETE is the default and doesn't get noticed enough in practice that it needs to be changed to a different safer default (like to PERSIST or something,) I guess it is better to have the speed gains from reducing that extra write + fsync.

But, now I guess you know enough to submit better documentation upstream for a sliding scale of durability, I definitely agree that the docs could be better about how to get ultimate durability, and how to tune the knobs for `journal_mode` and `synchronous`.

kbaker··on SQLite's documentation about its durability properties is unclear
OK, interesting, I think I see... So you are asking about if SQLite opens and finds a not-committed rollback journal that looks valid, then it rolls it back?

I was more curious so I looked at the code here:

https://sqlite.org/src/file?name=src/pager.c&ci=trunk

and found something similar to what you are asking in this comment before `sqlite3PagerCommitPhaseTwo`:

    ** When this function is called, the database file has been completely
    ** updated to reflect the changes made by the current transaction and
    ** synced to disk. The journal file still exists in the file-system
    ** though, and if a failure occurs at this point it will eventually
    ** be used as a hot-journal and the current transaction rolled back.
So, it does this:

    ** This function finalizes the journal file, either by deleting,
    ** truncating or partially zeroing it, so that it cannot be used
    ** for hot-journal rollback. Once this is done the transaction is
    ** irrevocably committed.
Assuming fsync works on both the main database and the hot journal, then I don't see a way that it is not durable? Because, it has to write and sync the full hot journal, then write to the main database, then zero out the hot journal, sync that, and only then does it atomically return from the commit? (assuming FULL and DELETE)
kbaker··on SQLite's documentation about its durability properties is unclear
> If the directory containing the rollback journal is not fsynced after the journal file is deleted, then the journal file might rematerialize after a power failure, causing sqlite to roll back a committed transaction. And fsyncing the directory doesn't seem to happen unless you set synchronous to EXTRA, per the docs cited in the blog post.

I think this is the part that is confusing.

The fsyncing of the directory is supposed to be done by the filesystem/OS itself, not the application.

From man fsync,

    As well as flushing the file data, fsync() also flushes the metadata information associated with the file (see inode(7)).
So from sqlite's perspective on DELETE it is either: before the fsync call, and not committed, or after the fsync call, and committed (or partially written somehow and needing rollback.)

Unfortunately it seems like this has traditionally been broken on many systems, requiring workarounds, like SYNCHRONOUS = EXTRA.

kbaker··on Google debuts device-bound session credentials against session hijacking
~~~~But your VM TPM won't be signed during manufacturing by a trusted root. No attestation.~~~~

OK I take it back, privacy is one of their specified goals:

> Note that the certificate chain for the TPM is never sent to the server. This would allow very precise device fingerprinting, contrary to our privacy goals. Servers will only be able to confirm that the browser still has access to the corresponding private key.

However I still wonder why they don't have TLS try and always create a client certificate per endpoint to proactively register on the server side? Seems like this would accomplish a similar goal?

kbaker··on The Timmy Trap
Seems like this is close to the Uncanny Valley effect.

LLM intelligence is in the spot where it is simultaneously genius-level but also just misses the mark a tiny bit, which really sticks out for those who have been around humans their whole lives.

I feel that, just like more modern CGI, this will slowly fade with certain techniques and you just won't notice it when talking to or interacting with AI.

Just like in his post during the whole Matrix discussion.

> "When I asked for examples, it suggested the Matrix and even gave me the “Summary” and “Shortening” text, which I then used here word for word. "

He switches in AI-written text and I bet you were reading along just the same until he pointed it out.

This is our future now I guess.

kbaker··on Texas electricity maximum renewables record
Today is definitely sunny and windy.

With power prices negative, I guess those big Bitcoin mines out in West TX are quite profitable burning off our excess power...

kbaker··on Perverse incentives of vibe coding
Try https://aider.chat + OpenRouter.ai, pay-as-you-go, use any model you want, I use Claude Sonnet.

It has a very good system prompt so the code is pretty good without a lot of fluff.

kbaker··on Webflow makes GSAP 100% free – plus more updates
GSAP – A wildly robust JavaScript animation library built for professionals [https://gsap.com]
kbaker··on Hybrid AC/DC distribution system with a shared neutral (2020)
I could hope for a future PoE-over-Data Line (PoDL) version using an 18 AWG twisted pair that would work for this, providing something like 48V @ 3 or 4 A, and 10BASE-T1L for data. Hopefully a standard way to do this gains traction.

The existing limitation is with the 2x23 AWG (or 4x23 AWG) of Cat5e/6/6a not providing a lot of current-carrying capability at a safe voltage.

kbaker··on A tale of distros joining forces for a common goal: reproducible builds [video]
The Yocto Project (from the embedded space) has reproducibility as one of its goals. Since everything is built from source and from scratch, even the build toolchains, it is not too big of a step.

Seems like Yocto would make the base for a good general purpose desktop distro (if there is not one out there already.)

kbaker··on Ingesting PDFs and why Gemini 2.0 changes everything
I use Claude through OpenRouter (with Aider), and was pretty amazed to see that it routes the requests during the same session almost round-robin through Amazon Bedrock, sometimes through Google Vertex, sometimes through Anthropic themselves, all of course using the same underlying model.

Literally whoever has the cheapest compute.

With the speed that AI models are improving these days, it seems like the 'moat' of a better model is only a few months before it is commoditized and goes to the cheapest provider.

Page 1 of 13Next →