We are wasting up to 20% of our time on computer problems, says study
techxplore.com
techxplore.com
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.
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.
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.
Shoddy code only happens in "the production is on actual fire, not manager-imagined fire" fixes and not for long.
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.
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.
https://www.aarthiandsriram.com/p/our-dream-conversation-and...
``` Turbo Pascal 2 and Hash Tables
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).
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.
1: https://en.wikipedia.org/wiki/British_Post_Office_scandal
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.
It is abundantly clear that GP is roughly describing two ends of a spectrum, not enumerating every possible option.
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.
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.
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.
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.
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 want buzzwords, not working software.
Some VCs and the like aren't interested if your company isn't hitting those buzzwords.
Humans learn over time.
Humans have social pressures.
Humans have explanatory rather than merely predictive models about what they do.
Deviations by humans from expected standard behavior often produce better rather than worse results.
The list goes on.
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.
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.
"Some weights in an algorithm are wrong" seems a much less fraught problem.
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.
https://www.upi.com/Top_News/US/2011/01/25/Woman-83-gets-3-y...
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.
https://en.wikipedia.org/wiki/The_Ones_Who_Walk_Away_from_Om...
> 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.
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.
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.
The unitless number for driving into oncoming traffic wasn't supposed to be a real stat.
This expectation causes a lot of other problems, and will cause problems here too.
It's not dissimilar at all, just significantly faster and now in the hands of anyone with a laptop.
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.
I’m part of their largest customers and I have only 300 invoices a year. I’m still stunned how people can mess up like this.
They're a good complement to great design and infrastructure but you're fooling yourself if you think they're a replacement.
What percentage of software (in dollars) is purchased by people who are not going to be the ones using it?
I suspect the answer is the overwhelming majority. It is how software monstrosities like Concur can exist and be ubiquitous.
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.
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.
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 make a living dealing with computer problems.
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.
Many people have tried to have an OS and pretty much all except MS, Apple and Google have failed at the consumer level.
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.
:(.
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.
Does this make me more or less cynical than you?
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.
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.
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.
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.
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.
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.
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…
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 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.
If you want 'good' some of the Alienware laptops will be more beefy.
Or the $5000 desktop PC I got off Newegg had top of the line specs and came with Windows..
Not sure what you're talking about really. You can get crap, medium or best with Windows.
Or just reformat to Linux if you think Windows is sluggish.
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.
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.
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.
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.
Even the bottom line machines nowadays are perfectly fine for "living" (internet, multimedia, office apps etc.).
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.
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.
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.
Chromebooks would have been cheaper.
They don't know the difference. And I rarely if ever have to fix anything.
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..
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.
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.
¯\_(ツ)_/¯
It's interesting that Norwegian and Swedish are putting the emphasis on data instead.
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.
https://replit.com/@Chronological/DynamicTables
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.
Generally you have 3 kinds of things in Clojure: associations (maps), sets (uniqueness), and order (lists/vectors).
I, too, am a fan, especially in data intense applications, where a clear / decoupled data model and aggressive compiler solve many headaches.
The corollary is that if you get smarter about how you move things around, you can make serious efficiency improvements.
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.
Rube Goldberg machines, all of it.
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.
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 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)
there's probably a greenspun variant for this
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.
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.
No buses, no trips to the post office required.
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).
What's with the profanity? You obviously know what I'm talking about.
We have them in the US, and it's a wonderful technology that would apparently save globalreset an hour-long trip to the bank.
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.
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.
Unbelievable amounts, both in speed of processing and communication, and in lack of error.
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?
And there need to be enough of you for a market.
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.
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.
It's called cutting edge because when you use it you bleed.
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.
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.
Just my 2 anecdatacents.
> 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.
Original study published here: “Frustration: Still a Common User Experience” https://dl.acm.org/doi/10.1145/3582432
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.
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.
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'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.
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.
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…
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!
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.
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.
IMHO, Window XP and Windows 7 were peak Windows reliability. It's been downhill from there.
And I don't think their definition of "wasted time" is just "borked computers," they also seem to include things like slowness and bad UX.
I only skimmed, but two things struck me:
(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.
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.
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.
This is the root cause of many problems in the world.
The 10x programmer is real.
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.
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.
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.
The users filed the bug and the devs recorded the story, but management shot it down. Incentives.
Not only that, after a while those UX warts are now embedded as part of someone's workflow and can't be changed.
as usual, elevant XKCD: https://xkcd.com/1172/
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.
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.
This industry is built on lack of effectiveness.
We've built a few complex, production ready OSes,
with bilion programming language and compilers,
with a few web browsers,
with X drivers for everything (graphics, network, sound).
Basically everything a few times
Just to display funny cats in web browser
That's a very good idea. Really.
In tirannies there's only one thing of each. When that thing breaks, you're sorely out of luck.
People associate diversity with justice. But diversity is in fact your plan B, or C...
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.
https://en.wikipedia.org/wiki/Erlang_(programming_language)#...
"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?
(*) 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.
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.
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!
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.
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.
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.
Cough, they mean Microsoft Teams, SharePoint, Azure AD, Internet Explorer Edge and Windows 10/11 problems because the rest works fine, no?