Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Another Week with Bad Software (thoughtspile.github.io)
185 points by thoughtspile on Sept 24, 2018 | hide | past | favorite | 158 comments


The problem I have with this perspective is that it ignores all the times software works correctly (which is easy to do, because it's usually invisible.) Consider the pile of software that has to go right for you to experience the world as you do on a given day. Did you buy something from the store? Software. Did your trash get taken from the curb? Software. Did you get to work safely in your car? Software.

I've often had a contrarian view on this in that I find it almost miraculous how robust software is despite all the flaws in the humans creating it and the insanity of what is actually happening physically to make it work. The fact I can type this out and send it and it will work at all is truly stunning. The fact we live in a world where we are surprised when complex, interconnected, global-scale software breaks and not surprised when it somehow works properly speaks volumes.

That's not to say that we can't do better, but the evolution of software to me has been one clearly of improvement, not stagnation or regression, all while taking on more responsibility, more scale, and more problem complexity. It's easy to point back at simpler times as "the good old days when software was well engineered" but it's easy to overlook the daily wonders that we take for granted today that were unconcievable just years ago.


True, and this bias also applies to a bunch of other day to day things that we take for granted.

For the comedic view on this: "Louis CK Everything Is Amazing And Nobody Is Happy" https://www.youtube.com/watch?v=nUBtKNzoKZ4


There's a limit though. In particular, if you're long enough in this business, you can look at the failure and quite reasonably guess whether it was a case of miracle occasionally breaking, or someone's stupidity (or greed). The former is excusable, the latter isn't.


In the world of computers, the hardware IS amazing and I'm really happy about it. What makes me sad is how rarely software uses that hardware even to within 1 order of magnitude of its' potential.

I'm not asking for hand tuned assembly everywhere ladies and gents, just get within 10x of what the hardware can do before you ship, please! Even if you think "oh its just some chat software who cares" I care! The waste adds up.


I have worked with electrical engineers, and things are very similar over there.

Little sad story: my zenbook's SSD died 4 times; the last time it was past warranty and they wanted $250 for the replacement (proprietary port). Got a zenbook / sata switch from aliexpress, never buying macbook copycats again.


I swear I was initially going to whine about "we should make it easier to make good software", not about "software is bad") Got carried away a tad, will try better next time!


When society expects systems to work 100% of the time and they work 98% of the time the end result is often worse than if society expected 95% success from a system that has exactly that reliability.

Why? No mitigations/redundancy/workarounds and spoiled plans.

Example. My last job had mostly automated provisioning process and you could not do anything for the first 3 days. My current job is at a smaller company that has manual provisioning and you can get started within first couple hours.


It really comes down to whether the process allows manual overrides, and how difficult it makes them.

Some automated systems completely lock humans out of the process, so it turns into Brazil.


> Did your trash get taken from the curb? Software.

Simply planning the route in advance with path finding or something more? Garbage collection was around and not very different before software was prevalent.


But it took hundreds of people hours of mind-numbing planning sessions to do it back then. And they were humans, they did screw it up every once in a while.


Maybe I've underestimsted it, but "good enough" route planning didn't sound that hard - just looking at a map of customers, dividing into regions with roughly the same amount of customers, and tracing reasonable-looking paths through them.


Imagine yourself tracing a set of paths that covered every street in a large metropolis, obeyed traffic orientation in every street, and were readable by others.

No further Requirements. As many or as few paths as you'd like, no worries about efficiency, sure you can go through the same streets many times if it helps. But needs to cover every street, obey orientation, and be readable by others.

Does not sound easy, does it?

Now, let's add a few more Requirements...


Do you have any source of people spending hours planning garbage pick-up routes and how that has changed with software?


I pay for my trash online. They provide bins. There's two systems right there.


I agree!!! Software does 10,000 things correctly. Then people complain when one thing doesn't work 100% perfectly.


...which can often be "the hotel I booked doesn't have the reservation, and I'm currently SOL". My wife and I booked a rental car for a trip through one of the many booking sites (Expedia, probably) and when we got there, the company that had been booked with was gone and they didn't have our reservation because it was a totally new company. But nothing told us about that, we only learned about it when we got there. Thankfully, people are generally understanding and they were able to get us a car for the same price, but my wife basically had a panic attack due to there being other mishaps on the way. (and she's the type of person who plans things months in advance and changes to the plan are very distressing to her)

So yes, "one thing" might go wrong out of the 10,000, but that "one thing" can cause a literal panic attack. I don't have sympathy for companies that create crappy software that barely limps along and causes a lot of distress to my wife over stuff like that, or not telling us we need to pay extra to book seats on an airplane in advance to be able to sit together for a 13 hours flight. No sympathy at all.


However, you chose to book Expedia over other companies with better software and inventory management (I believe the one I work for handles this kind of thing better than Expedia for example).

So, all things being equal, price beats good software...


That's called counter-party risk. It should factor into your equation when booking something. This is the precise reason I only book with the 'big national brands' because a disruption to my trip is not worth the savings of going with a less reputable outfit.


