Hacker Newsnew | past | comments | ask | show | jobs | submit | eleveriven's commentslogin

I imagine some of the original devs would be surprised anyone is still digging into their work at this level of detail 20+ years later

What stands out to me is that they explain not just what changed, but why it was hard in the first place

The most interesting part to me is how often emulator development turns into discovering that the original games were doing something deeply strange but completely intentional

I’ve been decompiling for the past (almost) two years, and it’s fun to see the bugs, compiler quirks, programmer superstitions, things that coincidentally work because of compiler behavior not because of correctness, as well as the things modern tooling would have caught that 30-year old versions of GCC hadn’t gotten around to yet.

There were even things I thought I had to manually optimize in the early 2000s that the GCC optimizer was already taking care of in the mid-90s.


Have you written about your discoveries anywhere? They sound pretty interesting.

How can you tell the difference between something manually optimized and something automatically optimized?

There's not really an exact science to it, but manually-optimised code is usually more structured/systematic to make it easier for the human author to manage the dependencies and state across the board, while automatically-optimised code is free to arrange things however it would like.

As an example of the kinds of optimisations that the best human programmers were doing before compilers took over, see Michael Abrash's Black Book: https://www.phatcode.net/res/224/files/html/index.html - you can intuit how a human might organise their code to make the most of these while still keeping it maintainable.


Heh. Today I found thanks to the 9front people that some GB games used carts' sram as 'swap'.

games/gb didn't save the sram in the emulator save files, so upon restoring the snapshot and saving in the cartridge memory you got a mismatch. It got fixed really fast, the emulators are really simple plan9 C compared to anything else.


Similar to alcohol, the system doesn't prevent all underage access


As soon as age-gated access depends on a government-issued credential, you're implicitly tying participation to state identity infrastructure


We've spent 30 years telling people "don't share personal info online" and now the compliance path is "upload your ID or face so you can browse memes"


Non of which is necessary to verify you crossed age threshold. Websites are just lazy, maybe on purpose. Accepting this kind of low effort age verification would be foolish.


Yeah, it creates this weird dead zone where the machine is perfectly capable of running the newer OS, but the built-in path to get there is broken


Modern UI trends seem to optimize for neutrality and content-first minimalism, which is nice in theory but often ends up feeling generic


“Content-first minimalism”

I disagree. Unless the ‘content’ is “corners are sooo round, and isn’t this glass-like distortion just so neat?”


How modern computing quietly depends on this constantly-maintained layer of trust infrastructure


Well, to be more specific, "modern internet/web". Most of the applications that ran on a Windows XP computers still run on a Windows XP computer without hiccups, unless they do a lot of network connectivity for the functionality.


And no one can even give a concrete answer why root certificates need expiration dates. It's just because reasons.

IMO the whole PKI thing is a terrible idea to begin with. It would make much more sense to tie the trust in TLS to DNS somehow, since the certificates themselves depend on domains anyway. Then you would only have a single root of trust, and that would be your DNS provider (or the root servers). And nothing will expire ever again.


Root certificates need expiration dates for the same reason that LetsEncrypt certs need an expiration date: risk of cert compromise and forgery increases over time.

Over a long enough timeline, there will be vulns discovered in so much of the software that guards the CA certs in RAM


> risk of cert compromise and forgery increases over time.

And what if the certificate is compromised before it expires? Right, there's a revocation mechanism for that. So why expire them then if they can be revoked anyway IF they get compromised?

The reason why domain TLS certificates expire is that domains can change owners. It makes sense that it should not be possible for someone to buy a domain for one year, get a non-expiring TLS certificate issued for it, and then have the ability to MitM its traffic if it ever gets bought by someone else later.

Domain certificates are sent as part of the connection handshake, so them expiring is unnoticeable for the end users. However, root certificates rely on the OS getting updates forever, which is unsustainable. Some systems lack the ability to install user-provided root CAs altogether, and some (Android) do allow it but treat them as second-class.


Because the most dangerous secret is one that has been compromised and you don’t know it. This sets a time limit for their usefulness. Sometimes the stories about terrible default choices that are insecure sink in and architects choose a better path.


Also, details about the certs and the standards for them change over time. This makes it easier for the browser venders (via the CA forum) to force cert providers to update over time.


You're talking about it like they change by the force of nature, not because humans change them.


The revocation mechanism is basically just a list of revoked certificates. Without expiration dates, those lists will grow infinitely.


The instant we bound encrypted connections with identity we failed. And decades later we're still living with the mistake.

I'm completely serious when we need to abandon the ID verification part of certificates. That's an entirely separate problem from encryption protocol. An encryption protocol needs absolutely no expiration date, it's useful until it's broken, and no one can predict that. Identity should be verified in a separate path.


Certificates need expiration dates to be able to garbage collect certificate revocation lists.


Do certificate revocation lists need to keep including certificates that have long since expired? I don't see why root certificates need to expire as long as the certificates signed by those roots all have reasonable expiration windows, unless someone is doing something strange about trusting formerly-valid certificates, or not checking root certificates against revocation lists.


Right, because DNS entries never expire.


Of course they do, they have to. But it's okay for things that are sent to you over the network to expire. It's not okay for things built into your potentially abandoned OS to expire.


> Of course they do, they have to.

Why do they have to?

(This will also tell you why certs in your OS need to expire.)


Because domains change owners.

https://news.ycombinator.com/item?id=47074127


More specifically: because they cannot be revoked, they need to expire. Same with root certs.


That era of macOS had a kind of clarity and restraint that’s hard to describe


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: