HNHacker News
TopNewBestAskShowJobs

jwr

23,500 karma · joined February 20, 2008

Founder of PartsBox https://partsbox.com/ — an app that lets you take control of electronic parts inventory and electronics production.

I write software and design hardware.

Programming evolution: C64 BASIC, C64 Assembly, Logo, Pascal, C, C++, Scheme, Perl, Common Lisp, Clojure, ?

My PGP key is at https://jan.rychter.com/0x49248F8CF128664B.txt

[ my public key: https://keybase.io/jwr; my proof: https://keybase.io/jwr/sigs/AuJgDWtCw6Hb3c85XNIg-UZOMQ0jRfm8aVAFDqNls2M ]

jwr.at.hn

submissionscomments
jwr··on OccupySaaS
So... If I'm a solo founder that runs a bootstrapped SaaS (single-person business)... which side of the barricade am I on?

Am I allowed to make a living, or should I recreate my SaaS and give it away for free so that I can live without income?

jwr··on Lenovo's 'encrypted' fingerprint USB is just an unencrypted SD card in a case
I always said that in-device encryption that you cannot verify is useless and considered those SATA drives with built-in encryption to be useless. Famous HN luminaries disagreed with me.
jwr··on ChatGPT and Codex usage limits merging
Yes, but how many tokens are in your subscription?

Also, you can't always measure those tokens independently, and the definition of a token changes over time (see the rage with one of the Opus updates).

jwr··on ChatGPT and Codex usage limits merging
These don't change much.

My point is that in normal world, when you buy something, it is verifiable. You buy vegetables by weight and you can weight them yourself. You buy gas at the pump by the liter, and you could measure it yourself. You buy electricity by kWh and you can measure it.

With AI subscriptions, you get "some amount" of "something", neither of which is defined, and neither of which you can measure.

jwr··on ChatGPT and Codex usage limits merging
It's amusing how desensitized we became to AI companies charging money however they like.

Just look at this announcement: "your usage will be measured in tokens, which we do not define, nor give you a way to measure them. The amount of tokens you consume will depend on things you can't control". What is left unsaid is that your subscription will contain an unknown number of those tokens you can't measure anyway, and that they will change the number whenever they feel like it.

You pay for… what, exactly?

I have no idea how this kind of sale is legal, especially in jurisdictions with consumer rights protection (EU).

jwr··on Jepsen: ParticleDB 1.1.4
Every database vendor should pay to get their software Jepsen-tested.
jwr··on Cloudflare Turnstile solver library (no headless browser required)
I think the problem we have is an ill-defined concept of "human consumption". I understand the desire (instinct?) to ban crawlers, but I'd argue that bots serving human needs are different. Consider: bots that fetch the content for me so as to present it in a different form. Bots that need to fetch documentation, because they are writing software for me. Bots that read or explain the content to me because I am disabled. There are many use cases where "bots" are there specifically to fulfill human needs, and yet we ban them.

Worse, many of us outsource the control over who can access their website to a third party, in this case a corporation that is an increasingly menacing monopoly on the internet — which I think is a problem, too.

jwr··on Cloudflare Turnstile solver library (no headless browser required)
Thank you for creating this. For those of us who want to use bots to help them with daily tasks (so that AI does the chores and the human doesn't have to!) and get blocked by idiotic "anti-bot" policies, this is really helpful.
jwr··on Binance-hacker-1029 – $5.6B stolen from Binance
Sigh. I forgot I posted this in a crypto-related thread.
jwr··on Binance-hacker-1029 – $5.6B stolen from Binance
I have been using Yubikeys for years, according to this guide: https://github.com/drduh/yubikey-guide

The nice thing is that using the private key requires physical touch. That means that AI itself (or a remote attacker, for that matter) can't do things unless I confirm.

jwr··on Binance-hacker-1029 – $5.6B stolen from Binance
From Binance customers, not from Binance.
jwr··on Emacs Turns 50
I tried many packages for interacting with AI agents in Emacs, and eventually, as AI became better, I settled on just running them in terminals inside Emacs (ghostel, which is fantastic).

As for AI doing the coding in my Emacs, I simply use Claude Code or codex with the emacs-direct package which exposes the Emacs REPL via MCP. That allows the AI to do quick iteration passes and try things out in my running Emacs. Or start another one for testing.

jwr··on Emacs Turns 50
Actually, Emacs might be handling it pretty well. Safe eval of local variables is a thing. Of course, in your own code, anything goes.
jwr··on Emacs Turns 50
I have been using Emacs for more than 30 years now. Other editors have come and gone, Emacs stayed. Parts of my configuration are more than 30 years old.

There were better and worse times in Emacs history. Recent times, however, are really good. Emacs is maintained and developed actively and there are many external packages which are impressive. Magit and ghostel are good examples of packages that I use on a daily basis to get my work done.

Recently, AI completely changed how I use Emacs, and in a very good way. I now treat AI as a fairy that can fulfill any wish. I describe how I want my editor to work, and boom! it works that way.

Examples: window and tab management, difftastic integration, markdown previews with beautifully rendered tables, markdown previews as PDFs, and many more.

What is most important, however, goes back to Stallman's original ideas. I am in control of my editor and my environment. I decide how it will look and behave. No corporation decides for me. No corporation builds in a new AI assistant. Nobody introduces ads or tracking. This is something I've learned to appreciate over the years.

jwr··on Ghostty 1.4
This depends on the individuals' character -- when I look around, I mostly see people who become jerks/a-holes once they get money. Especially in the tech world. Look at what Google founders do with their money (evading taxes, mostly), or at others who became outright nazis and support far-right movements across the world. In the best case scenario they just keep buying yachts and villas and stay relatively quiet.

Mitchell is a beautiful exception and it makes me happy.

jwr··on Ghostty 1.4
Ghostty is so great. I am very thankful to Mitchell for dedicating so much of his time to making a terminal that is truly great. Finally, somebody really cares and has the technical abilities to materialize that care as great software.

Also, ghostel in Emacs is fantastic as well (of course in a big part thanks to libghostty) — most of my work has now shifted into Emacs as a result.

jwr··on SIMD-accelerated computer vision on a $2 microcontroller
Oh, I do design my own PCBs -- but the price and accessibility of these modules is hard to beat. Especially given that, if you're doing anything that has a radio, you probably want a pre-designed board or an integrated module rather than the chip itself. Baluns are not obvious to design on a board that you do not fully control.
jwr··on SIMD-accelerated computer vision on a $2 microcontroller
I am currently working on a Bluetooth Mesh home network allowing me to control lights, gather sensor data from various places, etc (think interfacing with a home alarm system for presence detection).

Also, a home air quality monitor, both with a display and reporting to my mesh network.

Or you could build a "plane radar" like this one :-) https://github.com/ironicbadger/ESP32-Plane-Radar

jwr··on SIMD-accelerated computer vision on a $2 microcontroller
BTW, I find it pretty amazing that you can buy complete ESP32-S3-Zero boards on AliExpress for $5.33. That's for a little board with the chip, a ceramic antenna, a USB connector and an LED.

ESP32-C3-Zero are $2.80 each.

These prices are absolutely ridiculous for what you get. Also, the ease of use of these boards is incredible. Just connect them via USB to your computer and off you go.

jwr··on Cannabis legalisation and cardiovascular hospitalisations in the USA
"Sorry, you have been blocked"
jwr··on Twelve years of distributed SQLite
So, has this been Jepsen-tested yet?

Because if it hasn't, it's likely there are problems lurking.

jwr··on How Block Blast harvests its players for ad money
I think it is so sad that humanity puts so much effort into things like this.

I thought by the 2020s we would have fusion power, and be busy exploring and colonizing space.

Instead, we got greedy corporations with moral-free executives (remember the "don't be evil" declarations? good times, huh) and incredible amounts of developer effort being poured into useless garbage.

jwr··on OBS Studio 33
Thanks -- this does look like it would do this. But I'm wondering if this entire setup isn't completely overkill. All I need is to record multiple video streams simultaneously. I currently do this by launching multiple Quicktime Player apps and clicking "record" in each one of them...
jwr··on Jank – The native Clojure dialect with seamless C++ interop
I use clojure-mcp for that and never thought about anything else.
jwr··on OBS Studio 33
Yes, please, that would help so much. OBS seems to be designed for static setups and a single output stream. In my case, I have a setup that changes often (for example, connect a USB video device that processes input from a microscope). I thought I would be able to record multiple video streams at once without burning them into a single output stream (e.g. to multiple files, or a multi-stream file), but this turned out to be difficult without hacks.
jwr··on Jank – The native Clojure dialect with seamless C++ interop
This was a problem with early models, I would say more than a year ago, and even then, this problem was solved completely by using the clojure-mcp tools for editing.

Today you don't even need to use clojure-mcp for balanced editing. The models do a perfectly fine job.

jwr··on Jank – The native Clojure dialect with seamless C++ interop
It is. I'm amazed at how quickly agents can work with my Clojure code base and try things out. They make great use of the REPL.
jwr··on CVE-2026-111943: Compromised Intermediate Certificate Authority
Python environment was so brittle, that a solution was found: pack dependencies into "envs" of various kinds. Disk space is cheap, after all (ahem). Now it's time to pay the bill for that approach...
jwr··on Setting Up SSH Keys on macOS with Touch ID
> How do you deal with backups when using YubiKeys

You generate your gpg key on a computer, back it up securely, then store it in the YubiKey and delete the unprotected version on the computer.

This allows you to have multiple YubiKeys with the same private key.

However, nothing prevents you from generating private keys on the YubiKey and using multiple Yubikeys. Or doing a combination of the two approaches.

jwr··on Setting Up SSH Keys on macOS with Touch ID
That was my first thought, too — this might work as one of additional methods of logging in, but not as the only one.

I have been using YubiKeys for many years now, following this guide: https://github.com/drduh/YubiKey-Guide

This means I can have secure private keys for ssh and gpg (cue the crowd saying gpg is insecure without offering good modern alternatives), which I can also back up. And I can set up multiple YubiKeys, which I do.

An additional advantage of this solution is that you can set your YubiKey to require a touch confirmation before performing an operation. This makes it much harder for runaway AI agents to wreak havoc on your servers: there is a physical limitation, which I really like.

Page 1 of 34Next →