Yes, it's nice that some software works pretty well most of the time.

However: the use of software and the dependence on software have increased so much, that according to my guesstimations it's almost guaranteed for someone to encounter a software annoyance or have a software-related incident perhaps at least once per day and be involved at least in one major software-related screw-up per year.

And these numbers will only go up as software systems become more connected and intertwined with our lives. From that perspective, software in general is not good enough and people are correct to complain.


The only thing I'd add is that it's not just software. Humans are hardwired to focus on the negative. We miss things working well everywhere.


If you do everything perfect, it's a completely thankless job.


People think for some reason that their job is hard, so when all works perfect that's almost a miracle and others shouldn't be so grumpy when it doesn't. But the moment they are on the customer side they think "that's easy, why doesn't this work?" and ignore how often they rolled their eyes at the same clueless comment about their job.

It's always easy from the outside. Not so much if you are in the trenches yourself.


Agreed. And as bad as software is, humans are worse. Imagine how many things would go wrong if everything had to be done manually.


Are they? Do you have any evidence that lost/overbooked bookings are decreased on software-based booking systems?


SO true


My only problem with booking.com is that some random employe in philiphines in another hotel can see my reservation and full credit card details... Im pretty sure this isen’t PCI-DSS compliant.. and Yes my sister in law send a screenshot so i could see it in person.


Not to speak of the horrible dark patterns - count down timers, "only 3 rooms left!!!!", alarming colors, confusing interface.

There was a time, oh what a time, when I could use hotels.com and booking.com to get really good prices and still stay at very nice hotels if I was ok with booking close to the date.

Remember a time when a friend and was given a literally shitty room (with overflowing toilet) in Cairo via hotels.com. Hm, doesn't rime well with the paragraph above. :)


I've personally started using a combo of agoda.com, Booking, and HostelWorld for all my booking, and finding the best deal of all three, works like a charm.


Booking.com also has some really bad checking for email adresses, which is why I often find reservations in my account for people who enter my email adress instead of theirs in the booking email field (I have a booking.com account with that email, they don't, but the booking still gets tacked to my account - it cost me nothing, but I could change their reservation if I wanted to)


Same with Vanguard and Fidelity. I could steal someone's funds if I really wanted to.

Now that I think about it, Quicken and TurboTax too. People signed up for all kinds of important things using my email.


Same with airbnb, you can book and have the host confirm booking without any checks your email address is correct.


I did a phone screening for them once back in 2015. Everything was written in Perl (with no intention of migrating), developers often push modules straight to production, and there are little to no automated tests.

This was all from their HR person on the phone.

They offer more money than most other companies in The Netherlands .. and I think it was clear why. ... I passed.


Not a lot of insight knowledge but those coding practices sound worse than what I got from some talks they did.

I think they're doing only light testing for features before they push them to production because they're doing so much A/B-testing that all small "improvements" that decrease conversions or $$$ per minute are pulled again very quickly. So it sounded like a lot of small PoCs that then get rewritten properly when the idea is good.


People who like this sort of think might enjoy reading the famous RISKS digest, which has been running for over 30 years now: https://catless.ncl.ac.uk/Risks/


There's also a book based on that: Computer-related risks by Neumann (1994).


Error 503.


wow, did we crush it? It was there earlier


I think it puts too much blame on the software developers. Agreed, over-engineering is usually the developers fault. But the fact we don't take time to investigate issues, rather work around them or half-ready stuff gets pushed into the market is rarely the developers fault. These things are decided by management.


This perspective reminds of a few answers to the Quora question "Do programmers who write bad code know that they are writing bad code?", which I was looking at last Friday when dealing with a particularly poorly coded app. For further edification/amusement:

http://qr.ae/TUGpLF http://qr.ae/TUGpL5


Totally, 100% agreed. Sure, there are a lot of developers who don't care about quality. Usually, they don't care because they're here to do their job and get paid, not to make an art piece. Which is to say, they would care if it was a part of their job, but it isn't, because of business-level decisions.


> there are a lot of developers who don't care about quality

And the underlying meta problem is that the people who are supposed to be responsible for figuring out which is which haven't got the faintest idea how to tell. Compound this with the fact that most management structures are still based on factory-assembly floor management where figuring out who wasn't turning the lever as fast as they guy next to him was the most important metric and you end up with corporate structures where trying to figure out which developers are better than which other developers actually has the opposite effect than the one they want.


This is going to sound defensive, but: is the problem really with developers?

In my experience as a developer, we've never been given the necessary resources (time, QA access, specs that don't change every day, sample data, redundant hardware, etc) to build a reliable system. Managers always pushed me to have something that looks mostly-working, and shipped by the artificial deadline, and argue that any known bugs or limitations are not important enough to fix before the next round of new features.

It's not so much that I'm not required to care, but that I'm not allowed to care. I get better food at Canlis than McD's, too, but given the time/ingredient/recipe constraints, even the Canlis chef would struggle to make something great if thrown into a McD's kitchen.


