HNHacker News
TopNewBestAskShowJobs

eliben

3,222 karma · joined July 5, 2010

http://eli.thegreenplace.net
submissionscomments
eliben··on Rusty thoughts on "Parse, don't validate"
You are technically correct :) But that's not the point of the footnote, and you're right that I should update it. The point here is that Python and Go don't have the equivalent of "first", and have the programmer rely on the runtime error in lst[0]. Rust can affort to have a "first" method because of Option.
eliben··on Seven books I keep close because I love them
I also remember libraries having a very small limit back in the day, so I was surprised to find out that in the Bay Area libraries typically allow up to 100 books per card!
eliben··on Heart aerospace completes first flight of largest electric aircraft
Yes. Counterintuitive, but it make sense when you take all the factors into account (such that completely shutting down and then later restarting turbines may cost a generator more than paying someone to take power off their hands).
eliben··on Heart aerospace completes first flight of largest electric aircraft
During certain hours of the day in California, electricity is essentially free due to solar overproduction, which sometimes causes negative wholesale prices.
eliben··on Writing a Debugger from Scratch
Thanks for the nudge - I've added links to other posts in the series in each one (there are only 3 - you found them all!)
eliben··on Job: Head of Stonehenge
Joshua Tree NP <3
eliben··on Watgo – A WebAssembly Toolkit for Go
You're welcome :)

The harnesses are documented here: https://github.com/eliben/watgo/tree/main/tests

Note that I had to switch the harness from wazero to Node (unfortunately!) when it turned out wazero doesn't support gc and other new proposals (e.g. your comment here https://github.com/wazero/wazero/issues/2483)

Thank you very much for maintaining wazero - I love that project, and am looking forward to being able to use it for this in the future.

