HNHacker News
TopNewBestAskShowJobs

mpyne

8,217 karma · joined November 4, 2010

submissionscomments
mpyne··on MacBook Pro with PROLED XDR Display and Touch
The introduction of the mouse led to developers paying less attention to keyboard shortcuts and function keys, but I don’t see anyone seriously saying computers should not have mice.

Or for that matter, that adding support for game controllers (something that has actually happened with Linux desktops) would led to curtailed development of non-controller parts.

mpyne··on Microsoft offers mass buyouts for roughly a quarter of its workforce
> The world at large makes all sorts of trends, and that by itself doesn't make them smart.

I never said it was smart. Or dumb, for that matter. Just that many product teams have been made to merge testing responsibilities as an internal responsibility, in line with having end-to-end ownership of the product from development to its operational deployment. And usually without any dedicated test engineer member of that team to do this.

> It is only weird to have dedicated QA on your team if you don't give a fuck about releasing shit with bugs in it for the user to bump into.

Well, has the behavior of software companies led you to believe they care strongly about this? I always got the impression they cared more about either maximizing feature velocity given a certain team size, or minimizing labor cost for a given feature velocity.

mpyne··on Microsoft offers mass buyouts for roughly a quarter of its workforce
It's sort of weird in a world that has moved to an DevOps-style ethos for most development.

But yes, before that it would be not at all unusual to have “test engineers” or other technical staff whose entire responsibility laid with setting up test environments and running QA of products. These people did not do product dev, though they may have been involved in writing supporting test platform libraries or even maintaining test infrastructure (like IBM Jazz).

Even today in the U.S. companies that haven’t fully jumped onto newer development practices probably still have QA and/or test departments.

mpyne··on Attention people who think UB is fine
> That's no surprise, "unreachable()" is basically an instruction to the compiler to stop generating code from that point on, and the compiler obeyed.

It's not a command to compiler to stop generating code.

It's a permission slip that allows the compiler to assume that code that follows is dead code, eligible to be optimized out, including eliminating potentially dead stores and loads.

Which is to say, it's precisely what any other UB is, which is why deliberate use of UB is very bad idea.

mpyne··on Attention people who think UB is fine
> There's no standard terminology I'm aware of to distinguish the two. But the distinction exists.

This distinction exists, but not to the compiler. And the compiler is the thing building your binary. You can complain if you like about how UB that could potentially instead have been implementation-defined is UB instead.

But until then, the compiler will mangle your code either way, whether you feel it is fair or not.

mpyne··on Listen and read USA nuclear forces Emergency Action Messages, heard on 11175 kHz
eMudhra does stupid things, NSA does not. Not with NC2.
mpyne··on Attention people who think UB is fine
The solution is to avoid UB. std::unreachable() is just an easy-to-invoke way of hitting UB, mentioned for the sake of the discussion. They did later take your advice “Let’s say we change std::unreachable() to int* ptr = nullptr; *ptr = 99; in the previous example.”. They still got improper codegen out of the compiler.

Though, it would be better if programmers read deliberate instances of UB as if they literally said "std::unreachable()" at that point in the code, as that would better convey how the optimizer passes will see things after dozens of frontend and middle-end passes have run before it.

mpyne··on Bringing uv and ty together
If that's a hassle, imagine how much more of a hassle it is to install uv and ty and ruff.
mpyne··on No more icons in every menu by default
> I don't think you can credit Windows 95 to agile when the agile manifesto was first published in 2001 and the whole sprint nonsense didn't start until sometime later.

Agile manifesto coined a term for things that already existed. It didn’t create it from scratch, nor did it claim to. But W95 did employ methods we would call agile methods today.

mpyne··on No more icons in every menu by default
> We can also lay some blame at Agile's feet. I've seen UX and UI designers genuinely struggle to fit their work into the sprint treadmill. 2 weeks' notice is not enough time to do any sort of serious usability design study.

Windows 95 significantly overhauled the desktop GUI metaphor, in a way that is still the skeletal structure of desktops today.

Its U/I design since Windows 3.11 came about because of agile, not in spite of it. https://socket3.wordpress.com/2018/02/03/designing-windows-9...

> We recognized that we needed much more opportunity to create a design, try it out with users (perhaps comparing it to other designs), make changes, and gather more user feedback. Our desire to abandon the waterfall model and opt for iterative design fortunately followed similar efforts in other areas of the company, so we had concrete examples of its benefits and feasibility.

