HNHacker News
TopNewBestAskShowJobs

EliRivers

6,113 karma · joined January 21, 2010

submissionscomments
EliRivers··on Automatic Programming
About 15 years ago, I worked on code that delivered working versions to customers, repeatedly, who used it an reported zero bugs. It simply did what it was meant to, what had been agreed, from the moment they started using it.

The key was this: "the requirements are polished and any questions answered by stakeholders"

We simply knew precisely what we were meant to be creating before we started creating it. I wonder to what degree the magic of "spec driven development" as you call it is just that, and using Claude code or some other similar is actually just the expression of being forced to understand and express clearly just what you actually want to create (compared to the much more prevalent model of just making things in the general direction and seeing how it goes).

EliRivers··on Banned C++ features in Chromium
The complete refactor, bringing it forwards from VS2008 to VS2022, and from a home-built, source-code edited Qt 4.7.4 to Qt 6.something, took about two years from start to finish.
EliRivers··on Banned C++ features in Chromium
Don't use standard library containers because we have our own containers that date back to before the STL was even stable.

Flashback to last job. Wrote their own containers. Opaque.

You ask for an item from it, you get back a void pointer. It's a pointer to the item. You ask for the previous, or the next, and you give back that void pointer (because it then goes through the data to find that one again, to know from where you want the next or previous) and get a different void pointer. No random access. You had to start with the special function which would give you the first item and go from there.

They screwed up the end, or the beginning, depending on what you were doing, so you wouldn't get back a null pointer if there was no next or previous. You had to separately check for that.

It was called an iterator, but it wasn't an iterator; an iterator is something for iterating over containers, but it didn't have actual iterators either.

When I opened it up, inside there was an actual container. Templated, so you could choose the real inside container. The default was a QList (as in Qt 4.7.4). The million line codebase contained no other uses; it was always just the default. They took a QList, and wrapped it inside a machine that only dealt in void pointers and stripped away almost all functionality, safety and ability to use std::algorithm

I suspect but cannot prove that the person who did this was a heavy C programmer in the 1980s. I do not know but suspect that this person first encountered variable data type containers that did this sort of thing (a search for "generic linked list in C" gives some ideas, for example) and when they had to move on to C++, learned just enough C++ to recreate what they were used to. And then made it the fundamental container class in millions of lines of code.

EliRivers··on Warren Buffett steps down as Berkshire Hathaway CEO after six decades
"He still lives in the same home he bought when he was 28 years old."

Good for him. Big savings right there. Buying/selling/moving house can cost a fortune.

EliRivers··on Ask HN: What skills do you want to develop or improve in 2026?
The Running Man. It's really the foundation action in a good shuffle dance and it really has to flow naturally and consistently.
EliRivers··on Nabokov's guide to foreigners learning Russian
Forcing people to move to another country en masse sounds like the failures wouldn't be caused by a culture clash so much as more fundamental issues around being forced to move to another country.
EliRivers··on Id Software devs form "wall-to-wall" union
I've taken money to create software for most of three decades and I don't think I've ever actually worked on software that needed the people who created it to be near it while it was running, once it was working.

I think the record single instance uptime on a customer site was most of a decade, running a TV station.

EliRivers··on The C++ standard for the F-35 Fighter Jet [video]
I worked on the same for many years; same deal - playout system for broadcast, years of uptime, never miss a frame.

The C++ was atrocious. Home-made reference counting that was thread-dangerous, but depending on what kind of object the multi-multi-multi diamond inheritance would use, sometimes it would increment, sometimes it wouldn't. Entire objects made out of weird inheritance chains. Even the naming system was crazy; "pencilFactory" wasn't a factory for making pencils, it was anything that was made by the factory for pencils. Inheritance rather than composition was very clearly the model; if some other object had function you needed, you would inherit from that also. Which led to some object inheriting from the same class a half-dozen times in all.

The multi-inheritance system given weird control by objects on creation defining what kind of objects (from the set of all kinds that they actually were) they could be cast to via a special function, but any time someone wanted one that wasn't on that list they'd just cast to it using C++ anyway. You had to cast, because the functions were all deliberately private - to force you to cast. But not how C++ would expect you to cast, oh no!

