It's interesting that he brings up Diablo 2 and Diablo 3 (and Quake for that matter), though, because I think it really foregrounds why these discussions are so fraught.
I worked in early AAA in the late 90s, and it's true that games were often quite rough around the edges. But they were also often biting off WAY more than they could chew, inventing genres and innovating like crazy, often in messy ways that didn't always work. But that meant players were often also routinely and genuinely surprised by the experiences they encountered in even big budget games.
He lists a bunch of quality of life and balance issues that were fixed in Diablo 3 compared to Diablo 2... but, well, Diablo 2 was obviously _important_ in ways that Diablo 3 wasn't. It's a much greater game.
And lurking in the background is the hard fact that often the progress with software (certainly game software) entailed turning to much better software engineering standards, using much better external libraries or game engines with much larger teams, and relying on much more process to capture and filter all those rough edges... and along the way, you've built a much, much larger team with a much larger burn rate, and so all those experiments and innovations become much more dangerous and need to be corralled and controlled and mostly stifled, and as the cost of all this to build skyrockets your entire game design _has_ to focus on your business model and your microtransaction story and your live services first and foremost, because you've boxed yourself into a corner where that cash flow issue is the central fact of your game / software design.
(I experienced this evolution first hand in the FPS space)
All of which is to say, I think there are multiple different axes at play here for evaluation, and it's probably fair to say that software _undefinably_ was much worse in the past along some of them... but not all of them. And there are probably deep tensions and tradeoffs between some of those axes.
I think this entirely discussion really is muddied, though, too, by the fact that hardware got radically better over this entire arc as well, and so many programming techniques in the past that made software more brittle or crash prone hinged on memory and computation optimizations techniques that really had nothing to do with the software culture of then or now. It was just a response to the realities of the hardware.
You could take this further and argue that Diablo 4 further "solves" the problems of Diablo 3. It is accessible to a far wider audience than D2 and D3.
For someone who played D2 and D3 for thousands of hours, D4 typically comes off as really awful. The accessibility tradeoff means that the cheesy (and enjoyable) strategies you used to enjoy in former iterations are no longer feasible because the auto adapting numerical difficulty system is so aggressively casual. Every time you get a big piece of gear, it is watered down to pointlessness immediately. D3 and D2 do not have this problem, but their difficulty curves are more discrete and unforgiving in many areas.
WoWs difficulty-leveling was the worst thing to ever happen, even though at the time it seemed really good, because it removes the difference - if everything always scales to you, there's no real reason to improve.
Makes me wonder if a game studio could instead pepper the amount of money it takes to build an AAA title and instead give it to teams of much smaller size, and leverage the radical focus that can come with such arrangements where a team is given finite resources and has to make due, compromises and all.
Bet across 10 teams instead of one, that kind of thing.
Willing to bet a 30 million dollar budget game will play and look great with proper focus.
Even if only 1-2 take off, it’d be overall better wouldn’t it
Factorio is by all accounts extremely polished, and with a crew significantly smaller than many AAA titles.
There are some others that are similarly placed - Stardew Valley, arguably Minecraft (or GTNH heh).
I think the problem for the studios is they don't know HOW to do those 30 million dollar games, but they're really good at the 300 million dollar ones, and they're not selling to the users, they're selling to corporations (think Microsoft/Playstation/Target).
(It's also rare you have a game that is allowed to improve the way Minecraft, Factorio, or Stardew Valley have; go back and play builds or releases from around "when they went big" and you'll find they're horribly rough - I love Minecraft 1.7.10 but I simply cannot play without the QoL mods from GT:NH for long.)
Case in point, the original release of Hearthstone was built by a team of like 10 people. Indies pull that kind of stuff off all the time, but it's comparatively rare for a big studio to do it.
Also, aside from the dupe bugs, his "improvements" in Diablo 3 I consider it's downside. Changes that are framed as QoL changes in games are very frequently just reductions in risk or investments in your character.
His general outlook seems to be that the small teams of the past creates more rough edges and that the larger teams on modern AAA games creates a smoother experience but requires more concern for income because the cost is so much higher for the larger team.
I get that comparison but I think he's totally missed the advantages of the small team. The cheaper dev cost means less risk of financial ruin if the game fails which means innovations are less risky. Less developers means the vision of one person can shine through more which results in a more creative end-result, for better or worse.
The "too many cooks" in the kitchen is a real problem of modern software, especially games. Huge budgets mean games need huge audiences to be successful which means everyone needs to like it. The death of productivity software is, unsurprisingly, anything that stands in the way of productivity. The save bugs he mentions are real killers. But for games, as an art form, the turn from focusing on the vision of the artist to the desires of the audience makes for uninspiring work.
I'll take bugs all day long if it comes with a unique experience.
There are real QoL changes that simply make the game better - but there are also QoL changes that simply remove the game. It's an extremely delicate balance, and easy to get wrong in ways you don't notice until it's too late.
For example, quest tracking in modern games is phenomenal, and people used to add addons to do that - but there's really a way in which "figure it out yourself" and/or read the guidebook/talk to people was better. Same with pug tooling - no need to find a group anymore, the computer does that for you, but you also don't develop relationships with those around you.
> but there's really a way in which "figure it out yourself" and/or read the guidebook/talk to people was better.
Going to have to disagree on this one. Perhaps if you have an extremely well architected game that will organically guide a lost player in the right direction it can work, but I have many painful memories of just blindly exploring entire maps and clicking on every NPC because the obvious route of progression wasn't doing anything. Sometimes it would be an actual quest bug and I'd just be wasting my time.
Particularly in large open world games like GTA/Witcher 3/etc, quest tracking of some sort is mandatory.
Blindly exploring parts of the game and talking to npcs that you would have run straight passed towards the quest beacon doesn't sound as terrible as you're making it sound.
I wasn't "exploring" in the spiritual sense or "talking", I was brute-force-searching the entire map to find whatever stupid magic button or item or conversation the devs were forcing me to have so I could keep playing the game.
To me that is a sign of someone who games a lot, they've maybe not a chef themselves but are always in search of new flavors and experiences.
Whilst there are many epicureans, the vast majority of time played/food consumed is going to be pretty bland, and the audience both wants and expects that.
Thankfully there is room enough for both, and I think the tension between them is interesting.
This is a relatively recent attitude. OG gamers expected to have their hair blown back through some combination of novel game mechanics, setting, and storyline pretty much every title every time, and if a game didn't deliver it didn't sell.
I don't expect my hair blown back, I'm just looking for something novel. I play a lot of half-baked, buggy titles because they have some interesting angle.
Fair, a lot has changed in the space over the last 45 years. Take the proliferation of titles that are basically just you having a job as an example. That shit absolutely would not scan with older gaming audiences. Why it became popular is a complete mystery to me. Audience expectations for their entertainment dollar spent have definitely declined sharply.
Latency is one metric by which computing has gotten noticeably worse over the years.
Daily, I encounter multiple situations in which I take some action (click a button, type text in a text field, etc.) and the response is visibly delayed - from several hundred to several thousand milliseconds.
This used to happen only on websites, but lately is also happening on apps installed on my computer. The cause? My theory is that everything is now some sort of monstrosity of React or similar web app, running inside a browser process, and possibly even that local apps are sending data round-trip up to the mothership for tracking, surveillance, synchronization, etc.
And the UX is terrible - often while this is happening, stale data is showing, or there is no visual indication a process is underway.
I am a total diva about latency. I am impatient with computers to a fault. The slow animations in iOS. Waiting for some god-foresaken lambda function to spin up for seconds to serve me a list of fucking email addresses in the dozens. Even the few seconds of latency of a LAN screen share is enough to drive me up the wall.
You should talk to musicians about digital equipment. They talk about latency in terms of how far away the instrument feels. It’s wild, good musicians can describe latency on the order of low tens of ms. What’s crazy to me is how good they can get at adjusting. If 8 play a game like rock band, if I don’t adjust for video and audio latency, I just can’t play at all.
And it gets worse, since equipment gets chained. If you add more than a few ms to the wet channel, it accumulates and can be very problematic if you ever feed the wet back into the dry signal.
Animations make me crazy. Computers used to respond at the speed of thought, and now we've deliberately slowed them down for no good reason. Just show me the thing!
I used to be able to whip through 3-4 keyboard shortcuts in a fraction of a second and the computer would keep up. This was on an 80 MHz machine, by the way. Now I have a supercomputer and I have to wait for a quarter-to-half-second zoom/pan/slide/whatever with nearly every single interaction. It's maddening.
How do you deal with it? I try to write my own versions of apps. For example, I use a scraper for movie times written in pure HTML with the most minimal of CSS and JS (1-2 functions max). It looks like 1994 but is fast and clean...however there is just so much software that I can't recreate everything so I suffer in silence.
> I just try to spend as much time as I can in a terminal
GUI are useful, but I spent so much time trying to find the perfect ones while I could quickly draft a quick CLI script for my specific problems. These days, I focus on finding libraries and utilities that solves the core of my problem, then wire them up in a way that solves my workflow. After a while, you just find that most of your computing needs are solved.
It has been a thing for a long time in consumers software from the big guys. The people working on it don't care about UX or performance.
Now a lot of the small-company software we used to use has been replaced by slow bloated and buggy apps usually running on Electron (Slack et al) so we're seeing it everywhere as opposed to in a couple of bad apps.
As it happens, today I stopped in awe about the slowness of right-clicking Windows 11 desktop on my work laptop. It consistently took over ~500ms to open the menu. I think one can get used to the slow response times after a while, but I probably won't since I only use Windows for work.
I believe that's usually caused by a lot of random software deciding to hook the Windows Explorer right-click menu so it can decide whether to add menu items to it, possibly doing slow file IO and running serially with every other hook. (I blame Windows for allowing this and not making it more apparent to users what software is slowing it down.)
You just made me realise that latency might be a strong reason why some users might enjoy TUIs more.
I’m also thinking that there might be a universal solution to all animations: user-driven animation end. Like, the system could cut off the animation as soon as the user hits another key, making it faster and learning the right rate of animations over time. That would be great!
It's a 2017 article, but according to this, the two personal computers with the lowest input latency of all time are the Apple //e (1983) and the TI-99/4a (1979)
In particular it's the depth of the abstraction stack divided by transistor count. Wirth's Law: "Software is getting slower more rapidly than hardware is becoming faster."
That's probably due to factors beyond stock VSCode. Disabling extensions may reveal the culprit. They are just arbitrary JS so they can have all kinds of issues. For example, I recently tried out the biome extension but uninstalled it because I saw it was leaking gigabytes of memory.
I can literally out-type my modestly powerful computer when trying to run 'calc.exe' on Windows 11, to compute 5 * 9. That's beyond absurd, and not a phoning home problem (or well it better not be).
Haha this is true but I have rewritten many things now. I use so much of a custom software stack. You can go down to primitives you like.
Most of the software I use is custom now but not in like a deep way. E.g. it turns out that browser engines are blazing fast. So what’s slow? The chrome around it, the extensions. These things I just rewrite.
It turns out that MacOS GUI primitives are also really fast. It’s just that most software poorly uses it. I rewrote text viewer applications, and a terminal emulator chrome that uses libghostty. I don’t claim originality or skill. I only claim annoyance.
Now that I’ve reached the point where the thing in the way is my OS which I have trouble modifying I suddenly understand why Omarchy is compelling to so many people. And I get why DHH is so excited about it.
You can have a bespoke system on a fast, reliable base. Why wouldn’t you do it? Why suffer?
There are limits. USB keyboards are just always going to be slower than PS/2 keyboards. You can close the gap, but USB is just fundamentally adding wrapping layers that introduce latency over the direct polling PS/2 used. And there's a lot of this at the hardware level, where standardized connections with complex protocols replace weird custom connectors. USB is most definitely easier to plug something in to than PS/2 ports, where you had different ports for mouse and keyboard and they weren't interchangeable. (Ok, some very late motherboards supported using either in a single port, but it wasn't the way most PCs worked.)
You can do a lot at the high levels, but everything needs to be reworked from the hardware level up to match the latency of older systems.
> USB is just fundamentally adding wrapping layers that introduce latency over the direct polling PS/2 used
PS/2 did not use polling, it was entirely event-driven. On keypress, the keyboard sent a serial message to the 8042 controller [1], which then raised the appropriate interrupt line on the CPU, which caused the keyboard ISR [2] to be executed. The serial clock was a bit flexible, but usually sat around 10-16 kHz [3], and so the 11-bit serial message took at most 1 ms to send.
It is USB that uses polling. The keyboard describes itself using endpoint descriptors, and after obtaining these, the host controller periodically polls it with an IN token, to which the keyboard responds with its state changes since the last poll [4]. The earliest USB keyboards preferred fairly slow polling rates, but modern keyboards can be polled every 1 ms [5]. If directly connected to a motherboard USB port, a modern USB keyboard will have pre-software input latency roughly on par with a PS/2 keyboard.
You probably can't avoid the time it takes for the pixel to physically change (~1 frame) but you can avoid all intermediate framebuffers by careful timing synchronization. E.g. when scaling, don't buffer a frame at a time, just a line.
There are lots of "gaming" monitors that advertise on high refresh rates and low latency. We're talking like 4–5ms input latency and pixel response times <2ms.
Point being, outside competitive games, I do not expect monitor hardware to be anywhere near the bottleneck for latency and response times.
You can blame reckless pursuit of multithreading for a lot of this. Most UIs should operate using only one thread. Communication between threads is unbelievably expensive if you don't actually need to do it. The multithreading thing turned into multiple computers and containers. It's all an extension of the same madness.
Until you can demonstrate to me that you can build an async/await server that uses a single core without deadlocking, I am not so sure you should be trusted with any additional resources.
Really? I thought the opposite was the case, that UIs don't use threads enough. For instance, the WhatsApp Windows desktop app often freezes while I'm trying to type a message, often losing much of what I type. It's not the only program that does. The part of the program that takes in keyboard input should never freeze because some other part of the program needs to load data somewhere else.
Maybe we're talking about different things, though.
All of these are examples of the physical performance of software or hardware limitations at the time. I find that software's reliability has increased a thousandfold in my lifetime, but its actual controllability/feel/UI-UX has been rapidly declining for about a decade.
Bit didn't it also feel bad back then, you just forgot about it and has a rose-tinted view of the past?
Like software used to crash, were single-threaded and constantly frozen. How many times did you have to issue Ctrl+alt+del vs today? Even UIs were constantly out of sync with the underlying data, I would even go as far to claim that reactive frameworks like react cut down a big category of software bugs.
For me I think the difference is that software never used to be actually important, it was either games or just otherwise hobby software.
Now when something crashes I actually need it for work, or to bank, or to navigate, or hell sometimes the only menu at a restaurant is a QR code but my damn phone is failing to recognise it again.
When you introduce technology into every facet of life, it's suddenly death by a thousand cuts when things don't work, or are a slow buggy mess.
I agree. Though some software pain used to be more intense (blue screen of death, etc), our lives have become more deeply enmeshed into software, so we feel the friction more. I think we also expect a lot more from software in our daily lives than we did 20 years ago.
Well, banking is digitalized for a long time (such a long time that they actually are using mainframes and cobol), and it's definitely not the epitome of good software, so I think it was always important, maybe we were just less directly reliant on it.
Feel worse? No. Was it clunkier to navigate and figure out the workflow? Perhaps. But I rarely remember saying "this application feels slow" in the late 00's/early 2010's, on much worse hardware.
Websites are the obvious example here. Much slower speeds but pages loaded at acceptable paces. Now I'm on gigabit internet and webpages likely take longer to load. And we all know what it's loading in the background are not things that make the UX better.
This definitely plays a role, and depending on your use-case the “stability” of your software and system varies greatly. E.g Messing around with mods could leave your game in an unplayable state (to the point it just wouldn’t launch properly), whilst today you just download/install them from Steam workshop with 1-click.
Do I blue screen? No. Does my computer regularly stall out, screen glitches out, or otherwise controls become entirely unresponsive, to the point I can't even bring up task manager? Yup.
I suppose sleep has never been great on Windows, but I don't know what it's doing these days.
I'm saying I wish they did more user studies where they actually asked people what they wanted the software to do, instead of lacing it with creepy telemetry that tells them that less-often-used functionality is...less-often-used, and that they would stop removing said less-often-used functionality.
I kinda read your response to my post as “okay then, if we can’t ask that question, we have to spy” etc. which I think did not follow from my post - I misunderstood you.
Fair point; to correct for this bias, ask n people to rate their experience with software reliability, then wait five years and do it again. The larger your n, the more you correct for individual variation (via the Law of Large Numbers)
1) Asking five years apart only confirms if the bias is stable/changing. It doesn’t correct anything.
2) Asking more people gives you an answer closer to the ‘truth’ (i.e. the true population mean; the mean answer if you asked ‘everyone’). It lowers sample error, not directional bias.
A/B testing does not inherently lead you to good design. If you A/B test what people want based on their revealed user preference, you get gambling apps and doomscrolling.
They put windows 95 in front of users, asked them to perform tasks, and, at the end of the test, asked them to shut down the computer. Almost everyone clicked on the start menu first, so that's where they put the shut down button.
It has become very clear over the past decade or so that you cannot make truly good software just going off A/B testing. It leads to something which is tolerable to everyone, but not actually good for anyone, and which taps into the self-destructive impulses of your users (doomscrolling, etc).
All of the pizza chains from my youth A/B tested their ingredients into a weird hill climbing problem. They are all worse tasting and more expensive but despite tasting very differently they are basically equal in how good they taste. You can't really say one is better than the other but they are definitely all worse than they were before.
To be a bit difficult, depends on the 100 you ask. Yes yes statistical sampling, but I think my point here is more about how generations are trained growing up.
A lot of people dislike change and sure as shit hate relearning a skill they didn't enjoy or have aptitude in the first place. I know exactly what kind of UX my dad prefers and he HATES all modern design patterns. I think several of them are great for information density and despise everything twitter popularized. Entire generations have grown up on twitter and they think it's basically the only way to display information.
Point being when we're discussing as large a surface area as "software" I'm not really sure you're going to get much out of asking 100 people except what decade they were born in and what software/patterns they grew up on. Clearly some things can outcompete others, but inertia and network effects drive adoption, and can turn people from "ugh I hate this" to "ugh why would you do anything other than this".
Amen to that. For the first time in my life terrible UX costed me money and I'm highly suspicious that fucked up UX is because of AI slop.
Basically, I tried to buy a train ticket on sbb.ch (it was an eurostar crossing the border, so I couldn't do it through the app).
I selected the day and start looking at the available trains. Before continuing I logged in with swisspass to get my halb-tax discount applied. Once done the page reloaded, I got the updated prices, I selected the train at the time I wanted and I purchased the ticket. Only when I got the ticket delivered on my app screen I notice that it was for the current day and I couldn't reimburse it.
Basically, the page reload after the swisspass login changed the date to the current one and, of course, I didn't notice. It is now fixed, but it costed me 90 bucks and couldn't really do anything because technically is my fault for not noticing it was on the wrong day.
"We have detected that you used the browser back button. Please log out and log back in and don't use the back button." on far too many government and enterprise web apps.
I agree with reliability of software getting so much better. I still remember Windows Millennium (Something between 98 but not Windows 2000) and it has been a mess.
Further more I still remember software developers in the 2000s who just refused to do any kind of testing on produced software, because it is just a waste of time. It compiles? It ships!
All it had to do was run Check Disk, but it kept going in a loop every 30 minutes checking their "AI" for solutions, finding none. There was no way to get out of it.
I am sorry, but even in the worst days of Windows, this would have been a huge deal. This was the last straw so I installed Mint to play games.
i think crafting software has turned into something like making music. consider the movie Trolls World Tour, where there used to be one way of making it, then it splintered off into a ton of different styles.
everybody only likes their own style, and has trouble dealing with other people’s style.
maybe that’s what you mean by the total net feel/experience decreasing. in my world, it’s still harmonious, but it’s possible queen barb hasn’t showed up here yet
I think there's a lot of truth to what you're saying, but a lot of software platforms just can't be customized and mastered like they used to. Things like reorganizing columns, setting shortcuts, menus being consistently organized and accessible using the same command, clickable text and elements looking visually different from unclickable, a wide variety of colors being streamlined to color/pale-color/off-white trios, etc. I use a lot of operational software and every platform just can't be mastered like the old stuff. (And animation lags, too!) And I can watch my younger coworkers on the new software packages, they're certainly not faster on the new stuff than I was on the old stuff.
A few months ago my dad and I roused out the old Windows 2000 computer we used from 2002-2010 and while it took about 6 minutes to boot up, once it booted up, the software was all astonishingly fast (no telemetry) and way, way more "commandable" than their modern equivalents. It was like a tool shop.
I think there’s two separate things going on here.
One is that software started being designed in a one-size-fits-all manner for a “uniconsumer” that vaguely represents every user the software will ever have. Personally I think that analytics-driven development is largely to blame here; through those you don’t see user groups, just numbers going in whatever the product manager deems to be positive and negative directions. We don’t design for specific users, but rather to produce desired metrics.
Second is that professional UI design got flooded with designers from other disciplines (e.g. print design) who only really understand the visual half of software design. The functional, interaction, and user research parts completely fell by the wayside as the job became more focused on coming up with designs that would do numbers on Dribbble and look pretty in a product page or presentation and is driven mostly by vibes now.
What happened is ordinary people started using computers. In the early days of the industry developers could assume a reasonable ability in their users. As computers and smart phones became ubiquitous they could no longer continue with that assumption. You see reorganising columns as a feature, the average user is totally confused and stopped in their tracks when they do it by accident.
In college during the late 80s, working at the campus computer lab, I remember telling one student that she needed to use the mouse to move the cursor. She lifted it up and waved it in the air.
The issue with the metaphor is that everyone feels like their own country's music is worse than yesterdecade. It's not taste in other music so much as "we have decided to play this music because it's more profitable", even if everyone hates it.
No one here is winning in particular unless you make money pushing [profitable music].
“Software is degrading for obvious reasons” is just painfully lazy. Where are the metrics of degradation? Where are the claims of specific reasons, and the evidence of causality?
If the complaint is vibe coding makes bad software, I largely believe it, but I absolutely believe that vibe arguing makes tissue paper arguments. “Everyone knows” and “it’s obvious” are flimsy things to rest arguments on.
I’m writing dramatically better software for all the reasons this post says obviously make worse software.
Testing has gotten much easier, and bug fixing has gotten much easier. I looked at a pre-AI project I did a couple of years ago: test to code LOC was 0.15:1. The projects I work on now are around 1.3:1. The old project had no accessibility considered at all, the new ones are nicely done aria and beyond. Old project is stuck on old libraries because upgrading is a major pain. New projects take new libraries (after cooldown) no matter the effort.
So I’m left thinking that perhaps some people, too lazy to use the new powers of new tools, churn out the same or worse quality code/essays.
But I am seeing a lot of very high quality software that simply wouldn’t have been possible before, and I believe the same could be done with essays by leveraging these tools to research and find real data beyond “it’s obvious”. But that does take a lot more work.
But who is reading those tests? Tests to code LOC was 0.15:1 because humans only tested that 0.15. Now you are assuming that the test the machine wrote actually covers the features that should be tested.
Depending on machine-generated tests that nobody reads isn't better than having poorer coverage. The only thing that is guaranteed is that that mass of code returns "true" with the current implementation and "false" if the implementation changes in some ways. Unless people actually read the LLM-generated code, it's impossible to know if it tests anything that actually matters or just tests the same thing in 5 different ways.
The reason is clear - without scarcity of compute or memory, performance is no longer a feature. That works until all the laziness compounds into a crawling bloat.
This is regarding desktop software. With services, microservices is basically a performance anti-pattern that is used without any due diligence in most cases.
I'm semi-sarcastic here, but this is actually possible now, while it was an often futile and very expensive roundtrip before AI resulting in two versions of your software that you have to simultaneously maintain.
While in general that is true, this is one person and so we can assume a lot of the variables that make it a poor metric are constant in this case and so we can draw a few conclusions.
From my own experience, LLM generated code having more test cases is neither surprising nor an indication of improved quality. I've found LLMs are quite good at making lots of test but the tests are often not that useful. I would argue that total count remains a poor metric for quality.
Just simply ask for that, and they usually know what to do.
They should write a test and stash the fix they just wrote. In this state it should fail. Once they re-apply the patch, it should become green and this gave use enough information to deduce that the test does test something.
> But I am seeing a lot of very high quality software that simply wouldn’t have been possible before
Personally, I haven't seen too much of that. What I've seen is software that _looks_ pretty, has a shiny interface, a well-designed animated website made with god knows what, but under the hood it's a bit of an alpha mess....
What point are you trying to make? The comment I responded to added nothing. Your snarky low value response to me is to suggest I believe expanding the nothing by use of AI would be good? Why would you make such a bad inference or worse joke?
One relatively easy set of metrics - resource consumption driven by migration to resource hungrier stacks.
But in general sure, it's not like we have good databases that count and classify bugs and track their numbers and severity and determine causes so we can compare the dynamic
IME, nobody reads the tests in code review either. They just see "looks like it has tests" *check*. Many times, I've caught LLMs writing completely vacuous tests for configurations of components that were impossible. But coverage number go up, so those tests get written.
I've thought about this, tests should be easier to add to your modules. We dont' need a ton of tests, but we need them to be in more places.
Tests fix how the software can be changed and when software-spec evolves lots of tests can become obsolete. Maybe with AI it is easier to change the tests (?) which is good.
But there is another purpose for tests, besides "testing". It is to document your modules in a way that shows you how to use them, and let's you easily verify is this still working, can I trust it.
I was reviewing some coordinate conversion code one time and a developer’s method of creating unit tests was to run their code, generate a result, then make that output the correct result for the test. Except the result was wrong based on other utilities doing the same conversion, and also failed edge cases.
Test cases are an indicator. They say that this situation I thought of works as I think it should. It doesn't cover everything, but it does cover a large number of things.
A test is mostly useful only in the case that by failing it alerts you to a bug.
They don't say that because you didn't write the tests, AI did, so who knows what behaviors it thought of and wrote tests for. That's the reason these type of metrics are very bad, especially in this context when bad tests are easier to write
Dawg, you clearly haven't used any consumer-grade software in the past 5 years. Everything across the board is a worse experience and there in some cases are limitations that make no sense. Use any app such as Spotify or Uber Eats, its a worse experience than it was 5 years ago, hands down. Everyone outside of our bubble knows it.
I have long suspected that one of the driving issues is the continued need for people in the org to keep justifying their existence.
From the consumer POV you can make a great app that does the thing great, and then that's it. Pay once upfront. Just security updates and maybe light compatibility updates after.
Instead we get constant toying and adjusting, and even worse, get pigeon holed into a monthly subscription to bankroll the $200k salaries needed to pay the team that hides the menu button every 6 month to boost screen time.
No one designs for users any more. It's all gas no breaks on the path to enshitification. A lot of this is the motivation of the people building software.
Raise your hand if you ever saw a PM get promoted for removing a bunch of bad and/or unused features?
When your software crashes and doesn't do what it's told I will think back on the thousands of bullshit tests Claude wrote and feel less bummed out about it. (Maybe.)
IMO it's a bit more nuanced than what the author portrays it as. Broadly, software used to be much worse on the micro-level but better on the macro-level i.e. architecture.
Since it was much harder to make stuff, you really had to architect it well or otherwise it would simply fall apart. For example in assembler you need discipline in your calling conventions, layout and so on, otherwise it just corrupted, you needed to follow sensible naming conventions otherwise it degenerated into unreadable label spaghetti and so on.
Nowadays it's the other way around, the micro level is so much better due to libraries, code reuse, LLMs and better languages/tools, you can use highly sophisticated data structures and functions at your fingertips. In exchange, you can afford to skimp on architecture because computers are fast anyway, and the programming languages don't let you make a huge mess. (Most don't have unstructured goto/jumps, can't corrupt memory accidentally, etc.)
However, this has the cost of making larger programs a nightmare to maintain and systems suffering from a "death of thousand cuts" i.e. on the micro level all is well but when you look at the entire system it's a sprawling unreliable mess. This is where rewrites often happen ;)
Counterpoint - lots of old systems have atrocious architectures.
Those downsides existed, but then that’s just how lots of stuff is or was.
Larger systems are not imo any worse to manage now, but the scale of what is possible and expected dramatically changes what we consider a large system these days.
I think this is like looking back at a few hits and being nostalgic for some decade of music forgetting all the terrible songs of the time. Or perhaps if the volume has increased seeing on YouTube all the school bands that you’d never have seen before because recording was expensive and distribution reserved for the very few.
Not disagreeing, but I feel there is something to be said about how the tools we use nudge us to do things a certain way.
Similar to how using lambda functions and some document DB is easy and fast, but it often times leads to shit architecture as you don't have to think about it anymore, bolt on whatever cloud service X and Y for features and you have a mess.
AI is similar to cloud in that way, it's so forgiving that it pushes you towards a shit architecture as it "doesn't matter anymore".
Funnily enough AI makes the cloud mess easier to manage. These opinions are based on my own experience and most importantly, vibes.
What software today matches the incredible look and feel of say Delicious Library?
What popular consumer software today matches the incredible extensibility of Winamp?
Who is developing fun tools like Coverflow, which was popular enough that Apple incorporated it into iTunes.
You actually do see some of this today but it’s almost entirely limited to software tools, because software devs are willing to spend a little more effort on the tools they use because they know their users can just develop an alternative otherwise.
AI might change this, but well crafted software was genuinely disappearing for the past decade and a half.
So much this. I grew up in the 80s and 90s playing Dangerous Dave, Prince.exe , TDCGA.exe, and installing all the amazing jungle of applications in DOS , Win3 and later [anybody remembers the Win3 program, that made your icons move? the logo was a rabbit in a hat]. Winamp, Musicmatch, SoundForge, all the CADs for more or less professional work, etc.
Now it's all websites.. or horrible android apps. Open source is the only thing remaining.
The good thing is that with LLMs, it is more and more possible to add all sort of cool functionality to existing code. And soon we will be able to add functionality also to compiled programs [like adding line numbers to windows note pad as a "cracking" tutorial, that was so cool].
Just yesterday I added the functionality of "show all unread" to an open source C++ low resource Slack desktop app [the official one is so bad]. And also I added VIM bindings to a text editor.
The extra work required to delight users is still work. Most people won't be bothered to spend the time. It's so much easier to create the average and move on.
The baseline has moved down, but it also encourages laziness. Those who break out of the "Claude, do the thing, no mistakes" rut will do great things.
Probably the most annoying bug I ever encountered was in Quark Xpress 7 when in a two-column layout, placing a discretionary hyphen in a paragraph on the right-hand column caused a preceding paragraph on the left-hand column to reflow to a different number of lines. I tried to get Quark to look into it (it was perfectly repeatable) --- when they wouldn't, I pulled a couple of all-nighters over a weekend and shifted the entire project to InDesign.
That said, as a counter-point, there were also applications such as WriteNow which was ~100,000 lines of hand-coded assembly, which was quick and performant even on an 8MHz 68000 Mac Plus --- it flew on a 25MHz NeXT Cube (it was originally developed as a possible advanced MacWrite/replacement for it if it didn't ship, then was contracted by NeXT to make a bundled word-processor)
It was simply a magical thing in the early days, and one wonders how things would have turned out if for instance we had had MacBasic instead of HyperCard:
MacOS has a very healthy app market and you will usually find the highest quality apps in existence for any task available for a cheap price. Real apps that you install just like in the old days.
Let's flip it: Do you have some examples of software needed that is not available as a regular install for MacOS? Not saying it doesn't exist, but you can almost always find high quality local software.
I haven't experienced that, but bought all of their products I use via the Mac App Store. I imagine they need some kind of activation if you download them from elsewhere.
Yeah, I think it's fair to say that the nadir of software is somewhere in the late 2000s. I'm going to pick 2009.
Snow Leopard on the macOS side of things, Windows 7 on the other, both offering marked improvements in stability and sandboxing over their predecessors. Shareware is booming, the first App Stores have only just launched, Facebook is still that place you share exam notes with your college classmates.
Back in the day, bad software experiences were largely due to hardware constraints and software developers pushing the boundaries of the field. Now, we are writing software that is essentially identical to thousands of apps that have come before, with hardware that is better than ever, and yet the software quality is declining anyway. So to the extent that things were bad before, they were bad for understandable and possibly unavoidable reasons given the nascent state of the field, but now things are bad for totally pointless and lame reasons. The declining quality of software in 2026 is a reflection of the decline of our entire industry, and possibly also of the decline of the west.
While I believe that the decline of the west started with the Reagan Revolution, that decline didn't show up in our consumer technology until about 2010. The best car motors, and the best version of Windows (Windows XP) were released in the mid-aughts.
The headline makes not much sense though. If the software used to be horrible, and now is getting worse, then what is the result? Abysmal software? In the light of this decrease of quality, the "but" seems misplaced, as if it indicated, that it is not so bad, while in fact software getting _even_ worse, will make some software unimaginably bad and we should worry even more.
My understanding of the headline is that software used to be horrible long ago, got better for a while and now is getting worse again (but is still better than horrible?).
The argument in this article is specious. How does the fragility of CDs, disk fragmentation, cybersecurity being a relatively young and niche field, a lack of anti-cheat, the turbo button, and a lack of auto-save have anything to do with software being "horrible?" I'd say it doesn't. These are mostly gripes about the digital environment being in its infancy. I don't consider almost any of these things to be a sign of horrible software other than BSODs being way more common than they are today.
Software is bad when it's buggy, slow, bloated, annoying, distracting, anti-user, anti-consumer, anti-ownership, and rent-seeking. I pine for the days where something as simple as "wtf can't it autosave" be a reason to call software horrible.
You skipped mentioning the first problem listed: that computers used to crash all the time.
Software in general used to be much less stable. For example, browsers didn't always have tab isolation. A single bad site could, and frequently would, crash the whole browser.
As a part-time software developer, one of the problems I think is the following: AI/LLM coding may actually be improving some software, true. But I think it's often in domains where we've already made a lot of progress, and AI helps put the finishing organizing touches on things.... but when it comes to new ideas or new software, I think AI is making things worse.
For instance: an AI-assisted developer can probably make a pretty decent basic text editor, but let's say they need to make an entirely new type of app, then I think the new app will lack polish or finesse because no one has made that before. Or AI can help find bugs in mature, well-written code but what if someone needs to write a new kind of app? Then there's a lack of polish again...
I think that makes sense. The question is, is that a good thing? I sometimes wonder if contact with sufficiently 'lower levels' actually supports mental health in a way. Maybe not coding in 1's and 0's, maybe not even assembly, but maybe there is an optimal distance from the bare metal and we're moving farther away from that optimal...
"Programming Sucks" was written in 2014 [1]. It's a rant, but it's also mostly without exaggeration. (Digging under Mordor immediately gets that out of the way.)
Oh gosh, and how could I forget the software crisis [2], a term coined in 1968, naming a problem identified long before.
Almost all of this did happen, but in my experience was much rarer than the article makes it sound:
- I've never heard or experienced NES cartridges rusting -- but I've had to blow on them, and I've had plenty of CDs scratched (typically when storing them without a case).
- Yes, Windows had significantly more blue screens; however, the cause of lost work was always failure to Ctrl+S (not a blue screen).
- Memory was certainly limited (and in DOS there mostly was no multi-tasking), but only fanatical players would run into the issue described. And you were aware that many games required a memory extender.
- Even now, games are massively hacked e.g. GTA V Online.
- My original PC had a TURBO button, but I never had to use it.
Ah, the venerable disk defragmenter! I ran it once, and it was slowly progressing. 97%, 98%, 99%, almost done now I thought! 100%, 101%, 102%, uh oh, that can't be good... but maybe it was just a rounding error in the calculation of the percentage? I stopped it at 110%, but the damage was already done, all the sectors shuffled so much the filesystem was effectively unreadable.
> Computer manufacturers devised a simple solution: add a TURBO button that would just slow your CPU down on demand.
I remember these! I could not figure out why it never seemed to make the computer faster and actually made it slower. TURBO was even written in italics to imply speed.
I suppose for some short time it may have actually overclocked the CPU, until the default clock speed caught up. After that, the turbo button was a lie.
Edit: Maybe I have it backwards, it sounds like on some machines it might have been in the underclocked condition when it was off. I just remember disappointing results with the machine that I used.
* Turbo was default ON and was the regular marketed speed the cpu was designed to run on, for my (dad's:) PCs it was 12 and 16mhz I think
* Turning turbo off reduced speed significantly for software written with original cpu timing in mind (I think 8088 but that was just outside of my direct experience).
So perspective on turbo button is a little bit philosophic, is it half full or half empty:). But it did not give you any EXTRA boost, like over clocking OVER manufacturer design cpu speed.
The turbo button came out of "turbo XT" PC clones, rather than being some sort of defined standard. Whether or not "turbo enabled" meant "runs at normal speed" or "runs at 4.77 mhz" was entirely dependent on how your case and motherboard happened to be wired, as there was no industry-wide standardization effort at that point. There's a great video on how PC clones evolved over time here if you're interested: https://www.youtube.com/watch?v=LGoM3Sqr2-w
It also hung on for some time past when it made sense. My father had a 486/33MHz that had a "turbo" button. Turning off turbo could slow the clock down but it wouldn't do anything about the fact that the 486 is still fundamentally a better processor than either the 386 or the 286, running 2-3 times faster on the same instruction stream than a 386. So even with turbo off, the programs that was nominally supposed to help with still ran much faster than they were supposed to.
Right; what I don't recall - once we had the 486 DX/2 and DX/4, I don't think Turbo button did anything about the multiplier between CPU and mobo. I think to your point it would do overall clock and other things to try to slow it down, with limited success.
The "nominal speed" of every 486 that it ran with the turbo off was 25MHz.
There were some programs made for that speed, but not nearly as many as when the problem happened for the first time on the 286. Most developers have learned timing practices at that point, and the APIs have improved a lot.
This was my memory of how Turbo was explained to me - keep it on if you want to go fast. We were all learning programming, so that's what we wanted - faster computers.
The real issue is it was secure just by human hacking skill cap and not a wide adaptation of Internet early. now with AI everybody just needs compute and can just run their own hacking operation.
The article does a great job of identifying the locus of the problem: Windows, which has always been an exemplar of bad software, both in the sense of quality and the sense of ethics, and is produced by a company that explores new frontiers in making software bad in both senses every year, a tradition dating to its very founding
I will note that like any large enough company, it also employs a lot of cool people doing great work, and don't see this as a contradiction in any way
Ownership and location (local vs cloud) of software aside, when was the last time anyone here had to - on a Windows computer - spend hours and follow 30+ step tutorials with manual patching and fixing, found deep in some user forum, to get current day software working?
I don't think I've had to do that in 15-20 years or so. At some point, shit just started working. Simple as. DLL hell is a thing of the past.
The future is open source. I was helping a friend with their NextCloud setup, but there was some jank. So I asked Claude to fix it. Which it could do easily because it's open source (well and it was an easy to reproduce bug). Now that bug is gone for my friend, and hopefully other people as well. So. Sure, we can complain about things getting worse, or we can do something about it. In this case, just go fix the software. Hell, most exe files aren't bin protected outside of gaming anyway.
Networking, as we all know, is a rats nest of complexity and edge cases. I think software started getting worse when a high speed internet connection became a given.
90s software ran mostly offline. It was simpler and more deterministic. I think that's why it felt more reliable. Your UI couldn't depend on laggy server round-trips. Things either worked or they didn't.
Yes, absolutely. I don't recall Winamp ever crashing on me (maybe after they introduced frame-breaking skins), meanwhile Apple Music needs to be restarted at least once a day. At the same time my local music server has been up for months without an issue. It's not really an issue of quality it's an issue of inconsistency with network state, which a lot of apps seems to want to make even worse by now passing their networked state to another AI process.
YouTube on Android gets into a state where it just ignores tap to expand the comments section (always the comment section that breaks like this) until you force stop the app.
Also, force stopping the app remembers the video you were watching, but deletes the queue of next videos you built up.
Software is the same as it ever was, if there was more competition, i.e, all those vertical computer companies (that did hardware and operating system software) that used to exist in the 1980s, maybe things would be better?
Maybe choice might come back when some talented kindergartener or junior high schooler who doesn’t know any better comes along and kickstarts the process all over again?
A user of alternative systems from the 1980s, early 90s…
No Internet for us back in the day with its myriad of issues. Just BBSs and screaming at the family when the carrier dropped and you wanted to know who picked up the phone.
Yeah PC was a horrible platform before Win2k, but there was a beautiful short time period when we had alternatives like Amiga, Atari, NeXT and SGI (NeXT and SGI too expensive for the average nerd of course, but those machines played the same role as Ferrari or Lamborghini for the Opel Manta and Ford Escort garage tinkerers ;)
Definitely rose-tinted glasses when people look back at Windows XP and earlier in particular. So many HN posts waxing poetic about how great the UIs were then. No! They were ugly, unreliable, inconsistent, and slow. It was a bad OS. Being gray and having small buttons doesn’t make it automatically more powerful or functional.
> Being gray and having small buttons doesn’t make it automatically more powerful or functional.
If you read through old HIGs, they generally have actual concrete reasoning behind the choices they made. They're pretty interesting to read because back then they did scientific user studies to try to make computers more usable.
For example, Microsoft didn't make the UI gray because of some aesthetic preference. They chose gray because black-on-gray text is easy to read, and because it makes it immediately obvious what's UI vs. what's content (vs. if they made the background white or something). They made all the buttons three-dimensional because it makes it immediately obvious that something is clickable. Getting rid of stuff like this makes the UI prettier, but it also gets rid of hints for how to use the software.
My favourite example is the "click start to shut down" joke. It's not a joke, it's good design.
How do they know it's good design? Did they think long and hard about where people would click to shut down? Maybe, but the more direct reason is they had user testing labs, and at the end of the test they asked users to shut down the computer, and almost all of them clicked on Start.
Inconsistent? I feel the opposite. Right now, every app seems to have its own UI design. Back then, most apps were native Win32: maybe ugly, maybe too serious, somewhat limiting, but mostly consistent. And relatively fast, despite running out of a spinning HDD and a single-core CPU.
I agree, people are too nostalgic about old UIs. But I think modern UIs also invent square wheels, such as invisible scrollbars, too large margins, etc. For example, Windows 7 had the best UI (maybe needed a handful of small additions for year 2026, such as ability to scroll without focus). Later versions of Windows significantly degraded user experience. Windows 11 has somewhat improved look, but it's too bloated and inefficient (that famous desktop context menu opening in 2-3 seconds, jeez).
It’s hard to determine what was aesthetically good from a different time because tastes change.
But there’s nothing wrong with small buttons when your only input tool is a pixel accurate mouse. Arguably what’s worse is too large a button.
But what’s inarguably worse are things like window corners where the click zone extends far beyond the actual window, and parts of the window are not click zones.
One thing that old UIs had were visible and usable scrollbars, while for some reason on that website you need a magnifying glass to see it on Firefox Android
Everyone is just assumed to have a scroll wheel and know how to use it. Scroll wheels came out after Windows 95 did. You used to have to actually drag the scrollbar or click the buttons to move down a page - scrolling was actually quite a pain to do.
Hence it was also extremely important to put the important stuff above the bottom of the first visible page.
Commonly that isn't a software issue though, that's a hardware problem being [correctly] indicated by software. With three notable exceptions:
- Windows 1.0 through ME era: Legitimately an unstable OS due to dangerous memory model/lack of memory isolation.
- Windows NT through XP: Before KPP was added, software was monkey-patching the kernel, and it was causing instability (particularly multiple trying to over-patch each other). For example during that era it wasn't UNCOMMON for antivirus to do so as a matter of course.
- Windows Vista Specific: They made significant changes to the driver model of several popular device types, and manufacturers weren't ready. So a lot of driver-related failures.
But since then, it has mostly be smooth sailing. If you see a BSOD, you can trace it down, and more often than not the source will be underlying hardware failure which is why BSOD exists and isn't a software bug or problem.
I still remember when Vista had just come out and I installed it on my computer. I was getting such annoying hangups and blue screens constantly.
Turns out it was my sound card, or at least it's drivers. It was some super cheap Crystal-based one. It would have some glitch during the permissions swap of the UAC environment, and when it went to play that ding it would break the system and require a hard power off. If I muted the computer before the UAC, it was fine.
If the system BSODs, you have no way of getting to the event log without restarting and successfully booting into the OS again.
That is a strictly worse system than displaying BSOD information right away, which lets you diagnose it immediately, it's a downgrade, which is what this entire thread is about.
Eh, take a pic of the BSOD and see what the error is based on. Having worked support for a long time you'll commonly find those things are bad ram or overheating hardware.
Quite often you'll see non-windows displays like that crashed too.
Restricting attention to the Windows ecosystem in the 90s almost proves the point. The BSOD was legendary. It was notoriously buggy compared to Solaris, NeXT, and Apple. Those platforms had their problems, but they proved you could do a lot better than Windows for reliability.
Speaking of degradation, every time I type a character in this box the grey bar above the keyboard jumps up and down the entire page. EVERY SINGLE KEYSSTROKE. This is like example 10 in my daily life where software worked fine for decades and then suddenly shit the bed in the past 2 years.
I built this extremely heavy drag and drop editor in one giant typescript file a year ago, then I had to go back to check something and to my surprise, vscode just choked on everything. Syntax highlighting became a rainbow and required restarting vscode, intellisense took 3 seconds to suggest anything useful.
The code I wrote was ugly yes, but vscode back when I wrote it was nowhere near that miserable.
The other day google docs started freezing, It got stuck on the creating sheet state.
Youtube is making my fans spin recently just because I am hovering over the play button.
God forbid you use a lesser known SaaS tool. I started a trial on a platform and it kept asking me to start trails because I suppose the modal system was just trash.
The list is endless.
Things just don't work as intended and I know hn gets very offended when you're critical of AI but I couldn't care less honestly because I have my own data. Vibe code slop is slop no matter how good you are with your "orchestration". Oversight is a side effect of vibes and no ambition.
I think one look at video games throughout history should probably shoot down the idea that software is uniquely bad nowadays compared to how it was in the past. The Atari era had enough poorly made games that the industry basically crashed in North America, and its revival in the 8-bit era didn't really change as much as expected. The fact the internet is full of YouTube reviewers akin to the Angry Video Game Nerd should be evidence that incredibly bad, often blatantly non functional software was a common occurrence throughout history.
There were games released in a pre-alpha state (Big Rigs: Over the Road Racing), games that were basically released in a normal alpha state (Superman 64, Action52, etc) and there were games which literally didn't work because of major programming issues (SQIJ! had a player character which couldn't move due to the game only looking for lower case inputs while leaving the caps lock on).
And that's only the most extreme examples. Plenty of games had broken features and mechanics, or were outright impossible to complete due to poor level design and a lack of proper testing. Fan games, mods, ROM hacks and indie game scenes from the earlier days were just as notorious for works that were barely functional.
Generally games are at least now functional nowadays, with even the worst tending not to outright crash to a black screen or leave you with a player character that's completely unable to move. In many ways, the baseline level of competence arguably seems to be getting higher, with the march of AI meaning the worst is probably better than it might have been previously been.
Outside of games, it's worth noting how deeply insecure and flawed many older websites and programs were. There was a time where storing passwords in plain text was more of a norm, where input validation and sanitisation was often forgotten about, and where sites getting hacked was just as common an occurrence as today. Many Perl devs probably recoil in horror after hearing the term "Matt's Script Archive".
Are some things worse? Sure, performance seems to have become increasingly ignored in recent years, with web page sizes getting incredibly bloated and latency going through the roof. In some places there's more bad software overall, since the ability to vibe code it means non-programmers are building software more than ever. And some big companies that used to be respectable have let standards slip a lot (see Epic Games, Microsoft, etc).
Sturgeon's Law/Revelation held back then, and still holds today: 90% of everything is crap.
I had to think about this one for a bit. Programming by hand took ALOT of time and, yes, software invariably had errors and edge cases that weren't noticeable until after release. BSOD, buffer overflows, etc.
If anything, software 'may' be getting worse due to non-programmers (vibe coders) releasing things they have no business making in the first place.
There is simply too much software out there. Too many websites, apps, ui choices, frameworks. Impossible to keep track of it all and with AI accelerating release quantities, I already feel a fatigue of just keeping up with the news, not too mention using any of it to even a small extent. It will only get worse.
Was it? Word, PowerPoint, Keynote, paid software, etc. all used to actually work. And you got support. You weren't just leeched off of through subscription payments. And things worked. There's been very little improvement in software tools that tracks the improvement in hardware speeds and programming languages. It feels like software gets slower and slower every year, with every day bogged down by up to dozens of different bugs encountered and poor feature improvements.
Every time I open my phone, Google has a new "busy/loading" icon. Why?!
Anecdotally, I remember far less frustration and far more enjoyment from software 15 years ago than I do today (what led me down the path to being a developer to begin with).
Today's software isn't even software. It's just a bunch of poorly made extraction machines backed by utter delusion that "it works" when a lot of it most certainly doesn't (or if it does, at best, it works as an efficient extraction machine and torture device with no real utility).
It seriously feels like we've been huffing gas for the last 15 years.
I'm truly horrified all that data is online somewhere synced from external sources in 1 dump.
On the end he said to me: you don't seem impressed...
He didn't knew a thing he was talking about technically. Barely even the db used ( postgres).
He mentioned sha256 for passwords, but doesn't know rainbow tables exist. If I would mention it to him to use a salt, he would probably break every login.
He has no dev and no test environment. Doesn't know about pr's, but he was proud he says he uses git and he "made" it.
It's under "NDA" and his step brother is checking it. Lol
I'd be surprised if Claude would implement password storage without a salt, tbh (assuming a recent model). If he doesn't know the implementation details I'd say it's more than likely that it is actually salting the hashes.
Sorry but when people say 'software back in the day' they don't mean Microsoft Windows. Windows was, is and most probably will be shit, that's nothing new.
Yeah, I think a lot of people on HN have been sheltered from the swath of truly bad software. Software where the legit operation procedure is bizarre stuff like wait for it to crash then restart and begin work and its been running like that for 20+years.
Now a days it see like more and more people view old software with rose tinted glasses. Most old software was slop too. You can produce slop much faster now, which is where this slopaphobia is coming from.
hot take: software IS getting better. You give access to SWE to more people = more peers to review and test code/algorithms/apps... the fact that OSes had these downsides was technologic immaturity (just like trains that ran of coal steam engines in the XIXth century vs now that are electric). The more mature a tech is, the more everyone gets to enjoy it's outputs, and the more it grows.
All but one of these complaints are due to hardware limitations, not software. In fact, if there were cheap 200GB SSDs in 2003 this list would be down to the BSOD complaint. I have no idea why Autosave is even on this list, it did well in Word 95 and floppy disks and never was "horrible". Skip this one entirely, it is just wrong.
Autosave worked just fine if you remembered to tick the box.
BSOD I already mentioned was the only issue.
Client side hacks? Crypto is the bottleneck for all of security. Doing TLS on a 66MHz chip:
Loading WWW.INSTAGRAM.COM
Wait a few seconds per each domain handshake to process.
instagram.com.......................................................................................................................done.
adsmanager.facebook.com...........................................................................................................done.
I've beem saying this: there's nothing sacred about human-written code, and 75% of all code written is much much worse than AI slop.
I have no problems with AI-written code and I've been a working programmer since the 90s. I don't even code review it as a matter of principle. I firmly believe that code itself has quickly reached an asymptomic value of $0, and if there are any bugs then just ask the AI to fix it.
You're replying to a prolific new-account spammer troll. Since he got called out for using only random digits in his usernames he started incorporating letters and symbols to make them harder to detect.
> And yes, there were Linux distros like Debian where people could get real computing done[0].
The author then kids in [0] that the most popular software in Debian was editors to edit X86Config but...
I fully agree that Windows was an horrible crashing piece of crap back then. Linux was a godsend to me (installed it in the early Slackware days).
Armed with Emacs and LaTeX, on Debian 1.1 then 1.2, I wrote a 440 pages book (published by an editor).
Linux was already rock stable solid, while Windows was a crashing PoS.
Linux was so solid that I'd also run it on my laptop (and back then all laptops were crappy). When I was late I'd let LaTeX convert the files to .dvi (IIRC) and the PostScript while driving to my editor. We'd then the PostScript file to the printer at my editor.
It was something else then Windows.
As for Windows, yes, I was using it too.
And the absolute best software I ever got back then was Ghost, way before Norton bought them (it then became Norton Ghost). That allowed me to take a full dump of the Windows partition and then restore it at will from that partition, when Windows would invariably become unusable.
When I discovered Linux, suddenly I had a stable system that didn't need to be re-installed every other day. There's a reason the world is powered by Linux and companies like Google weren't built on Windows.
And I also had a small consulting gig (for little SMEs) where I basically had a business installing brand new Windows systems for the clients and all their stuff (like Outlook) and then immediately imaging the entire disk.
Because the only guarantee was that Windows would be borken rather sooner than later.
TFA is right and Microsoft has always produce mediocre shit.
It's hard to say if the BSOD'ing Windows of yore was even shittier than the ad-infested, surveillance, behemoth Windows of today. Both are equally bad IMO.
Because the day Microsoft shall product a product that doesn't suck is the day they'll start producing vacuum cleaners.
This largely deals with Windows 9x, and seems to imply that agents improved the software, while all the improvements he mentions (what he considers to be improvements) happened way before LLMs.
(this was mean to be a reply to the comment about rose-tinted nostalgia for Windows XP)
Everything used to be horrible.
There were a few gems of good UI and functionality but they were rare and either got snuffed out by bigger companies like Microsoft or bought out and then forgotten.
Now, everything is more horrible than it should be.
It's like airplanes: Just barely 100 years ago, nobody could even dream that a common person could fly across the world to anywhere within hours.
Now we have planes and spaceships but they cram you in like cattle to squeeze into tiny inhumane chairs for hours..
The biggest companies in the world with hundreds of employees and billions of dollars still can't fix their software.
Google is still anal about dark mode if you're not signed in. Some other major apps don't even have dark mode even though it's been almost a decade since major operating systems supported it.
YouTube still hinders iOS's picture-in-picture feature.
Facebook still doesn't have iPad-native versions of their apps.
There's so much shit in apps with millions of users that hasn't been fixed for years.
And goobers act as if AI could possibly make it worse.
Not worse than humans have been doing on their own since forever.
I've been using AI to make private apps for my own personal use, and it's pretty amazing how quickly I can iterate to fix minor niggles and UI annoyances.. within minutes, while the app is running.
Meanwhile operating systems, YouTube, Facebook, Reddit, etc have such shit UX here and there for YEARS. You're telling me they can't fix it with all their employees that get paid hundreds of thousands of dollars?
> Not worse than humans have been doing on their own since forever
If it's not reviewed well (some people stopped even looking at the code) it can be immensely worse.
And most people end up producing much more code with LLMs, quickly reducing how much of it they review; a lot have become fine with turning the interface upside down often just because it's easy, even if the new interface is worse and a lot buggier.
> When was the last time you ..or anyone.. reviewed the assembly language or binary output of your compiler?
not even a week ago. But generally people prefer to burn millions on compute instead of seeing the output of the compiler and see how they can optimise their code
Airplanes are a crummy experience. Small seats, no legroom, no real food. It wasn't always like this.
I have a book from 1953. Among other things, it has airline timetables. You could fly from LA to Hong Kong (with several stops). It cost $1200. In 1953.
Now it's going to be a much worse experience. But it's something that regular people can afford at least once, if they want to.
Does "really great experience that I can't afford" really beat "crummy experience but at least I can afford it"?
Computers are more affordable than they were in the past (or they were, until this year). Software is more affordable than it was in the past - much of it is free. Does "I can do what I want to, but it's a really crummy experience" beat "the software is wonderful, but I can't afford all the pieces I want/need"?
If it's getting worse, one can logically deduce that it used to be better
If it used to be better, why are you saying it used to be much worse? You cannot have it both ways unless AI already fried your brain.
...and if we are actually heading the wrong direction, why does it matter that we haven't regressed fully quite yet. AI is pushing us towards regressing fully. It's only a few miserable humans ranting about wanting a future filled with hope
If you read the article, you'd know that he is mainly talking about the Win-XP and earlier era. There is a gap there of the 'golden years' of e.g. Win 7 and 10, before the LLMs but after Windows (Loboto)ME.
And computer software is not a linear track, so regression is not going to result in the same 'bads' that existed back then, it's resulting in new ones, some of which are better,and some which are worse. It's not an all-or-nothing state.
> If it used to be better, why are you saying it used to be much worse? You cannot have it both ways unless AI already fried your brain.
I mean, you obviously can, if the past isn't a straight line to where we are today -- it's an arc where at x-10 it was worse, x-0 it was better and x+10 it's worse again?
I worked in early AAA in the late 90s, and it's true that games were often quite rough around the edges. But they were also often biting off WAY more than they could chew, inventing genres and innovating like crazy, often in messy ways that didn't always work. But that meant players were often also routinely and genuinely surprised by the experiences they encountered in even big budget games.
He lists a bunch of quality of life and balance issues that were fixed in Diablo 3 compared to Diablo 2... but, well, Diablo 2 was obviously _important_ in ways that Diablo 3 wasn't. It's a much greater game.
And lurking in the background is the hard fact that often the progress with software (certainly game software) entailed turning to much better software engineering standards, using much better external libraries or game engines with much larger teams, and relying on much more process to capture and filter all those rough edges... and along the way, you've built a much, much larger team with a much larger burn rate, and so all those experiments and innovations become much more dangerous and need to be corralled and controlled and mostly stifled, and as the cost of all this to build skyrockets your entire game design _has_ to focus on your business model and your microtransaction story and your live services first and foremost, because you've boxed yourself into a corner where that cash flow issue is the central fact of your game / software design.
(I experienced this evolution first hand in the FPS space)
All of which is to say, I think there are multiple different axes at play here for evaluation, and it's probably fair to say that software _undefinably_ was much worse in the past along some of them... but not all of them. And there are probably deep tensions and tradeoffs between some of those axes.
I think this entirely discussion really is muddied, though, too, by the fact that hardware got radically better over this entire arc as well, and so many programming techniques in the past that made software more brittle or crash prone hinged on memory and computation optimizations techniques that really had nothing to do with the software culture of then or now. It was just a response to the realities of the hardware.
For someone who played D2 and D3 for thousands of hours, D4 typically comes off as really awful. The accessibility tradeoff means that the cheesy (and enjoyable) strategies you used to enjoy in former iterations are no longer feasible because the auto adapting numerical difficulty system is so aggressively casual. Every time you get a big piece of gear, it is watered down to pointlessness immediately. D3 and D2 do not have this problem, but their difficulty curves are more discrete and unforgiving in many areas.
Bet across 10 teams instead of one, that kind of thing.
Willing to bet a 30 million dollar budget game will play and look great with proper focus.
Even if only 1-2 take off, it’d be overall better wouldn’t it
There are some others that are similarly placed - Stardew Valley, arguably Minecraft (or GTNH heh).
I think the problem for the studios is they don't know HOW to do those 30 million dollar games, but they're really good at the 300 million dollar ones, and they're not selling to the users, they're selling to corporations (think Microsoft/Playstation/Target).
(It's also rare you have a game that is allowed to improve the way Minecraft, Factorio, or Stardew Valley have; go back and play builds or releases from around "when they went big" and you'll find they're horribly rough - I love Minecraft 1.7.10 but I simply cannot play without the QoL mods from GT:NH for long.)
His general outlook seems to be that the small teams of the past creates more rough edges and that the larger teams on modern AAA games creates a smoother experience but requires more concern for income because the cost is so much higher for the larger team.
I get that comparison but I think he's totally missed the advantages of the small team. The cheaper dev cost means less risk of financial ruin if the game fails which means innovations are less risky. Less developers means the vision of one person can shine through more which results in a more creative end-result, for better or worse.
The "too many cooks" in the kitchen is a real problem of modern software, especially games. Huge budgets mean games need huge audiences to be successful which means everyone needs to like it. The death of productivity software is, unsurprisingly, anything that stands in the way of productivity. The save bugs he mentions are real killers. But for games, as an art form, the turn from focusing on the vision of the artist to the desires of the audience makes for uninspiring work.
I'll take bugs all day long if it comes with a unique experience.
For example, quest tracking in modern games is phenomenal, and people used to add addons to do that - but there's really a way in which "figure it out yourself" and/or read the guidebook/talk to people was better. Same with pug tooling - no need to find a group anymore, the computer does that for you, but you also don't develop relationships with those around you.
Going to have to disagree on this one. Perhaps if you have an extremely well architected game that will organically guide a lost player in the right direction it can work, but I have many painful memories of just blindly exploring entire maps and clicking on every NPC because the obvious route of progression wasn't doing anything. Sometimes it would be an actual quest bug and I'd just be wasting my time.
Particularly in large open world games like GTA/Witcher 3/etc, quest tracking of some sort is mandatory.
Completely immersion breaking.
Whilst there are many epicureans, the vast majority of time played/food consumed is going to be pretty bland, and the audience both wants and expects that.
Thankfully there is room enough for both, and I think the tension between them is interesting.
Are you quite certain about that? https://archive.org/details/Lemonade_Stand_1979_Apple
Latency is one metric by which computing has gotten noticeably worse over the years.
Daily, I encounter multiple situations in which I take some action (click a button, type text in a text field, etc.) and the response is visibly delayed - from several hundred to several thousand milliseconds.
This used to happen only on websites, but lately is also happening on apps installed on my computer. The cause? My theory is that everything is now some sort of monstrosity of React or similar web app, running inside a browser process, and possibly even that local apps are sending data round-trip up to the mothership for tracking, surveillance, synchronization, etc.
And the UX is terrible - often while this is happening, stale data is showing, or there is no visual indication a process is underway.
Software is hard to use for me now.
And it gets worse, since equipment gets chained. If you add more than a few ms to the wet channel, it accumulates and can be very problematic if you ever feed the wet back into the dry signal.
Source: have shipped multiple digital pedals
I used to be able to whip through 3-4 keyboard shortcuts in a fraction of a second and the computer would keep up. This was on an 80 MHz machine, by the way. Now I have a supercomputer and I have to wait for a quarter-to-half-second zoom/pan/slide/whatever with nearly every single interaction. It's maddening.
GUI are useful, but I spent so much time trying to find the perfect ones while I could quickly draft a quick CLI script for my specific problems. These days, I focus on finding libraries and utilities that solves the core of my problem, then wire them up in a way that solves my workflow. After a while, you just find that most of your computing needs are solved.
Skype.
Windows File Manager.
It has been a thing for a long time in consumers software from the big guys. The people working on it don't care about UX or performance.
Now a lot of the small-company software we used to use has been replaced by slow bloated and buggy apps usually running on Electron (Slack et al) so we're seeing it everywhere as opposed to in a couple of bad apps.
I’m also thinking that there might be a universal solution to all animations: user-driven animation end. Like, the system could cut off the animation as soon as the user hits another key, making it faster and learning the right rate of animations over time. That would be great!
https://danluu.com/input-lag/
https://en.wikipedia.org/wiki/Wirth's_law
Most of the software I use is custom now but not in like a deep way. E.g. it turns out that browser engines are blazing fast. So what’s slow? The chrome around it, the extensions. These things I just rewrite.
It turns out that MacOS GUI primitives are also really fast. It’s just that most software poorly uses it. I rewrote text viewer applications, and a terminal emulator chrome that uses libghostty. I don’t claim originality or skill. I only claim annoyance.
Now that I’ve reached the point where the thing in the way is my OS which I have trouble modifying I suddenly understand why Omarchy is compelling to so many people. And I get why DHH is so excited about it.
You can have a bespoke system on a fast, reliable base. Why wouldn’t you do it? Why suffer?
You can do a lot at the high levels, but everything needs to be reworked from the hardware level up to match the latency of older systems.
PS/2 did not use polling, it was entirely event-driven. On keypress, the keyboard sent a serial message to the 8042 controller [1], which then raised the appropriate interrupt line on the CPU, which caused the keyboard ISR [2] to be executed. The serial clock was a bit flexible, but usually sat around 10-16 kHz [3], and so the 11-bit serial message took at most 1 ms to send.
It is USB that uses polling. The keyboard describes itself using endpoint descriptors, and after obtaining these, the host controller periodically polls it with an IN token, to which the keyboard responds with its state changes since the last poll [4]. The earliest USB keyboards preferred fairly slow polling rates, but modern keyboards can be polled every 1 ms [5]. If directly connected to a motherboard USB port, a modern USB keyboard will have pre-software input latency roughly on par with a PS/2 keyboard.
[1]: https://wiki.osdev.org/I8042_PS/2_Controller
[2]: https://wiki.osdev.org/Interrupt_Service_Routines
[3]: https://retrocomputing.stackexchange.com/q/15607/25565
[4]: https://threeboard.dev/documentation/threeboard/how_usb_keyb...
[5]: https://www.usb.org/sites/default/files/hid1_11.pdf pp. 68-69
never have i felt a computer react so quickly. CRTs have much less lag than LCDs.
You probably can't avoid the time it takes for the pixel to physically change (~1 frame) but you can avoid all intermediate framebuffers by careful timing synchronization. E.g. when scaling, don't buffer a frame at a time, just a line.
Point being, outside competitive games, I do not expect monitor hardware to be anywhere near the bottleneck for latency and response times.
Until you can demonstrate to me that you can build an async/await server that uses a single core without deadlocking, I am not so sure you should be trusted with any additional resources.
on the contrary, native app UIs should at minimum separate the UI thread from background work, if only to keep UI controls responsive.
The UI thread may spend most of its time asleep, but it has to be available to instantly respond to user input (or events/signals from the OS)
Maybe we're talking about different things, though.
Like software used to crash, were single-threaded and constantly frozen. How many times did you have to issue Ctrl+alt+del vs today? Even UIs were constantly out of sync with the underlying data, I would even go as far to claim that reactive frameworks like react cut down a big category of software bugs.
Now when something crashes I actually need it for work, or to bank, or to navigate, or hell sometimes the only menu at a restaurant is a QR code but my damn phone is failing to recognise it again.
When you introduce technology into every facet of life, it's suddenly death by a thousand cuts when things don't work, or are a slow buggy mess.
Websites are the obvious example here. Much slower speeds but pages loaded at acceptable paces. Now I'm on gigabit internet and webpages likely take longer to load. And we all know what it's loading in the background are not things that make the UX better.
I suppose sleep has never been great on Windows, but I don't know what it's doing these days.
People remember things to be more positive than they were. This is an established bias in human psychology
https://en.wikipedia.org/wiki/Rosy_retrospection
I kinda read your response to my post as “okay then, if we can’t ask that question, we have to spy” etc. which I think did not follow from my post - I misunderstood you.
2) Asking more people gives you an answer closer to the ‘truth’ (i.e. the true population mean; the mean answer if you asked ‘everyone’). It lowers sample error, not directional bias.
Stated preference is very often different from demonstrated preference.
They put windows 95 in front of users, asked them to perform tasks, and, at the end of the test, asked them to shut down the computer. Almost everyone clicked on the start menu first, so that's where they put the shut down button.
A lot of people dislike change and sure as shit hate relearning a skill they didn't enjoy or have aptitude in the first place. I know exactly what kind of UX my dad prefers and he HATES all modern design patterns. I think several of them are great for information density and despise everything twitter popularized. Entire generations have grown up on twitter and they think it's basically the only way to display information.
Point being when we're discussing as large a surface area as "software" I'm not really sure you're going to get much out of asking 100 people except what decade they were born in and what software/patterns they grew up on. Clearly some things can outcompete others, but inertia and network effects drive adoption, and can turn people from "ugh I hate this" to "ugh why would you do anything other than this".
Basically, I tried to buy a train ticket on sbb.ch (it was an eurostar crossing the border, so I couldn't do it through the app).
I selected the day and start looking at the available trains. Before continuing I logged in with swisspass to get my halb-tax discount applied. Once done the page reloaded, I got the updated prices, I selected the train at the time I wanted and I purchased the ticket. Only when I got the ticket delivered on my app screen I notice that it was for the current day and I couldn't reimburse it.
Basically, the page reload after the swisspass login changed the date to the current one and, of course, I didn't notice. It is now fixed, but it costed me 90 bucks and couldn't really do anything because technically is my fault for not noticing it was on the wrong day.
Further more I still remember software developers in the 2000s who just refused to do any kind of testing on produced software, because it is just a waste of time. It compiles? It ships!
Not many people are such cowboys today.
Now-day, it is the llm that write tests. Nobody look at it and verify if it is meaningful. If the test pass, ship it.
It still cowboys days
All it had to do was run Check Disk, but it kept going in a loop every 30 minutes checking their "AI" for solutions, finding none. There was no way to get out of it.
I am sorry, but even in the worst days of Windows, this would have been a huge deal. This was the last straw so I installed Mint to play games.
everybody only likes their own style, and has trouble dealing with other people’s style.
maybe that’s what you mean by the total net feel/experience decreasing. in my world, it’s still harmonious, but it’s possible queen barb hasn’t showed up here yet
A few months ago my dad and I roused out the old Windows 2000 computer we used from 2002-2010 and while it took about 6 minutes to boot up, once it booted up, the software was all astonishingly fast (no telemetry) and way, way more "commandable" than their modern equivalents. It was like a tool shop.
One is that software started being designed in a one-size-fits-all manner for a “uniconsumer” that vaguely represents every user the software will ever have. Personally I think that analytics-driven development is largely to blame here; through those you don’t see user groups, just numbers going in whatever the product manager deems to be positive and negative directions. We don’t design for specific users, but rather to produce desired metrics.
Second is that professional UI design got flooded with designers from other disciplines (e.g. print design) who only really understand the visual half of software design. The functional, interaction, and user research parts completely fell by the wayside as the job became more focused on coming up with designs that would do numbers on Dribbble and look pretty in a product page or presentation and is driven mostly by vibes now.
Not quite Scotty in Star Trek IV, but close.
No one here is winning in particular unless you make money pushing [profitable music].
can you elaborate?
If the complaint is vibe coding makes bad software, I largely believe it, but I absolutely believe that vibe arguing makes tissue paper arguments. “Everyone knows” and “it’s obvious” are flimsy things to rest arguments on.
I’m writing dramatically better software for all the reasons this post says obviously make worse software.
Testing has gotten much easier, and bug fixing has gotten much easier. I looked at a pre-AI project I did a couple of years ago: test to code LOC was 0.15:1. The projects I work on now are around 1.3:1. The old project had no accessibility considered at all, the new ones are nicely done aria and beyond. Old project is stuck on old libraries because upgrading is a major pain. New projects take new libraries (after cooldown) no matter the effort.
So I’m left thinking that perhaps some people, too lazy to use the new powers of new tools, churn out the same or worse quality code/essays.
But I am seeing a lot of very high quality software that simply wouldn’t have been possible before, and I believe the same could be done with essays by leveraging these tools to research and find real data beyond “it’s obvious”. But that does take a lot more work.
Depending on machine-generated tests that nobody reads isn't better than having poorer coverage. The only thing that is guaranteed is that that mass of code returns "true" with the current implementation and "false" if the implementation changes in some ways. Unless people actually read the LLM-generated code, it's impossible to know if it tests anything that actually matters or just tests the same thing in 5 different ways.
https://www.youtube.com/watch?v=MR4i3Ho9zZY&t=37s
The reason is clear - without scarcity of compute or memory, performance is no longer a feature. That works until all the laziness compounds into a crawling bloat.
This is regarding desktop software. With services, microservices is basically a performance anti-pattern that is used without any due diligence in most cases.
With most software being free, cost is optimized for the developers not users and we end up with Electron apps
I'm semi-sarcastic here, but this is actually possible now, while it was an often futile and very expensive roundtrip before AI resulting in two versions of your software that you have to simultaneously maintain.
Things get lost-in-translation, and Claude doesn't seek your input for decisions that matter.
Lines of code is a poor metric for measuring, both for application code and testing code
They should write a test and stash the fix they just wrote. In this state it should fail. Once they re-apply the patch, it should become green and this gave use enough information to deduce that the test does test something.
Personally, I haven't seen too much of that. What I've seen is software that _looks_ pretty, has a shiny interface, a well-designed animated website made with god knows what, but under the hood it's a bit of an alpha mess....
Goodhart's law etc.
But in general sure, it's not like we have good databases that count and classify bugs and track their numbers and severity and determine causes so we can compare the dynamic
About 50% of the test cases I've ever seen are pointless.
Tests fix how the software can be changed and when software-spec evolves lots of tests can become obsolete. Maybe with AI it is easier to change the tests (?) which is good.
But there is another purpose for tests, besides "testing". It is to document your modules in a way that shows you how to use them, and let's you easily verify is this still working, can I trust it.
In your case of course any existing utilities behavior/specs should be tested first, regression tests just on top, if they are not already covered.
A test is mostly useful only in the case that by failing it alerts you to a bug.
Yes it was vibe coded. The "a" variable was never used, and was tested to be 1 several times.
It was several hundreds lines of course so I didn't bother reviewing the rest.
It does not affect Debian, Fedora, or Qubes OS.
From the consumer POV you can make a great app that does the thing great, and then that's it. Pay once upfront. Just security updates and maybe light compatibility updates after.
Instead we get constant toying and adjusting, and even worse, get pigeon holed into a monthly subscription to bankroll the $200k salaries needed to pay the team that hides the menu button every 6 month to boost screen time.
This too is subjective.
No one designs for users any more. It's all gas no breaks on the path to enshitification. A lot of this is the motivation of the people building software.
Raise your hand if you ever saw a PM get promoted for removing a bunch of bad and/or unused features?
cite 1
Since it was much harder to make stuff, you really had to architect it well or otherwise it would simply fall apart. For example in assembler you need discipline in your calling conventions, layout and so on, otherwise it just corrupted, you needed to follow sensible naming conventions otherwise it degenerated into unreadable label spaghetti and so on.
Nowadays it's the other way around, the micro level is so much better due to libraries, code reuse, LLMs and better languages/tools, you can use highly sophisticated data structures and functions at your fingertips. In exchange, you can afford to skimp on architecture because computers are fast anyway, and the programming languages don't let you make a huge mess. (Most don't have unstructured goto/jumps, can't corrupt memory accidentally, etc.)
However, this has the cost of making larger programs a nightmare to maintain and systems suffering from a "death of thousand cuts" i.e. on the micro level all is well but when you look at the entire system it's a sprawling unreliable mess. This is where rewrites often happen ;)
Those downsides existed, but then that’s just how lots of stuff is or was.
Larger systems are not imo any worse to manage now, but the scale of what is possible and expected dramatically changes what we consider a large system these days.
I think this is like looking back at a few hits and being nostalgic for some decade of music forgetting all the terrible songs of the time. Or perhaps if the volume has increased seeing on YouTube all the school bands that you’d never have seen before because recording was expensive and distribution reserved for the very few.
Similar to how using lambda functions and some document DB is easy and fast, but it often times leads to shit architecture as you don't have to think about it anymore, bolt on whatever cloud service X and Y for features and you have a mess.
AI is similar to cloud in that way, it's so forgiving that it pushes you towards a shit architecture as it "doesn't matter anymore".
Funnily enough AI makes the cloud mess easier to manage. These opinions are based on my own experience and most importantly, vibes.
What popular consumer software today matches the incredible extensibility of Winamp?
Who is developing fun tools like Coverflow, which was popular enough that Apple incorporated it into iTunes.
You actually do see some of this today but it’s almost entirely limited to software tools, because software devs are willing to spend a little more effort on the tools they use because they know their users can just develop an alternative otherwise.
AI might change this, but well crafted software was genuinely disappearing for the past decade and a half.
Now it's all websites.. or horrible android apps. Open source is the only thing remaining.
The good thing is that with LLMs, it is more and more possible to add all sort of cool functionality to existing code. And soon we will be able to add functionality also to compiled programs [like adding line numbers to windows note pad as a "cracking" tutorial, that was so cool].
Just yesterday I added the functionality of "show all unread" to an open source C++ low resource Slack desktop app [the official one is so bad]. And also I added VIM bindings to a text editor.
The baseline has moved down, but it also encourages laziness. Those who break out of the "Claude, do the thing, no mistakes" rut will do great things.
That said, as a counter-point, there were also applications such as WriteNow which was ~100,000 lines of hand-coded assembly, which was quick and performant even on an 8MHz 68000 Mac Plus --- it flew on a 25MHz NeXT Cube (it was originally developed as a possible advanced MacWrite/replacement for it if it didn't ship, then was contracted by NeXT to make a bundled word-processor)
https://www.folklore.org/The_Grand_Unified_Model_The_Finder....
https://folklore.org/MacBasic.html
https://www.folklore.org/Joining_Apple_Computer.html https://www.folklore.org/Evolution_of_a_classic.html
(and it kind of kills me that there isn't a book on the history of HyperCard --- a quick search did turn up:
https://www.taskade.com/blog/hypercard-history
which seems promising (if a bit self-serving and possibly AI-generated.... will have to find time to read)
- Purchased or downloaded a software package.
- Installed it onto your local machine.
After that you were free to do what you liked with the software.
Now software generally:
- Runs on someone else's computer, or is at least locked behind a login.
- Is served to you through a web browser.
- May be revoked or changed without notice at any time.
For this reason, regardless of reliability or capability, software was generally better in the past.
https://helmlet.app/en/
I wanted to call it pervitin but then I learned about the ugly historical connotation.
Let's flip it: Do you have some examples of software needed that is not available as a regular install for MacOS? Not saying it doesn't exist, but you can almost always find high quality local software.
Snow Leopard on the macOS side of things, Windows 7 on the other, both offering marked improvements in stability and sandboxing over their predecessors. Shareware is booming, the first App Stores have only just launched, Facebook is still that place you share exam notes with your college classmates.
While I believe that the decline of the west started with the Reagan Revolution, that decline didn't show up in our consumer technology until about 2010. The best car motors, and the best version of Windows (Windows XP) were released in the mid-aughts.
Software is bad when it's buggy, slow, bloated, annoying, distracting, anti-user, anti-consumer, anti-ownership, and rent-seeking. I pine for the days where something as simple as "wtf can't it autosave" be a reason to call software horrible.
Software in general used to be much less stable. For example, browsers didn't always have tab isolation. A single bad site could, and frequently would, crash the whole browser.
For instance: an AI-assisted developer can probably make a pretty decent basic text editor, but let's say they need to make an entirely new type of app, then I think the new app will lack polish or finesse because no one has made that before. Or AI can help find bugs in mature, well-written code but what if someone needs to write a new kind of app? Then there's a lack of polish again...
Oh gosh, and how could I forget the software crisis [2], a term coined in 1968, naming a problem identified long before.
Bad software is not a new thing.
[1]: https://www.stilldrinking.org/programming-sucks
[2]: https://en.wikipedia.org/wiki/Software_crisis
- I've never heard or experienced NES cartridges rusting -- but I've had to blow on them, and I've had plenty of CDs scratched (typically when storing them without a case).
- Yes, Windows had significantly more blue screens; however, the cause of lost work was always failure to Ctrl+S (not a blue screen).
- Memory was certainly limited (and in DOS there mostly was no multi-tasking), but only fanatical players would run into the issue described. And you were aware that many games required a memory extender.
- Even now, games are massively hacked e.g. GTA V Online.
- My original PC had a TURBO button, but I never had to use it.
I remember these! I could not figure out why it never seemed to make the computer faster and actually made it slower. TURBO was even written in italics to imply speed.
I suppose for some short time it may have actually overclocked the CPU, until the default clock speed caught up. After that, the turbo button was a lie.
Edit: Maybe I have it backwards, it sounds like on some machines it might have been in the underclocked condition when it was off. I just remember disappointing results with the machine that I used.
* Turbo was default ON and was the regular marketed speed the cpu was designed to run on, for my (dad's:) PCs it was 12 and 16mhz I think
* Turning turbo off reduced speed significantly for software written with original cpu timing in mind (I think 8088 but that was just outside of my direct experience).
So perspective on turbo button is a little bit philosophic, is it half full or half empty:). But it did not give you any EXTRA boost, like over clocking OVER manufacturer design cpu speed.
Ahh the good old times :-)
There were some programs made for that speed, but not nearly as many as when the problem happened for the first time on the 286. Most developers have learned timing practices at that point, and the APIs have improved a lot.
Mandatory EULA must be banned. Any device must be usable and provide all features advertised without accepting an EULA.
I, for my part, as much as I dig a little 70s and 80s retro stuff, would never ever want to go back.
I will note that like any large enough company, it also employs a lot of cool people doing great work, and don't see this as a contradiction in any way
I don't think I've had to do that in 15-20 years or so. At some point, shit just started working. Simple as. DLL hell is a thing of the past.
90s software ran mostly offline. It was simpler and more deterministic. I think that's why it felt more reliable. Your UI couldn't depend on laggy server round-trips. Things either worked or they didn't.
Also, force stopping the app remembers the video you were watching, but deletes the queue of next videos you built up.
Maybe choice might come back when some talented kindergartener or junior high schooler who doesn’t know any better comes along and kickstarts the process all over again?
A user of alternative systems from the 1980s, early 90s…
If you read through old HIGs, they generally have actual concrete reasoning behind the choices they made. They're pretty interesting to read because back then they did scientific user studies to try to make computers more usable.
For example, Microsoft didn't make the UI gray because of some aesthetic preference. They chose gray because black-on-gray text is easy to read, and because it makes it immediately obvious what's UI vs. what's content (vs. if they made the background white or something). They made all the buttons three-dimensional because it makes it immediately obvious that something is clickable. Getting rid of stuff like this makes the UI prettier, but it also gets rid of hints for how to use the software.
How do they know it's good design? Did they think long and hard about where people would click to shut down? Maybe, but the more direct reason is they had user testing labs, and at the end of the test they asked users to shut down the computer, and almost all of them clicked on Start.
And some others. IP? No, we are a NetWare IPX network!!
It’s hard to determine what was aesthetically good from a different time because tastes change.
But there’s nothing wrong with small buttons when your only input tool is a pixel accurate mouse. Arguably what’s worse is too large a button.
But what’s inarguably worse are things like window corners where the click zone extends far beyond the actual window, and parts of the window are not click zones.
Hence it was also extremely important to put the important stuff above the bottom of the first visible page.
As for inconsistent - what!? Every app looked approximately the same, and behaved in a predictable manner.
[0] https://en.wikipedia.org/wiki/Wirth%27s_law
- Windows 1.0 through ME era: Legitimately an unstable OS due to dangerous memory model/lack of memory isolation.
- Windows NT through XP: Before KPP was added, software was monkey-patching the kernel, and it was causing instability (particularly multiple trying to over-patch each other). For example during that era it wasn't UNCOMMON for antivirus to do so as a matter of course.
- Windows Vista Specific: They made significant changes to the driver model of several popular device types, and manufacturers weren't ready. So a lot of driver-related failures.
But since then, it has mostly be smooth sailing. If you see a BSOD, you can trace it down, and more often than not the source will be underlying hardware failure which is why BSOD exists and isn't a software bug or problem.
Turns out it was my sound card, or at least it's drivers. It was some super cheap Crystal-based one. It would have some glitch during the permissions swap of the UAC environment, and when it went to play that ding it would break the system and require a hard power off. If I muted the computer before the UAC, it was fine.
Pulled the sound card and it ran fine.
That is a strictly worse system than displaying BSOD information right away, which lets you diagnose it immediately, it's a downgrade, which is what this entire thread is about.
I've seen more on MacOs/OSX in the same time frame.
Antivirus on my work Windows laptop has caused countless BSODs. VPN clients are often junk.
I had a KVM that could occasionally trigger one.
Windows itself seems to be pretty BSOD free. It is almost always something installed after or hardware.
There's got to be a subreddit for that I'm sure
Sure they might be using older unpatched Windows but it only reinforces its reputation of being crap and perpetuates the meme.
independent blogs can still exist! Not everything must be a subreddit!
Quite often you'll see non-windows displays like that crashed too.
The code I wrote was ugly yes, but vscode back when I wrote it was nowhere near that miserable.
The other day google docs started freezing, It got stuck on the creating sheet state.
Youtube is making my fans spin recently just because I am hovering over the play button.
God forbid you use a lesser known SaaS tool. I started a trial on a platform and it kept asking me to start trails because I suppose the modal system was just trash.
The list is endless.
Things just don't work as intended and I know hn gets very offended when you're critical of AI but I couldn't care less honestly because I have my own data. Vibe code slop is slop no matter how good you are with your "orchestration". Oversight is a side effect of vibes and no ambition.
There were games released in a pre-alpha state (Big Rigs: Over the Road Racing), games that were basically released in a normal alpha state (Superman 64, Action52, etc) and there were games which literally didn't work because of major programming issues (SQIJ! had a player character which couldn't move due to the game only looking for lower case inputs while leaving the caps lock on).
And that's only the most extreme examples. Plenty of games had broken features and mechanics, or were outright impossible to complete due to poor level design and a lack of proper testing. Fan games, mods, ROM hacks and indie game scenes from the earlier days were just as notorious for works that were barely functional.
Generally games are at least now functional nowadays, with even the worst tending not to outright crash to a black screen or leave you with a player character that's completely unable to move. In many ways, the baseline level of competence arguably seems to be getting higher, with the march of AI meaning the worst is probably better than it might have been previously been.
Outside of games, it's worth noting how deeply insecure and flawed many older websites and programs were. There was a time where storing passwords in plain text was more of a norm, where input validation and sanitisation was often forgotten about, and where sites getting hacked was just as common an occurrence as today. Many Perl devs probably recoil in horror after hearing the term "Matt's Script Archive".
Are some things worse? Sure, performance seems to have become increasingly ignored in recent years, with web page sizes getting incredibly bloated and latency going through the roof. In some places there's more bad software overall, since the ability to vibe code it means non-programmers are building software more than ever. And some big companies that used to be respectable have let standards slip a lot (see Epic Games, Microsoft, etc).
Sturgeon's Law/Revelation held back then, and still holds today: 90% of everything is crap.
If anything, software 'may' be getting worse due to non-programmers (vibe coders) releasing things they have no business making in the first place.
So now, it is worse than horrible.
Every time I open my phone, Google has a new "busy/loading" icon. Why?!
Today's software isn't even software. It's just a bunch of poorly made extraction machines backed by utter delusion that "it works" when a lot of it most certainly doesn't (or if it does, at best, it works as an efficient extraction machine and torture device with no real utility).
It seriously feels like we've been huffing gas for the last 15 years.
I'm truly horrified all that data is online somewhere synced from external sources in 1 dump.
On the end he said to me: you don't seem impressed...
He didn't knew a thing he was talking about technically. Barely even the db used ( postgres).
He mentioned sha256 for passwords, but doesn't know rainbow tables exist. If I would mention it to him to use a salt, he would probably break every login.
He has no dev and no test environment. Doesn't know about pr's, but he was proud he says he uses git and he "made" it.
It's under "NDA" and his step brother is checking it. Lol
Of course hardware also got better but software also got a let better at working around the hardwares quirks.
Client side hacks? Crypto is the bottleneck for all of security. Doing TLS on a 66MHz chip:
I have no problems with AI-written code and I've been a working programmer since the 90s. I don't even code review it as a matter of principle. I firmly believe that code itself has quickly reached an asymptomic value of $0, and if there are any bugs then just ask the AI to fix it.
The author then kids in [0] that the most popular software in Debian was editors to edit X86Config but...
I fully agree that Windows was an horrible crashing piece of crap back then. Linux was a godsend to me (installed it in the early Slackware days).
Armed with Emacs and LaTeX, on Debian 1.1 then 1.2, I wrote a 440 pages book (published by an editor).
Linux was already rock stable solid, while Windows was a crashing PoS.
Linux was so solid that I'd also run it on my laptop (and back then all laptops were crappy). When I was late I'd let LaTeX convert the files to .dvi (IIRC) and the PostScript while driving to my editor. We'd then the PostScript file to the printer at my editor.
It was something else then Windows.
As for Windows, yes, I was using it too.
And the absolute best software I ever got back then was Ghost, way before Norton bought them (it then became Norton Ghost). That allowed me to take a full dump of the Windows partition and then restore it at will from that partition, when Windows would invariably become unusable.
When I discovered Linux, suddenly I had a stable system that didn't need to be re-installed every other day. There's a reason the world is powered by Linux and companies like Google weren't built on Windows.
And I also had a small consulting gig (for little SMEs) where I basically had a business installing brand new Windows systems for the clients and all their stuff (like Outlook) and then immediately imaging the entire disk.
Because the only guarantee was that Windows would be borken rather sooner than later.
TFA is right and Microsoft has always produce mediocre shit.
It's hard to say if the BSOD'ing Windows of yore was even shittier than the ad-infested, surveillance, behemoth Windows of today. Both are equally bad IMO.
Because the day Microsoft shall product a product that doesn't suck is the day they'll start producing vacuum cleaners.
When you separate the OS from the UI Windows is fast and stable, and with things like powershell it is remotely manageable.
It's the UI and application level where most of the problems crop up.
Everything used to be horrible.
There were a few gems of good UI and functionality but they were rare and either got snuffed out by bigger companies like Microsoft or bought out and then forgotten.
Now, everything is more horrible than it should be.
It's like airplanes: Just barely 100 years ago, nobody could even dream that a common person could fly across the world to anywhere within hours.
Now we have planes and spaceships but they cram you in like cattle to squeeze into tiny inhumane chairs for hours..
The biggest companies in the world with hundreds of employees and billions of dollars still can't fix their software.
Google is still anal about dark mode if you're not signed in. Some other major apps don't even have dark mode even though it's been almost a decade since major operating systems supported it.
YouTube still hinders iOS's picture-in-picture feature.
Facebook still doesn't have iPad-native versions of their apps.
There's so much shit in apps with millions of users that hasn't been fixed for years.
And goobers act as if AI could possibly make it worse.
Which it does
> Which it does
Not worse than humans have been doing on their own since forever.
I've been using AI to make private apps for my own personal use, and it's pretty amazing how quickly I can iterate to fix minor niggles and UI annoyances.. within minutes, while the app is running.
Meanwhile operating systems, YouTube, Facebook, Reddit, etc have such shit UX here and there for YEARS. You're telling me they can't fix it with all their employees that get paid hundreds of thousands of dollars?
?
> Not worse than humans have been doing on their own since forever
If it's not reviewed well (some people stopped even looking at the code) it can be immensely worse.
And most people end up producing much more code with LLMs, quickly reducing how much of it they review; a lot have become fine with turning the interface upside down often just because it's easy, even if the new interface is worse and a lot buggier.
When was the last time you ..or anyone.. reviewed the assembly language or binary output of your compiler?
...
What if the CODE DOESN'T MATTER anymore?
No really, wait:
What if all that matters is the result?
First, you ask the AI to make what looks correct.
Then you ask it to make it work correctly.
Then you ask it (or another adversarial AI) to do a security review pass.
Then a performance benchmark.
Then a few more iterations of whatever.
If all pass, does any human really NEED to look at the code?
not even a week ago. But generally people prefer to burn millions on compute instead of seeing the output of the compiler and see how they can optimise their code
I have a book from 1953. Among other things, it has airline timetables. You could fly from LA to Hong Kong (with several stops). It cost $1200. In 1953.
Now it's going to be a much worse experience. But it's something that regular people can afford at least once, if they want to.
Does "really great experience that I can't afford" really beat "crummy experience but at least I can afford it"?
Computers are more affordable than they were in the past (or they were, until this year). Software is more affordable than it was in the past - much of it is free. Does "I can do what I want to, but it's a really crummy experience" beat "the software is wonderful, but I can't afford all the pieces I want/need"?
If it's getting worse, one can logically deduce that it used to be better
If it used to be better, why are you saying it used to be much worse? You cannot have it both ways unless AI already fried your brain.
...and if we are actually heading the wrong direction, why does it matter that we haven't regressed fully quite yet. AI is pushing us towards regressing fully. It's only a few miserable humans ranting about wanting a future filled with hope
And computer software is not a linear track, so regression is not going to result in the same 'bads' that existed back then, it's resulting in new ones, some of which are better,and some which are worse. It's not an all-or-nothing state.
I mean, you obviously can, if the past isn't a straight line to where we are today -- it's an arc where at x-10 it was worse, x-0 it was better and x+10 it's worse again?