> It's not so much that I'm not required to care, but that I'm not allowed to care.

This was my point, mostly. It's not a problem with developers, it's a problem with business priorities. I agree with your experience.


As a developer, I would feel shifting the blame with this) I am writing a follow-up on how to do better, though!


Nope. There are still bad developers, i.e. those who can't manage themselves.

And, just because someone "thinks" they can manage, doesn't mean they can manage.

The only metric that matters: number of USERS. Good developers have thousands of them. Great developers, millions.


By that metric, two of the best kinds of developers are virus writers, and people who made the insecure systems that they infect.


The 'user' of a virus is the virus author - not the person running the software. A user is someone who attains some gain from running software. So, no, this would be a very low user count.


What about non-public / embedded software then?


Ultimately, they have users too. However the context is general application development - certainly, special-case users have their value as well...


I’m glad to see my countrymen branch out into blogging in English so that the rest of the world can have a great big dollop of Russian fatalism.

More to the point: everything’s well and truly fucked, yes, but surely more education cannot form the skeleton of a solution when the masses we’re supposed to educate don’t actually want to learn anything. IMHO, the very incentives of business need to be changed as they’re the foundation of every bad decision that manifests as software bugs. Is this not a version of Conway’s law? “All bad software reflects the lopsided incentives of the ambient business environment.” Call it the universal law of fubarness.


> IMHO, the very incentives of business need to be changed as they’re the foundation of every bad decision that manifests as software bugs.

Yup. What's worse is how many of our own peers fall back on justifying all this crappy software with "businesses are for making money" without a single dose of irony. It was a bit depressing, reading the comments on HN on the other post and realizing how few people seem to actually care about writing good software.

> the masses we’re supposed to educate don’t actually want to learn anything

Indeed.


What is good software is at least partially subjective. Every measure of quality from the existence of bugs (that is, how many and how severe) to structure (is it OO or functional or a mix) to utility (is it spyware or a command line utility or something else) involves some subjectivity.


Almost everything involves some subjectivity. Business decisions included. Delivering crap product with faster feature turnover is a subjective decision too, you're only guessing if it pans out or not compared to doing it better but a little slower. Someone will say, "I have A/B tests that show". But I'm willing to bet than it most cases, A/B tests will show you whatever you want to see in them, as most people don't have necessary statistical background to correctly run or interpret them (and page optimization companies sometimes actually exploit this against their own customers).


Ugh, I'm living through this right now on an app I've been working on in my company for 3 years. Someone will create a user survey that gets a 5% response rate and use it to justify/rationalize some decision. They think that since they ran the survey they now have data that is good enough to base a decision, with zero desire to statistically validate whether that data is any good or not.

I can't remember which thread this came from, but this talk was posted here somewhere on HN recently and I found it pretty interesting and relevant to this sort of thing: https://www.youtube.com/watch?v=TGGGDpb04Yc


Hey there, fellow fatalist! My economical-ish education disagrees with you on some points made)

If "good software", whatever it is, is not economically viable, I would gladly walk away feeling good about the future and open a beach bar instead. Currently it seems that faulty design and code are actively harming the businesses. I personally need to make more research around here — what's the connection between, say, conditional spaghetti and anything important? We should at least start talking about these implications. No code is an aisle)

Same goes for "the masses don’t actually want to learn anything" — I see many people getting into web dev right now, and we've made it unreasonably hard to do — why do simple (as in, the ones you can make after a bootcamp) web pages look and work so poor? Word documents from people with a week of training look pretty reasonable.


I don't know how things are back home, but here in the US "getting into web dev" is something people do mostly as a way to increase their earnings. Yes, there are some gems in the crowd, but the base case, so to speak, is someone who simply wants to make more money. These are the people who want to make the jump from $25k/year to $75k/year and stay there, rather than become masters of a craft. Any learning for them is incidental to the economic process, and such worker bees - productive as they may be - don't actually improve the state of our industry.

Good software is exactly economically viable, but it takes upfront investment. Unfortunately, businesses don't like to make that upfront investment in something they don't - yet! - understand. Think of a car: a young person might treat their first car like crap assuming that it would simply run forever like magic. This attitude does a quick 180 the day the car's tranny drops out. I'm thinking that not enough software "transmissions" have quit in order to instill these lessons within the MBA-s of the world.


Well, we're all in it for the money to a certain extent) And statistically, the more people come here, the more bright people among them. Not in finance, not in civil aviation, but here in software — isn't that great?

The supply / demand gap on programmers should close once — our job is not inherently bad or risky. I feel that we just don't know how to train new programmers on this scale yet.


> Currently it seems that faulty design and code are actively harming the businesses.

So long as a human exists to work around the faulty code, the harm to businesses is minimal. For example, many companies sell feature-full, but absurdly slow and buggy, software to other businesses. The customers aren't going anywhere, and they've protected their niches with a minefield of patents.

So, the features hook the execs, and the end-users work around the bugs and slowness, the business sees no blowback from this.