Crazy, home made containers that were like Win32 opaque objects; you'd just get a void pointer to the object you wanted, and to get the next one pass that void pointer back in. Obviously trying to copy MS COM with IUnknown and other such home made QueryInterface nonsense, in effect creating their own inheritance system on top of C++.

What I really learned is that it's possible to create systems that maintain years of uptime and keep their frame accuracy even with the most atrocious, utterly insane architecture decisions that make it so clear the original architect was thinking in C the whole time and using C++ to build his own terrible implementation of C++, and THAT'S what he wrote it all in.

Gosh, this was a fun walk down memory lane.

EliRivers··on My Favorite Math Problem
What I like most about this math problem is explaining it to people who understand what I'm saying but still insist that it might be possible and they're going to do it. It's a nice lesson for me to think about and carry through life.
EliRivers··on America is getting an AI gold rush instead of a factory boom
Rings a bell. Sounds simple, but being able to reliably make huge numbers of tiny little metal spheres with tiny tiny tolerance is a serious feat; being able to do that brings knowledge and experience that unlocks an entire level of the tech tree.
EliRivers··on America is getting an AI gold rush instead of a factory boom
Changing anything was a dangerous thing to do, because you might cause jobs that have known and reliable setups

I am reminded of some of the very finest semiconductor plants. Where parts could in theory be swapped out and replaced, but to do so would break everything. Mirrors aligned to sub-nanometre precision. Lasers and optics where picoseconds matter. Where parts are effectively custom-tuned for this machine only, allied with all these other parts also custom-tuned for this machine only. The US has a challenge on its hands to develop within the US everything and everyone needed to simply getting these systems actually working.

EliRivers··on Flock's gunshot detection microphones will start listening for human voices
Citizens will be on their best behavior because we are constantly recording and reporting everything that's going on

These people live in fantasyland bubbles, powered by their unshakeable belief in their own intelligence and "hyper rational" nonsense.

People already film themselves committing crimes. There are a great many people who, over and over again, make decisions in the present that will have strongly negative consequences in their own futures.

"If we watch people they won't do bad things." Sure, in some other universe maybe.

EliRivers··on What the F*ck Is Artificial General Intelligence?
Picture a machine endowed with human intellect. In its most simplistic form, that is Artificial General Intelligence (AGI)

Artificial human intelligence. Not what I'd call general, but I guess so long as we make it clear that by "general" we don't actually mean general, fine. I'd really expect actual general intelligence to do a lot better than human, in ways we can't understand any more than ants can comprehend us.

EliRivers··on Failing to Understand the Exponential, Again
Because I need to specify an amount of time short enough that big investors will hand over a lot of money, long enough that I can extract a big chunk of it for myself before it all comes crashing down.

A couple of years is probably a bit tight, really, but I'm competing for that cash with other people so the timeframe we make up is going to about the lowest we think we can get away with.

EliRivers··on Trump to impose $100k fee for H-1B worker visas, White House says
People need to understand that most reformists don't want to get rid of the truly exceptional immigration to the US.

What do the most influential reformists want? The ones who set the extreme agenda that everyone else follows? As I understand it, right now the US is routinely enacting policies that the majority of citizens do not want; from this, could we surmise that the majority of people, and presumably thus the majority of reformists, will receive the extreme H1B policies that they don't want?

EliRivers··on “No Tax on Tips” Includes Digital Creators, Too
Okay, so if I had some employees working jobs that are part of this, could I give them a tip? Could I give them 25000 dollars of tax free tip.
EliRivers··on You're Not Interviewing for the Job. You're Auditioning for the Job Title
"Having run this “proxy” process for years now, I can tell you it is, in fact, the most accurate indicator I have seen of software engineering capabilities."

Genuine question; how do you know? Presumably you have some good feedback on the accuracy of your process when you hired the candidate, but do you have any measure of how accurate your process was on the ones you turned down? I'm sure some of the ones you turned down would have been bad hires, but some would have been good hires; is there a measure of that?

