HNHacker News
TopNewBestAskShowJobs

EliRivers

6,140 karma · joined January 21, 2010

submissionscomments
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...

EliRivers··on AMD CEO sees chips from TSMC's US plant costing 5%-20% more
The US has plenty of manufacturing operations much more complicated than building CPUs

It's my understanding that this is not the case. That CPU (and similar) manufacturing is considered one of the most complex processes humanity has ever developed. What are these plenty of manufacturing operations that are more complicated?

EliRivers··on Hyatt Hotels are using algorithmic Rest “smoking detectors”
"Taken at face value, you couldn't even use a pocket calculator to back up a management decision."

That makes no sense. I am the manager. I make the decision. The calculator gives me some numbers but I am still the manager, still the decision maker, and I can use any tools appropriate to inform my decisions. Even a calculator. Taken at face value, that's what it says. That the calculator doesn't make the management decision; a person does.

EliRivers··on America's largest power grid is struggling to meet demand from AI
If the alternative - that people pay an absolute fortune just to make their own houses liveable - comes out worse, seems like a good option to me. The Great God market isn't magically going to make ordinary people's lives better and the USA, despite appearances to the contrary sometimes, isn't meant to be a Dadaist art project in which everyone dedicates their lives to seeing what happens when you let "the market" do anything it likes.
EliRivers··on America's largest power grid is struggling to meet demand from AI
A nice idea I've seen is that residential households pay a low amount per kilowatt-hour they consume until they reach some determined minimum "amount of energy this household needs to maintain a basic standard of living", and after that residential users go onto market rate.

Anyone using that energy to make a profit - that is, run a business - pays market rate from the start.

EliRivers··on At Least 13 People Died by Suicide Amid U.K. Post Office Scandal, Report Says
Has the mental health of the nation got twice as bad in 2 years? Obviously not.

Assuming that's true, do we know if the new claims are fraudulent, or are they valid claims that people simply didn't claim for before?

EliRivers··on Peter Thiel: Elon Musk has given up on Mars
Genuine question; what even would make going to Mars economically viable? It we mean by economically viable something like "when the amount of wealth we generate, where wealth is stuff that makes the lives of humans better, exceeds that which we expended to do it" there's not a lot that springs to mind that would make going to Mars an economic proposition.
EliRivers··on ARIA, the UK's Bet to Build Scientific Revolutions
If we're chucking in on these, which seems to be the case, also Black Arrow; the UK's nascent space programme which in 1971 put a satellite into orbit (which is small beans now but in 1971 was still a serious achievement) and was then cancelled because the US said they'd give the UK discount pricing on their own launches, and then when it was cancelled the US said "Ha! Suckers! Of course you're not getting a discount!" (accounts of this may vary)

I think the UK might be the only country that developed, and then fully abandoned, its own capability to launch satellites. Now being slowly recreated, fifty years later.

EliRivers··on We Saw Medicaid Work Requirements Up Close. You Don't Want This Chaos
I expect someone will just hand a huge amount of money to some AI snake oil company who will fuck it mightily on their behalf in a "nobody could have seen this coming, we're not at fault" manner.
EliRivers··on The Rise of the Japanese Toilet
"most bidets starts leaking after 6-12 months."

Well that just doesn't sound true at all. I would definitely remember if it leaked every year. Do you have any evidence for this? A bidet is pretty basic plumbing, and basic plumbing can go decades without leaking.

I guess if someone goes out and buys cheap parts that fail fast, and always does that, then you'll get some people whose plumbing fails every six months and everyone else goes years or decades without problems.

EliRivers··on C++ to Rust Phrasebook
To be fair, there's a reason for the pattern with init methods you're describing.

Without prejudice on any other reasons, the most common reason for this pattern I've seen is people thinking in languages that basically don't have constructors, yet writing C++. It's not a good reason.

EliRivers··on C++ to Rust Phrasebook
One of the common pitfalls I've seen in my time is someone writing a language they are familiar with in a language that just doesn't fit; trying to apply idioms that flow well with one language to another language where that's just not a good way to achieve the same ends.

An example I've seen a lot is a C thinker writing C++ classes with an init() function; sure, it works, but the C++ way is to do that in constructors. (All those about to start listing exceptions to that C++ idiom, please save it to the end, thanks!) The C thinker is still thinking about objects as "allocate memory, then set values" rather than the C++ way where allocation and initialisation are wrapped together into a single action (from the programmer's point of view).

So what are these pitfalls for a C++ thinker when writing Rust? This "phrasebook" is embracing the idea of taking a C++ way of thinking and applying it to Rust, which I'm sure will be fine for many situations, but what are the C++ phrases that are just the wrong way to do things in Rust?

EliRivers··on Denmark to raise retirement age to 70
Maybe the system needs a rethink; an expectation that everyone able to will pretty much work their whole lives, but making work much less miserable and time-consuming so that's just fine.

Ha. Total pipedream. It is easier to imagine the end of the world than to imagine the end of our current economic system.

EliRivers··on C++26: more constexpr in the standard library
Sounds like you should use those other languages. Right tool for the right job.
EliRivers··on Less Slow C++
If you're taking priority requests:

"How coding FPGA differs from GPU and what is High-Level Synthesis, Verilog, and VHDL? #36" Yes please!

EliRivers··on AGI Is Still 30 Years Away – Ege Erdil and Tamay Besiroglu
Would AGI be recognisable to us? When a human pushes over an anthill, what do the ants think happened? Do they even know the anthill is gone; did they have concept of the anthill as a huge edifice, or did they only know earth to squeeze through and some biological instinct.

If general intelligence arrived and did whatever general intelligence would do, would we even see it? Or would there just be things that happened that we just can't comprehend?

EliRivers··on AGI Is Still 30 Years Away – Ege Erdil and Tamay Besiroglu
Yes, we do seem to have a very high opinion of ourselves.
← PreviousPage 4 of 34Next →