My favorite anecdote was a front end engineer claiming "I went in and profiled our code and made an action go from 5 seconds to under a tenth of a second!" To which I can only go "Wait, there was a user-space action that took 5 seconds?!"


> My favorite anecdote was a front end engineer claiming "I went in and profiled our code and made an action go from 5 seconds to under a tenth of a second!" To which I can only go "Wait, there was a user-space action that took 5 seconds?!"

And I'm guessing there was, and you didn't notice it (or stopped noticing it at some point), because that's what people do. They get used to this nonsense. Especially if they have no power to improve it.


I'm actually pragmatic about it) 5 seconds is fast enough for an infrequent or complex action — it's not a week, come on! You might as well throw the feature away in a month.

If it turns out the action is more useful than originally planned, you should take time to optimize it.


Side track, since there seem to be some russians here. Do you have any good tech blogs in russian I should follow? (thoughtspile thank you for your recommendation of Nikita Prokopov)


(I don't know why we're doing it in English) For the more general tech (physics and stuff) — https://sly2m.livejournal.com/ https://sly2m.livejournal.com/tag/%D0%BD%D0%B0%20%D0%BF%D0%B... series especially recommended

For programming, I enjoy https://igoradamenko.com/blog/ These seem mostly dead, but might come back: - https://medium.com/@kovchiy - https://medium.com/@xanf Here's a guy working on V8 who ocassinally posts / talks in Russian: https://mrale.ph/talks/


Cheers)

(as for in english, i've rarely seen people talk in other languages, i thought maybe there was a rule)


I casually browse https://habr.com/ as a symptom of my tendency to tail aggregators a-la HN/lobste.rs rather than individual blogs.


Habr has some poor-quality translations, often without proper attribution, which is why I don't like it. Some corporate blogs can be nice, though.


Just goes to prove my ol' personal favourite maxim: "If you think you can computerise it, do it on paper first. Then, see if you still need to computerise it."

80% of the time, you don't.


This) I do sometimes feel it's a bubble, as in "where else can we stuck a computer? and now?" And most problems are not solved by computerising in and on itself — the processes just move faster.


This is true, and it's because people doing that are not in it to solve your problem - they're solving their problem, which is "how to make money", with a solution that's shaped like a computer system.


I like this one quite a lot)


That's how a lot of computer systems started, except that instead of paper, it's an excel sheet emailed back and forth.


And ironically, that Excel sheet is often the peak of productivity.


Thus, another maxim: It doesn't matter how you do it, as long as you've got a User, the computer is doing the work, and as long as the computer is doing work for someone, there is a User.

Alas, which leads to this: Programmers are often the worst kind of User.


Feeling this acutely today. I switched my home desktop from Arch to Ubuntu since there is some software in the AUR that I want to use, but the package builds are broken. Arch is a community project so, not blaming anyone except the guy that randomly decided to rebase his package on the git without telling anyone and didn't bother to find out what the dependencies are.

Anyway, got everything set up. Everything working fine. Rebooted a few times: no problem. Popped in an extra hard drive which is just for file storage for Steam games. Reboot and... nothing. Pulled the hard drive. Nothing. The operating system is now in a completely broken state. No start up messages, nothing. Not even NumLock on the keyboard works.

I have no idea what happened.


Try reseating your RAM, reattaching your hdd cables. If you can't get to BIOS, it's nothing to do with a secondary hard drive.


It's an older Mac Pro: all UEFI and sleds rather than cables. I can try doing the RAM reseating, but the Mac Pro won't even go to EFI if it thinks there's something wrong with the RAM; how I found that out: I initially didn't know you couldn't mix 16GB sticks with other sizes but know that now.


I've encountered issues that must have been BIOS bugs such as hanging before the BIOS screen with a corrupted Linux drive plugged in but working just fine with it disconnected. Trust nothing.


Oh, I used to run Ubuntu! After going to and from sleep mode, the audio would stop working. The proposed solution was to change a line of code and rebuild the OS from source. Then they ask why your grandmother doesn't want open source — must be a corporate conspiracy.


Haha, very funny.

Disclaimer: been running Ubuntu Studio for 10 years, and it is still the #1 music-/audio- processing system in my studio, which of course has great MacOS stuff too, but still .. UbuntuStudio .. just freakin' great audio, on Linux. Suspends just fine too.

(Clue: its jackd. I nuked pulseaudio from orbit.)


Switching distros seems a little drastic given the problem. Why not just fix the AUR package? That'd probably take less time than reconfiguring everything.


I'd check the boot drive on another machine and see if something messed up your fstab.


Not a day goes by when I don’t encounter a major bug in some software in the most common workflow e.g. iPhone unlock screen fails to show up, payment of a Kaiser bill fails and says to try later, shutdown my windows computer never completes, website chat for CA FTB says I’m entering invalid characters when talking to an agent and I can’t explain my issue as a result, can’t download my tickets from Ticketmaster since it thinks my iPad is a desktop and I need a mobile device etc. I feel like I expend more enginery troubleshooting these issues then doing what I need to do with most software.