EliRivers··on Delete tests
We don't have those integration tests. They happened by chance when customers did things. Do we really have tests if we cannot define those tests, if we cannot run those tests? If we make a significant change that could feasibly affect the outcome of those tests, and we are unable to run those tests, do we have those tests?

"How do you "design a good system" without testing it?"

We must be coming at this through such widly different contexts. To me, it is simply obvious and normal that it's possible to create a good design for something, and that good design can exist before any tests have ever been created or executed.

To me, that you asks that question suggests that we have such different contexts that we might as well be speaking different languages. I would be horrified that people would churn out a rubbish design and just let tests handle all the crap and force it into a good design; but I do gather that's normal procedure in some industries.

EliRivers··on When the sun will literally set on what's left of the British Empire
The Chagos Islands are very valuable as an unsinkable, static aircraft carrier in the middle of the Indian Ocean. Obviously valuable to a nation with the capability to actually support and operate such an aircraft carrier.
EliRivers··on FFmpeg Assembly Language Lessons
Is there no performance requirement on these? Surely there must be. You can't wait forever for a response; safety critical systems are only safe if they work in time.
EliRivers··on Delete tests
So if your code is ascertained to work at the high level, you also know that it must be working at the lower level too.

I have 100% seen bugs that cancel each other out; code that's just plain wrong at the lower level, coming together by chance to work at the higher level such that one or more integration tests pass. When one piece of that lower level code then gets fixed, either deliberately or because of a library update or hardware improvement or some other change that should have nothing to do with the functionality, and the top level integration tests starts failing, it can be so painful to figure it out.

I've also seen bugs that cancel either other out to make one integration test pass, but don't cancel each other out such that other integration tests fail. That can be a mindmelt; surely if THIS test works, then ALL THIS low level code must be correct, but simultaneously if THAT test fails, then ALL THIS low level code is NOT correct. At which point, people start wishing they had lower level tests.

EliRivers··on Delete tests
I think the record uptime for a customer before they shut down one process to upgrade the software (leaving a dozen other such processes running, taking over the work in turn as each was upgraded) was on the order of six years. This was a set of 24 hour broadcast channels.

"How were you making sure that your system actually works?"

Good design and good software engineering goes a long way.

When you know that you cannot test by simply doing everything the customer will do, you have to think about what tests you can do that will indicate how the system will operate under a load that's orders of magnitude greater than what you can do yourself, with hardware you've never even seen. You have to think about how to write software that is likely to be high quality even if you can't test it how you'd like to.

For example, one can design the architecture in such a way that adding more load, more devices, will only linearly increase the demands on resources, and then from testing infer what the loads will be on actual customer sites. Any non-linearity in those regard were identified, if not at the design stage, in the unit-testing thereof.

One can design the code in such a way that the internal mechanisms of how devices work are suitably abstracted away, leaving as best one can manage common interfaces, and then rather than have to test with the exact arrangements of hardware customers will have, test with devices that to the extent possible, simulate the interactions our software will see. In this regard, it turns out that many devices that purport to meet standard protocols actually meet "variations about the theme" of protocols. But this too can be mitigated and handled to a degree by careful design and thought in the software engineering. The learning from doing this with one set of devices and protocols spreads to significantly different devices and protocols; every subsequent fresh design for the next iteration or generation of hardware is better and more resilient. A software engineering organisation that learns and retains knowledge and experience can go long way.

One can recognise that running live on customers sites is itself an opportunity. Some customers would never say a thing, for years on end. Some would want to be involved and would regularly talk about things they'd seen, unexpected things that happened, loads and events and so on; one can ensure that all that information is gathered by the sales people, the support reps, anyone and everyone who talks to the customers, and passed back effectively to have the results of that testing applied. For doomsday scenarios, such as crashes, resource exhaustion, pathological behaviours and so on; good logging and live measurements and dump catching etc can at least feed back so that this situation (which we would never be able to truly test ourselves) is not wasted, and gets fixed, and the lessons of it applied forwards into design and development. Harsh for the customer who finds an issue, but great for the hundred customers who will never hit it because it was tested by that unlucky customer. We'd be fools not to gather as much information as we could from poor customer experiences.

