Live data from Hacker News

Everything's broken and nobody's upset

hanselman.com

41–50 of 418 posts

Re: Everything's broken and nobody's upset

#41
post #28

I completely relate to that feeling. This has led me to use less of everything over time. One day I realized this, that I was in fact applying the KISS principle to my life. Fewer apps + fewer features + fewer gadgets = fewer bugs irritating my day-to-day life. Examples: My desktop environment on my laptop is Linux with, 99% of the time, just a bunch of xterms and a browser (without extensions... they tend to crash b…

Ten years ago everybody enthusiastically installed every piece of shareware (windows) or open source (linux) software they could lay their hands on. There were a whole lot of portals devised to desktop software.

People's desktops had all kinds of weird hacks in it, tweaking every imaginable bit of appearance, user experience and features.

But I think we all came to conclusion that it does not pay off. Yes, your 3rd party file manager is much more powerful but does installing it on every of your PCs in life pay off? It does not.

The whole experience becomes much more generic and throwaway. Yes, I tune some programs, but I'm ready to leave the whole setup at any moment and start with a blank screen again - and I actually have to do that every 2-3 years.

No longer I use dozens of programs and have 5 DEs installed but just a few and exactly one.

Re: Everything's broken and nobody's upset

#42
We need public open bug tracking. For everything.

No more "put your bug in here, trust us, we'll fix it". They won't. They'll say you're the only one with the problem. Everyone will be so uninspired they won't report bugs.

Re: Everything's broken and nobody's upset

#43
post #28

I completely relate to that feeling. This has led me to use less of everything over time. One day I realized this, that I was in fact applying the KISS principle to my life. Fewer apps + fewer features + fewer gadgets = fewer bugs irritating my day-to-day life. Examples: My desktop environment on my laptop is Linux with, 99% of the time, just a bunch of xterms and a browser (without extensions... they tend to crash b…

So basically, as he says, to the question "Doctor, it hurts when I do that" your answer is "Don't do that".

It's a perfectly legitimate position, but it's not really helping progress, is it?

Re: Everything's broken and nobody's upset

#44
post #20

Does this mean that there is a room for a brand in which "everything just works"? Or would that so feature-poor/expensive/slow-moving/low-status that no-one would use it?

I thought it was supposed to be Apple ?

Depending on who you ask, Apple stopped being that company a few years back.

They will answer Mobile Me, iTunes, Snow Leopard, iCloud, Genius, Ping, iPhones unable to call or any other thing which at some point was delivered in such a shoddy state that it was hard to keep believing Apple was any different than the other tech companies.

Anyway, this is not another Steve Jobs is dead, Apple is going to heck-post. The decay began a long time before that.

Re: Everything's broken and nobody's upset

#45
post #42

We need public open bug tracking. For everything. No more "put your bug in here, trust us, we'll fix it". They won't. They'll say you're the only one with the problem. Everyone will be so uninspired they won't report bugs.

Well, you could use Linux if you really care for open bug tracking...

Re: Everything's broken and nobody's upset

#46
post #43
post #28

I completely relate to that feeling. This has led me to use less of everything over time. One day I realized this, that I was in fact applying the KISS principle to my life. Fewer apps + fewer features + fewer gadgets = fewer bugs irritating my day-to-day life. Examples: My desktop environment on my laptop is Linux with, 99% of the time, just a bunch of xterms and a browser (without extensions... they tend to crash b…

So basically, as he says, to the question "Doctor, it hurts when I do that" your answer is "Don't do that". It's a perfectly legitimate position, but it's not really helping progress, is it?

My position is the ultimate market-deciding capitalist answer: I don't buy broken products.

Re: Everything's broken and nobody's upset

#47
post #45
post #42

We need public open bug tracking. For everything. No more "put your bug in here, trust us, we'll fix it". They won't. They'll say you're the only one with the problem. Everyone will be so uninspired they won't report bugs.

Well, you could use Linux if you really care for open bug tracking...

That makes no sense. What if I find a generic hardware problem with my laptop? or a general problem with my apartment complex?

If I have a problem on a Mac, I can report it. I will get no feedback, and maybe the problem will get fixed. If it does get fixed, I will get no information about if my bug report led to the fix: the feedback loop is missing - there is no incentive to report a bug.

Re: Everything's broken and nobody's upset

#49
As a user of software, I get similarly frustrated as the author. ("user" here includes use of third-party libraries to build on) However, developing system-level software, I've come to realise that even if you really, really care about the quality of your software, you can still be bitten by statistics.

Basically, developing error-free software is comparatively easy if your software effectively performs no I/O, that is, it behaves like a program in a computer science paper: read in some data on launch, grind through some computation, emit output, terminate. Barring catastrophic hardware failure of CPU or memory, this is a nicely deterministic programming model. You stand a chance writing correct code.

Throw "real" I/O into the mix, and almost anything can fail in weird ways, and your code has to be prepared for it. Network I/O is guaranteed to fail sooner or later while the developer is using the software. So it usually gets taken into account in some way, usually only distinguishing between "there is no connection" and "there is a connection". There are a myriad of other cases in between that are usually not even considered.

Disk I/O can fail for a variety of reasons. Not just hardware failure; file systems aren't perfect, especially when confronted with power failure, kernel panics, etc. Randomly flipped bits happen. (yes, really)

Not only are there are bugs in the GUI framework you're using, other GUI programs are running at the same time and they can inadvertently interact with your program due to the shared GUI framework use.

Other programs can inadvertently interact with yours in other ways: locked files, claimed sockets, contention for any kind of resource, race conditions, thread/task scheduling - you name it.

Timing bugs are ubiquitous. Everything you do in your program takes >0 time. Maybe on your system, with your data set, it looks like 0. Maybe because it takes slightly less than one video frame's worth of time. On your customer's system, it takes longer. If they click something before your operation has completed, and you haven't anticipated this, your program will fail in weird ways. Where I live, I can't get an internet connection with less than about 80ms latency even to the nearest servers, let alone to North America, where most servers sit (more like 200ms). You wouldn't believe how much software handles this terribly.

The problem is complexity - in many cases, unavoidable complexity, not the accidental complexity us developers keep railing against. Most of these error cases are extremely rare. The thing is, with thousands or millions of people using your software, extremely rare bugs suddenly become a very frequent occurrence!

Yet the tools for dealing with this kind of thing are somewhere between terrible and non-existent. There are some tools for simulating difficult network conditions; those are comparatively easy to make. I'm not aware of similar software that simulates OS API call failures. Or a "file system from hell" that wreaks havoc with your file I/O. Fuzzing a program in such a way would likely uncover countless bugs. valgrind and its myriad of plugins are great, but as developers we almost certainly under-use it.

Developing such tools is obviously expensive, and even they won't catch all bugs. But I'm pretty sure they could reduce the probability of running into bugs by a few orders of magnitude.

Don't even get me started on how programming languages don't help you handle error conditions or timing problems even if you try.

Re: Everything's broken and nobody's upset

#50
post #38

Earlier quoted context omitted.

So, your amazing feat of engineering car, with automatic transmission, ABS, a GPS, incredible fuel efficiency etc. stops in the middle of the highway sometimes. Your incredible display, which somehow manages to use liquid crystals to display beautiful 1080 HD video develops a jitter and bright line down the middle after a month. The machine gun which lets you launch tiny projectiles at speeds high enough to kill a pe…

> Yes, the technology is incredibly complex and represents a huge transformation in the way we do things, but a customer doesn't and shouldn't need to understand that, and certainly shouldn't be offered the complexity as an excuse for it not working correctly. In some ideal world, where you can have things with MILLIONS of moving parts and TRILLIONS of states, designed by mere mortals and still have them be faultless…

My argument is not that consumer products should be perfect; it is that when consumers see deficiencies in them which could reasonably be fixed, they have every right to complain. In fact, they should complain because it will help make things better.
Post reply on HN