You're right that you can't go start to finish on a design in a single 2-week sprint. But that's why you have a repeating series of sprints, you're not supposed to go from start to finish in a single sprint.

The Windows 95 team always had a shippable OS to demo internally to devs, QA, beta testers and users invited by the UX designers for usability testing. Just because you demo something to the product owner does not require that you then release the result immediately to end users. Decouple development from deployment and from release and you'll find agile methods can work just fine.

mpyne··on I no longer care to work on any Ruby gems so I've archived all my repositories
No, they were carrying on the analogy about artisanal home builders being replaced by mythical robots that do it perfectly.

In this analogy, we human software devs are the artisanal homebuilders and the fancy LLMs are the robots.

And yes, there's quite a cost to build all the datacenters for all the AI that Big Tech believes that people will want. But as you mention, the cost savings are enormous for even despite that, and will make a much larger set of problems accessible to real software solutions, that previously either stayed on paper, in peoples' heads, or maybe an Excel sheet somewhere.

mpyne··on I no longer care to work on any Ruby gems so I've archived all my repositories
> Its extremely naive, though, to simply buy into the PR from the peddlers

OK, so don’t buy their PR, and try it yourself.

But if you do this, you will find there is a lot of evidence for the economic argument.

I tested out Google Argon 4 release by having it build a Web app to replace a binder I have for reconciling payments with reimbursable expenses.

It did it, as well as I would have and in much less time. I just set it to high and supervised it, it cost about $2. Even if you throw in a “supervision cost” to account for the time I had to spend interacting with it, it was substantially cheaper than had I done it at normal salary rates. Probably 2 orders of magnitude cheaper, even.

mpyne··on JDK 28
From the perspective of the one and only app you care about it may improve operability of that app with others.

But from the perspective of a potentially distributed ecosystem of apps and libraries as employed in practice in modern systems, it's actually harmful to interoperability.

Other libs/services/apps that touch the malformed JSON that this change would accept might be present in the overall system and crash on that data. The risk grows with the more components of the overall system that silently accept malformed data and allow the bad data to make its way deeper before it causes issues.

This is what “fail fast” was meant for, if something is going to cause problems in your system at some point in the future, make that “some point” happen ASAP, so that it is easier to identify and fix the source of the flaw.

mpyne··on JDK 28
From the JEP's goals: "Provide only those data types and operations required for strict conformance to RFC 8259, in order to facilitate machine-to-machine communication."

In that case they made the right choice, as machines won't be inserting trailing commas or comments in the first place, and the risk of having consuming apps inadvertently accept invalid data would be high otherwise.

mpyne··on Chrome and Edge are removing XSLT: what breaks and what does not
> XSLT 2 was 2007, a year before HTML 5 was a thing, yet it never got picked up by browsers. Javascript was just easier to understand than XSLT.

Turns out that tasks easily done by programming languages are best done by programming languages. Who knew?

JSON allowing frontends and backends to communicate in a way analogous to the "smart endpoints, dumb pipes" model for networking saved the Web. The XML adherents wanted the inverted model, which was always insanely difficult to reason about and led to entirely XML-specific security threats.

mpyne··on How Amazon pushes up prices all across the Internet
I think it’s phrased less that it is acceptable, and more that “why are you only focusing on Amazon, when it is like this everywhere you look in logistics?”

It would be one thing to stop shopping at Amazon because of how they treat their workers if you also stopped shopping at other companies whose workers are peeing in bottles behind the scenes. Do the things you buy get shipped at some point by truck-based logistics? If so, piss bottles are already involved, it is just that we were all blessedly unaware.

mpyne··on Banks are now trying to offload the AI data center debt they just underwrote
My mortgage got sold before the first payment. It was in retrospect quite funny because I still get periodic spam emails from the originator as if I'd already be back on the market for another mortgage.
mpyne··on OpenAI engineer arrested in bugging of executive conference room
Honestly, that’s on-brand for HN.
mpyne··on Passkeys are a trap
> > And the passkey provider can enforce the lack of attestation by refusing to support it.

> Then you won't be able to use it with Netflix when they require attestation. How's that supposed to help?

