frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Nano Banana Pro

https://blog.google/technology/ai/nano-banana-pro/
506•meetpateltech•4h ago•347 comments

NTSB Preliminary Report – Ups Boeing MD-11F Crash [pdf]

https://www.ntsb.gov/Documents/Prelimiary%20Report%20DCA26MA024.pdf
36•gregsadetsky•48m ago•8 comments

Microsoft makes Zork open-source

https://opensource.microsoft.com/blog/2025/11/20/preserving-code-that-shaped-generations-zork-i-i...
121•tabletcorry•55m ago•38 comments

Go Cryptography State of the Union

https://words.filippo.io/2025-state/
51•ingve•2h ago•25 comments

Launch HN: Poly (YC S22) – Cursor for Files

20•aabhay•1h ago•16 comments

Android and iPhone users can now share files, starting with the Pixel 10

https://blog.google/products/android/quick-share-airdrop/
164•abraham•2h ago•142 comments

The Lions Operating System

https://lionsos.org
19•plunderer•49m ago•2 comments

CoMaps emerges as an Organic Maps fork

https://lwn.net/Articles/1024387/
11•altilunium•1w ago•0 comments

Okta's NextJS-0auth troubles

https://joshua.hu/ai-slop-okta-nextjs-0auth-security-vulnerability
80•ramimac•2d ago•14 comments

Freer Monads, More Extensible Effects (2015) [pdf]

https://okmij.org/ftp/Haskell/extensible/more.pdf
45•todsacerdoti•4h ago•2 comments

Ask HN: How are Markov chains so different from tiny LLMs?

41•JPLeRouzic•2d ago•15 comments

Show HN: F32 – An Extremely Small ESP32 Board

https://github.com/PegorK/f32
93•pegor•22h ago•12 comments

Free interactive tool that shows you how PCIe lanes work on motherboards

https://mobomaps.com
49•tagyro•1d ago•8 comments

Interactive World History Atlas Since 3000 BC

http://geacron.com/home-en/
237•not_knuth•9h ago•118 comments

Firefox 147 Will Support the XDG Base Directory Specification

https://www.phoronix.com/news/Firefox-147-XDG-Base-Directory
264•bradrn•4h ago•97 comments

IBM Delivers New Quantum Package

https://newsroom.ibm.com/2025-11-12-ibm-delivers-new-quantum-processors,-software,-and-algorithm-...
25•donutloop•1w ago•11 comments

Red Alert 2 in web browser

https://chronodivide.com/
305•nsoonhui•6h ago•95 comments

Theft of 'The Weeping Woman' from the National Gallery of Victoria

https://en.wikipedia.org/wiki/Theft_of_The_Weeping_Woman_from_the_National_Gallery_of_Victoria
40•neom•5d ago•23 comments

Gary Mani Mounfield of the Stone Roses and Primal Scream Dead at 63

https://www.manchestereveningnews.co.uk/news/greater-manchester-news/gary-mani-dead-stone-roses-3...
10•jjgreen•1h ago•2 comments

Two recently found works of J.S. Bach presented in Leipzig [video]

https://www.youtube.com/watch?v=4hXzUGYIL9M#t=15m19s
30•Archelaos•2d ago•14 comments

Building a high performance home

https://dan.bulwinkle.net/blog/building-a-high-performance-home/
40•pilingual•3d ago•6 comments

50th Anniversary of BitBLT

https://mastodon.sdf.org/@fvzappa/115574872559813280
32•todsacerdoti•16h ago•2 comments

What's in a Passenger Name Record (PNR)? (2013)

https://hasbrouck.org/articles/PNR.html
9•rzk•4d ago•1 comments

Android/Linux Dual Boot

https://wiki.postmarketos.org/wiki/Dual_Booting/WiP
246•joooscha•3d ago•135 comments

Adversarial Poetry as a Universal Single-Turn Jailbreak Mechanism in LLMs

https://arxiv.org/abs/2511.15304
176•capgre•7h ago•104 comments

'Calvin and Hobbes' at 40

https://www.npr.org/2025/11/18/nx-s1-5564064/calvin-and-hobbes-bill-watterson-40-years-comic-stri...
302•mooreds•7h ago•106 comments

Typesetting the "Begriffsschrift" by Gottlob Frege in Plain TeX [pdf]

https://www.tug.org/TUGboat/tb36-3/tb114wermuth.pdf
18•perihelions•1w ago•2 comments

Show HN: My hobby OS that runs Minecraft

https://astral-os.org/posts/2025/10/31/astral-minecraft.html
29•avaliosdev•2d ago•4 comments

CUDA Ontology

https://jamesakl.com/posts/cuda-ontology/
220•gugagore•4d ago•37 comments

