HNHacker News
TopNewBestAskShowJobs

boustrophedon

257 karma · joined October 25, 2017

Harry Stern

graphics programming and geometry are fun

boustrophedon on github and libera

harry@harrystern.net

submissionscomments
boustrophedon··on A tiny world model running games on a Raspberry Pi Pico 2 W
I might have missed it in the readme, but what hardware did the training take place on? This is really neat.
boustrophedon··on Why isn't the industry freaking out about DeepSeek 4.1 Flash?
The RAM vendors have formed cartels previously and been convicted, so although demand is exceeding supply it is not that crazy to at least consider.
boustrophedon··on Replacement of petroleum based products with plant-based materials (2025)
I recently learned that nylon 11 (sometimes aka PA11) is made from castor oil, which (I also learned) is just the vegetable oil extracted from the castor bean.
boustrophedon··on Italy moves to Airbus A330 tankers
Yes, if anything the issue is that the House was capped in seats in 1929 and the population has tripled. Smaller states have an outsized representation in Congress currently.
boustrophedon··on US to suspend immigrant visa processing for 75 nations, State Department says
The contradiction he's pointing out is that they often speak out against so-called "illegals", but as you've documented they enjoy it when business reap the benefits of undocumented labor (i.e. wage suppression).
boustrophedon··on Type checking is a symptom, not a solution
The excessive amount of emdashes does seem to imply it's LLM slop ragebait. The prompt probably included "make intentional mistakes in your arguments to drive engagement" or something like that.
boustrophedon··on I designed a Dieter Rams-inspired iPhone dock
I haven't downloaded your model but https://www.i-solids.com/ (US-based, FDM and MJF) and https://www.weerg.com/ (Italy, mostly MJF ) will both do instant quotes and you might get reasonable prices from them at scale. PCBWay and JLCPCB in China will also do 3d printing at reasonable volume, if you want to get an idea of a baseline price.
boustrophedon··on Using short lived Postgres servers for testing
Thanks! Feel free to file an issue if there's something missing from the library or the daemon.
boustrophedon··on Using short lived Postgres servers for testing
Related self-promotion: I built pgtemp (https://github.com/boustrophedon/pgtemp) to automate doing exactly these mkdir/initdb/load/destroy steps.
boustrophedon··on How to test without mocking
I made https://github.com/boustrophedon/pgtemp to solve this for myself
boustrophedon··on The Backrooms of the Internet Archive
Thanks for writing the blogpost! I think it's perfectly valid as a fun demonstration of the utility of the wayback machine.
boustrophedon··on Memory-safe, clean implementation of classic Posix "BC" calculator
The `parse_program` function is public inside the `bc_util::parser` module, and the parser module is marked public inside `bc_util`, but in the `calc/src/bc.rs` file the `bc_util` mod isn't public, and can't be accessed from a test inside the `tests/` folder, which only has access to the public API exported by the library.
boustrophedon··on The beauty of concrete
There are several sites with instant quotes that are cheaper than Shapeways.

PCBWay and JLCPCB both offer similarly-priced very cheap 3d printing and CNC services out of China. Weerg in Italy also offers 3d printing and CNC services and I'm probably going to try them out for the next thing I need printed. The only non-marketplace service I've seen in the US that offers instant quotes is i-solids in Texas, but they have quite high startup costs and seem to be more geared towards small-medium production runs.

boustrophedon··on Did we lose our way in making efficient software?
I'm not sure if it's related, but I have the git branch in my PS1 and I've noticed that it's much slower to show a new prompt when inside very large repositories now, and I don't think that was the case previously.
boustrophedon··on Ask HN: What have you built with ESPHome, ESP8266 or similar hardware
I built this weather forecast / todo list with the weather.gov and todoist APIs https://harrystern.net/halldisplay.html
boustrophedon··on Sandboxing all the things with Flatpak and BubbleBox
Linux has seccomp and landlock, which are basically harder-to-use versions of pledge/unveil.
boustrophedon··on Sandboxing all the things with Flatpak and BubbleBox
Since the author mentioned rewriting it in Rust, I recently added support to my library extrasafe that allows you to sandbox your own code: https://harrystern.net/extrasafe-user-namespaces.html

So if you wanted to call ffmpeg or some other C library with complicated user-provided data, you can use extrasafe's Isolates (along with its seccomp and Landlock features) to sandbox the call. I'm not really sure how suited it is for rewriting something like bubblewrap or firejail, but it might be interesting to try.

boustrophedon··on Pgtemp: The easiest way to write tests with Postgres, no Docker necessary
I made a Rust library and cli tool that starts a clean postgres instance for each test. The daemon version transparently proxies your connection to a new postgres server every time you connect to it.
boustrophedon··on The bane of my existence: Supporting both async and sync code in Rust
I think the biggest underlying difference is that Rust does not have a language runtime, whereas the other three you've listed do. Since the language runtime can preempt your code at any time, it becomes a lot easier to make async work - at the expense that now data races are easier to create.

I'm not going to pretend I'm an expert but would be happy if someone could expand further.

boustrophedon··on The memory remains: Permanent memory with systemd and a Rust allocator
Without specifying a particular representation[0] on the struct you want to put in "permanent memory", this seems liable to break any time you recompile the code with different optimization flags, or with a newer or older compiler that may optimize differently, or even if you just change seemingly unrelated code that then triggers or de-triggers some optimization.

[0] https://doc.rust-lang.org/reference/type-layout.html#represe...

boustrophedon··on Building an occupancy sensor with a $5 ESP32 and a serverless DB
There are a lot of companies that make electronics enclosures. Some of them are waterproof. Usually they have a couple pre-drilled mounting flanges to screw in the board as well, and then you'd drill your own external holes for input/output as necessary. Here's a couple manufacturers, and you can usually find stuff on e.g. adafruit and digikey as well to save on shipping if you're buying dev boards or other parts from them already.

https://www.hammfg.com/ https://www.budind.com/ http://takachi-enclosure.com/ https://www.adafruit.com/product/903

boustrophedon··on Google Proposes New Mseal() Memory Sealing Syscall for Linux
Non-root can use seccomp-bpf. Chrome already does.
boustrophedon··on Yet another E-Ink weather display – but with Rust
Thanks for the detailed markup! I'm going to take a look at the code tomorrow and see if there's some obvious mistake I've made with the highs/lows. I do remember doing some filtering to only show the lows after noon because I'm typically not outside at 5am - maybe I messed that up.

The reason the current temperature is higher than the "weekly high" is simply that the current temperature is from actual observed data and the weekly high is from forecasted dated, so there are two possibilities: either the temperature is simply higher than forecasted, or the current temperature is higher than it will get the rest of the week.

For what it's worth, there are multicolor e-ink displays available at similar sizes but of course they're also more expensive and have longer refresh rates.

boustrophedon··on Yet another E-Ink weather display – but with Rust
The vendor toolkit is in C, so often you'll see for newer boards that Arduino/CircuitPython/etc don't support it yet because they have to build their own wrappers. Rust lets you use bindgen to basically immediately have access to the entire vendor library.

Now, in this case I'm using an older esp32 board so something like CircuitPython probably would have been equally fine, but it was nice to be able to share the same buffer type across the server and client. I also just enjoy writing Rust and find it less error-prone than C.

boustrophedon··on Yet another E-Ink weather display – but with Rust
Thanks for the explanation! I didn't know it was possible to turn off the crystal at all.

Maybe I'll splurge for a CurrentRanger as well. I'm definitely on board with changing batteries as infrequently as possible.

boustrophedon··on Yet another E-Ink weather display – but with Rust
Is there a way to fully turn off the RTC on the esp and still go into sleep, or are you using the external RTC to enable/disable the chip itself?

I noted this in the "future work" section but I don't have a way to actually test or validate whether the various deep sleep levels are working. If I try to use the ammeter on a standard multimeter it can't cope with the changing ranges as the esp draws a bunch of power to boot and I think probably causes brownouts.

Do you have a current ranger / ucurrent gold type device?

boustrophedon··on Yet another E-Ink weather display – but with Rust
It seems accurate enough at least to pick out clothes for the day. The precipitation forecast sometimes is a bit overzealous later out in the week but seems pretty accurate for the next 24 hours or so.
boustrophedon··on Yet another E-Ink weather display – but with Rust
Yours looks way better than mine - I intentionally didn't show the inside because it's a mess of wires and the screen is held on with masking tape and blue sticky tack and the waveshare esp board wasn't really designed to be soldered to.

Initially I was also going to use an external RTC but didn't want to have the additional circuitry to actually turn on and off the esp32 via the RTC's interrupt signal. Did you find that the internal RTC on the esp wasn't accurate enough?

boustrophedon··on Yet another E-Ink weather display – but with Rust
Somehow I completely did not notice this - this must be the bug another commenter (doodlebugging) is talking about.

Thanks for pointing it out!

boustrophedon··on Yet another E-Ink weather display – but with Rust
I could have explained that better. The numbers on the Y axis indicate the min/max for the week, and the ones next to the days of the week are min/max for the day. The temperature graph is also scaled to not go all the way to the top of the graph. It's entirely possible that there's a bug in my code though - I didn't really write any unit tests for it.

The shaded area is a percentage and does extend to the top of the graph region, which means 100% chance of rain.

Page 1 of 3Next →