As counterintuitive as it sounds, it turns out video game consumers don't care much about the actual computation either. Most games are riddled with bugs, and it has next to no impact on sales. Rather, having weird, even embarrassing bugs can make players look at the game more fondly. Skyrim is one of the best selling games ever. Ostensibly it's about fighting dragons. But "Skyrim moment" does not mean an epic battle with a dragon. It means said dragon flying through a goddamn castle, then getting stuck on a single tree and disappearing into the ground, and still hitting you with fire breath somehow.
Buggy games have destroyed franchises. Gothic 3 being a prime example. Contrary to the memes skyrim is not even close to the worst offenders in terms of bugs. Besides bad code does not only lead to bugs. It can lead to bad gameplay, bad performance, missing features, slipped deadlines. A things users care a lot about.
Gothic has always been a niche franchise, and G3 was poorly received not because of bugs, but because of bad worldbuilding (orcs speaking human language, magic runes disappearing, a powerful kingdom getting wholly conquered in basically no time, pretty small open world) and uninteresting story compared to previous titles. Sure it did have bugs, but so did G1 and G2. And that one AssCreed game where people's heads disappeared leaving just eyeballs behind, which still sold crazy numbers. Or the famously bad Cyberpunk 2077 launch, where bad means millions of copies sold in first 2 weeks, not even counting preorders. Or countless other examples.
Most players care about performance even less than they care about bugs. Basically every AAA game nowadays is criticized for piss poor performance and not having the looks to justify it. They're still massive successes.
Usually, it's good code that leads to missed deadlines, not bad code. It literally takes more time and effort to write good code. Gamedev lives on 3-year cycle, that's not enough time for code debt to start causing problems.
Bad gameplay... yes, that can be actual problem. But it's rarely due to a single bad line of code, or even ten thousand bad lines of code. In most games, gameplay is bad because it was designed to be bad. As in, they had a certain way of playing in mind, and they made the game exactly how they wanted, it's just most players don't find that way of playing fun. No amount of code quality can fix that.
> Gothic has always been a niche franchise, and G3 was poorly received not because of bugs, but because of bad worldbuilding (orcs speaking human language, magic runes disappearing, a powerful kingdom getting wholly conquered in basically no time, pretty small open world) and uninteresting story compared to previous titles.
This is just not true. Gothic 3 is still pretty alive in terms of modding and improvement precisely because the base underneath the bugginess was good. You don't have a good community after 20 years if you have bad bodybuilding and uninteresting story.
> Most players care about performance even less than they care about bugs. Basically every AAA game nowadays is criticized for piss poor performance and not having the looks to justify it. They're still massive successes.
You equal success meaning that players don't get care about bad things in a game. That's just a way to reductive view. You can literally read everywhere how people complain about the bad performance of games. Performance is a standard staple in game reviews.
> Usually, it's good code that leads to missed deadlines, not bad code. It literally takes more time and effort to write good code. Gamedev lives on 3-year cycle, that's not enough time for code debt to start causing problems.
Nice trying to put words in my mouth. This is about good and bad developers. Good developers write better code in the same or less time it would take bad developers. that's literally why they are good developers. Bad developers compound on bad code making progress exponentially slower compared to if you had good developers from the start. The question was never the same developer writing good vs bad code.
> Bad gameplay... yes, that can be actual problem. But it's rarely due to a single bad line of code, or even ten thousand bad lines of code. In most games, gameplay is bad because it was designed to be bad. As in, they had a certain way of playing in mind, and they made the game exactly how they wanted, it's just most players don't find that way of playing fun. No amount of code quality can fix that.
I think you really underestimate how much a gameplay programmer can influence the gameplay. Not every millisecond of latency is specified in game design docs. Most of gameplay is designed by feeling. If your developer is not capable of producing good gameplay your game designers can do nothing.
> Gothic 3 is still pretty alive in terms of modding
A fraction of G2's modding scene. And the reason is even after all the bugfixes and community patches, people still overwhelmingly prefer G2 over G3.
> You equal success meaning that players don't get care about bad things in a game. That's just a way to reductive view.
I equal success to financial success, because we're talking why game programmers are paid less, and the reason is (partly) because code quality has next to no impact on sales. If people still buy your hame despite the bad things about it, then it's a financial success, and game studios exploit this fact to the extreme.
> Nice trying to put words in my mouth. This is about good and bad developers.
I was replying to this part: "Besides bad code does not only lead to bugs. It can lead to bad gameplay, bad performance, missing features, slipped deadlines." My intention was that no, generally it's not true that bad code leads to missed deadlines. Slow coding, yes. Bad coding, no. Good programmers are valuable to game studios not because they can write good code, but because they write bad code faster. Which is reflected in lower salaries compared to other software products where writing good code actually matters and where salaries are higher.
> Not every millisecond of latency is specified in game design docs. Most of gameplay is designed by feeling.
Not every millisecond matters for the feeling (unless you're making a fighting game but that's why I said rarely, not never). Usually performance issues in gameplay can be masked by increasing timing windows or by the eternal excuse of git gud (usually, not always). In general, the gameplay of the vast majority of games is simple enough that with modern tools, any half decent programmer can implement any feeling the designer aims for, with varying amounts of noticable issues. Sure, there are exceptions, but exceptions don't shape salary trends.
I'd say it's missing the FI part and the RE part of the FIRE strategy. Even if they did retire early with financial independence, it's never been their goal and they never actively worked toward it. The reason regular saving and regular humble living look a lot like FIRE saving and FIRE humble living is that an average person can only do so much to increase their net worth, so the possible variance between any two people is very limited.
But not actively. At best, they passively worked toward it. They never consciously took any steps to ensure they have FI or can ever RE. It just happened to them while they were working on other goals.
I had extremely bad experience trying to setup act on my Macbook. If this is something that actually works (and doesn't steal my credentials), I'm willing to try it despite AI non-features.
Yea, I've had only barely-success on only a few projects with act. Usually due to steps/scripts that use github-internal APIs, but afaict far from always.
I like that it exists, but what a freaking mess that it's necessary and so difficult to do.
As to continue my anecdotal story, I could safely say that all of my interactions with computers up until the age of 14 were purely gaming with occasional drawing in ms paint. Even so, at the age of 14, I did manage to create a simple html web page, and install a php based web engine, those actions were barely conscious, just following some tutorials in my mother tongue. Only at the age of 17 I made some first real steps into using computer to compute, write first simple programs, and began to be able to understand how it actually works. I'm pretty sure, that all of the time I spent with computers before 14 contributed less than 0.1% into "getting into STEM" and that learning English, reading actual books, spending time in extracurricular classes did way, way more. But then again, that's just my personal experience. Though I believe, it's of many.
You are not giving your 14 year old self the credit they deserve. Creating simple HTML webpages is beyond capabilities of most adults even when following tutorials. I personally witnessed many 14 year olds who failed at literally that. In school setting. Where they had a human teacher they could ask for help with anything, so much better than just a tutorial. Without PHP, just static HTML files saved on desktop.
Years of gaming let you internalize a huge number of UX idioms that you rely on everyday, like left and right mouse clicks, hierarchical menus, hotkeys, text input, active and inactive UI elements, navigating documents larger than the viewport (drag/scroll wheel/scroll bars), and so on and so forth. Imagine how much harder it would be for your 14 year old self to install and run XAMPP or whatever if they knew none of these things. Imagine how much harder it would be for your 17 year old self to begin their programming journey if they didn't already know what a file is.
Looking back from the end of the road, those 0.1% might look tiny and insignificant. But there's a high chance you'd never go into programming at all if you didn't play video games as a child. Not because of the games themselves, but because they gave you early exposure to computers. If all you did was browse Facebook instead, the effect would be much the same.
I heard that the biggest struggle current CS professors have with college freshmen is teaching them about files and directories. It takes a full year before it clicks for most people.
This was true but accidental when "we" were growing up, because if I wanted to play a game on the family computer, I had to figure out the right drivers and suchwith to make it work.
"Acquainted with computers" is closer to endlessly strolling tiktoc now.
Even doomscrolling gives you dozens of skills that never get talked about because they're just so obvious to anyone with those skills - but someone who's not even doomscrolling would literally not have, and it would bite them big time in office setting. Things like navigating touch menus, recognizing interactive and non-interactive UI elements, telling apart user-submitted content from ads, likely how to type, likely how to use multiple apps, likely how to send links and attachments to other people, likely what an account is and why remembering passwords is important.
I used to work in a phone store where almost all customers were 50+. Explaining how to call a saved contact was a daily occurence to us, nevermind creating new contacts. While I do understand why this happens and have nothing but sympathy for these people, I wouldn't want my daughter to be like that at 18.
Speaking of WebAccessibilityFails, the article overflows to the left without a scrollbar when viewed on a phone narrower than an iPhone, making the first word of every line unreadable (and there are a lot of lines on a phone narrower than an iPhone).
I keep my browser zoomed in substantially to compensate for uncorrectable vision issues. I’d say perhaps once per day I’ll encounter a website that has never had zoom in/out (ctl +/-) tested because if you zoom up even one level from 100%, everything breaks.
There are several equally useless failure modes I’ve seen with this, a few off the top of my head:
- rendering fails, everything falls apart
- some elements disappear
- it drops into the feature-limited mobile view
- the author or framework overrides zoom with some other behavior — this one makes me especially crazy because they had to do *extra work* to screw up accessibility
Certain websites are impossible for me to use and I just avoid them.
I remember seeing a website that had <html style="font-size: XXX%"> for the top-level element, and had JS that would dynamically recalculate that percentage on every resize event to keep the visual font size almost (exactly) constant. Made me think for a moment that my mouse wheel broke.
One of my pet peeves in the modern web is when someone displays an image and scales it to exactly the size of your screen, but I want to look more closely at a part of the image so I do a scrollwheel zoom, only for the image to actually shrink as every UI element except the thing I want gets bigger. And then you go "ok, right click on the image and do the "Open Image in new tab" thing and somehow the site defeats that and puts all of their UI crap in the new tab as well.
I figure there must be an extension to handle these problems, I googled and the AI gave me a bunch of helpful answers, which all happened to be Chrome extensions despite me using FF. hmmm. It did also say it could help me find FF extensions if I really wanted them, but there seems to be some shenanigans going on here.
Anyway, an extension should solve it.
A propos image tricks sites pull, I've noticed before the right click for images don't work at all in Instagram web, I wonder how they do that, probably background on a div.
In my experience, the reader mode works perfectly fine for sites like that (it worked for that one site I mentioned in my original comment as well) both in Chrome and Firefox.
i think firefox shows the "open image in new tab" for backgrounds also, now. at least sometimes. still easily defeated by putting an invisible div above it so no right clicks reach it... or do some js bullshit to disable right clicks...
The modern version is to use @media to achieve the same annoying effect without js. Fortunately, there's a finite number of rules so I've found that if you zoom far enough the text does actually start getting larger. Though I expect that someone's already figured out how to use CSS Math to keep text tiny at all zoom levels.
Six years is getting long in the tooth. Isn't it about time to upend everything once again and invent another cascading wheel that trades old, familiar edge cases for new, unfamiliar edge cases?
clamp is superior to @media because it solves a common problem with @media, although I am more apt to consider that problem in relation to proportions of divs and margins given the needs of responsiveness.
Indeed I'm not sure what edge case I might expect to find given the ability of using clamp in conjunction with @media.
> I’d say perhaps once per day I’ll encounter a website that has never had zoom in/out (ctl +/-) tested because if you zoom up even one level from 100%, everything breaks
How does it break for you? Seems OK to me on android — in fact, I already had it at 110%. Reminded me to check my desktop settings which have HN fixed at 125%. I cannot believe that, in 2026, the default font size is set at 12px — is anyone actually reading it at that size?!
> I cannot believe that, in 2026, the default font size is set at 12px — is anyone actually reading it at that size?!
The very first "quality of life" thing I do when I install a new computer / operating system nowadays is double (sometimes triple) the default font size. 12pt was probably fine when our monitors were 640x480, and when we were 18 years old.
I leave HN on default everything, but I have a 1080p monitor so it might look bigger for me than someone with a higher resolution monitor... I don't know how that works. But I often have to zoom out of websites linked here because the text is so big and it feels uncomfortable to read
Yeah, 12px is fine (27" 1440p, no display scaling). It is on the small side. I'd go a bit larger for something I made. But it's not a small enough to slow down my reading.
I use DuckDuckGo Browser, Firefox, and Chrome on Android pretty much in that order of preference. In both mobile mode and desktop mode all of these browsers support pinch zoom and two-finger drag scrolling. I have no problems with this site using those.
I think we might need a little more information than just the OS to differentiate.
This is caused by using CSS grid with "minmax(auto, 57rem)" and an overflowing table. It can be fixed with adding "safe" to "justify-content: safe center" that is defined on main.
Funny how the problem itself is created by CSS, and the solution is "more CSS." On the other hand, bare HTML tends to be extremely accessible and lacks these kinds of basic problems with panning, zooming, and scrolling.
CSS is this weird thing where it has dominance as a layout engine because it is so battle tested compared to a lot of other layout engines, but was clearly designed by a committee that could give a rat’s ass about how ergonomic it is to use.
It took until 2023 to support nesting, something that was so obvious that preprocessors have had it since at least 2006.
The most infuriating case I've seen within the last few days is the Airbnb CAPTCHA, which relies on the user being able to see content that is blocked at zoom levels over 100%. They have an alternative audio option that they've clearly never tested; it always reports failure, even if the CAPTCHA was solved correctly. Unthinkable for an organization with their resources.
Comparing to fraud 3DS reduces sales turn over by a lot, and this is the reason why for the most part it is not required in the US, too much friction during check out hurts business.
Are they, though? Does the end customer get more post-transaction protections when not using 3D Secure? That doesn't sound right. I'd think the merchant is on the hook exactly as much either way.
In America all payments are trivial to chargeback anyways.
We ought to have liability shifting. A long time ago there was a liability shift where if a merchant uses the magnetic stripe on a card equipped with a chip, then the merchant is unconditionally liable in case of a chargeback. We just needed merchants to be liable when the bank supported 3DSecure but the merchant chose not to use it.
They are everywhere. Default liability for online payments is and has always been with the merchant; only 3DS and some wallets can shift it to the issuer.
If you don't follow the standard, gcc -O2 can introduce bugs to your code that you never even wrote. Skipping null checks, executing both branches of a conditional, and so on.
> If you want to be standards correct, yes you have to know the standard well.
to mean that being standards-correct is optional. It's not. Every C programmer needs to know every possible UB by heart and never introduce any of it to their code, or else they'll be constantly introducing subtle, hard to debug bugs that contradict the actual code they wrote.
Maybe you meant something different by those words, but then I'm confused what the "if" was supposed to mean.
Of course it's optional (although I didn't mean to imply that). Even using computers at all is optional. I never said that I don't aim to follow the standard, have a clean compiling program without warnings and without UB, etc. I do strive to achieve all of that.
But it's not entirely black and white, either. In practice I'm fine accepting that some bugs are technically UB but whatever, we've found a bug by whatever manifestation (like NULL dereference most likely leading to segfault in practice). I just fix the bug as a bug, and life goes on.
The standard is not perfect, it does have shortcomings. It can be improved. And it can be interpreted to fix some issues. Let's not hold theory over practicality, and let's expect the compiler writers also strive to do the reasonable thing.
In practice, GCC -O2 will happily erase entire swathes of code and turn perfectly logical source into nonsense assembly whenever it gets as much as a sniff of UB anywhere in the code path. Nobody would be talking about UB if GCC wasn't so aggressive in abusing the freedom UB gives.
To paraphrase your earlier comment - you lose low-friction polymorphism (unpredictable compiler output causes a lot of friction). You lose control of memory allocations (because they may have been elided) and lose control of lifetimes (because free can be moved before last use causing a crash, or removed entirely causing a leak). You lose control of (almost) anything that happens in the system. And it has everything to do with not following the standard.
You do retain control of the memory layout of data structures, though.
Then I'm almost ashamed to admit that I'm not sure I've ever witnessed any surprising form of UB in the wild. For example, I will reliably get segfaults on NULL dereference in practice. Typical manifestations of UB are entirely predictable and obvious. Of course I'm also running most code without most optimizations, most of the time, while developing.
On the other hand, what I've observed with my own eyes is interesting phenomenons like performance drops, e.g. memory bandwidth dropping from gigabytes/sec to 300 KB/sec due to false sharing on an ARM SOC for example.
There was once a privilege escalation vulnerability in Linux kernel that only happened when compiled with optimizations. In kernel space, address 0 is just regular memory that can be read from and written to if there's a page mapped to it. But in C standard, reads and writes to null pointer are UB.
There was some function that read from a passed pointer unconditionally whether it's null or not. It made sense in context. Then it checked if the pointer is null - if it is do early return, if it's not do privileged operation. The pointer was null iff the user didn't have permissions to do the operation.
What GCC did is notice that a pointer is accessed before its null check. Since accessing a null pointer is UB, and GCC assumes UB never happens, it figured out the null check is superfluous. And removed the check and the early return. The pointer read stayed, mind you. The optimized function would unconditionally read from the pointer even if it's null, then unconditionally execute the privileged operation without checking permissions. That allowed obtaining root access from anywhere.
I saw a few other writeups of interesting UB behavior on The Old New Thing blog. I especially like the time travel one: https://devblogs.microsoft.com/oldnewthing/20140627-00/?p=63... (apologies to people of the future, links to MS devblogs tend to die often).
> A check is only useful if you want to actually change the behavior when it happens, otherwise it is useless.
You almost always want to change the behavior to erroring out on overflow. The few cases where overflow really is intended and fine can be handled by explicit opt-out.
And I refuse to buy the argument that "small things add up" in the world where we do string building and parsing every few microseconds. Checked math will have unnoticable impact compared to all the other things we do, in almost every type of program.
This string manipulation stuff is very common, and that's why in 2026, an age where science fiction has become a reality, many things are still absurdly slow. Exactly because of such sloppiness, which does accumulate in many cases, and when one least expected it.
100% agreed on the sloppiness. But overflow checking is not sloppiness. It's the opposite of sloppiness. Unchecked math is sloppiness, allowing overflows to happen silently and uncontrollably is sloppiness. It just so happens this kind of sloppiness makes code faster, unlike other kinds of sloppines that make code slower. Not doing necessary safety checks is faster than doing these necessary checks, but it doesn't make these checks any less necessary. Not validating user input also makes code faster, and is also sloppy.
Disagree with the last one. Back when unions were more common in my country, union officials were the gatekeepers of career progress or even entering the profession, and they were taking bribes. I've never seen an HR department half as bad as an average union from that era (when was the last time you heard someone bring $1000 in cash to a job interview?).
That said, in the USA the pendulum has swinged too far the other way so as of now, unions don't have any capacity to be this bad. Unionizing would be a huge improvement for every employee in pretty much every situation.
reply