Yep, software is just bad. I have multiple pieces failing on me continuously every day. Just a few examples:

- Visual Studio 17, crashes, has bad UX (for example try to find a symbol and it pops up a modal dialog). Refactor tool works about 3 times and then fails with "blal bla (null) bla blah" error.

- Win10 explorer is often confused, starts to render the start bar wrong

- UE4. Oh god, I think every single feature in it has at least 5 bugs.

And don't even get my started about the state of software on mobile phones.

I see bad code everywhere. There are fundamental issues that I see repeating and typically these are very cluttered designs muddling several things together. Clearly the developer(s) didn't have a clear idea of how to design software and abstract it into pieces that are independent and reusable. The way they are they're hard to design, write and debug. Nearly impossible to unit test and practically impossible to re-use. All these bad practices and downright incompetence of many developers must be costing this industry as a whole billions of dollars.


Windows 10 seems to be one huge example of this. It's a travesty of an OS. Below are some of the things which it does to make me want to chuck the entire computer out of a window:

- Overlay the huge "you need some updates" panel, with no option to close the window. Every key input brings you to the update installer.

- Windows Defender frequently ignores my exclude lists, which causes it to start scanning my VM's .vmem files, reading and writing several megs per second to disk, causing my VM to be unresponsive for 20+ minutes if I do not restart my entire system.

- The new search options in the task bar seem to have gotten worse since Windows 7. Whenever I start typing something like 'not', it shows me Notepad++. When I then add the 'e', the options disappears.

- Lately, my Windows 10 has decided whenever I boot up a system, it should restart all processes that were active when I shut it down before I have had time to even log in, which is kind of a fucking bother when I had loud music playing in the background when I shut it down.

- All the goddamn bloatware on it. I know that when I buy a DELL or HP, I'll have to completely reinstall the system to get rid of the bloatware, but Win10 comes with its own set of it for some reason.

- All the 'smooth' animations, which slow the UX just enough to be frustrating. Don't slowly slide up the start menu, just pop it into place!


It also has many outstanding unfixed bugs. For instance, occasionally and for no readily apparent reason the Start button will stop working. It simply won't do anything anymore. It may or may not be fixed by rebooting, reinstalling all store apps, or other various nonsensical steps, which almost never actually work. Ultimately, the only reliable solution is to reinstall the OS. If you search google for "Windows 10 start button doesn't work" you will see that this bug dates back nearly a decade now.

Let that sink in for a minute. Microsoft has somehow managed to screw up a goddamned menu so badly that it can break in multiple ways they don't know how to fix, and rather than fix this bug they have devoted their resources to bringing us features we never asked for.

That's today's Microsoft. Adding (broken) new things no one wants, changing things for the sake of change (see: new settings panels), and never fixing any bugs. It's as though they've embraced the worst qualities of open source developers, only they charge you for the privilege of using their OS and still have the gall to force ads on you.


Windows peaked in quality around Win7. Everything they've added after, with possible half-exception of Metro UI[0], seems to have made the user-facing experience much worse (I'm not claiming they didn't improve the inner workings of the system, though).

--

[0] - half-exception, because while it made the desktop experience worse, it also enabled Windows to work well on mobile devices, and it turns out Windows is the only OS for tablets that's not a toy, but a tool for productive use.


How the fuck do you break the start menu? I'm eagerly awaiting better gaming support for Linux system, so I can finally leave this POS OS behind for good.


Recently I was troubleshooting someone's Windows 10 computer and initially I remember thinking that the start menu's blur-transparency background effect looked nicer than what I'm used to on MATE, but then when I actually clicked one of the options the menu had totally frozen! It remained that way until a restart.


"...this bug dates back nearly a decade now."

A good trick, considering Windows 10 went RTM in 2015!


You're right, I don't know how my Googlefoo failed me so badly, but I could have sworn I had results from 2010 for Windows 8.

PS: Seems it was because of this: https://answers.microsoft.com/en-us/windows/forum/all/start-...

which appears to be a similar problem on Windows 7.


Hmm. I haven't run into that one directly, but I have found that Start menu/taskbar issues tend to be very effectively solved by killing the explorer.exe process that's running the taskbar and starting a new one. It's a garbage way to have to solve a UI problem, I agree! But it's preferable to rebooting, or reinstalling, or what-have-you, I think. Might be worth a try with the Win10 issue, too.


Oh believe me, it is one of the two dozen or so bullshit steps that is often recommended and it doesn't work. At least it has never worked whenever I've encountered the issue. Given that there are apparently so many different failure states for a fucking menu, I'm sure it's worked for some people.


Yes! Why the hell does windows defender have exclude lists if it's not going to respect them? Drives me nuts.

I haven't seen the full screen update modal recently, though. I thought it had been removed. Maybe it was only removed in enterprise?