One can get hold of cheap, twenty year old devices that in theory match the same protocol, and go to town on them (some customers will actually be using that exact device and contemporaries - some customers will have brand new hardware that costs a tenth of my employer's market cap). From that, get an idea of how the software performs. Get another cheap device from ebay that is a decade old, and test it; see where it fails, but don't just fix those failures. From them, and similar repeats of the process, learn at a more fundamental level how devices differ and develop more general solutions that will either then be resilient to some new piece of hardware that hasn't even been made yet, or at least will not go wrong in such a way that the whole system is taken out and the poorly-supported brand new hardware is clearly seen by the software and reported on.

There's more. There's so much more, but once you have no choice but to come up with cheap, fast testing that nonetheless give a good indication of how the system will work when someone spends tens of millions on the hardware, software engineers can really come up with some smart, reliable ideas. It can also be really fun and satisfying to work on this.

"You just YOLO'd it over to customers and prayed?"

Absolutely not. It was all tested, repeatedly, over and over, and over the course of about fifteen year became remarkably resilient, adaptable, resource light, and so on. All the good things one would hope for. In a pinch, a small system could be run from someone's laptop; at the top end, banks and banks of servers with their fans banshee wailing 24 hours a day, with dozens of the principal processes (i.e. the main executable that runs) all running, all talking to each other across countries and time zones, handling their own redundancy against individual processes turning off. Again, when you begin knowing that the software has to deliver on such a range of systems, where one customer is two college kids in a basement and one customer is valued in the tens of billions (although doing a lot more, of course, than just what our software let them do), design and good software engineering goes a very long way.

EliRivers··on Delete tests
At my last employer, some of our customers used our software to run systems of which the hardware value alone exceeded the entire market cap of my employer. They ran systems with a physical footprint many many times the area of my employer's leased offices and workspaces. The physical hardware devices that our software ran alone exceeded the value of my employer's market cap; just buying one of each would have been an enormous expense, ignoring that many of them were no longer available new and some of them were decades old, sitting alongside hardware that was made in the last six months. All the physical hardware working in synchronicity, linking up with similar sites in two other locations around the world, handing off to each other to follow the sun.

It would be nice to fully test system behaviour, but to do so would have bankrupted the company long before even coming close.

EliRivers··on Flunking my Anthropic interview again
Truth. There's a reason that people say to never read the comments section of HN or YouTube.
EliRivers··on FFmpeg Assembly Language Lessons
Surely all programs are performance critical. Any program we think isn't is just a program where the performance met the criteria already.
EliRivers··on Facial recognition vans to be rolled out across police forces in England
Laudable too. I do things that are laudable, that most of society would applaud, that I nonetheless routinely do not disclose and sometimes hide. You will note, perhaps, that I didn't disclose them.
EliRivers··on Facial recognition vans to be rolled out across police forces in England
I have so much to hide.

I want to hide what I had for breakfast. I want to hide what books I read recently. I want to hide which TV shows I watch. I want to hide who I have conversations with. I want to hide who I avoid. I engage in so much completely legal behaviour, much of it quite laudable, that I simply want to hide.

EliRivers··on Tor: How a military project became a lifeline for privacy
Whoever has the largest no of servers can see all the traffic

Is that true?

If there are a million servers, and I control ten of them, and everyone else who has control of servers controls only nine each (so I have the largest number of servers, as you say), surely I will be missing out on almost all the traffic?

EliRivers··on U.S. senators introduce new pirate site blocking bill, "Block BEARD"
Unhelpful but related; back in the day (15 or so years ago), Netflix had a truly excellent back catalogue of old movies. Over a hundred thousand titles. A DVD collection that we just didn't realise was going to vanish as quickly as it arose.

The current offering is just... less. I don't know if I mean in terms of sheer number of titles, but a million episodes of slop is just more slop. Netflix peaked 15 years ago and we didn't even notice.

EliRivers··on What if AI made the world’s economic growth explode?
Sure looks like the wealthy have captured an awful lot:

https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/19...

← PreviousPage 3 of 34Next →