eliben··on Ask HN: What are you building that's not AI related?
watgo (https://github.com/eliben/watgo) -- a WebAssembly toolkit for Go. Think something like wasm-tools or wabt, just in pure (0 dependency) Go.
eliben··on Britain today generating 90%+ of electricity from renewables
According to the official tracker (https://www.energy.ca.gov/data-reports/clean-energy-serving-... and elsewhere) there were 279 days in 2025 where California was on 100% renewable for _some_ time during the day (could be hours, could be minutes at mid-day).

In total hours equivalent of 77.3 full days over 2025.

eliben··on Britain today generating 90%+ of electricity from renewables
California is a great example; highest electricity prices in the US (not counting Hawaii, which makes sense) despite significant hydro and fantastic solar capacity. In the last few years California runs 100% renewable on many days (and growing) every year.

Economics 101: prices are not set by what goods cost to create + markup. Prices are set by how much people are willing to pay.

eliben··on Notes on Lagrange Interpolating Polynomials
Thank you for the feedback. The idea was to first define what we want the basis functions to be (a pretty abstract definition) and then develop how to actually get that from _normal_, continuous functions.
eliben··on Notes on Lagrange Interpolating Polynomials
Fixed, thank you! (it's actually r(x)=p(x)-q(x))

(proof-reading through HN is a mildly embarrassing process, sorry about that! I do go over these posts and proof-read them several times myself before publishing)

eliben··on Notes on Lagrange Interpolating Polynomials
Thanks for noticing, I'll fix it shortly
eliben··on Show HN: Showboat and Rodney, so agents can demo what they've built
Right, standalone binaries for CLI tools is great. And if one has Go installed, they can just `go run ...` any tool from its GitHub path, all installation/build/caching happens automagically (meaning the execution is immediate after the first run).

But I can definitely see how someone with `uv` muscle memory wants everything in the same command.

`uv` is the best thing that happened to the Python ecosystem since... I don't know... maybe Numpy.

eliben··on Show HN: Showboat and Rodney, so agents can demo what they've built
Very interesting! I encountered the problems these tools are trying to tackle just recently while trying to guide an agent into creating an in-browser tool for me. Closing the loop on a web interface isn't as simple as CLI-only tools. I should give this a try.

It's also interesting that you've shifted to Go for your agent-coded CLI tools, Simon.

eliben··on The Nobel Prize and the Laureate Are Inseparable
The underlying issue here is that the Nobel Peace Prize is a useless, politicized joke. It appears to be almost designed to give newspapers something to write about.

It's a shame it gets tied with scientific prizes which represent actual merit.

eliben··on Useful patterns for building HTML tools
Nice, I'm proud I managed to nerd-snipe you :-) Thanks for taking the time.

Seriously, though, I think this solves a nicely framed simpler problem. I was thinking about a more general tool, but that's genuinely hard (you'll need heavy CV algorithms or a special ML model to detect what is background what what isn't).

To be honest, what you built here is probably sufficient anyway, because the models are better at obeying "create a white background" or "create a 0xffffff background" than "transparent", so this tool can post-process to what's needed.

When asked for "transparent", I've had a model generate a fake checkerboard pattern of gray colors to imitate how viewers render transparent areas :-) For this kind of nonsense, the transparent-png tool wouldn't do!

eliben··on Useful patterns for building HTML tools
Great work, Simon -- thanks for sharing!

One tool I'd really like to see in this format is a simple "turn the background of this PNG to transparent". Models still refuse to follow the instruction to create transparent backgrounds for logos they create, and I often have to look for other tools doing this as post-processing.

It's possible that this is too complicated for the "few hundred lines of js" code envelope, though.

eliben··on Revisiting "Let's Build a Compiler"
I also enjoyed working with BF for toy compiler projects; here's a series of JIT compilers for BF in increasing level of sophistication: https://eli.thegreenplace.net/2017/adventures-in-jit-compila...
eliben··on Consistent Hashing
Thanks for spotting this, what a silly typo :)

... Fixed

eliben··on Consistent Hashing
Thanks for the kind words!

Regarding ring size, yes I'd say 2^64 is good. Since the representation is sparse, it seems safe but I'd be interested in hearing other views.

eliben··on A polyglot's guide to multiple-dispatch (2016)
Thanks for posting this!

Just a quick note that this post is the first in a series: see https://eli.thegreenplace.net/tag/multiple-dispatch for the full series

eliben··on Anonymous recursive functions in Racket
The Y combinator in Python: https://eli.thegreenplace.net/2016/some-notes-on-the-y-combi...

(scroll down, after the concept is explained using Clojure)

A bit crazier, in Go with generics: https://eli.thegreenplace.net/2022/the-y-combinator-in-go-wi...

eliben··on A blog does not need “analytics”
A quick plug for https://www.goatcounter.com/ - a super lightweight visitor counter. Very much privacy oriented (https://www.goatcounter.com/help/gdpr).

I've set it up on my blog a while ago (https://eli.thegreenplace.net/2023/using-goatcounter-for-blo...) and it's been working really well.

eliben··on Implementing Forth in Go and C
Yes, Factor is mentioned in the first paragraph of the post!
eliben··on Implementing Forth in Go and C
Thanks for the feedback! What do you feel is not finished?
eliben··on Implementing Forth in Go and C
Thanks for the note. Much of the blog post is dealing with this - how the approach I took for the Go implementation is not sufficient for the hacker level - because the code isn't stored anywhere but remains as text. This isn't a Go issue, it's a result of the specific design decision of how to implement it.

The second implementation - in C - does it the "right way", with both code and data living in the same memory, and thus allows all the usual Forth shenanigans. Again, this has all to do with the design approach and not the implementation language. Nothing precludes one from writing such an implementation in Go :-)

eliben··on Convolutions, Polynomials and Flipped Kernels
Indeed, generating functions are mentioned in a footnote :) Very interesting topic
eliben··on Ditching Obsidian and building my own
Plain text in git. Eternal, searchable, compact.
eliben··on Bloom Filters
Updated the result to 80ns - thanks for flagging this. This grows with the size of the data (because more cache misses), and running the benchmark on the full billion takes a while.

[That said, on a hot production bloom filter, much can be loaded into caches anyway so it's not an entirely un-realistic scenario that some of these are cache hits]

Page 1 of 34Next →