Those are rookie numbers. With a little Kubernetes, we can get them way up.
So much of the incentive structure in software companies is to ship new features. Maintaining existing ones or fixing bugs is a career dead end for software engineers and managers. No wonder so much stuff is broken and slow.
Call me cynical, but from a dollars point of view this seems to be what customers want.
Dude on HN was describing the other day how they’re moving to use an AI to generate a list of cars with specific features in their inventory and how this was a great part of the AI future.
But as we see frequently even on the most sophisticated AIs, they get shit wrong… a lot.
So this company decided to replace an actually working, guaranteed to produce proper results filtering system with a guaranteed to not produce proper results an unknown amount of the time, and the feeling was that this was good business direction.
People don't want buzzwords, people want promotions, bonuses, and recognition. It turns out that producing working software is not the optimal way to obtain those things at a lot of companies.
And how do you get said promotions, bonuses and recognition? By introducing change. And what change is easiest? One that relies on established ground of buzzwords.
The helicopter view says that I need to implement my change and move on before the shit hits the fan. The next person to take over will blame everything on "the previous guy", quite rightly, but I won't care as I'll have taken my promotion and be to busy blaming everything at the new company on the previous guy.
This is the real “safety” problem with AI. Since it’s so good at generating convincingly wrong answers, eventually we are going to build it into all sorts of mission critical systems and and everything from finance to healthcare will start to accumulate sophisticated, non deterministic failures over time. Like a trojan horse or a perhaps a civilization-level virus.
Or, more mundanely, automated customer support systems that just cannot handle lots of edge cases. And they'll have shut off all the "escalate to a human" paths since most of the mainstream paths work ok-ish.
It will be interesting to see. People are already involved in business-critical processes, and they have a far-from-100% success rate. You can see this with self-driving cars; 0.00001% of the time, they decide to swerve into oncoming traffic for no reason. But they can't get drunk! So whether or not that's a win is something that only time can tell. (People will be outraged, because no person would ever do what the AI did, but what matters are the numbers in aggregate. One could also argue; why should I have to put up with this when I never drink and drive? It's a good point and involves philosophical discussions about free will and all that.)
I guarantee people will be mad when an AI chatbot denies their insurance or customer service claim. But I have a friend who works in customer service and it feels like half her job is correcting the mistakes other customer service agents made. If the first line support was AI, would it change much, other than not paying people to make a bunch of mistakes?
Again, it's going to be painful while we try it out and get the data. It feels like it's going to be worse, and individual anecdotes will make each fuckup seem even worse than it is. But it seems inevitable that we're going to get the data. The only way to get VC writing software right now seems to be by tying your company to AI. That means a lot of experiments are about to leak out into the world. We'll learn a lot.
> People will be outraged, because no person would ever do what the AI did, but _what matters are the numbers in aggregate._
That is an opinion, not objective fact.
If Grandma June accidentally hits the accelerator, jumps the curb and kills a kindergartener, we can throw her in prison. She is held accountable for her actions.
If Grandma June is sitting in her "self-driving" car and it spontaneously accelerates, jumps the curb and kills a kindergartener, what can we do? Who is held accountable?
Something something "fix the problem, not the blame", but accountability is part of fixing a problem. Improving numbers in the aggregate is good, but it is not (and should not be) the sole matter in discussion.
This is really not the dilemma it is often portrayed as. You can extend this problem to any instance where a man-made inanimate object kills someone, which we have centuries of precedent for. If a bridge collapses and crushes a schoolbus full of children it's not like we throw our hands up in confusion - there is a very developed legal process that will determine the whos and whats of accountability and punishment.
It isn't a new problem, it's something that every court handles on a daily basis. Rebar or autoregression, the core legal elements are the same.
That is a strange example, because usually we don’t put people in prison for accidents unless there is specific type of gross negligence (e.g., drunk driving) or malicious disregard for life and safety.
> Anderson decided to plead guilty to vehicular homicide because she did not want the family of Karla Campos to endure a trial.
Maybe the woman knew that it would be revealed that she was drunk or had been told that she didn’t have the capability any more to drive safely, but she did it anyway. Without knowing all the facts, pleading guilty for an accident seems like a bizarre choice.
We can try to provide decent transportation infrastructure with feasible alternatives to driving so that Grandma June doesn't have to operate a 2 ton death machine to live her life, but maybe that's getting offtopic.
That's the great part about AI, because computers don't make mistakes, you can launder whatever biases you want through an objective and rational computer.
We already have this today when anti-theft alarms go off at stores as you exit with your paid purchase. You're presumed guilty because someone didn't disable the tag since the robot can't be wrong.
This is such an excellent way of concisely expressing a major fallacy I see whenever I talk about AI/modeling/etc. (I.e. “it isn’t racist it’s just numbers” and other nonsensical takes). I’m borrowing this language for the future.
That's a hopefully fixable organization problem. I think the closest we should let AI get to judicial decisions is suggested ranges. There still needs to be a person a decision traces back to, who's not just passing through what the computer says.
Ha. Human problems never get fixed, just moved around. There's nothing new to help get the racism or of the justice system - a core piece of the problem is that there are only disincentives for mercy and no checks whatsoever on individual biases. We still have a racist system in the US sixty years after the civil rights movement, and I don't see anything changing that anytime soon.
Tech problems sometimes get fixed, and occasionally either eliminate a class of human problems or create new ones. It's the only thing that changes... Rejecting tech wholesale means embracing the status quo.
There should absolutely be a human where the buck stops. But... "fixing an organisation" involves calling people racist. Then screwing their careers. That should carry a heavy emotional burden. It should involve anger and pushback.
"Some weights in an algorithm are wrong" seems a much less fraught problem.
Cherrypicked raw death counts are a lobbyist measuring scheme, not social science.
For example, if self-driving cars end up being prone to hitting children darting out on to city streets in new and unpredictable ways, then you have created impediments to the growth and development of children that did not previously exist. Would this be balanced by enhanced safety in other situations? Maybe.
These are complex topics like whether and how long schools should have stayed closed during COVID. Balancing the death and disability effects largely falling on adults vs. the educational interests of children.
For one person, at one point in time, sure, even though it'd be a quite complex one. But with an AI used by a thousand companies to replace one team member each, they're replacing a thousand of different "reward functions" with just one across all of them. A huge advantage of humanity is that we have different people, from different cultural and social backgrounds, all with social and personal norms and values that vary over time for each and every person, and telling an AI "imitate a pirate" or "answer without any biases" is not going to replace that.
That's true but humans are, or at least should be, accountable. When the AIs start making/contributing to impactful decision it will be hard to determine who to consider accountable for them (if something bad happens as a result).
What many people don't seem to want to hear is that most "ML" problems are simple ML problems. LLMs are a neat advancement and a great tool in a variety of applications but for most applications they introduce a great deal of uncertainty and often at significant cost.
They're a good complement to great design and infrastructure but you're fooling yourself if you think they're a replacement.
I'm quite surprised how we still don't have fixed quality data formats that anyone can easily transform into every possible thing. Accountants should be analyzing records not maintaining them?
I'm pretty sure this doesn't generalize that well. I would say that people who don't use every day the product they are buying prefer buzzwords, but it's less true for people who actually use it.
The working list probably requires paying someone to keep it up to date. So the company is saving money by not needing that person with something customers may not notice is a degradation, at least not enough to switch companies.
Fucking hell, I've just blown another day because I'm dealing with over engineered crap.
We are on AWS, and a Postgres database that is primarily in one region, and read only in a second? That should be Aurora, and 15 lines of CloudFormation/CDK/whatever.
But that's too easy and reliable, who would need an SRE and an architect then? Instead we have multiple RDS instances, and a regularly failing PG Logical installation which requires an engineer constantly checking in on it because it silently fails and you only find out when storage starts burning out fast.
There is no feedback loop to let leadership know that they are spending hundreds of thousands over the odds for an unreliable system, and architects who seem to fail to admit someone made a misjudged call a couple of years ago.
I don't know what the solution is, but currently it's just some shitty old boys club.
Yes, they also picked Kubernetes but decided to install their own instance on AWS. Why the hell are we in a managed eco system and trying to build it in the worst way possible? Everything crashes on a regular basis.
>Maintaining existing ones or fixing bugs is a career dead end for software engineers and managers
Strong disagree. This may be the case at certain "tech" companies, but I grew my career into CTO through maintaining existing systems and fixing bugs (and through doing the things no one else wanted to do). Amongst my fellow members of the particular CTO club I'm in, I'd say about 1/4 to 1/3rd followed a similar path.
There is a related way you can limit your career though, by becoming an expert on a non-critical system and limiting your focus solely to it. Many engineers take that path because it feels safe and offers job security, but it will limit upward mobility options.
> So much of the incentive structure in software companies is to ship new features. Maintaining existing ones or fixing bugs is a career dead end
Highly dependent on where you work and what you consider a "dead end". You can't possibly be talking about becoming unemployable in the industry nor even a pay cut. The situation for senior devs is the opposite, actually. Maintenance is the long tail of every project. If you're not doing that, you're not really working in software.
There is something like a paradox of automation at play, too. Both business and programmers are aligned on not wanting drudgery, but this means that a) we undervalue first-order work, and b) our automation reach often exceeds our grasp (k8s being an excellent example). Perhaps my thinking is colored by my recent read of Patrick O'Brian's excellent "Master and Commander" series of historical novels, about early 18th century English sailing ships, but the lack of automation is part of the romance - just to get from "here" to "there" required enormous effort. And who knows? Maybe if we take that approach we can press people into the software service by force, just like in the good old days!
> about early 18th century English sailing ships, but the lack of automation is part of the romance
The highly hierarchical and structured command structure of a ship means that autonomous and intelligent human beings each make autonomous and intelligent decisions on the best course of action in a way that doesn't require constant and immediate upper layer attention all the time.
The more limited amount of human beings required to upkeep a ship those days are mainly because of manpower shortage and cost reasons, not because the removed humans were "worse" at doing such operations.
Those automation flows are in my opinion the same thing, they're replacing things because of manpower shortages or high costs of the previous thing, not because they're better.
I agree. I have to really fight people when I try to write robust software. "Why are you writing a proper parser when a hacky regex that I thought about for 2 seconds worked the one time I tested it? You're wasting time."
They don't understand that I'm not wasting time, I'm just choosing to spend a little bit of time earlier, because I don't like spending a lot of time later when debugging why everything broke.
The problem with a careful but non-methodical approach is that it requires the programmer to correctly determine the stability value of their design. We often overestimate the importance of architecture on stability, or worse, architect something that is harder to maintain than the naive solution.
With buggy ship-it-now software you have a known bounded risk - bugs will occur in some cases but the software will ship and the bugs can be fixed because it’s simple.
With prematurely architected software the risk is unbounded - the project may get bogged down indefinitely in its own complexity without shipping.
The inverse extreme can also be a problem, of course A project that is maintained for a long time on the naive implementation will also become unmaintainable. However, this will be due to _known_ architecture problems encountered during maintenance. These problems can be addressed in a relatively bounded amount of time. They are also quantifiable and thus explainable to management.
> With buggy ship-it-now software you have a known bounded risk
How would be the cost of bugs be known and bounded? A race condition in the code might not bother anyone ever in practice, or it might break down the whole system right as the most important investor decides to dogfood the product. In one case the bug can cause zero harm, and in the other might ruin the whole company.
How much was the "known and bounded risk" of shipping a buggy transactional model to the British Post Office? [1] It is "just" a buggy database, yet it cost many lives and sent many people to prison wrongfully.
> the bugs can be fixed because it’s simple.
Maybe? Have you tried in practice? Sometimes a buggy implementation forces you into a pathway where you need to spend inordinate amount of effort to get to a non-buggy solution. (This is the idea behind the term "technical debt".) Very often this effort is more than what you would need to do to just do it correctly the first time.
>The problem with a careful but non-methodical approach is that it requires the programmer to correctly determine the stability value of their design. We often overestimate the importance of architecture on stability, or worse, architect something that is harder to maintain than the naive solution
There is EXACT SAME PROBLEM with choosing to cut engineering tho. And the cost of getting it wrong is far higher.
If you catch a problem early, well you just wasted the amount of time you tried to save.
If QA catches the problem before you get it to the client, that's 2-3x the cost right there. 5-10x when it gets caught on production. 20 to near unbound when it causes some long standing issue that's noticed too late
>With buggy ship-it-now software you have a known bounded risk - bugs will occur in some cases but the software will ship and the bugs can be fixed because it’s simple.
>With prematurely architected software the risk is unbounded - the project may get bogged down indefinitely in its own complexity without shipping.
Not every software is a startup. If you have a requirements, first verify that they make sense in wider scope, then implement carefully while caring about potential edge cases. Not even handling them just making sure that they error out instead of propagate potentially invalid data further. That doesn't cost you even 2x the productivity.
> The inverse extreme can also be a problem, of course A project that is maintained for a long time on the naive implementation will also become unmaintainable. However, this will be due to _known_ architecture problems encountered during maintenance. These problems can be addressed in a relatively bounded amount of time. They are also quantifiable and thus explainable to management.
In vast majority of cases those end up as pieces of spaghetti legacy code that are worked around by the rest of the org, not fixed. "Fixing it later" is more and more and more expensive the longer it is in production and the more code grows around it.
There are more choices than "ship-it-quickly and fix bugs later" and "over-engineer something complicated that ships later".
There are _lots_ of good practices which reduce the (potential) bug count without making things more complicated -- indeed, good practices serve to reduce complexity in design and architecture. Selecting the right data structures and algorithms, server-side validation, making proper use of your language's type system, choosing the correct type of database, writing some unit/integration/system tests, use caching judiciously, I could go on.
That was to make the point very clear. Twh270 is correct. There's a whole spectrum of robustness. It's a constant fight to push towards the robust end no matter where you are on the spectrum.
The other big one I constantly fight have to fight for is using type annotations in Python. It's a total no brainer and definitely not an extreme end of the spectrum. I'm not advocating formal software verification.
The specific case of building a proper parser doesn't take that much longer if you know what you're doing, and it also enables lots of wonderful quality of life features for end users through additional opportunities for automation and contextualization that can be surfaced.
Though, given the constant incentive to never learn how to write a proper parser does mean that practically nobody knows how to do it, and so it will always look & feel like an unbounded science project, and thus rarely done.
Infinitely recursive MVP'ing is a race to the bottom.
Particularly regarding parsing: Here's an excerpt from an interview with Anders Hjelsberg I heard recently. He's the creator of the Turbo Pascal compiler and later on of the creators of C#.
Sriram: I think there is some, we're going to talk later about things like GitHub co-pilot, we're dealing with different kinds of code reuse, but I do think there's a little bit of romance in the, for example, I idol you and folks like John Carmack. John Carmack noodling away and trying to make sure every instruction and memory access is aligned on some cash line. The amazing thing is, even today, if you look at AI at the heart of it, you have matrix multiplication and doing things with floating point numbers. Some of these things really tend to matter, which on the theme of optimization, tell us a story of Turbo Pascal 2 and you discovering hash tables because it's legendary.
Anders: [laughs] It is a funny story. You have to remember here that I am self-taught in the art of writing compilers. Now, I have since discovered and read a lot of the literature, but at the time, I was just coding away and doing it the best way I knew how. When you create a compiler, one of the things you have to create is simple tables, or they're not necessarily tables. They could be linked list, they could be whatever, but you have to look up names. When you're trying to compile a code that tries to assign one to X, well, you have to figure out where is X? What memory address have I associated with X? You have to look it up the declaration of X.
In Turbo Pascal 1.0, the first version of Turbo Pascal, all of the variable declarations were just kept on a linked list because that much I knew, but of course, searching linked lists is not particularly efficient when they get large. For really large functions, that would just take an awfully long time. Then, well, maybe you could try first go by first letter, and then have 26 linked lists or whatever, and that could help a little bit. Then I remember reading the literature about these things called hash tables actually in this book by Niklaus Wirth, Algorithms +, what is it? Yes, Algorithms + Data Structures = Programs.
A great book. He explains hash tables and I go, "Oh my God, that's amazing. I got to go try this." I went and implemented it and boom, the compiler went twice as fast. There's Turbo Pascal version 2.0.
[laughter]
Aarthi: Awesome.
Anders: There's a good reason to sell upgrades.
```
Do you really need a proper parser to sell 1.0? A literal compiler project did not fail due to the lack of a "proper" parser (though it can be argued that the lookup table is after the parsing stage; obviously there was not a strong distinction in the Turbo Pascal implementation between tokenization and compilation).
Nowadays, I'm maximizing my salary, and the way to do that is please management by shipping features. There's no incentive to add tests or refactor code, and I'm not going to win this battle. That being said, over the years I've learned to appreciate the point for shipping fast. Sometimes it's the right thing to do, it's always a tradeoff.
Add on top of that the perception that users need "wow" factor for everything. We can't ever have a full page refresh, even for something as simple as a blog or a storefront, despite most users being oblivious to when those take place. Everything's got to be flashy and overly designed. If it doesn't look like The Google designed it, then no one will use it!!! /s
> Call me cynical, but from a dollars point of view this seems to be what customers want.
I'm right there with you, except I don't give "customers" that much credit.
Most people left to their own devices (ie, not brainwashed by marketing) will just stick with "good enough." But it's less fun (and less profitable) to fix and maintain old code, so companies induce "demand" by marketing. And if you're a company who decides to do the adult thing and not play that game, you'll be creamed by the ones that do.
Just today we had a call with devs that wanted to run k8s (managed by us) on client's stuff (when we generally got few VMs and cranky security guys any time we needed some traffic passed thru).
To run app that's like 3 containers with services, a queue, and a database. Took a second to explain that overhead, added management, and sheer paperwork to run it on client's infrastructure is absolutely not worth saving them like... a day or two making a bit more complex deploy script.
Haha yeah. Kubernetes on Azure for bonus points. Not only do you waste more time, you also pay more and are recommended to get an expensive certificate.
> Those are rookie numbers. With a little Kubernetes, we can get them way up.
I used to be a frontend developer, but now my problems include `Error: mkdir /bitnami/postgresql/data: permission denied`.
All I wanted was to have a Persistent Volume Claim on my Postgres container that is part of a new dev environment I'm setting up. The other one worked, and still works fine.
I do agree when we see broken outcomes (e.g. us healthcare, us public transit, etc) it’s good to go back to incentives to understand why things haven’t gotten better.
When perf time comes around, everybody knows the deal. Shipping a new feature is a much easier sell than a bug fix and looking like a hero for fixing a bug instead of preventing one is easier anyways.
Maybe that’s a good business idea: solely focus on bug fixes for clients so their “rockstars” can architect their way into more bugs that need fixing. Since the business’s employees I are only focused on bugs, and not features, they’re not leaving tech debt in their wake.
it's my strategy since I become bored with tech. I don't have passion or urge to create new useless software. There are many young or naive or plainly stupid which do. But I still have skills and insight to cover their asses when they corner themselves and are too busy with next fad and there are bugs to be fixed in yesterday's crapware... and I'm only 40..
I'm not sure it's exactly "what customers want" so much as it is the sweet-spot or intersection of the two curves: "what customers want" with "how much cost and risk owners and managers are willing to put in up front"
I've spent the last two days working with (not-Kubernetes) virtualisation software that has serious, workflow-breaking bugs from... uploading and removing regular files, of a format it expects. In some random-aaS frontend I could expect that, but this is systems stuff.
> Call me cynical, but from a dollars point of view this seems to be what customers want.
Since when have the wants of customers been the driving factor behind business decisions? There is a downstream effect, sure, as long as there is competition, but businesses are controlled by petty little weirdos with short attention spans like Elon Musk.
I know this will get some downvotes, but I'm the IT person in my close family. Used to get calls all the time to fix slow laptops, CD drives not working, keyboard not working, system not booting, popups everywhere, apps crashing, you name it. Each would take insane amounts of time to troubleshoot. And then sometimes their machines just needed to be upgraded because they were running the new office, and the new skype and the new chrome, antivirus, etc, and the 3yo system could barely keep up, but they just wanted a quick fix, not spend $$$. I even installed teamviewer and some support tools to save the untold amounts of time.
Then I bought macs for everyone, installed iWork, 1Password and taught them how to use them. haven't heard a peep. One of the best purchases of my life.
> they just wanted a quick fix, not spend $$$.
> Then I bought macs for everyone
I bet you would've gotten similar results if you spent the same amount of money on Windows computers.
For example, my dad is using an 8 year old Windows computer that he got second hand. It works absolutely fine because it wasn't underspecced at the time it was produced.
People underestimate the difference investing in good hardware makes. They see $300 computers and expect them to work just as well as a $1200 top of the line machine, and then get frustrated at how slow their Celeron machine gets after getting their expectations crushed. Getting mad at a "broken" computer is easier than admitting you messed up and made a terrible investment.
This is incorrect. I had the same issue supporting my family members on good hardware with windows. It was just too common that software updates broke things, random adware would get installed when they clicked on things, etc. This was windows vista/7 era and when I made them switch to macOS the problems just went away. I think apple seems to be better about making it so non power users can’t accidentally mess things up so much.
It doesn’t help that the windows install for a printer includes some huge print center bloatware if you accept defaults and for Mac it didn’t prompt for anything like that (same printer plugged in with usb).
I can’t even imagine trying to support them on the new windows with the advertisements and changing stuff in the start menu…
Vista/7 was definitely an era filled with questionable choices from both Microsoft and computer manufacturers. Vista was plainly unfinished when it came out (and driver vendors put in 0 effort to update their drivers for a completely revamped driver architecture). 7 was basically what Vista should've been and it was very solid on hardware designed to run it (on hardware released for Vista or even XP, you were still stuck with the terrible drivers from the Vista era).
The instability and bloat have changed significantly in the 17 years since Vista came out. The Windows kernel itself is rock solid, most drivers run in user mode so BSODs are extremely rare.
There is bloatware, for Windows and for macOS, for all the terrible hardware vendors out there. I remember plugging in my Logitech mouse into a Mac and finding out I need a separate app to configure it properly because various OS mouse settings only apply to Apple hardware for some reason. Printers Just Work these days, unless you buy one of those awful models that requires an app to set up, and then it doesn't matter what desktop OS you use.
Microsoft did add ridiculous Microsoft ads and a scummy account requirement to Windows 10 and 11. However, these aren't visible for most users, because most users are already logged in to a Microsoft account. When people talk about "ads" in Windows, they don't mean banner ads, they mean "click here to connect to Microsoft Onedrive with your MS account", not too different from various iCloud related menus I've seen.
The way they mess with Edge, that is plain awful. I'm astonished with how much effort Microsoft is putting into shoving Edge down everyone's throats. Edge is the biggest reason not to use Windows in existence.
I'm not sure what you mean by "changing stuff in the start menu" so I can't comment on that. However, I'd recommend trying out a Windows VM some time (you can download them from the MS website for free!), because I get the feeling your experiences with Windows are quite outdated.
>I had the same issue supporting my family members on good hardware with windows. It was just too common that software updates broke things, random adware would get installed when they clicked on things, etc.
Those weren't the issues that needed money. The issue that needed money was "sometimes their machines just needed to be upgraded because they were running the new office, and the new skype and the new chrome, antivirus, etc, and the 3yo system could barely keep up".
The question in my opinion is not really about specs — no matter how much you spend on your hardware, you can't, pardon my French, take the shitbox out of Windows. Device manager and registry still being a thing, reboots to install software, ads in the start menu, etc are a good example of how Windows is not a system for human users. It's amazing how much backwards compatibility they've offered over the decades, yes, but it's also got them holding a lot of smelly baggage.
How often do you have to touch the device manager?
Registry is fine.
It's not a very big fraction of software that needs a reboot. It's much more common to have an OS update need one, and that's pretty universal across desktop OSes.
The ads are bad. Though interestingly those are relatively new, not baggage.
Device manager is usually step 2 or 3 when something is going wrong. When you're fixing someone else's computer, you'll probably spend a lot of time there. Windows also tends to break in mysterious ways after applying OS updates which need to reboot. The observable symptoms are things like network timeouts, performance drops, and random application crashes, but the people you're providing tech support to usually don't have the knowledge to recognize when those are justified problems or windows itself being silly.
You install autocad, reboot. You install something that uses the camera, reboot, you install an antivirus, reboot, you uninstall any of these things, reboot. Worse is the restore points that never seem to actually restore anything. Often they just make it work because now you're in a weird state where something that was supposed to be there isn't there anymore.
I've installed many things that use the camera and none have needed reboots. And if you're changing antivirus more often than one per 5 years then that's not a normal use case (also defender is fine).
You don't get it. It doesn't matter how many times you have to do X, Y, or Z in Windows. The first time any one of them is needed the entire "non tech savvy person using their computer to get things done" program comes to a complete halt.
Of course Device Manager and the registry are still a thing. They're part of the operating system. You never need to interact with them unless you try to install some atrocious software or hardware onto your computer, but they're there.
I personally find that Linux asks me to reboot more often than Windows does these days. You do need to reboot once or twice a month to apply some kernel updates, but that's really about all you need to do.
The shortcuts to install apps like Tiktok are annoying for sure, but they're really not as intrusive as techies like to pretend they are. I have plenty of gripes with Windows (Edge, MS accounts, that kind of thing) but calling it "not a system for human users" is ridiculous.
> People underestimate the difference investing in good hardware makes.
Yes, but ...
> Getting mad at a "broken" computer is easier than admitting you messed up and made a terrible investment.
Mid take. Windows still sucks on $1200 hardware, just faster. You still get the same crappy UI that shuffles around every couple of updates just because, dangerous legacy stuff like ActiveX, SMB1, and IE lurking just beneath the surface, ads in the Start Menu, random updates, forced reboots, etc.
I agree that Windows sucks. I also think it sucks less than macOS, but Microsoft is working hard to change that. Linux sucks less in some ways but sucks a lot more in many others.
None of the operating systems seem to want to support you as the user anymore, they're all part of a ploy to buy more hardware, rent more software, and move everything to some kind of cloud solution you'll never be able to get rid of.
However, ActiveX, SMB1, and IE11 haven't been an issue since Windows 11, and you need to go out of your way to find them in Windows 10. IE has been dead for over a year. Even before that, Microsoft received widespread criticism when they hid IE11 by default, because users didn't want to change away from IE for some godforsaken reason.
The Windows kernel is a software engineering marvel and Windows has become incredibly stable on modern hardware. The shell on top of it has become a victim of terrible enshittification that started in Windows 8, or maybe 10.
I would not. I never bought laptops under $1000. I know what to buy and I'd almost always customize specs for the person that needed it (spend more on ram, graphics, cpu, cooling for my architect sibling). Still, 3 year expiration. Starts with fragmentation (you end up having to defrag more and more frequently), every app you install makes the system less stable (messes up the registry, add/removes some random and critical .DLL), uninstalling doesn't necessarily fix. There's this accelerated entropy on windows PCs that I had just had enough of.
Don't get me started on the update reboots when you really need to get work done. On the long startup times even when you clear out the startup items, the never knowing if a reboot will actually be that or a BSOD. If you're helping someone remotely and they say "It's asking me to reboot", you know you'll have to drive to them to help it back up.
Your experiences sound like they were based on Windows 7. Defragmentation hasn't been an issue in at least a decade unless you bought real cheap hardware.
The DLL issues bring back memories of Windows XP and Vista, even Windows 7 had SFC and other proactive system protection mechanisms.
Windows 10 came out with a task manager that shows you exactly what's slowing down startup. I don't know what hardware you bought, but BSODs have become so rare that I don't even remember what Windows 11's BSOD screen looks like, and I'm pretty sure Windows 10's changed since I last saw it.
From what you're describing, I doubt your experiences were with modern releases of Windows.
I moved off of windows a while ago, last windows I seriously worked on was 7. When the metro stuff started coming around I was on my way out. I never really used 10 (did that exist, was it skipped?) or 11, only set it up for others, very quickly so I didn't have to spend any more time on it, and the dark patterns regarding online accounts as well as the start menu ads just reassured me I'd made the right decision.
Sorry, I'm a software engineer, I never installed crapware, ever, and I moved off of windows (long before I moved my family). The amount of time spent troubleshooting issues was always non negligible. Today, on Mac I wan wake up, open the lid and start coding. With windows, I used to be afraid of even closing the lid the night before. The amount of peace of mind I get today, and the time I save? Macs could cost 2x more and I still would be saving money. Funny thing is, before I moved to macs, I used to not like them at al, mainly because the entire UI/UX was different. But then I got used to it, and huge productivity boosts like spotlight (don't get me started on windows search + all the indexing while searching), silent almost never activating fans, like confidently leaving the house for 5 hours without having to carry a charger (try that with a powerful windows laptop), being able to drop the thing without having to worry about buying a new one, and a 1000 other little things that really add up. My point is, the reason there are apple fanboys is not because they're a great company, or they pretend to want to save the planet, or because of "one last thing" or whatever, it's because of all these small things that add up to just letting you do your work and forget about the machine. I'm an engineer and I don't want to think about my machine. Imagine what my mother feels.
Are you suggesting I buy $5k windows desktops when I can get $1000 macs that I know will be easier to use long term. Also, I used to buy top of the line Sony VAIOs, that was my go to brand. They were robust, many were had sturdy aluminum bodies (not unibody but close), and the base models were often very performant (specs, cooling, etc). Usually they all started at roughly $800, I used to buy the $1000 ones, so moving to macs did not start suddenly costing more, same average price, better quality of life.
I have an Alienware Ryzen 9 machine. I'm not at all impressed. I only have it for games. The Intel 4790k machine that I built around 2015 with Windows 10 is more responsive. I'm not convinced that any hardware runs Windows 11 well.
My HP laptop came with little more than a driver update utility and an icon with HP support in the task bar. That was all the way back when stuff came out with Windows 8.1.
My Lenovo laptop also came with nothing but the necessities to keep my laptop up to date. They added some "click to install" shortcuts for games and crap to the start menu, but they don't come with computers anymore.
The trick to buying a clean machine is to buy hardware intended for professionals rather than consumers. I don't think I've ever seen a machine running Windows 11 Pro that came with a McAfee trial since Windows 10 came out.
I moved off of windows long before surfaces, not going back. Funny story, a few months ago we needed to setup an office windows 11 laptop (as part of a software project).
It used to be you could just boot the machine, cleanup bloatware, install some antivirus (after figuring out which one has not currently become adware), install basic applications, a copy of office, configure an email client or outlook (which is a nightmare to setup itself, with its weird mail folders that you can create but then can't delete without obscure windows voodoo because they become default windows mail folders or something...what the actual f!).
Anyway, so I give this machine to a junior dev to setup, and some time later he comes to me saying he can't even get to the desktop screen because an online windows account is needed. I think, surely this can't be true because a month earlier we had done the same thing on the same windows version, on the same laptop model. So I tried and guess what, I could not. I googled, and there were all these tricks you could try to make the "create offline account" option appear, but it never did, so I had to create a throwaway windows account, with a real email alias, go through all the "confirm your email" steps, in order to access a computer that was just purchased. I even tried removing all network access and restarting, no luck. See related rant by me here: https://news.ycombinator.com/item?id=34983448
If I could not set it up with an offline account, imagine a non techie, buys a laptop, goes somewhere with no network, tries to get work done and finds out it's impossible because of some dark pattern war that Microsoft is waging on it's customers.
So no, problem is not just hardware, or how well this one machine runs windows X, Y, or Z. It is the fact that a person can't just walk into a store, buy a windows PC that is being sold (at whatever price point) and trust that it will enable them to do work, consistently, on the short, medium and long term with little to no additional IT effort.
Windows needs a Microsoft account, and that sucks. I completely agree with you on that. The ridiculous workarounds you need to go through to set up Windows can only be described as what you get when you fire your testers for a telemetry collection algorithm. On the other hand, I've never seen someone complain about Android/iOS/macOS requiring an online account, so I can see why Microsoft is so blind to criticism in this regard.
That said, the bloatware on professional laptops is absolutely minimal. They do this nasty trick where they add Candy Crush to your start menu, but it's not even installed until you click on it. If you buy Windows Pro (the one you probably want anyway) you won't see this crap.
As for the antivirus and Outlook: don't treat modern Windows like Windows XP. Windows Defender and a fully usable Outlook suite have been part of Windows for well over a decade now. You can install Outlook if you really want to, but it's really not necessary. I'll even go as far as say that Outlook Express and its evolutions were also working just fine all the way back in the XP days.
All the machines I've seen ship with Windows 11 have come with Office preinstalled (with a trial, because Microsoft is a wallet leech) so I'm surprised you even needed to install a copy. I consider it bloatware myself because of the subscription model attached to it.
I'm with you, but, there is no OSX pro. You buy a mac, you're done. My mother does not need a professional laptop, she needs a laptop. Why should people on paid non-professional laptops be actively sabotaged? Is this what professional should mean? What is the difference between a macbook, a macbook pro and a mac pro. You open them, everything is the same, except the pro models have more to offer in a way that is obvious to pros, and non pros (meaning non techies) wouldn't normally notice, it's not the non pro models that have to work against you to make you regret not forking out more.
The crapware is subsidising the cosy of the laptop. If people were willing to put in the extra cash for a trash free OS, we would only have clear, "pro" versions of Windows.
No. There'd be a new more expensive tier of windows laptops, and the previous costlier one would be the new cheap. Because growth and quarterly earnings.
100% agree on Macs. Personally I have never had to play IT support when my parents had a Mac. Now with Windows, it’s basically whack-a-mole. Some days the camera stops working and some days WhatsApp doesn’t startup. And they are not power users by any means. So they don’t muck around with their setup either.
We've had to do tech support for family using Macs, but I'll admit it's been less than my Windows-using family. I have 1 family member in mind in particular that I think would have been better off with a Mac. And I probably would have been better off, too, because I could tell them I don't know much about them and send them to the store with a clear conscience. ;)
Can’t recommend this enough. I recently “invested” in some second hand iMacs for my partner and kids. And by invested I mean I spend ~€100 on two 2011 iMacs each. No top of the line specs, just the basic model i5s with SSD. They run great for 10 year old machines. Have a decent enough screen resolution. Still an up to date enough OS though not the latest. When I use them occasionally I don’t notice a difference in normal browsing or usage. Migration from the small MacBook (also 2011) was a breeze with assistant. They all run time machine to my Linux NAS so no worries there. I’m considering doing this for my parent as well but it’s hard to get them away from their old & trusted Office apps.
Same here. About 10 years ago I told everyone I did IT support for that I would no longer work on Windows. 23 people ended up buying Mac and converting their entire lives to Apple's ecosystem. I get called maybe once every 6 months with a question about some slow performing app or what they should upgrade too. Best decision I ever made.
This was also me. It's 100% true. Works even better when you can just set them up with an iPad and a keyboard case! Everyone is much happier.
Windows without Active Directory and Group Policy management is a straight up nightmare. Even with good hardware the default Windows config, especially the Home editions, is just such garbage compared to macOS.
I also bought MacBooks to my close family. To my amazement, two of them installed Windows on it through Parallels app. It works slow but at least they can use the programs they want.
Gotta agree. My wife is not tech savvy, and most of my family isn't either. The amount of tech support I do has dropped since everyone went to the Apple platform. About the only thing I have to do is to tell everyone to hold off on major OS upgrades. macOS sure isn't a panacea. But wait about 2-3 months after a new major OS release version and it is a pretty smooth experience.
This comment and all child comments reek of a logical fallacy.
If your family had stayed on Windows, would you have gotten more requests today than with the current setup? It's disingenuous to compare Windows of many years ago (on probably some crappy underspecced and bloated laptop) vs a modern OS (on expensive hardware).
Data point of one: I also used to be the IT person in my family. Still is. But I never get calls anymore. Things generally just work. And most of them run Windows.
Actually, I've done more support for people using MacOS. Each upgrade inevitably break something. Only way to have a hands-off Mac experience is to tell everyone to never upgrade their OS..
MacBooks and Linux on any reasonable device have both proven to be solid choices for me when it comes to supporting family members. Windows and Chromebooks both have sucked hard for various reasons. Chromebooks go obsolete. Linux is forever.
Finally, a chance to say what I really think about computers!
I feel that the majority of time working with computers is not actually computing numbers (addition, subtraction, multiplication) but LOGISTICS.
Logging into systems, Moving data around in memory and between servers, into registers for a function call, to and from a REST API, installing packages, finding dependencies, chaining together library functions.
Your thinking reminds me of the work of a friend of mine. He's an AWS consultant and builds thing like AWS thinks you should. Some of the things he comes up with, chaining services together, with a sprinkle of lambda functions, it's Rube Goldberg machines all the way down.
A user logs in to a javascript app, hosted in an S3 bucket, authentication is handled by Cognito, the user gets a upload form, once their files is uploaded to S3, a lambda triggers an ECS container to spin up, some processing, output is sent to SQS where a service hosted on EKS picks up the processed data .... AND SO ON.
On another context, you have some processed data on the backend, and an infinitely customizable software system on the frontend... How do you keep them both in sync?
And yeah, it is by converting your data into a programing language; parsing it again; resolving incompatibilities; turning it into the presentation language; letting the user interact with the presentation representation; converting it back into the programing language; sending it back into the backend... But then you don't want a round trip on every single interaction, so you convert your backend code into the frontend language, so it deals directly with the presentation code... and it goes on.
Oh, on the backend side you have an application and a data layer, both using different languages and data representation; so you do all that dance again there... Oh, and now we want several independent layers between those too, so be prepared to do all of that again and again.
At some point we decided on the wrong abstractions for our mainstream architectures.
Exactly the term I had in mind: Rube Goldberg. And it gets so much worse than the examples you've given. Trying to shoehorn all the leaky abstractions together across the dozens or hundreds of pieces of technology I use every day from different vendors and open-source projects, with each interaction having hundreds of arcane failure modes, is absolutely soul-sucking. I'm impressed by the people who still do it, regardless of how much they earn for doing so.
100% this. I always dabbled as a dev since becoming fascinated with coding and computing as a kid in the 90s.
Went into a career in audio engineering in my 20s and switched to development about 4 years ago.
People ask how I found the switch and the truth is that it was very simple. The main principle of audio engineering is ‘signal’ flow, replace the word ‘signal’ with ‘data’ and you’re like 90% of the way there.
Follow the data, all we are doing is moving it around and manipulating it here and there. No different to a raw stem from the DI of a guitar passing through a big old analogue console.
> I feel that the majority of time working with computers is not actually computing numbers (addition, subtraction, multiplication) but LOGISTICS.
I think this was figured out in the 50's, when IBM started making mainframes for businesses - made for data processing and management rather than crunching numbers which was the focus of machines made at universities.
Also, in norwegian and I guess other european languages. We call them, directly translated, "data machines" rather than computers.
In Dutch the word is "computer" also, but English is the bastard child between Dutch and French while Dutch is already a bit of a bastard child from German.
I was confident that at least the germans would back me here, after all they got words like taschenrechner. But according to my dictionary they call it computer. Danish seems like 30% english nowadays, so I can't count on them. At least swedes call it "dator" which I guess is in the right spirit.
Rich Hickey actually has spoken about this on numerous occasions! So much of what we really do in programming is move data around, why not have data as first-class citizen in your programming?
I am working on an idea for programming that the primitive is literally moving things around in a grid. In a spreadsheet the formula is hidden behind a cell. And in most programming languages we write instructions and the state is implied - you don't see the state unless the program writes it out. In this design you see the state and all objects at all times. The idea is that the instruction is generated from the movement.
Try clicking "100" and move it into the JSON below.
At the moment I've implemented movement and JSON -> table. You can move things between fields in the JSON. You can rewind states of the top grid by clicking the instruction.
The plan is to put operations and API calls on the screen so you can move things into them, and their results shall go back into the grid.
I'd say the opposite - OOP is the paradigm that does the most to hide your data, hiding it within these encapsulated actors where you can't access it directly or even see what and where you have.
I would have thought that encapsulation hides the way data is processed, stored, and moved around. But the data itself is always available in my experience.
Suppose the data is in a private field of an object deep in the object graph. How do you get it? You can't, by design - that object's public interface may expose some aspects of the data, but you're not meant to access the actual raw data.
Well, in Clojure at least, data is a generic thing you structure your program around, and is not hidden inside a class coupled to behavior. This is safely enabled by immutable values as a default. The standard library and ecosystem consists of generic functions operating on that immutable data. This is very liberating as you do not run into a combinatorial explosion of incompatible types that need to be marshaled to work together.
Generally you have 3 kinds of things in Clojure: associations (maps), sets (uniqueness), and order (lists/vectors).
Not just computers. Life is mostly just moving things around. From the highest levels like shipping and waste management down to the lowest levels like data processing. Once you have what you need in the right place, in most cases, the job is nearly done.
The corollary is that if you get smarter about how you move things around, you can make serious efficiency improvements.
+1. So often we conceptualize in terms of tasks, phases, states, processes. And then ultimately you discover it is all about data flow, an rarely about the algorithm.
Getting up to the point of doing the thing usually takes more time than the thing itself. that’s true in a lot of endeavors. Are you in a physical factory assembling product? The production and assembly time end to end is often a fraction of the time and effort spent putting everything in place to run the assembly.
i work in a courthouse, they had to use all versions of IE and firefox due to unmaintained application locks
the lack of subtle ergonomics make people do more work on computer than on paper
if you remember the old electronic calculator versus abacus, it's the same logic, or lack thereof, by the time you've changed context (session expired ? how to change app, how to change tab, gathered data from the client, tried filling it 7 times in various forms, your 1960 self is already finished filling in the form with a smile)
Is that why whenever I see some roadwork or construction getting done in a big city, all the workers are just standing around, chatting? They're waiting for the construction materials to arrive?
As performance of a system is being optimized, the relative size of un-optimizable parts goes up.
Sure, your banking app crashes sometimes and annoys you. How about you delete it and instead take a bus to a postal office to pay your bills this way - no annoying apps involved, it will just take 1h instead of 1m.
> Sure, your banking app crashes sometimes and annoys you. How about you delete it and instead take a bus to a postal office to pay your bills this way - no annoying apps involved, it will just take 1h instead of 1m.
Huh? Have ever actually paid a bill without using a computer? It doesn't work like you describe at all (unless you live in a really rural area or you're deliberately trying to make it difficult for yourself). Here's how it works:
1. Get a bill in the mail.
2. Open it, and write a check for the amount.
3. Put the check in the envelope, stick a stamp on that, and then put it all in your home's mailbox.
4. The mailman comes and picks it up, and it goes where it needs to go.
I live in the suburbs of a large city in the US and I have to physically go to the post office whenever I mail something. My neighborhood has a weird matrix of mailboxes with no way to indicate to the postman that he needs to take something. So I have to drive to a post office every time I want to send mail. We even tried leaving a note in the box and that did not work. It doesn't take an hour but probably 20 minutes round trip.
In some countries bills need to be paid at any bank or at the post office, you can't mail a check. The bill basically has a bar code that that the bank scans, and you pay in cash. (Or you can scan it at your bank's ATM and deduct it from your account).
Terrible software, especially terrible business software, is such a terrible waste of time. This is why Excel still reigns supreme; it takes months of production bug reports for flashy web dashboards to gain the same reliability and functionality of that VBA hell file someone in accounting dropped on the network share five years ago.
On the other hand, there's a terrible lack of training in many areas. "Oh, I'm not good at computers" is still used as some kind of endearing excuse. I don't expect people to upgrade their own RAM, but looking through the browser history or finding a file in any file explorer should be requisite skills for any office worker.
I get it. "I'm not good at computers" worked for the first twenty years they had to use computers, so there was no incentive to learn. But at some point we have to stop allowing this lazy excuse and start adjusting our requirements. Most people use computers in some fashion, I doubt you'd allow an electrician to get away "oh sorry, I'm not good at using screwdrivers".
It's spreading to younger generations as well. The smartphone generation is growing up with an equally terrible understanding of computers as the older workers, because of the appification of everything and the absolute lackluster computer skills of many (already underpaid) educators.
It used to be that most of the tech support calls I received were about cheap computers bogged down with adware. SSDs fixed most of that. Now, the tech support calls are all things I was taught in high school.
Washing machines and fridges freed up a ton of time for people. Maybe computers as well, then again maybe they just entertain.
My personal anecdata, I was recently investigating some page load timeouts for my client and this lead me down a rabbit hole which in the end meant moving a WHERE clause from outer query to an inner one and sped up the query 100k times.
Based on slow query log stats it eliminated 25h of human waiting per day.
This is honestly a good question to ask at times. I remember back when I was trying to get into weight lifting. I was searching for apps and tools that would help me track milestones and progress, setting up routines and all that. I remember going through some options, then making a spreadsheet, and refining the spreadsheet and just hating the whole process.
So then I opened a notebook and just wrote down my lifts for the day. At the top I wrote my 1 rep maximums for the big 4 lifts and had a page for my program that denoted the rep#/set#/1RM% and done.
What did it lack? Maybe some categorizing or search tools. Maybe some graphing to visualize progress over large spans of time? Well I don't need any of that. What matters is what I'm doing now.
There's probably several examples of things like that. I can't count the number of times I've tried using organizers for things like groceries or maintenance that have me spending more time fiddling with settings and formats than just doing the task. At my job I create a new text file daily to note what I worked on and shit that came up. I date it and save it to a directory and just use grep to recall info when I need to look back over large spans. No awkward TODO lists or planner apps. No updates or UI changes. No subscription fees or "Share" buttons.
Sometimes, asking how much time you save with a computer/app/whatever is the right thing.
I have to say ChatGPT has turned a lot of micro-obstacles into problems that only last a couple of seconds. Stuff like "what's the command to turn a folder of pngs into a video" I can Just Do in seconds with a zsh alias set up to query it from the terminal.
Then there's stuff like "I don't understand this error message, give me pointers?" and it can be quite useful in that regard too. I still validate but I guess long term I can stay in flow way more consistently.
The biggest objection I hear to chatgpt as an assistant is that "you can't know if it gives you a truthful statement." That's true but it's also nowhere near a show-stopper. Just requires critical thinking in each scenario. People who don't use it have a tendency towards black-and-white thinking about its utility. I find that people who are skeptical of it initially who observe my workflow tend to 'get' what it's really useful for, after a short while.
I’d be very upset if my dishwasher broke every 5th time I used it. And in that scenario I’d much rather wash the dishes by hand.
Probably the same for my clothes vs. the washer.
If it takes 10 minutes to boot my computer, log into 10 SSOs with two factor, and install 57 updates, at what point do I start keeping graph paper and a desktop calculator to track my sales instead of using excel?
I see this too. We now have dedicated programmers to maintain a program that was supposed to save time.
Well that program(and a few others) made it so instead of having 120 (real) engineers, we have 7 engineers. The cost saving is real, it allows greater complexity, and the maintainer can add upgrades and work on other things as the program matures.
As dumb as it always comes across, telling people to reboot their systems after nearly 25 years in IT support is something we're still doing to this day. And we're still doing it because it works more often than not when someone is calling about performance problems. Why? It's not unusual to see uptime numbers in the 300s or longer for some people.
We all have that story. One was someone I work with telling my his laptop was interminably slow and unusable and wondering what he could do to fix it. First question: "How often do you restart it?" Him: "What do you mean?" Me: "You know, turn it off and back on, or just select restart." Him: "Oh, I've never done that ?" Me: "Hm. How long have you had it?" Him: "Four years."
Four years without a reboot. The next week when I saw him and asked him if restarting it helped: "Yes! It's running like new again!"
My analogy for this is simple: Do you clean your house? Yes. Do you do it intentionally? Like, you know, set out to do it? Or does it just 'happen' passively without you doing anything at all? (Paying someone else to do it not withstanding.) Most people actively, intentionally clean. But you know what they don't do? Actively, intentionally get it dirty. Getting dirty is a passive action of living; of just existing and functioning. It's the same for your computer. Using it causes clutter that a reboot will clean up. But you have to do the reboot intentionally.
> It's not unusual to see uptime numbers in the 300s or longer for some people.
Do you mean 300 days? Which consumer OS allows you to skip any reboot for that long?
In practice IIRC macOS and Windows basically force you to do it regularly, with users frequently complaining about this (although they got better at saving and restoring state I think?). Some Linux distributions also ask you to reboot into an updated kernel once it's available, for security reasons.
So I'm a bit surprised that a user would end up with such a long uptime without doing it on purpose.
More recently with Windows 10? Far fewer. But just back with Windows 7 it was easy to let your computer run close to forever. I would host game servers on my personal computer and it would run for weeks to months without a reboot. I would usually only reboot because I would install new software that required one.
> The problems most often experienced by the participants included: "the system was slow," "the system froze temporarily," "the system crashed," "it is difficult to find things." The participants had backgrounds such as student, accountant, consultant, but several of them actually worked in the IT industry.
My Nest Thermostat was an example where I lost time.
Sure I didn't have to walk down the stairs to change the temperature a few times, but as the Thermostat started to bug out, I spent hours trying to fix it. I lost more time than I ever saved.
The Nest never made sense to me. An offline $20 digital thermostat can program a weekly schedule and requires 1 minute of maintenance per year (swap the backup battery). Never had to deal with a crash, fear of data exfiltration, or that some underlying SAAS would shutdown.
> Sure I didn't have to walk down the stairs to change the temperature a few times, but as the Thermostat started to bug out, I spent hours trying to fix it. I lost more time than I ever saved.
I've got an Ecobee, and I've never had a problem. The main reason was (unlike the Nest, at least at the time) it's fully functional in offline mode (schedules and everything). I've since learned that HVAC people typically dislike Nests, though I don't remember the reasons (and they are fine with Ecobees).
I'm not sure exactly what your problem with your Nest was, but they just didn't seem very reliable to me when I looked at them. Too much silicon valley in them: not prioritizing robustness, weird features that sound cool but just lead to an inscrutable device with a mind of its own, an over-reliance on the internet, etc.
After much research, my conclusion is that my HVAC system didn't have one of the wires connected, Common, C. This was not a problem until some update that caused the rest of the wires to be insufficient to recharge completely.
Over the next year or so, the battery was killed.
Who knows though. It was fine for the first few years, aside from when my power company overrode my settings on hot days and my kid had a life threatening fever.
> After much research, my conclusion is that my HVAC system didn't have one of the wires connected, Common, C. This was not a problem until some update that caused the rest of the wires to be insufficient to recharge completely.
My Ecobee doesn't have a battery at all, so that's something I had to deal with immediately upon installation. Luckily, I had an unused wire going to my own thermostat that I could repurpose. I believe it also came with a kit that would allow it to use a nonstandard signaling protocol so it could get needed power even if I didn't have an extra wire.
I'm kind of puzzled why a Nest would even have a battery. Just a kludge to allow unreliable installation in places that don't have the proper wiring?
One of the things I hate about modern software/product engineering is the over-reliance on updates and the mindset that aggressively obsoleting "old" versions. It creates a huge amount of unreliability and wasted time. IMHO, updates break things as much as they fix them.
> Who knows though. It was fine for the first few years, aside from when my power company overrode my settings on hot days and my kid had a life threatening fever.
Could they do that through the Nest, or did they have a separate cutout on the AC?
My home has a remote operated cutout, which I'd assumed wad inactive until I randomly read by bill very carefully and realized it was active even though I never signed up for it (apparently the previous homeowner had it active, and that carried forward to my account).
I spent a couple weeks on the "learning" setting before I just disabled that. It was almost never right, and I knew I could set it to exactly the right temperatures on a known schedule. We almost never have to touch that dial.
I'm having the same problem with android phone's brightness as well. I've stubbornly left it auto-adjusting, and about once a week I have to drag it from almost the bottom to almost the top again. I don't know why it thinks that's an appropriate setting because it never has been.
When I started as an IT manager at a small events firm in 1997, I had 40 hours of work every week, just keeping things alive. By the end in 2013, things just ran smoothly, and I waited for something to break.
Windows got reliable between Windows 97 and Windows 7, servers got reliable, networks got reliable... everything stopped breaking.
There's no way 20% of peoples time is wasted on borked computers, that's a whole day every work week.
My MBP is currently running at ~800 MHz; it will be until about October or November, when I feel the coming chill of winter upon my skin. macOS thermally throttles the chip down, even if the chip is not actually that hot: the CPU is only ~65℃. But the surface temp on the keyboard is 109℉. All I can guess is that even though there's plenty of thermal headroom at the chip, you'd roast the user's hands if you attempted to use it. The fans cannot move the heat away from the CPU and out the back sufficiently fast, and too much ends up bleeding out the keyboard.
But now you have a 2.4GHz i9 limited to 800 MHz. During a meeting, it can't really do anything else, VC eats the available compute.
This is pathetic. Perhaps IT is different where you are, but my IT is out to lunch. IT is "hand new hire a new MBP" and … that's it? Unless a literal hole ended up in it¹, they're not going to replace it, ever.
Spolsky wrote that one of the "rules" for SWE firms was "Do you use the best tools money can buy?" — he wrote that that was table stakes, and if you're not doing it, you're nuts. He wrote that in 2000, nearly twenty-three years ago.
But tech cos love the MBP; IT teams only want to support one model of machine, regardless of how much of a lie that is (there are multiple models of a MBP deployed over time in a company) or how ill-suited a MBP is for the task at hand.
Absolutely I'm losing at least 20% if not more waiting multiple seconds for keyboard input to show up. Being unable to look things up during meetings, meaning mistakes get made, begetting more meetings.
¹Hmm. HMM.
Then there's the keyboard. The display cable connection. It goes on and on…
Macbooks had absolutely atrocious performance once the CPU heated up, masked by turboing extremely quickly to make short bursts of performance feel responsive. This was made worse by Apple's absolutely terrible cooling design. Their user-hostile form-over-function designs are also typically Apple. They made great devices for quick demos, but terrible professional workstations.
I actually suspect Apple sabotaged their own Intel-based products when M1 was on the horizon to make performance look better in comparison. Their attempt to basically passively cool an i3 that had a thermal output that clearly couldn't be cooled in such a way can only be described as either intentional or incompetence somewhere in the chain.
With the new ARM chips, things have changed for Apple. Their cooling solution is still worse than the competition, but their excellent CPUs don't need nearly as much cooling. The GPU sucks, but that doesn't matter for most productive use by using hardware acceleration (in select applications, for select formats). You're not going to be doing CAD work on a Macbook Air anyway.
The sad truth is that Apple's competitors are doing worse these days. AMD is doing relatively well, beating Apple in most benchmarks, but with lower performance per watt in the end. Intel is still trying to compensate for their inferior CPU designs by squeezing more power into their silicon, leading to impressive numbers for anyone hooking their computer up to the wall, but terrible battery life if you try to use that performance in a laptop.
I expect AMD to eventually get competitive based on the direction their mobile CPUs and GPUs are taking, but they still lack the production capacity to make a dent in the laptop space.
What I don't understand is why even people working in the office all day every day end up with laptops hooked up to docks and dongles. Even the excellent Macbooks get beaten hands down for cheap by normal desktop components that are available prebuilt with excellent warranty and on-site service for very similar prices. Just use a desktop! You don't have to pick between top-of-the-line laptops and bargain bin desktops!
> What I don't understand is why even people working in the office all day every day end up with laptops hooked up to docks and dongles.
I just need to connect one USB-C cable to get all the devices when I'm at my desk, and I still have my main machine with me in meetings or anywhere else. I also have a dev machine I can ssh into for any heavy process. That does mean I can't work without internet (well at least I can't program), but in practice it's not a problem, and I actually like this setup, at least more than the alternatives I can think of.
Intel deserves a lot of blame for the last few x86 MacBooks too. The TDPs on those i9s are completely imaginary. Out to lunch. If one were to, say, design a cooling system based on the specs and then receive a production sample that ran twice as hot at half the speed, one would have to do things like downclock it below a gigahertz to avoid burning the user's hands off. That entire generation of Intel chips was a trash fire that demanded a whole car radiator to stay cool just to provide two hours of battery life if you were lucky.
Intel's cooling specs certainly aren't great, but Apple did mess with the power profiles a LOT. People also often misread the TDP numbers (it's for describing the thermal load of a certain performance threshold, NOT the maximum power output of the chip) and that doesn't help..
I completely agree that Intel's chips were consuming way more power than they had any right to, but Apple knew that when they were designing their computers, and they also had complete control over the performance characteristics, so they could've compensated (or picked more appropriate chips).
AMD's Ryzen was the proof that Intel's designs were flawed. I suspect that AMD's impressive Ryzen performance spooked Intel and they responded by making their existing designs faster by just pumping more power through them.
(1) previous studies conducted 2003-2006 found 44-50% time lost to frustration, this one found 11-20%. That's a huge improvement! As bad as computers are today, they were far worse 20 years ago. Progress!
(2) Performance (top 3 frustrations are the computer is slow/froze/crashed) is the top frustration.
Sure, and let's not kid ourselves: Hacker News is a perfect breeding ground to create, much more than solve those problems.
Making "startups" and "companies" the default way to "do software" is sometimes necessary, but very often not a good idea. It's absolutely fine to use software, and companies, to solve problems -- but when "software by company" is the focus, a whole lot of crap happens.
Yeah, it's interesting because the commentariat are overwhelmingly angry that they can't sideload on iOS, that people buy iPhones because they have better things to do that sysadmin phones and lightbulb (as an example).
The weight of HN opinion is relentlessly hostile to people who think their devices should be more like toasters and less like MIT labs circa 1984.
I believe that most people that make decisions that impact a large number of people the world over, simply have a too narrow experience of the world, and of other people’s situations. They know their own reality and think that this is how others experience life as well.
This is the root cause of many problems in the world.
As a devops engineer, 100% of my time is wasted on computer problems. I increase my efficiency further by following instructions to the letter: this allows me to also waste multiple 10s of %s of other people's time too.
As a mathematician turned software engineer, dev ops and build systems are the bane of my existence. Every time I need to do that work, I want to quit.
The fact that I “can’t just X” but need to use some convoluted build system with details hidden somewhere as if it was arcane magic is beyond me.
Alas, lots of devops feel like they're cleverer than they are. I certainly did when I was younger.
The sign of seniority in a devops engineer is removing code, breaking down complexity, and being able to design simple, standalone services at a useful level of granularity. Sorry to hear you've not been around those people enough.
For what it is worth, even senior devops end up building convoluted crap too, but often this is because the organisation demands it. People don't recognise the hidden costs of complexity, in build or operation. Cleverness is often complexity, and promoting those kinds of solutions means creating the environment for "10x" engineers. People come to rely upon them because investing too deeply in learning about other people's complex legacies is almosy never worth it.
At AWS we are expected to do our own dev-ops, even if you are at a larger project with with some dev-ops engineer, you still need to do your own dev ops for many things.
CDK with TypeScript is actually pretty nice to work with, I like the compiler errors, having some type system, and managing my infra via code. My issue is with other systems. In all honesty, our customers have better build tools than we do.
Development teams, that include users, know about the issues. In the face of deadlines and budgets the team keeps opting to let little niggles slip in because they aren't a big enough deal to justify schedule disruptions or using developer time. All these little quirks add up to a shit UX.
The users filed the bug and the devs recorded the story, but management shot it down. Incentives.
This is killing me about my current job. I want to fix so many things, but the culture here is don't rock the boat (nationwide, not just this company).
Just today a colleague was reviewing a PR. I left a comment saying that I deleted a few template files that were no longer in use but I noticed them while working through the ticket. The PR had 6 different comments on it asking "Why was this deleted" for every single file that I deleted. I hope it's a language barrier thing with this one particular person, but I don't know.
We have retrospectives and talk a lot about making time to refactor as a part of sprint tickets and doing better within the system we have and then this crap comes up. So now I need to go write another ticket, bypass all of the refinement rituals (which nobody likes when I do that) and add the ticket to the sprint, just to delete these few unused files that git says haven't been touched in 7 years? Wtf guys.
The hard part of software is, always has been, and always will be, people, not code.
I spent a couple days getting SketchUp to work under Wine (thanks elemtary OS for not allowing updates making me stuck on old version of Wine, plaOnLinux bundles some newer versions tho).
After working with Sketchup for a week, realized that some features didnt work under wine, so went to fix the windows dual boot that was destroyed when I had previously resized the partition using gparted. Fiddling with win recovery didnt work, so I needed a win boot disk.
It turns out that the win10 image includes a 4.5G file, but EFI needs the boot image to be fat32, so no files larger than 4G. That must be one of the dumbest microsoft choices, to not split up that file. Somebody online suggests to use gparted to create two partitions on the usb stick, one fat32 and one ntfs, for the boot and the install files - and the installer will automatically recognize that. Anyway, that also took a couple of hours to set up, also the fresh win10 install and setup. Head->table.
…Yes, we can waste a lot of time on computer problems.
Probably true. However, I interact with a bunch of broken systems all around me, in the real world, all the time. I'd also wager that I waste far more than 20% of my time on some of them.
On the contrary, it is much more efficient. One size doesn't fit all. The bad systems die when that's possible. When there is only one, a problem becomes a bottleneck.
And this is why I do not fear unemployment or AI. There will always be work for someone who can be asked to build over complicated software and debug it.
> The computer could easily solve the problems without displaying this, while it provided a back-up version of the system for us, so that we could continue to work with our tasks undisturbed"
How could this work? Teorically, the OS could detect that an application crashed and start it again. But to restore the state the application was in before it crashed, it would need to scan the application's memory and derive the state from it, hopefully without also recreating the conditions that lead to the crash. While this could maybe be done, it would require the OS to know the application's internals extremely well, so it isn't feasible to apply this at scale. Or am I missing a simpler way to do this?
Maybe the OS could save snapshots of the application's status. This way it wouldn't need to know the application's internals, but there would still be the problem of how to know which is the last good status that will not cause a crash a few moments afterward.
Further, if you restore an application's state to exactly what it was before it crashes, computers being the annoyingly deterministic machines they are, there's really only one possible outcome...(*)
State isn't what you want to restore, it's "valuable user-created information". And I don't know of any platforms where you can clearly mark data as belonging to that category.
(*) accepted, some crashes will occur due to things outside the application's control, and may conceivably succeed on retrial - but even that relies on being able to restore application state to some "last known good" state.
"When a process crashes, it neatly exits and sends a message to the controlling process which can then take action, such as starting a new process that takes over the old process's task"
But this seems only a small piece of what would be needed. And if the idea is to have a main process spawning a tread (or process) for each "thing" it has to do so that the thread can be neatly re-spawed in case of failure, how is this much better done in Erlang than in any other programming language? Can you please elaborate?
> "Part of the solution may be to shield us from knowing that the computer is working to solve a problem. In reality, there is no reason why we need to look at an incomprehensible box with commands or a frozen computer. The computer could easily solve the problems without displaying this, while it provided a back-up version of the system for us, so that we could continue to work with our tasks undisturbed," says Kasper Hornbæk
Says the researcher who has no practical experience in development. While it's true that some OSes (I'm looking at you, Windows) and applications have less than stellar UIs, getting the entire stack (including hardware) to cooperate on a consistent basis is exceedingly difficult without NASA-level engineering. Given how many parts of a computer (again, both hardware and software) are churned out with an eye more towards profit than reliability, it's a miracle things work as well as they do.
It would be interesting to see what the numbers are for IT 4 IT systems , scripts, batches, integrations, countless programs in countless languages including programs where nobody who knows anything about the system or language is available and no help or documentation or vendor is present anymore.
Worth noting that this study, which I just happened to read today, is small (n=234, with the number of useful responses even lower).
And the ‘up to 20%’ refers to the fact that they had some odd responses which indicated that the time wasted was the entire hour of the study. If they corrected these down the figure becomes 11%.
Oh and it’s self reported. From participants crowdsourced at Prolific, who were paid.
It didn’t seem like the most rigorous study to me. And I’m invested in the result being bad, as the thing I do claims to solve some of these problems!
20% on failures, 60% on work that wouldn't be necessary if we didn't have to work around all the inefficiencies, incompatibilities, limitations, poor practices, bad design, etc
Just one example: all the time you spend building and maintaining a configuration management system to "fix" system state. Versus an immutable system, that when its state is wrong, you just delete it and make a new copy from the old immutable state.
90% toil becomes 10% toil. That's what good design gets you.
20% seems like an underestimate, especially if you consider a lack of knowledge of how to use one's computer to highest efficiency.
also, most platforms suffer from feature bloat without a cohesive user experience. probably because they are trying to capture the widest audience, without carefully planning alignment/integration across features.
As someone hosting my own smart home (Home Assistant), NVR for cctv (frigate), cloud (NextCloud), file syncing (Syncthing), plus various others things like pihole, etc. and giving tech support to all my family members who are using all these services, I think it's more than 20% of my time! But it's totally worth it.
The normal person working with a computer is not a developer. Most of the jobs would be heavily influenced by the microsoft suite.
Microsoft in denmark is very popular, thanks to their amazing marketing team targeting corporates. Therefore this research just shows that closed source microsoft products do not work 20% of time.
Could things be better? Sure. But saying we're "wasting" all this time seems a little disingenuous. How much time do people spend maintaining tractor equipment to grow crops? Or really any tools of any trade?
The equipment and tools we use let us be more productive overall with certain tradeoffs.
The problem is that we think that developers make software to be useful, the truth is that developers make software because their companies need to make money.
It was really hard to accept this as a developer when I started to do this as paid job
"It's incredible that the figure is so high"... lol, 20% seems incredibly low to me. The "study"'s authors must have a really low quality bar for what a malfunction or delay is.
this is where we need to start putting a premium on the customer's time. If a company sell you a product, and you spend 4 hours on the phone with support for an issue that turns out to be their fault, you should get reimbursed or credited for that. If a customer has to spend time repeatedly "turning it off and on again" - the customer should get a credit for that. Yes, this will require companies to use all of their telemetry and logging for tracking lost customer time due to their errors.
We also los 4-9%% of meeting time with people trying to get their Zoom connection to work (camera, audio, can't connect etc). The impact on GDP must be pretty significant.
So much of the incentive structure in software companies is to ship new features. Maintaining existing ones or fixing bugs is a career dead end for software engineers and managers. No wonder so much stuff is broken and slow.
Call me cynical, but from a dollars point of view this seems to be what customers want.