Europe is scaling back GDPR and relaxing AI laws

https://www.theverge.com/news/823750/european-union-ai-act-gdpr-changes
899•ksec•1d ago•1058 comments
Open in hackernews

Go Cryptography State of the Union

https://words.filippo.io/2025-state/
51•ingve•2h ago

Comments

edoceo•1h ago
I'm curious about how GC languages handle crypto. Is it a risk that decrypted stuff or keys and things may be left in memory (heap?) before the next GC cycle?
Thaxll•1h ago
If you have access to the local machine no language will save you.
edoceo•1h ago
To oversimplifiy, it's like the same-ish risk level as JS or PHP or Ruby? (assuming the underlying algorithm is good)
OhMeadhbh•53m ago
Sure. But there are several graduations of threat between "zero access" and "complete access." On the intarwebs, every request is from a potential attacker. Attackers are known for violating RFC3514, so it is frequently useful to build a trust model and use existing access control mechanism to deny "sensitive" data (or control functions) to protocol participants who cannot verify their identity and/or access permission.

These models can get complex quickly, but are nevertheless important to evaluate a system's specified behaviour.

No system is perfect and your mileage may vary.

OhMeadhbh•1h ago
What we did with Java (J/SAFE) was to add explicit methods to zero out sensitive info. It was a bit of a PITA because Java's never had consistent semantics about when final(ize,ly) methods were called. Later we added code to track which objects were allocated, but no longer needed, which also wasn't much fun.

Back in the Oak days Sun asked us (I was at RSADSI at the time) to review the language spec for security implications. Our big request was to add the "secure" storage specifier for data. The idea being a variable, const, whatever that was marked "secure" would be guaranteed not to be swapped out to disk (or one of a number of other system specific behaviors). But it was hard to find a concrete behavior that would work for all platforms they were targeting (mostly smaller systems at the time.)