Oh God, speaking of hating VS: I recently had to nuke it and reinstall (partially my own fault), and missed the option to set file type associations. So it set any and all source files it could think of, including .py files, to VS. That is when I discovered the old functionality of setting associations by program is broken for non-store applications, as notepad++ was missing from the options list. One has to manually set the association for each and every file type. If I'm opening a source file in explorer rather than opening a solution file, it generally means I just need to take a quick peek and don't appreciate the startup delay of something as heavy as VS. And the file association panel is only half broken, since setting association per program is UWP only, while per file type still has the older control panel available.

Maybe I'm just stupid, but I refuse to waste 2 hours of my life googling what has always been a relatively straightforward task. And it seems that every UWP program has to have ~40% of its "advanced" features removed like this in the name of ease of use.


> Clearly the developer(s) didn't have a clear idea of how to design software and abstract it into pieces that are independent and reusable.

Is this not often the case because you have people that are not actual developers involved in the process of software creation? In the sense of, you don't get budget to fix/refactor something because business says so; you have to make your app comply with some shitty legacy standard because business wants to have your software work with some stuff from 20 years ago - and so on, the list is basically endless.

Don't get me wrong, developers (myself included) are probably more than enough at fault themselves, but if 'creating software' was only about making nice, clean, awesome code that really does what it's supposed to do, devs in general would probably make a better work out of it compared to what is happening in the real world - where non-dev people also have a say in what/how you create software.


for example try to find a symbol and it pops up a modal dialog

Which one is that? Ctrl-T ('Go To All') isn't modal. And it goes to symbols only by prefixing the search with #. So it might be a better fit than whatever you're using?


I did wonder - perhaps it is "Find in Files"? (Ctril-Shift-F).


Do you write bug-free code?


Hey there! The point I was trying to make in the first place was "must it really be so hard to make systems that work?" but I'm afraid it got a little lost) Should try better next time


I see these issues everywhere also, it is really worrying. Especially since our entire food and supply chain is starting to depend on it.


There is no money to be made in making systems more robust, not until problem really arises. This worries me great deal.


> There is no money to be made in making systems more robust, not until problem really arises. This worries me great deal.

You say that but big companies like Amazon can calculate how much money they're missing per second of their services not being available, or how shaving off x milliseconds off of each request reduced their cost by millions per day. They also advertise with their uptime guarantees to haul in big contracts.


Amazon won't commit to uptime beyond refunding you any charges when they're down. This is insufficient for critical infrastructure.

Disclaimer: I am in risk management for financial infrastructure.


Is there a reason they have to be "more robust"?

Lest, e.g. some Amazon deliveries don't come in 1 day but take a week?

Or some employee doing some BS job can't use Gmail for a couple of days?


Yes, in some cases.

Like thermostats. I've read about Nest thermostat crash on loss of Internet connection which result in dangerous temperature loss in infants room. We can make those thinks more robust for years, but it does not have an app and does not make so much money.

Food supply was original comment. Most people do not have food for week. (I compare it to always stocked pantry of my grandparents). Any small - one week - disruption can result in big problems for some.

But we are moving to hi-tech just in time system everywhere, which are dependent on Internet, GPS, advanced forecasting etc. Those systems can be for example hacked and not functional for days.

I don't care about Amazon delivery being late.


I've never seen a Nest that worked the way it was supposed to. The last time I took a look at the one in the office, it had a bizarre set of temperature set-points bouncing around up and down 20-30 degrees F every 5-7 minutes. I have no idea how it got into that state, but it's no wonder that it doesn't work worth a shit. We've also had issues where it was linked to a cellphone app, and got incredibly confused when that cellphone went on vacation to a different timezone...

The best thing to do with them, and most of this other godawful "smart" home tech is to rip it out, smash it with a hammer, and put back the cheap analog versions you had in originally.


It tries to detect when you are home/out and adapt the temperature settings. Only when it's in ECO mode will it not change the settings.


Looking for a Wifi connection will drain the Nest's battery faster than it can recharge. It trickle charges from the "power on" thermostat lines.

But mine has not outright crashed when its Internet connection was interrupted.


The dangerous temperature loss from a Nest thermostat crash sounds like hyperbole.



That's what I mean, 64 degrees isn't the end of the world. And for the few hours of the night an infant sleeps, it's the same issue as if the power/gas were to go out.


How about in Arizona where it is 120. Too hot could kill someone easily.


A power outage results in the same thing. Someone so incapacitated that they can't move from a place that's getting too hot (such as a baby or the infirm) aren't probably left alone for long enough for the temp to reach extremes in the first place, and if they are, then that's the actual "dangerous" problem, not the thermostat.

I'm disagreeing with, or pointing out, the incorrect use of the word "dangerous" in order to get clicks for an article.


It may sound like hyperbole, but there are contemporaneous reports of real people noticing their rooms were rather cold despite their settings.


That might be, but I wouldn't use the word "dangerous" to describe the effects of a thermostat not working. It's the same as when the power goes out. Obviously, no one is leaving their baby alone for hours and hours and hours while the temp actually gets to freezing level such that it would harm the baby, so what is so dangerous about it?