That's my point. The issue is with Netflix forcing you to use passkeys + attestation, not with passkeys existing.

> The author explicitly compares passkeys with TOTP, and explains how relying parties cannot force you to use a specific TOTP provider, because TOTP providers are indistinguishable from the relying party perspective.

I used Okta Verify and MS Authenticator on purpose; they support “extensions” beyond their TOTP support which offer relying parties additional information about authentication events. If Netflix were willing to require atypical passkeys + attestation because passkeys were popular, they should logically be willing to require atypical TOTP + extensions because TOTP is popular. The apps to do this already exist.

I have government websites that already require me to use Okta Verify specifically, but I don’t go around saying this is the fault of TOTP for existing.

> In my 16 years on HN, this has been my most baffling conversation. I see your other comments on this same post, and you make good points there, I don't understand what's going wrong here.

We might just be talking past either other. I have been guilty of it before.

mpyne··on Passkeys are a trap
> It's the Relying Party, like Netflix

So the problem, then, is with Netflix, not with passkeys. Breaking passkeys to try to prevent some different harm from befalling you does not make sense. And the passkey provider can enforce the lack of attestation by refusing to support it.

Netflix could force you to use a chosen authentication provider to restrict that scenario. But, we already live in that world today, nothing in principle stops them from forcing you to use Okta Verify or Microsoft Authenticator in principle. Yet I do not see people using that as a reason to write articles about how OIDC 2.0 or TOTP is a trap.

mpyne··on A Modern Web App in C
So use the C standard library instead of the C++ one. You still get RAII / constructors/destructors and runtime polymorphism, along with stronger compile-time type safety.

I frequently do that myself on simple C++ programs just for compile time reasons alone, where I'll use stdio.h instead of std::iostream or std::format.

mpyne··on Passkeys are a trap
All of which have solutions in this thread too. Nothing forces you to use a passkey provider that enforces attestation if that’s what your threat model worries about.
mpyne··on Passkeys are a trap
TOTP does not replace passwords, and frankly I’m sort of confused why you think they do. Doing passwords right across a multitude of websites is more than a minor inconvenience unless I am willing to simply give up on security.

And I am not.

mpyne··on Postgres isn't slow, your storage is
> Yes the big boys get volume discount. But that doesn't magically entitle them to last decades's pricing.

You’re trying to refute an argument I did not make.

They do not have to be cheaper than 2016. They have to be cheaper than what your business could otherwise string together paying current market prices. And they will be.

mpyne··on Postgres isn't slow, your storage is
No it's not. If "bad software delivered faster" is a problem, it's a problem long before LLMs. But the history of software-based products has shown that "delivered faster" is consistently more important, as bad software that attains significant usage will be made into good software one way or another.
mpyne··on The Making Of Super Mario 64 – full Giles Goddard interview (2001)
I don't think it’s a conflict at all.

The invested time consistently into the things that were important to improve. If the art was good as-is (and it was), they didn’t waste time “perfecting” it further.

But as long as the gameplay itself still felt fuzzy or like there was friction, they spent time improving it up until their deadline. This was not a lack of project management, this was project management actually done well, for once.

In fact they accidentally optimized Super Mario 64 around its debug-mode performance, and shipped the game in that state, with debug symbols and everything. But they could get away with that because the game they shipped still landed in the performance budget they needed for the gameplay they were after.

mpyne··on The Making Of Super Mario 64 – full Giles Goddard interview (2001)
Yeah it was light-years better than other games at the time of its release. Even now it’s very playable even though it’s not “fully modern”.
mpyne··on Postgres isn't slow, your storage is
Then they've been fucked since C beat Lisp, and that hasn't been enough to cause Silicon Valley to implode.
mpyne··on Postgres isn't slow, your storage is
> Cloud providers have to buy new hardware too to grow and to replace failing/obsolete units.

They can negotiate better prices based on their scale, and even on their ability to internally source key components if needed.

E.g. if AWS/Microsoft/Google/Apple buy 80% of Micron's entire output it's probably at a much better price than the rest of us competing over the other 20% are going to get.

mpyne··on Passkeys are a trap
Third parties manage nearly all my money, my future wealth, the quality of the water I drink, etc.

Yes you need to put thought into who you trust to provide password management but for most people having a professional third party help them improve how they use passwords will be a benefit to security overall.

Page 1 of 34Next →