My coworker Bob Baldwin had an existing relationship with Bill Joy and James Gosling (I'm assuming as part of the MIT mafia) so he led the meetings. Joy's response (or maybe Goslings, can't remember anymore) was "Language extension requests should be made on a kidney. Preferably a human kidney. Preferably yours. That way you'll think long and hard about it and you sure as hell won't submit 2."

alphazard•57m ago
It can be, another risk it that a secret value is left on the stack, and is never overwritten because the stack doesn't get to that memory address again, so it's never overwritten or zerod.

Go really just needs a few `crypto.Secret` values of various sizes, or maybe a generic type that could wrap arrays. Then the runtime can handle all the best practices, like a single place in memory, and aggressive zeroing of any copies, etc.

FiloSottile•42m ago
It's not that simple! What about intermediate values during arithmetic computations? What about registers spilling during signal handling?

I honestly thought it could not be done safely, but the runtime/secret proposal discussion proved me wrong.

FiloSottile•46m ago
You might find this proposal and the upcoming runtime/secret package interesting.

https://github.com/golang/go/issues/21865

OhMeadhbh•1h ago
I'm more of a C person than a Go person, but I am unbelievably happy that someone in that community is using the word "cryptography" to mean cryptography and not Bitcoin.
jsheard•1h ago
Wasn't it just the shorthand "crypto" that got co-opted by the Shitcoin Industrial Complex? I think "cryptography" still means what it always meant regardless of who you ask.
OhMeadhbh•50m ago
That's mostly the case, but I've seen job postings for "cryptography experts" that are, as best I can tell, looking for block chain hucksters. But I'm unlikely to work for Microsoft, so I just ignore them.
jsheard•34m ago
Well yeah, someone hired to work with the low-level nuts and bolts of blockchains would ideally need to know their way around actual bona-fide cryptography.
OhMeadhbh•12m ago
Respectfully disagree. My experience is that they've read a couple chapters from Applied Cryptography and think "IACR" is a router manufacturer.

But we all see different parts of the industry. Happy to hear you're encountering more capable people in that industry.

jsheard•9m ago
Oh no I'm not speaking from experience, just saying that in principle you'd want cryptography experts in that position. How that tends to play out in practice is another question.
OhMeadhbh•48m ago
Downvoted for mentioning that people confuse cryptography with Bitcoin? Good thing I didn't mention I think we're in an AI bubble. Or that I prefer emacs to vi.
kunley•38m ago
Let's revert the self-scrutiny trend and actually enjoy a fellow mentioning his downvote. At least I am enjoying, your perception is valid.
alphazard•1h ago
I don't know why the standard library crypto packages insist on passing around `[]byte` for things like a seed value, or why we can't just pass in a seed value to a single unambiguous constructor when generating asymmetric keys. Or how the constructor for a key pair could possibly return an error, when the algorithm is supposed to be deterministic.

It all just seems a bit sloppy. Asking for a seed value like `[32]byte` could at least communicate to me that the level of security is at most 256 bits. And removing all dependencies on rand would make it obvious where the entropy must be coming from (the seed parameter). Cloudflare's CIRCL[0] library does a bit better, but shares some of the same problems.

[0] https://github.com/cloudflare/circl

FiloSottile•47m ago
> I don't know why the standard library crypto packages insist on passing around `[]byte` for things like a seed value

These are actually very deliberate choices, based on maybe unintuitive experience.

We use []byte instead of e.g. [32]byte because generally you start with a []byte that's coming from somewhere: the network, a file format, a KDF.

Then you have two options to get a [32]byte: cast or copy. They both have bad failure modes. If you do a ([32]byte)(foo) cast, you risk a panic if the file/packet/whatever is not the size you expected (e.g. because it's actually attacker controlled). If you do a copy(seed, foo) it's WAY WORSE, because you risk copying only 5 bytes and leaving the rest to zero and not noticing.

Instead, we decided to move the length check into the library everywhere we take bytes, so at worst you get an error, which presumably you know how to handle.

> why we can't just pass in a seed value to a single unambiguous constructor when generating asymmetric keys

I am not sure what you are referring to here. For e.g. ML-KEM, you pass the seed to NewDecapsulationKey768 and you get an opaque *DecapsulationKey768 to pass around. We've been moving everything we can to that.

> Or how the constructor for a key pair could possibly return an error, when the algorithm is supposed to be deterministic.

Depends. If it takes a []byte, we want to return an error to force handling of incorrect lengths. If the key is not a seed (which is only an option for private keys), it can also be invalid, deterministic or not. (This is why I like seeds. https://words.filippo.io/ml-kem-seeds/)

> removing all dependencies on rand would make it obvious where the entropy must be coming from (the seed parameter)

Another place where experience taught us otherwise. Algorithms that take a well-specified seed should indeed just take that (like NewDecapsulationKey768 does!), but where the spec annoyingly takes "randomness from the sky" (https://words.filippo.io/avoid-the-randomness-from-the-sky/) in an unspecified way, taking a io.Reader gave folks the wrong impression that they could use that for deterministic key generation, which then breaks as soon as we change the internals.

There is only one place to get entropy from in a Go program, anyway: crypto/rand. Anything else is a testing need, and it can be handled with test affordances like the upcoming crypto/mlkem/mlkemtest or testing/cryptotest.SetGlobalRandom.

tialaramex•19m ago
It's been many years since I wrote any Go for a living, but does Go seriously lack a way to say "foo is probably 32 bytes, give me the 32 byte array, and if I'm wrong about how big foo is, let me handle that" ?

If the caller was expected to provide a duration and your language has a duration type, you presumably wouldn't take a string, parse that and if it isn't a duration return some not-a-duration error, you'd just make the parameter a duration. It seems like this ought to be a similar situation.

stouset•18m ago
Those aren’t arguments for having []byte instead of [32]byte like you think they are. They’re arguments for having an unambiguous IV type that can be constructed from a []byte or [32]byte, or responsibly generated on your behalf.

Of course, this isn’t really reasonable given golang’s brain-dead approach to zero values (making it functionally impossible to structurally prevent using zero IVs). But it just serves as yet another reminder that golang’s long history of questionable design choices actively impede the ability to design safe, hard-to-misuse APIs.

FiloSottile•14m ago
I'm not sure what you are referring to, but we were talking about keys, not IVs.

Also, "an unambiguous key type that can be constructed from a []byte or responsibly generated on your behalf" is exactly what crypto/mlkem exposes.

kalterdev•2m ago
What’s wrong with zero values? They free the developer from guessing hidden allocations. IMO this benefit outweighs cast riddles by orders of magnitude.
alphazard•8m ago
> If you do a ([32]byte)(foo) cast, you risk a panic if the file/packet/whatever is not the size you expected (e.g. because it's actually attacker controlled)

Can you give an example of a situation where that is actually a concern? It doesn't really seem like a realistic threat model to me. Knowledge of the key is pretty much how these algorithms define attackers vs. defenders. If the attacker has the key that's gg.

There are lots of things in Go that can panic. Even in syntax, the conversion is very similar to an interface conversion, and those haven't been a problem for me in practice, partly because of good lint rules to force checking the "okay" boolean.

FiloSottile•5m ago
A cloud service that lets users upload their certificates and private keys, to be served by the service's CDN. Here the attacker is attacking the system's availability, not the key.

(But also, it's easy to see how this is a problem for public keys and ciphertexts, and it would be weird to have an inconsistent API for private keys.)

Aman_Kalwar•18m ago
This is a super helpful overview. Love how Go’s crypto ecosystem keeps getting more opinionated and safer.