I can see the harm in frozen pipes and whatnot, but you take the same risk when dealing with other systems, such as other thermostats or power or the furnace itself. However, if it is known that Nest devices fail when the internet fails, then that is Nest's responsibility to advertise that to users.


> Or some employee doing some BS job can't use Gmail for a couple of days?

I'll grant you Amazon, but turn off GMail for a couple of days, and you'd dip the economy. A great many of small but essential companies - from car workshops to paint shops to furniture makers to retail and wholesale shops - run their business on personal GMail accounts. Losing access to primary e-mail for a week may very well be an existential threat for them. One which they don't realize, because GMail is generally reliable.


Supermarket perishables are the classic example of things that have to be delivered within a very short time. Earlier this year there was no fresh milk, bread, veg or meat in my local (urban!) supermarket for a few days after some snow.


>Supermarket perishables are the classic example of things that have to be delivered within a very short time.

Yeah, but we've managed that in the 60s and 80s without so much as the web. Trucks are still needed of course.


But that doesn't imply that the computer system can fail over to paper overnight, or that it's cheap to do so.


Just anecdata, but 2 years ago Amazon incorrectly shipped me a 90lb granite surface plate instead of a 1lb set of calipers. Return shipping was ludicrous enough that customer service offered a ~90% discount if I elected to purchase it. So a software snafu (because I doubt a warehouse worker would ship an item that heavy out of laziness) cost them significant money, and extrapolate that cost by the number of orders daily: a serious glitch could run to millions of dollars in short order, and have long-term loss of trust issues for the business.


Except the failure mode for Amazon shipping software (in this example) is equally or more likely to be the item is never shipped or a completely different item is shipped, rather than the correct item being delayed. The latter two are more difficult to deal with. Also, even in the delay case, more people are depending on Amazon for items they truly need, like groceries. Delays can matter.


Luckily, there's no giant central food-supply IT system, which makes the food supply as a whole fairly fault-tolerant.

If there's anything that could make the software better, it has to be an economical incentive. Learning to build reliable real-world systems that rely on faulty software (you might call it IRL erlang) would be great, too.


I see these issues everywhere also

I know you probably mean this for software, but it's not limited to just that, and it's as ancient as humans are (or animals, to take it further, they make mistakes as well from time to time). I mean, instead of booking.com messing up (or whatever it was) I've already arrived at a hotel once just to find out there was no trace of my booking. Someone lost the paper or forgot to write it down or so. Turning the human off an on again, a.k.a sleep, also helps with this from time to time and makes it a nasty hard to reproduce bug. And hard to fix as well. I get the analogy only holds - usually - when it's not about bugs which are reproducible time and time again. But on the other hand those are usually easier to discover and fix so maybe less of a problem. tldr; not sure how worrying it is.


Some designer wrote (Russian, of course, we're all into this stuff) something along the lines of "If you feel an area is great — you're just not familiar with it". Tried not to get carried out there, I'm already sad enough)

I guess (hope) avionic / nuclear software is generally of higher quality, but must it really be so hard and expensive to develop well?


Yes! That's the issue. Good, robust development takes time. You can estimate the number of flaws in a product by the amount of time it takes to find one - if this is measured in minutes, your product likely has thousands of errors.

Actual, robust software takes thousands of hours of TESTING, nevermind development. Multiple vendor cycles. Field studies. User observation to limit system error.

And unfortunately (if you're not a programmer) programmers are very, very expensive, but most software must be very cheap. So unless you're at the largest scale, your software is likely crap or very expensive, because the market won't support anything else.


I had a similar face palm recently using Chase online banking. I was exporting a csv of transactions from a business credit card. They didn’t escape the business name colum, so any name with a comma caused the total column to push over. Was pretty funny for an xx billion dollar bank. I typically use the Plaid API but was testing a manual download.


I see that often in smaller hotels: they sell rooms in several online systems, then reconcile it all in a copybook.

Personally, I had interesting booking.com situations too. Like, I arrive to a booked apartment, dial the password, the door opens, I see lots of Chinese people who arrived just before me. 2am.


Just done my first six months traveling (in SE Asia) while working remotely: a new hotel every 3-5 days, 80% of the time through booking.com (or agoda and then via booking.com).

Haven't had a single problem yet. Not a single one. I'm not saying it doesn't happen, but...

...I suspect the hotels are declining your business and using "bad software" as an excuse. For this to happen twice in a row is definitely suspect.

Which makes me wonder how many other things that we blame on bad software, are actually socially caused?


I wonder whether this is really just a problem of bad software. The hotel booking for example: yes, the software was probably bad, but, a well designed process where both parties need to confirm the reservation (eg per email) could have made that experience better.

Interestingly, there’s curently another article trending describing the concept of Poka-yoke [1]

[1] https://news.ycombinator.com/item?id=18050168


In the hotel example, it's the lack of a modern, open, integrated reservation system. It's all 20+ year old systems patched together to try and work with one another, that don't necessarily have any idea what inventory at the hotel actually is unless it's part of a big organization like Marriott/Hilton/IHG/Wyndham/Choice/etc.

When a hotel doesn't have a 24/7 online system like the above companies, booking.com simply relies on the hotel to update their inventory on booking.com's system manually, and then faxes the hotel everytime a reservation comes through. The fax can fail, and so can the minimum wage employees who may or may not be tasked with updating booking.com's systems.

Bottom line is always confirm, and re-confirm when the consequences are great enough to warrant spending time re-confirming. And especially try to deal with the vendor directly, onsite especially. If you make a reservation at a hotel that doesn't have an app that shows your reservation in real time, then call and get the email address of someone who actually works on site, and then email them to confirm your reservation, and so you have something in writing from someone at the hotel.


Yup; it's fine to use booking.com to search and compare hotels, but it's often better to deal with the hotel you picked directly.

Some of them will refer you right back to booking.com though if you want to book online, in which case it's probably fine and the hotel uses booking.com directly. Or booking.com sends them a fax or email.


I've learnt it the hard way) People, this is the useful tip of the day ^^


Related, I've learned over the years to not trust documents (including websites) where it matters. That means yes, I'm going to read what you wrote on your website or in the documents you sent me, and then I'm going to mail you asking about it directly. Because I don't trust documents to be correct, up to date, or even relevant (in spaces I have little experience in). But if I can get a person on your end to write me back with an explicit answer, I can be reasonably sure it's correct in context, and - most importantly - I have someone to blame if it turns out to be wrong.


Yes, I agree. That’s why a fail-safe procedure (like the one you’ve outlined) would have helped in this case.


I always wondered how booking.com knows how many rooms are left. Thanks for the info.


The "only x rooms left" notices are also BS, even if they're dealing with the big hotel chains. And even when dealing with those, there are frequent inventory discrepancies due to how long it takes for the systems to communicate with each other, so best option in my opinion is to always use the official hotel channels. It's also cheaper if you're a member of their frequent guest programs, which is free.


I don't know this for a fact, but I always assumed that it was just to create a false sense of urgency around your booking.


You as a hotel operator can use booking.com's software to manage your entire inventory. Thus they know how many rooms are available. This is common in small guesthouses and hotels - but obviously not in larger hotel chains.


> a well designed process where both parties need to confirm the reservation (eg per email) could have made that experience better.

I just confirmed the booking by paying. I shouldn't have my booking cancelled because I didn't respond to an email. We can do better than that.


Totally. But wouldn’t you say that an email is better than standing empty handed in the hotel lobby?


Fun story: there's actually an overbooking margin most hotels have for their inventory, especially for third-party providers, probably because there's usually at least some no-shows, and maximizing occupancy for each night is the highest priority.


I see this kind of story very often. Friends and family that have terrible experiences with famous tech companies. I find it awkward that I, in particular, never had trouble like this before.

Maybe, as others had already mentioned, I ignore them because of all the overwhelming times that software worked amazingly well for me.


Or you ignore it because you're a dev, so you've internalized the general patterns such systems follow, and know where not to prod them. If a small problem happens, you probably deal with it on the spot, without even consciously noticing it. Non-tech-savvy people use computers differently, and are much more prone to being confused in cases of unexpected failures.


Do you have any example of that different usage? I can't come up with one


Who the fuck writes a blog in monospaced font. This is an abomination on web design :-)


I actually didn't notice until I read your comment. Seems fine enough to me :p


Ironically, the "about" and "projects" links on his blog are broken (which I guess has been generated by a static site generator).


Fair enough) But note that these links do not interfere the basic functionality of writing and reading blog posts, which I was going for above all.

Anyways, I've just fixed it (might take some times until the cache expires, don't bash me over again ;-), thanks for the reminder!


A tangential question: does Russian keyboard have the ")" character next to ".", or something? I see you and 'amaccuish making comments in this thread with the ")" char in place where a period should go.


Oh, if you don't put that friendliness indicator after a sentence, people assume you're talking aggressively.


I didn't know until now that this is the Russian equivalent of ":)".


it's their version of a smily face


Oh. Thanks, I learned something today.


Might have something to do with the fact its gh-pages


Which uses one of the most complicated static site generators out there... as in a blog which was valid one day wouldn't "compile" the next. It's just bloody markdown; how unnecessarily complicated is a system that can't compile markdown from one release to the next?


Why no, github-pages does not enforce Jekyll! You can just put a bunch of HTML there. I use hexo, which I like. I could also write HTML by hand or generate directly from markdown.

The default Jekyll setup does indeed rely on some implicit theming, which is not very convenient.


Which has nothing to do with how terrible their static site generation tooling is. "You can bypass it" isn't a convincing argument that it's any good.


I wouldn't even call it a bypass — it's there as a safety net for people who just dump a bunch of markdowns into the repo and expect it to work somehow — it does work somehow.


> You can just put a bunch of HTML there

If I were to already have the artifact files locally I wouldn't commit them in git and push to GitHub, I'd upload them straight to S3/Neocities/whatever. The whole point of Pages is to push some source material and have some CI/CD do the build and deploy.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: