
Everything's broken and nobody's upset - axefrog
http://www.hanselman.com/blog/EverythingsBrokenAndNobodysUpset.aspx
======
cstross
Reading his laundry-list of paper cuts, it looks like many of them (around
50%?) relate to one particular issue: synchronisation. It keeps coming up,
time and again, from his email woes (seriously, folks, didn't we solve this
one back in 1980?) through to the borked address books, contact lists, and
photo streams.

Sync software usually takes a conservative approach to deleting or merging
records, and leaves duplicates lying around rather than risking deletion of
vital user data. This is a _good_ thing. What's _bad_ is that the tools for
housekeeping -- merging and deleting duplicates -- are generally rubbish. (I
have the same problem with my phone's address book: masses of duplicates due
to sync processes that conserve stuff. And trying to get rid of them using the
tools provided turns out to be a tedious pain in the neck, requiring multiple
mouse-clicks or focus changes per record.)

Further down the list we get into identity management issues. Nobody seems to
have a really good handle on how we manage identity across multiple machines,
much less how we manage esoteric stuff like family relations for delegating
access to photos or music purchases or whatever.

~~~
zdw
I'm going to take an even harder line:

Sync is a fundamentally broken.

The only solution is to switch to technologies where merging data is a primary
core feature. Thus why I use text files and git to manage the vast majority of
my data.

The sooner people realize that sync isn't fixable (or a good idea in many
cases), the sooner real solutions appear.

~~~
nradov
Synchronization in IBM Lotus Notes/Domino has worked quite well for 20+ years,
so obviously sync is not fundamentally broken. More likely we've just failed
to learn from history.

~~~
zdw
I'd love to know if the Notes sync method is documented somewhere. I don't
doubt that there are some good implementations, but...

Does it do offline sync with multiple users whose changes may have different
priority?

How about if time isn't set properly between multiple devices?

How about a multi-way modify/delete/rename where two records are given
identical keys on more than one system, then both systems are reconciled?

I really need to write up a "Sync Gauntlet of Pain" that shows how sync
implementations are incapable of making correct decisions, as they just don't
have enough information, and giving them more information may not help.

~~~
nradov
[http://www.ibm.com/developerworks/lotus/library/ls-
Domino_Re...](http://www.ibm.com/developerworks/lotus/library/ls-
Domino_Replication/)
[http://www-12.lotus.com/ldd/doc/tools/c/8.5.2/api852ug.nsf/8...](http://www-12.lotus.com/ldd/doc/tools/c/8.5.2/api852ug.nsf/85255d56004d2bfd85255b1800631684/00d000c1005800c985255e0e00726863?OpenDocument)

Yes it does offline sync with multiple users. Changes aren't prioritized but
you can configure what it does with conflicts (merge if possible, discard, or
leave the conflict).

Time synchronization between multiple devices has been a solved problem for
years. Not worth worrying about.

Creation of identical record keys — while theoretically possible — really
never occurs in practice.

~~~
zdw
Cool, thanks for the links!

This looks like a really good system, and far more transparent in how it works
vs. the "Black box" approach most systems use.

------
edw519
My sentiments exactly. I got so tired of being upset with the horrendous human
design in modern technology that I took action. What I've done:

    
    
      - Buy 2 $350 laptops every year. Move all data. Give away old ones.
      - All contacts in one .txt document.
      - Memorize most frequently used contacts.
      - No smart phone.
      - No tablet.
      - No Kindle.
      - No palm pilot.
      - No Facebook.
      - New car ('12 Hyandai) with minimal technology.
      - Wash dishes by hand. (Fuck the 48 buttons on the dishwasher.)
      - Use Firefox.
      - Use dedicated Casio camera with USB interface.
    

I _love_ modern technology that adds real value.

I don't use any modern technology that replaces perfectly good methods with
something unnecessary just because everyone else is doing it.

~~~
jmduke
Two things in particular I'll attack here:

> \- No Kindle

You're definitely not alone in this -- a lot of my friends still prefer hard
copies over eBooks -- but as someone used to literally lugging three-four
textbooks to class, plus periodicals, plus personal reading, there's a clear
and definitive value add from the Kindle. (That being said, just because you
don't have a Kindle doesn't mean you don't, say, read eBooks on your laptop.)

> \- No Facebook

There's a huge meme of 'Facebook is worthless' both on HN and on Reddit and
other tech-oriented communities that I fail to grasp. There's no other site
where I can talk and keep up with my grandparents, my college roommate, and my
girlfriend simultaneously.

~~~
nullc
> There's no other site where I can talk and keep up with my grandparents, my
> college roommate, and my girlfriend simultaneously.

'Necrophiliac bestiality, of course! How else am I to screw my food while I
eat it?'

If these people mean something to you, then you should be able to find the
time to have adequate direct person to person communication with them instead
of broadcasting to them and your closest 600 best buds. If they don't— then
why care?

I certainly believe that you find Facebook useful, but don't overstate it.
People have had friendships long before there was a friend button.

~~~
scott_s
There is more to Facebook than the friend-feed (the broadcast mechanism).
Person-to-person communication is mostly what I use it for; it has replaced
email and IM for many people.

~~~
thebigshane
What does Facebook's person-to-person communication offer beyond email and IM?
(Honest question)

No doubt it indeed _has_ replaced email and IM for some people, but I would
think it is just because "well, everyone else is on facebook so I'll just use
that too"...

~~~
lotharbot
Facebook is my primary messaging system.

It's better than e-mail because I don't have to sift through spam in my
private message box. I don't even have to sift through messages from companies
that I technically have a business relationship with. I only get actual
personal contacts.

It's better than various forms of IM software because (1) most of my relatives
actually use it and (2) it's in the browser rather than a standalone client.

Of course, YMMV.

~~~
gknoy
Agreed. I hate using Facebook, as I nearly never feel like posting anything,
but it's nice to be able to say, "I wonder what ___ is doing", and then see
their feed, or see some vacation photos, and not have to actually bother them
and interrupt their day. With young kids, time is precious and often not at
times which are convenient for socialization. :)

------
mrb
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
browsers).

I installed exactly 4 Android apps on my phone (after flashing it to
cyanogenmod to get rid of the bloatware): gmaps, youtube, barecode scanner
app, some app to write notes on the home screen (NotesWidget). Everything else
sucks and is a waste of my time. But even the dead-simple NotesWidget app
author managed to mess it up with enough bugs that I am considering writing my
own(!) I have tried at least a dozen other notes-taking application and am not
satisfied with any of them.

I don't maintain a music library. Sync'ing music across multiple PCs, phones,
other devices, etc, suck. Personal libraries "in the cloud" don't work because
I am not always online. I just listen to satellite radio in my car.

I own no TV, no game console, no tablet.

And yet, I am a tech enthusiast. I accept a little "complexity" where it makes
me happy: I program GPUs/FPGAs, I have a home theater set-up at home, I
maintain my own website/blog on colocated servers, etc.

~~~
guard-of-terra
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.

~~~
icebraining
With package managers and text-based configuration, setting up my system from
scratch takes 5 minutes of manual time (and some more unattended).

I just keep a git repository that contains my dotfiles, /etc and the output of
'dpkg --get-selections'.

~~~
guard-of-terra
In five years most of your config files will confuse then-recent programs.
Then you will perhaps discard some.

~~~
icebraining
Not really. Programs don't tend to read the configuration files of others, and
they don't tend to change their own configuration files that much either.
Since I started using Debian, six years ago, I probably had to modify three or
four files and maybe delete a few more. Time that is more than paid off by the
time savings of some of these configurations.

------
momotomo
Very much relate to this. Some days, especially in the corporate environment
where I work, I genuinely wonder if we are missing the point completely with
all the innovation and advancements in OS' and software instead of focussing
on cleaning up what is already there. It always feels like there's more time
spent developing all of this than there is dogfooding it.

One thing to add to the gripes re iOS - I've found that it works beautifully
when it does, and horribly when it doesn't. His point on notification clearing
reminded me of the Mail app when you have connection failures: I had 5
accounts tied into it, and when the networking failed it would throw 2 modal
dialogues for each account. The amount of time I spent glued on the spot
hammering away at notifications so I could move on felt staggering after a
while.

I had a glut of other misc. quirks and persistent crashes that cut through the
gloss on the device, this in combination with a string of Windows 7 bad
behaviour (started python development, started hating python development) led
me to switch onto linux (started loving python development) and a droid
handset. Guaranteed they will have just as many warts and bad behaviours, but
it feels more reasonable because I'm expecting them, and on linux, have an
opportunity to fix them.

There's two aspects to being a "power user" (not entirely but I try) that I
could never take for granted - this capacity to fix things that don't work,
but also the opportunity to work with the more atomic tools. There's nothing
more soothing than stringing commands together, writing a script, or
organising things in a text file or database: mostly because if something
breaks, I broke it, I can see the breakage, I can fix the breakage. Minor
bliss!

Addendum / edit to this to provide context - I think coming from a control
systems background has coloured a lot of my opinions in regards to innovation.
I've seen fistfuls more value delivered (in this field, potentially applicable
to others), by creating small, clean, highly polished, iterative and well
integrated systems as opposed to large, sprawling and constantly
evolving...messes. The sometimes popular fail first / fail fast / iterate like
crazy mantra makes me itch. I've seen successful lean / agile approaches
executed that focus on quick delivery without being so flippant about quality.

~~~
keithpeter
"Guaranteed they will have just as many warts and bad behaviours"

Absolutely!

But you are not alone on Linux, and in the 'everyone sees this' scenario, be
assured someone will be working on it somewhere, or something slightly
similar...

Ubuntu actually run a 'papercuts' bug fixing programme designed to get new
people interested in developing...

~~~
momotomo
It's been an interesting switch, I've found that in terms of what "I do" on a
laptop or device, that hasn't been impacted very much nor inherited a lot of
new papercuts. I have however discovered a bunch of additional functionality
that has been really productive.

A lot of this is spoken as a total newbie to both platforms and someone who
didn't look into them seriously before changing (coming from a long term
Windows 8 / Windows Phone / iPhone background).

Androids intents make it feel much closer to a real operating system in the
way it allows applications to interact with each other (compare chrome browser
integration on android vs iOS). Linux (Mint in this case) feels incredibly low
friction when getting started thanks to apt-get, and a lot of the screw ups
that I lived with in Windows seem to fail more spectacularly on Linux, with
the caveat they can be fixed to the point of being quite polished by digging
into configuration or updating libraries.

Under Windows and iOS it feels like you start at 80% working and finish at 80%
working. With linux and derivatives it feels more like starting at 65% and
being able to tune your way up to 90%. Prefer the latter at the moment.

------
yesbabyyes
I've spent most of my career for 15 years as a programmer. Some days I just
want to throw out my computers and phones and never touch them again. Days
when I get overwhelmed by the feeling described in the article.

Every computer environment is layer upon layer of kludges. There is shit all
the way down.

~~~
batista
> _Every computer environment is layer upon layer of kludges. There is shit
> all the way down._

You missed the AMAZING INGENUITY and BRILLIANCE that is also all the way down.

~~~
yesbabyyes
batista, I often find myself nodding in agreement when reading your posts on
HN -- especially when you take a contrarian position.

I do agree with you in this, also -- the hardware and software combination of
a single PC or smartphone is, I guess, among the most complex systems humanity
has built, and in such a short time frame.

While my post was mostly me venting (bad Monday, frustration with
people/clients/spouse/stuff in general), I have to say that I still agree with
Scott. Too often are we putting up with things not working. I use Android,
Gmail and Google Calendar. Yet, when I get a calendar request, it shows up in
the official Gmail client on my Android phone as

    
    
      meeting.ics
      1 KB Text
      VIEW  |  SAVE
    

If I click "view", it opens up in a text editor. This is not helpful at all.
Does nobody at Google ever get a calendar request to their phone? The only way
for me to respond to such a request is either to get to my computer and open
it in web mail, or call back and ask what time the meeting is.

Whenever a family member asked me about something failing in a similar manner,
I used to feel slightly attacked: This is my line of work and major hobby, and
I know that the reason shit fails is, well, shit is _hard_. I would perhaps
try to explain the probable cause and so on, but to what avail? It still
doesn't work.

But now, I rather shrug and say yeah, I know, it sucks. It happens to me too,
all the time. I just get used to it, and deal with it. Isn't that all we can
ever do, after all?

Lately, I've started trying _way_ harder to remove complexity. I constrain
myself on purpose, I get rid of software and file formats, and basically, the
last thing I ever want to do is to add a new piece of software. If I am
convinced I need a new piece of software, it has to be implemented with
minimal change to the rest of the system.

Well, that was a bit of a rant. Anyway, in no way do I mean to disrespect any
of the programmers who built this ingenious, brilliant piece of shit. I feel
for them and, well, the brilliance sometimes shines through. We're still
running the world's financial, communications and distribution systems on
layers of shit.

Don't look down.

~~~
icebraining
"Nobody hates software more than software developers":
[http://www.codinghorror.com/blog/2009/07/nobody-hates-
softwa...](http://www.codinghorror.com/blog/2009/07/nobody-hates-software-
more-than-software-developers.html)

------
greggman
Honestly, there'S just too many things to fix. It's easy to believe with just
a little better management or a little more attention to detail or more XP or
whatever all these problems would go way but the truth is it's just too damn
complicated.

Each of the products mentioned are huge HUGE projects layered on top of
hundreds of other projects. A browser has a various networking stacks
themselves built on OS stacks themselves built on device drivers etc etc. Pick
any part and it's literally counting on millions of lines of code to be
flawless. Interact across the net and now you need the software on all parts
of that network to be flawless as well

Can you name anything with so many parts that just works?

It's possible it could get better but it seems unlikely. Each year the new
stuff is built on top of the old stuff making the hole deeper and deeper as we
go. That's why a 1.6ghz atom with a gig of ram sometimes feels slower than my
Atari 800

~~~
HyprMusic
But his point is that we're spending too much time creating new features, and
adding to the pile of broken layers, rather than focusing on getting each
layer as close to perfect as possible.

~~~
jiggy2011
This is a trade off I guess. The issue is that "the market" is wowed by new
features more than they are by rock solid software. This is because you don't
tend to notice these niggles until you have been using it for a while.

A brand new smartphone or a fresh install of Windows always feels like a well
oiled machine for the first day or so.

Would you rather be using a modern OS like OS X , Win 8 , Ubuntu 12.04 or
would you rather have a rock solid version of Win 95?

------
tomflack
I've been thinking for some years now, I wish everyone would stop implementing
features and perfect the ones that are already there.

Optimise. Improve.

This is why I was so upset at Sparrow throwing in the towel - they
concentrated on one thing, email, and did it better than I'd seen it done
before. By specialising they were able to spend the time to get it right.

~~~
prof_hobart
Can I ask what mobile phone you currently use?

Companies like Nokia made some great phone products that did the one thing
(well, two if you include SMS) remarkably well in small packages, that had
fantastic battery life.

But then the iPhone, and Android, came out and virtually no-one was interested
in the old, reliable phones anymore. They wanted the latest, shiniest gadget
that they could get their hands on, regardless of how good/poor it was at
doing the basic job of making calls.

~~~
Karunamon
Probably because smartphones are now less about "phone" and more about
"communicator". A phone that can only make calls is rightly seen as a huge
anachronism. I daresay that I use my smart"phone" more for the applications I
can run on it than making calls nowadays.

~~~
prof_hobart
But that's the point - people complain that things are getting too complex,
that they don't work all the time, and that they wish companies would focus on
getting the basics right. But then they go out and but the latest products
because the brilliant new features instead.

~~~
tomflack
You're missing the point entirely.

You don't need to abandon a decade's worth of advances to ask that, for
example, the Google IME team all get on the same page (Chinese, English,
Korean and Japanese IMEs all work slightly differently and appear different)
before implementing say... face unlock.

I'm a big fan of single-purpose tools, but if you tried to have EVERYTHING in
your life a single purpose tool, you'd need a shopping trolly to carry it all
around with you.

~~~
prof_hobart
I'm not missing the point at all. Companies are run for profit, and they make
their decisions on what they believe the market wants.

Do you think that the average punter is more likely to buy their next phone
based on new feature like face unlock or because they've fixed an occasional
bug in mail sync?

------
bobsy
This stuff all bugs me. On my 4 year old Mac sometimes app's just won't start.
They bounce once then exit. The only fix is to restart. No idea why. Been
happening for years.

In Firefox on Windows. I write a bad bit of JavaScript and the browser just
freezes and there is nothing I can do apart from ctrl+alt+del. I really don't
know why tab's aren't sand boxed to at least let you exit them.

Photoshop has minor annoyances. If the color picker is open new files don't
open. Been like that for 4 versions.

For some reason Filezilla refuse's to open a directory sometimes and hangs for
about a minute before letting you retry. To speed this up you can press the
disconnect button. Been like this for ages across all my computers..

I have some bugs in my product which are simply too time intensive to fix with
the current schedule of features which I need to implement. If I was running
things these bugs would be cleaned up first but.. sales is running the show
and the next feature will kick start a new promotion and so on. For us at
least, there is too much demand to move forward and not enough developers to
maintain this development speed. This is why bugs creep into the product and
this is why some of the more obscure ones can still be found in the product
30/60/90 day's after being reported.

~~~
pmjordan
_I write a bad bit of JavaScript and the browser just freezes_

This one always gets me. The browser people are (rightly) obsessed with
security, but a simple DoS attack like this has worked for years.

~~~
jiggy2011
Basically this is just the halting problem.

~~~
rand_r
The browser doesn't have to know or care if some javascript on a page is doing
an infinite loop. It's quite possible to sandbox a tab so that it can't take
down the browser, just like an OS sandboxes processes so that one can't take
down the kernel and other processes just from using too much CPU.

~~~
jiggy2011
That is true in that Chrome always seems handle this better than Firefox for
example. I guess it is to do with scheduling the browser UI threads and the JS
threads. Although perhaps there are issues with locks and contention because
there is probably some shared state between the browser UI thread and the JS
engine/DOM on that tab.

Thing is once you start implementing stuff inside the browser to handle these
situations your browser is moving away from being a document reader program
and into the realms of being a full blown OS in it's own right running on top
of another OS with shared state between the two.

That adds a load of complexity on it's own.

~~~
pmjordan
Even without a true sandbox, and with JITed/compiled code, you should be able
to run it on a stack of its own, either a distinct kernel thread or a user
space thread. If the code doesn't call out to event-handling code frequently
enough, a watchdog thread can send it a signal; the signal handler may then
choose to cause the thread to pause execution or reschedule or whatever. It's
not exactly simple, but also not that outlandishly difficult compared to
creating the JIT compiler in the first place! Of course, it depends if you're
merely having to avoid blocking the UI thread or if you're also interested in
preventing runaway CPU usage.

Browsers stopped being document readers well over a decade ago, even if they
seem like one to the user.

~~~
jiggy2011
I don't think it's so much technical difficulty as much as it is that you are
dealing with metrics that are hard to pin down. For example, how frequently
should the UI code be called out to?

I guess that would depend on the speed of the computer it is running on. If
it's a very slow computer then stuff is just going to be slow whatever you do
, doesn't mean it's crashed.

Otherwise you'd end up with a situation where you have to say "sorry , your
computer doesn't meet the minimum requirements to view this webpage".

Also expectations are going to differ depending on the use case. For example
if I load up a huge 1GB spreadsheet I can live with the fact that the
spreadsheet program is going to be unusable for a minute or two while it loads
the data. On the other hand if I click on a link and the page on the other end
has a buggy flash applet or whatever then having my browser suddenly lock up
is way more frustrating.

I suppose part of this stems from the fact that sometimes a browser is a
document reader and sometimes it's an application runtime but there's no way
to tell which it should be for a particular page. You could add a header or
something but that would just get horribly abused.

------
DanielBMarkham
As modern life becomes more complex -- and that's both complex in terms of
both computers and social/government structures -- we are swimming in edge
cases.

When you used to interact with 4 or 5 complex systems every day, it was a rare
thing when one was whacked. System designers got things working 90-95% of the
time and the rest of it wasn't worth chasing down. But now that we're
interacting with hundreds of complex systems each day, we're constantly
running into oddball situations where things frustrate us.

Worse still is what I call an "edge case tsunami" where multiple oddball
situations combine to create a PITA or disaster much worse than any one of
them would individually.

It's an interesting problem. We can't make everything perfect to a 99.999%
accuracy. The economics simply don't work out.

To edw519's point, I think the way to go is to toss out the general purpose
computer. Have a device for books, a device for music, a device for
programming, a device for surfing, and so on. Not only does this decrease the
possibility of a cascade, it also allows us to physically separate our
technology habits.

~~~
jiggy2011
Problem is that you probably can't use each of these devices in complete
isolation. For example you want to browse to the web app you are developing
and run a debugger inside the browser. You're certainly going to want to copy
and paste stuff between them. You also probably want to display it all to one
or two outputs rather than having 5 screens in front of you all the time.

So you're back to the tricky problem of syncing state between them.

------
creativityhurts
Yes, we all can relate to that posts and everyone I know complains about
software mentioned there, such as Skype, iTunes, Chrome, I might even add the
fact that if you have 3 synced Apple devices near you a reminder pops on each
one of them at the same time which shouldn't be so hard to avoid given that
they're all connected to the same wifi. We live in this cloudy era, everyone
speaks of clouds and sync and data everywhere but synchronization is the most
broken thing of them all.

There are a lot of silly problems with the software and hardware that we use
everyday and most of these problems are noticed by us, the power users. It's
like with the Twitter-ad-supported saga: the power users bitch about it, look
for alternatives but the regular Joe sticks with it and he's very happy. I
know a lot of people who don't see any problems with Skype or Outlook and are
very happy with them.

Today I was at the bank and the clerk wanted to print something and I had to
literally wait there 20 minutes because the Adobe Reader was updating and some
guy from IT was logged in remotely to make sure everything went fine with the
update. She apologized telling me that "you know how it is with these computer
programs nowdays" and that she was very happy with the old setup. I chuckled
and thought of that Adobe Reader update meme[1] but deep inside I wept.

[1] <http://t.qkme.me/3qk2v4.jpg>

------
lnanek2
Doesn't Facebook say move fast and break things?

I know, personally, I have an Android app that gets about 12k new users a
month, and I see exceptions reported all the time that I can't reproduce from
the buggy as hell WebView, web content control, in Android. Especially when
used with AdMob/Google ads, so much so that I use other advertisers instead. I
could spend a week copying the source code for WebView into my app and fixing
all the bugs if I'm lucky, it may use some private things I preventing it from
being copied or something. I know it has threads and databases and all sorts
of bizarre stuff. But still that would help like just a tiny, small percentage
of the actual users. I'll get far more users working on something that applies
to everyone like better graphics or multiplayer play, etc..

I did spend all weekend filing hideously long bug reports with sample code at
work, though. So once you are talking about millions of users, it can make
more sense, I guess. Which I suppose is where someone from Microsoft is coming
from. They are famous for supporting even old bugs in their software for
things like SimCity so it wouldn't break across upgrades.

~~~
jiggy2011
I guess the Simcity example was from _years_ ago. I don't know whether or not
culture has changed it that time.

This was also a time when there were comparatively less apps and games
available on the PC, or at least ones that were widely used. So it was
probably practical for them to test their new OS with just about everything on
the market.

Now, however there's no way in hell it's possible from MS to go through and
test everything that every ISV produces with Windows 8 for example.

------
nodata
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.

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

~~~
nodata
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.

~~~
Tichy
Then don't use a Mac. With your appartment complex, I assume you'll receive
feedback from the owner or eventually you'll move to a more responsive place.

Open source hardware is a problem, agreed - I hope in the future there will be
more of it available. Even open source houses, why not. If there is an open
source plan for a house, maybe there will be a community fixing common
problems with it.

~~~
nodata
> Then don't use a Mac.

Your solution to the dead-end of reporting bugs to Apple, is to recommend that
I don't use a Mac?

No, the solution is that Apple open their bug reporting up.

~~~
Tichy
They don't seem to want to do that. Now what?

~~~
nodata
Get lots of technical people who want good bug reporting to want open bug
tracking.

~~~
nathan_long
Or maybe better: create a tool for filing bugs with Apple which _also_ files
them in an open database. Make the tool super nice to use, the bugs super easy
to browse and search (as in SEO), and market the heck out of it.

If it gets enough attention, Apple will have to care.

~~~
jpoehls
I ran across Open Radar (<http://www.openradar.me>) the other day. It doesn't
file the bug with Apple for you but it does provide the open database.

------
HyprMusic
This is one of the things that really upsets me. I hate how nothing ever
works. We spend our money on things that don't do as they say, or companies
that don't do as they should. I guess it's inherit a problem with a profit
driven world where more features will always trump actually working.

~~~
batista
> _This is one of the things that really upsets me. I hate how nothing ever
> works._

And somehow you left a comment, using an OS and a browser, on a international
network, that put it up so everybody in the world can read it, and I read it
in a totally different country.

All totally unimaginable for the common folk just 20 years ago.

And all that with huge color flat monitors, optical mice, mp3s playing in the
background, wireless networking, and tons of other stuff going on at the same
time. Heck, you might just left the comment from your mobile phone, or I might
just read it in mine.

How's that for "nothing ever working"?

~~~
Wilya
I'm leaving this comment from a computer that might crash on me sometime
today. Or could decide to reboot to install its updates when I'm looking
somewhere else. I'm leaving this comment on a site which technically could
have existed 10 years ago.

Wireless is working right now, that's great. It might stop working sometime
today. Things like that tend to happen, on every network more complicated than
"I'm sitting two meters away from my home router".

That might have been unimaginable 20 years ago, but somehow, things are about
as unreliable as they were 10 years ago.

(I have to admit, optical mice and huge screens are nice, though. But
expensive hardware with a single precise objective tends to be reliable,
compared to software).

~~~
batista
> _That might have been unimaginable 20 years ago, but somehow, things are
> about as unreliable as they were 10 years ago._

10-12 years ago:

1) Windows was Windows ME (not even in the same league as Windows 7)

2) OS X was 10.1 (or before that). Most people still used OS 9.

3) Linux was not quite ready for heavy enterprise use or home use, had worse
memory management, filesystem, window managers, desktop environments, drivers
and userland.

So, "about as unreliable"? I beg to differ...

------
delinka
"No one from the company believes..."

1) I've been on the non-believing end. You think "how could this possibly
happen?" and without standing over the user's shoulder and watching them
click/tap around, it's inconceivable that the problem exists.

2) I'm sure there's a problem, and you've provided me the screenshot showing
the result that indicates a problem, but I can't reproduce it. Usually because
the user doesn't know how to explain reproducing the problem.

I really think both of these have to do with people's lack of detailed logical
analysis. I get it, you're the bank teller and your job is to count the money
and count it correctly, not to analyze pixels on the screen. I see this as a
failure of developers and designers to create systems that don't have these
headaches.

tl;dr - I agree with the author's final three bullet points, but I can see
where the tech[nician|nologist] involved doesn't have nearly enough
information to solve (or even to see) the problems.

------
luu
The blurb on the sidebar proclaims Scott's MS experience. It's surprising to
see someone with a Microsoft background making this complaint. MS spends more
effort than any software company on testing, not only in just plain hiring
lots of testers, but also on formal methods. They have some of the top formal
methods people in the world doing research for them, and armies of people
trying to put that research into practice. Making stuff work is hard, and I'd
expect someone who worked for Microsoft to know that.

I work for a hardware company. Bugs are really, really, bad. If we find a
hardware bug in real silicon, at best, we catch it the moment we get the first
chip back, and it means that we have a multiple month delay as we fix it and
tape out a new chip, not to mention the cost of throwing away all of the
partially fabbed chips we've got, plus the multiple million dollar cost of a
new mask set. At worst, we have a recall [1]. We take testing very seriously,
and we do a lot more formal verification than most software companies.

The only things you can be sure about are things that have been formally
verified [2], and the list of things that you can formally verify is tiny. We
formally verified our adder. It took months. Then we did the multiplier, which
was much harder. It took about the same amount of time because of the
experience we gained doing the adder, but it wasn't easy. Division took a lot
longer, even with the experience of doing addition and multiplication. To
think that we can advance the state of the art of "things that work" from
something like a multiplier to a complex piece of software with "care" and our
"collective will" seems overly optimistic.

Everything's going to be broken for the foreseeable future. Putting more
effort into testing and less into features is a difference in degree, not in
kind. It won't even prevent articles like this from being written because, if
all you want to do is find ten bugs in all the software you use, that's still
going to be trivial. Considering how much progress has been made in formal
methods since 1970, I expect that finding 10 annoying bugs in all of the
software I use will be trivial for my entire lifetime.

[1] Well, you don't have to do a recall. AMD had a hardware bug that could be
fixed by a patch that degraded performance by 10%. Sun famously didn't include
ECC in their L2 cache, which resulted in transient failures for a number of
customers, and they made customers sign an NDA before replacing their parts.
Guess how much people trusted AMD and Sun afterwards?

[2] Even then, you're never really sure. How do you know the formal
verification process itself isn't buggy? It's turtles all the way down. I know
some folks who were trying to build a formally verified OS, and they stopped
using ACL2 after discovering a few bugs in it. After all, how can you trust
your proof if the proof system itself has bugs? ACL2 is old and crusty, but
that's precisely why it's used for more hardware FV than everything else
combined, outside of Intel and IBM (both of whom have their own, excellent,
internal tools). It's old enough to have great libraries. There are newer
systems that have better architectures, but they don't have anything
approaching the same level of library support for hardware. Yet another
tradeoff of time to market vs. correctness. It can't be avoided.

Say you're an engineer who's worried that ACL2 is too buggy for your company
to use. You tell your manager. She points out that maybe five ACL2 bugs are
discovered every year, and they get more minor each year, as the system gets
cleaned up. Moreover, none of the bugs discovered in the past three years have
affected any of your proofs, and you wouldn't expect them to have an effect on
any proof techniques you're going to use. So you stick with ACL2. And, because
you do, there's a tiny risk of a bug. What does this example have to do with
the original post? Bugs come from making little decisions like this. No single
decision is sure to cause a problem, or (in a company that's serious about
testing) even likely to cause a problem, but multiply that tiny probability by
the number of times you have to make a tradeoff and the number of lines of
code, and it's a statistical certainty that you'll have bugs.

~~~
drzaiusapelord
I'm curious as to whether you really believe more testing is the issue? Half
the problems on that list are directly related to political/business
decisions. Chrome's installer sucks because Google wants to make sure you can
install it with non-admin rights. It breaks basic Windows guideilnes because..
fuck you that's why. Ask google. Their war to get Chrome on limited users
desktops is a business decision. When you're asked to build a broken thing,
more testing isn't going to fix it.

The other issues are easily addressed by stopping to cater to lazy users so
much. Do we need yet another bloaty app to do basic things? Look at itunes.
Its a monster. I'm not even sure how to get a CSV of contacts off an iphone.
In the past this was trivial with any contact manager because the feature was
baked in. Now that's a feature for "enterprise admins."

The remaining things on his list are the 'appification of everything.'
Everything is now a shitty touch app that's incredibly dumbed down and buggy.
Why try hard, especially when you userbase is locked down by 2 year carrier
contracts? Or when all their music is trapped in an itunes database that can't
be moved anywhere or given to anyone.

Apple won. This is "easy" and "just works." Big buggy apps with dumbed downed
features designed to lock user data as deeply as possible. We've entered a new
era of vendor lock-in. It the 1980s all over again. We need open protocols to
work just enough for web and email. Everything else is up for grabs.

Get used to it, this is what the market has chosen. Meanwhile, I have to
somehow train my users on how to use Windows 8's new tablet-based GUI on their
standard PCs. This ain't progress. This is fashion.

~~~
jiggy2011
Wow, congratulations. I think that one post just about summed up everything I
hate about modern software.

It's actually gotten so bad now that I've found myself increasingly hacking
together my own small apps and scripts to do some simple things that I want
because it's often actually easier to _build_ than figuring out how to _use_
some of the software out there. It's actually an even better investment
because I know my own stuff will never magically become shittier because of
some update that gets pushed out automatically.

------
mgkimsal
I've thought for a while of having a general 'bug tracker' that's centralized
around _me_ , not a particular company. I'd have one place where I file all my
bugs/issues, etc, and companies could subscribe to it, or sync it in to their
existing issue systems. I'm tired of having to create _yet another_ jira/etc
username/password, navigate yet another UI for reporting something, having it
not work, having someone not get back to me, and so on.

Having someone get back to me or notify me of a change may never happen
entirely, but I'd have a centralized record of all my issues. And other people
could search them if I shared them (by default, perhaps). And vote them up, or
add their own notes. Or give me an answer or workaround.

Perhaps this is sort of what stackoverflow is or where it's going, but I think
there's another approach to tackle this issue, and there may be room for
multiple approaches(?)

~~~
getspeedly
This would be awesome. One common interface for reporting all the bugs that
affect me and my life. Add in a nice easy way to upvote/clone bugs from other
people's repositories (or otherwise say "me too!"). Make it all public and
pressure the vendors into fixing their stuff.

I think one of the results of having company and software specific bug
trackers, a lot of them private, is that people don't really know how buggy a
piece of software actually is until they pay for it. And by then, it's too
late.

------
eckyptang
He's doing too much with too many different things. The following phrase is
valid here: "A man with two watches never knows what time it is".

I rarely get problems of that magnitude. The only unreliable thing I have is
my ADSL connection and that's not a problem as I can use my phone as a backup.

~~~
momotomo
Good point. I went through a phase where I offloaded virtually everything that
takes electrons bar my laptop and phone (which doubles as my modem), I've been
at this baseline for a good year or so now. Between that and limiting myself
to one bookmark of any given category or subject matter (eg, HN = news and
tech, Juxapoz = art site, rather than multiples of each), I feel like I have a
hundred million hours a day in which to do things.

I went from struggling to read a few pages of a book or write some code every
evening to currently working on postgrad eduction, other certifications,
volunteering, etc. It's not as literally simple a transition (lots of changes
in motivation and practices in the mix), but every single device comes with a
level of cost in terms of time and cognitive "energy". Stack them all up and
it turns into a pretty big percentage of your capacity each day.

------
ChuckMcM
Love the rant, answer of course is in the title "Nobody's upset" which isn't
really true of course it should be that "Nobody is _actionably_ upset."

Much of this rant is a variation on 'craptialism' [1] and a number of the
problems mentioned can be traced back to disk drove based storage. I've got a
RAID6 appliance that I store stuff on and realized I was avoiding a lot of
these bullets. (such appliances have their own issues of course but that is a
different rant)

Its my hope that people will stop 'adding value' with software hacks to things
like dishwashers (do we really need a ringtone to tell you its done? really?)
focus on function, but that only happens when people actionably respond to
these problems. They return them for their money back.

One of the truths in the consumer goods industry is that returns is an
excellent signal for going to far. These things live on very small margins to
begin with and returns reduce that margin still further. So folks returning
'broken' products incent the manufacturer to fix them. Its a pain though, that
I truly understand.

[1] Crapitalism is the effect of racing to the bottom in terms of price to
achieve market penetration / dominance. Sadly it often leads to products that
are cost reduced to the point of not being functional.

~~~
shanselman
> Nobody is actionably upset.

Love this.

------
nsns
And what about your body? and the world around you? and your relationships?
and the instruments you use? Do your faulty examples in any way contradict
anything else you know? do you have a counter example?

Reality is dirty, everything tries to break down all the time, hindered by the
traces of its past, and the ambivalence of its future use. We make stuff
dreaming of a prefect neat existence. This keeps us going, like moths around a
light bulb. And we should keep on doing this nevertheless.

------
eloisant
Well, that's the balance between features, bugs, and cost.

If consumer software companies were working more like, say, people working on
Curiosity (Mars' robot) or aircraft navigation software, you could have a
phone that does much less but without bugs.

The reason why it is this way is because people usually prefer to cope with
minor bugs that giving up on features. Plus, when you buy a product, you
usually know the list of features but not the list of potential bugs.

So you can make a company that sells phones with 0 bugs, with a 2004 set of
features. Or an OS that focuses purely on providing a bug-free experience, but
5 years late.

Not sure all that would sell well.

------
nchuhoai
For all those who don't get the pun:

<http://www.youtube.com/watch?v=8r1CZTLk-Gk>

Everything's amazing and no one is happy by Louis CK

------
lifeisstillgood
Everything _breaks_ and nobody is upset because we have evolved eco-systems
that are minimally resilient.

And that is a good thing, and the right direction to go.

@luu - no we cannot prove even a tiny fraction of what we want to work, will
do so. And the best approach is how biology has done it - failover,
resilience, creative destruction, etc etc and all those good things.

I am often reminded by these sort of discussions of the anecdote of a Cabinet
Minister chatting at the Russian Embassy in 1980. The senior Russian diplomat
said "So, who is the person in charge of bread deliveries to London?"

------
praptak
Yes, software is buggy. But resources are finite, innovation is fast and buggy
products are out there in the market, eating the lunch of the defect-free
products that are still under development.

As irritating as all these bugs are, you, the consumer, will not wait for a
perfect product but will instead settle for the crappy one that's already
available. Maybe this will change for areas where innovation reaches some kind
of plateau, marginal utility of new whizbang features will fall and marginal
utility of bug-freeness will rise.

------
nicholassmith
Everything is broken, and it sucks and it's kind of our fault. Sort of.

It's a kind of, sort of our fault situation because as time has gone on we've
stopped caring too much about companies sitting down and just going "Lets get
this stuff sorted out and fixed, and improved and more awesome", but started
caring about "How many features does it have? Can it do X in Y and Z
situations?" which is great, it pushes the state of the art forward. I think
companies are spending too much time trying to get stuff out the door, instead
of spending the time improving what they've got.

But we end up in a weird situation where we actively want companies to stop
adding new features, but a lot of us are like magpies drawn to the new and
shiny. It sucks, it's their fault for not getting stuff done properly the
first time, and it's our fault for expecting a new shiny thing every few
months. And "move fast and break things" needs to stop being a thing.

------
thedudemabry
I'm about to say something shameful, something no software developer should
ever proclaim. In my personal time, whenever software crashes or errors out, I
am often given a prompt (varies depending on the OS/application): Report the
error, or ignore.

As an engineer who has spent invaluable hours combing over end user bug
reports through services like Windows Error Reporting and the like, I am
incredibly thankful for each and every user that took the time to click
'Report'. And I owe my firstborn to the benevolent few who choose to write
detailed comments to accompany their reports.

But alone, in the dark, ready to edit a photo or browse Reddit- I click
'Ignore'. Why? Because fuck you, that's why. My rage at uncaught exceptions
bubbles up into my brain and the stack reports, "you shall not get any info
out of me." This is clearly wrong, but it's my impulse. That's all.

------
jakejake
It's equally frustrating to be a software developer and have a problem
magically vanish when a user restarts their computer. I hate it probably more
than the user. Once their problem is gone they usually no longer want to talk
on the phone to try to reproduce the glitch. If we can't get it to re-occur
then it's extremely difficult to fix.

Our machines have layer upon layer of firmware and software. Users are allowed
to install and configure whatever they want. It's all expected to run
perfectly and, for the most part, things do run pretty well these days.
Features are constantly being added. Everything is changing all the time.
Unexpected combinations of things still happen and with complex software there
are just cases that slip through the QA cracks.

Though I do get annoyed when something crashes, it has to be a bit of a two-
way street sometimes. Both sides fail at this. Not all users are good at
reproducing bugs and sometimes they are downright dishonest about what they
are doing (out of embarrassment, or attempt to "skip ahead" in the diagnosis
and other reasons I'm sure). But in the case of big companies like Apple and
Microsoft as a user I do feel like they don't provide a way for a
knowledgeable user to provide them reproducible errors either. Well, they have
their bug report mechanisms but it feels like yelling into the grand canyon
when I do submit bugs.

------
hollerith
The world would be a better place if we spent less time talking about
disrupting other industries and more time examining our own industry with a
critical eye like the OP does.

Just keep in mind that making too much use of the critical eye can cause
depression. At least it does so in me -- and in the author of this next fine
blog post:

[http://telepatch.blogspot.com/2008/04/why-being-latency-
monk...](http://telepatch.blogspot.com/2008/04/why-being-latency-monkey-makes-
you-want.html)

A quote: "I tell you this story as a cautionary tale. Try to find work that
allows you to focus on positive things. Avoid like the plague any work that
focuses on negative things."

I used to over-use my critical eye in an unconscious habit from childhood. The
way I unlearned this bad habit is by "setting a background process" to watch
for when I was enumerating or cataloging defects for no productive reason, and
by "stopping my mind" when I found that I was. (I had to practice "stopping my
mind" for 3 to 5 minutes at a time a couple of times a day for weeks before I
started to make any progress.) In contrast, making lists of things to be
grateful for never really helped me unlearn the bad habit.

To live up to my potential as a software professional clearly requires me to
make _some_ use of my critical eye, but my mental health depends on my using
it selectively.

------
narrator
Whenever I use windows there's always something broken. Example: old windows
laptop dies and won't turn on. It's old so I remove the laptop drive and put
it in an enclosure. Now I'll boot into Vista and share files off it and copy
it to new Mac. Easy, right? Wrong! The thing won't let me share the files
because I don't have access to them even if I am adminstrator on my windows
machine. After waiting for permissions to get changed and getting a flurry of
access denied popups I think its going to work but directories in the share
are simply missing on the mac even though I've assigned privileges to the
share user.

So..... I boot into Linux. 20 minutes of googling how to share files with
macs, an apt-get or two and I'm copying off the files. Same goes for things
like cd ripping. On Linux it just works, on Windows you have to get ad
encrusted dodgy apps that sort of work and demand money every 5 minutes.
Basically, if you are a power user, Linux rocks. Yeah I know....but Grandma
will revolt! Fine, get her a mac or an android tablet. Why people who aren't
forced to still use windows, I have no idea.

~~~
noblethrasher
Please take a look at this: <http://en.wikipedia.org/wiki/Cacls>

Hopefully it will help if you're ever in a situation where you need to make
bulk changes to file and directory permissions.

------
pmjordan
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.

~~~
evincarofautumn
As someone who works on compilers for a living, even “read in some data on
launch, grind through some computation, emit output, terminate” is not an easy
problem. Regardless of what tools you use, there are no substitutes for
testing, care, and rigour. And testing.

~~~
pmjordan
I would not be surprised if compilers were the most complex examples of that
kind of program in the wild. Still, I _would_ be surprised if automated
testing of a compiler was as difficult as, say, test cases kernel-space driver
that simulate hardware failure. (this is one example of something I'm
currently dealing with) This is probably why compilers tend to have
comprehensive test suites, and why drivers (and other I/O-heavy software)
usually don't. To be clear: I'm not saying writing compilers is easy; I'm
saying automated testing of compilers is conceptually not that hard to
imagine, so it gets done. Whereas testing I/O and other external interaction
involves ridiculous levels of yak shaving as it has almost no existing tool
support, so it doesn't happen. Yet, most of the software we as humans interact
with directly is exactly that I/O-heavy stuff.

------
gbog
It should be noted that not everything is broken, and some people are happy.

See the many posts about vim, git or command line tools on HN. I have never
caught a grep bug, for instance, (cat is pretty reliable too).

The problem might be because the level of expectations raises faster that the
technology. Chrome was amazing at the beginning, and now people are
unimpressed.

------
pasbesoin
I spent a number of years doing QA ("real" QA, guiding and advising the entire
lifecycle) and making sure that the software in my little corner of the world
_did_ work. (Often catching critical bugs after some other "QA" process had
entirely missed them.)

It's a thankless job. The developers I worked with directly loved me -- the
best of the lot did, anyway. (My observation in turn of their abilities and
professionalism.) But management had no clue (and refused to get one). And
many developers outside of my exclusive little clique had to be brow-beaten
into some level of compliance.

Speaking generally: You say you want quality. But your actions belie this.

P.S. If you're concerned about "quality", amongst other things you should read
"Zen and the Art of Motorcycle Maintenance". To understand the importance of
and drive for quality amongst those who really care.

------
bpatrianakos
I took this as whining. I'm not trying to be a dick but that's how it came
off. The whole whining followed by "we can do better" is starting to become
really cliche. Yeah, we can do better but we can also read some manuals, get
some tech support, and you know, do some basic troubleshooting before
proclaiming that these minor inconveniences should never ever happen ever.

We can make better software and we can make it easier to use and we can make
everything more convenient but it'll never be enough. Making stuff better
doesn't mean ridding it of all possible complications and minor annoyances. In
fact, some of the things he complains about are actually features, not bugs
and those cases the solution is to get a different product.

Everything is broken and nobody's upset? No. Everything is awesome and
everyone's jaded.

------
johncoltrane
There was a time when a computer and the software that ran on it cost
millions. That was a time when a bug would cost millions and sink a company or
two.

------
SatvikBeri
Quality has a cost. There's usually a tradeoff between functionality and
reliability. Do you prefer a phone that can surf the internet, navigate when
you get lost, and send email, or a phone that has a 3 day battery and never
crashes? Both choices are available.

------
crazygringo
The way software is sold right now is inherently broken. You pay for it before
using it, so companies justifiably spend their efforts on developing new whiz-
bang features to get you to attract you to buy something new, rather than
fixing and rationalizing the features that already exist.

I have a hunch (that's all, though) that if there were never any up-front
purchase cost for software, and instead it was all, say, monthly-subscription-
based, that there would be a bigger focus on quality. "Hmm, frustrated users
are cancelling their monthly subscriptions because sync doesn't work? Well,
maybe we should work on that instead of adding glossy cover flow..."

------
Zak
One project seeking to fix this (by re-implementing everything from scratch)
is <http://www.loper-os.org/>

Much as I like the idea, I don't have high hopes. The revolutionary "right
thing" approach has typically lost to the evolutionary "worse is better" in
software fields with broad appeal. This is true even with the tools and
materials used to build computing systems at a low level. Consider the
popularity of programming languages like C++ compared to say... Smalltalk.

------
csense
RMS's original motivation for starting GNU was to address exactly the
frustrations expressed by the article.

With open source software, if the universe of people with a particular bug is
big enough, it'll contain developers who are capable of fixing it.

Or if a particular bug is hurting you badly enough, you can find and pay a
developer to fix it.

See Linus's Law [1] (scroll down to point #8.)

[1] [http://www.catb.org/~esr/writings/cathedral-
bazaar/cathedral...](http://www.catb.org/~esr/writings/cathedral-
bazaar/cathedral-bazaar/ar01s04.html)

------
zvrba
Bah, this post reads like a 5-year old bitching because he didn't get his ice-
cream [1]. May it be that these problems aren't fixed because they arise from
a subtle interaction of hung routers, failing hardware, other installed
software that runs concurrently in the background [2], etc. How do you debug
something that you can't reproduce in a "standard" setup? For how many CPU-
eons should you run your networked application on a simulated network to be
reasonably sure (NB! NOT prove!) that it'll handle network outages? HOW are
you supposed to write software that behaves "correctly" when its preconditions
aren't true? (e.g., that the OS's routing table is sane?) Etc, etc.

[1] Yes, Gmail is slow for me too; haven't used its web interface for years,
and I've moved my correspondence to private domain. Some of his complaints are
valid complaints about sloppiness. He also seems rather unhappy with Apple's
SW, so I'm wondering why is he still giving shitloads of money to Apple.

[2] For example, a backup on my Win7 machine failed, with a mysterious message
in event log urging me to look for other errors in the event log. I scrolled
down and saw that AV (MSE) had quarantined a certain file. I deleted the file,
and lo and behold, the backup succeeded!

------
kfk
Let me take 1 example: MS Outlook. It really, truly, amazingly, sucks. Badly.
It is done to handle few email, few enough that you can remember about them.
Good luck if you work in a corporate environment and you need to find an email
from even only 1 yr ago.

Is this an issue? Yes. Do people care? Not enough apparently. What do you do?
You either accept it or you find a solution at a low enough price that people
start caring.

Bottom line: look at what people are willing to pay.

~~~
squidsoup
I think this is a problem with mail clients in general, particularly on large
networks. Mail.app and Evolution don't fare much better, in fact I would say
Evolution is significantly worse.

~~~
kfk
But how difficult would it be to archive email texts in a database (sqlite?)
and the attachments directly on the filesystem? Then you backup that and you
are set.

Instead now you still have to archive (I have a 500 MB limit), but you do in a
.pst file that you anyway have to use from Outlook that, again, does not have
a good way of finding stuff (have you tried the search box on even only 6
months of emails?) or, even more important, to comment stuff (how many times I
wanted to add comments to an email, nobody thought of that?).

Edit: Yes, I know what you are thinking: it takes more space! But hey, don't
we have super sized hard drives anyway?

------
Harmonize
Everything's broken and nobody's doing anything

Surely somebody's doing something! I'm sure if you look around you'll find a
lot of people doing a lot of things to fix software quality and improve user
experience in software applications.

But, consider what's really broken in the world: food supply, resource
depletion, pollution, poverty, crime, violence, war... When I read a title
like, "Everything's broken" those are the problems that come into my head. And
so, I was disappointed to read your list. It didn't aim high enough for the
problems I was considering.

Makes me feel one component what's broken is our priorities and focus. Clearly
the priority and focus for the software you're using is not on quality and
experience. It seems the software industry has optimized to get-product-out
and iterate asap. Ship!

But then, when I consider the larger question of "what's broken?" where I look
at the real issues in the world, I come to the same answer: the priority and
focus of society is not tilted strongly enough towards fixing those types of
big-world problems. Instead, we have so many of our great minds attacking
other types of problems.

Generally, when we humans focus and prioritize, we can achieve just about
anything we desire.

------
parasubvert
I don't deny problems with today's software, but perhaps the issue is that
things are moving FAST, particularly in the mobile space, and like the last
few software booms, sloppiness occurs. I mean, look at the pundits all
complaining that the new iPhone 5 is boring, why can't Apple reinvent the
mobile world every 2 years? Because they're having a hell of a time
incrementally improving the current world, which isn't anywhere near perfect!
There doesn't seems to be much excitement in "getting things perfectly right",
it's about finding the sweet spot of "mostly right". This tends to cater to
consumers and not geeks or power users with edge cases.

I don't get upset about today's software because it's much better than what we
had before (even iTunes). I remember the 90s where my computer would lock up
twice daily with a blue screen. Where my data would get corrupted regularly.
Where I had to reinstall my OS bi-annually to deal with slow downs. I haven't
had to experience these things in nearly 8 to 10 years. Now it's all more
about annoyances than catastrophic failures.

------
jvdh
Things get even worse when you know something is broken but nobody else seems
to care.

At the cafetaria here I pay with my bankcard, if I put the card in too soon,
the payment never works. I know that the payment device software is clearly
broken. The solution: The clerk stops the payment and restarts it if you put
it in too soon, or yanks out your card and puts it back in himself.

Good luck explaining that it's broken.

------
jsz0
My computing experience became far more zen like when I gave up on ugly hacks
and pointless tweaks. I just use the software how it's designed to work. Path
of least resistance. Vast majority of the time this approach works great. Not
sure if that's the root of his problems or not but it definitely sounds like
it to me because these were the exact types of problems I would encounter
after running some hacky app or using unsupported/undocumented features.

For example I've had the same iPhoto library for about 5 years now. The only
issue I ever had was importing duplicate photos (my fault) and then running a
hacky app that was supposed to magically fix this. Nope. It just trashed my
iPhoto Library file. If I had manually deleted the duplicates I wouldn't have
had any problems. I've had countless address book/calendar syncing issues for
the same reasons. I gave up on trying to hack together a system that works now
I'm fine with these different services being islands. I don't need every
contact I've made in the last 20 years on every device I own.

------
crag
It's not the bugs that "bug" me. It's the time it takes developers to fix
them. Example: Mountain Lion's Mail; for some of us, it suddenly takes all the
accounts off-line. The fix is to restart it. There are HUGE threads in the
forums [about this issues and several others], and multiple posts on various
sites around the net and STILL no fix.

Another example from Apple: The 2011 MacBook Air wireless connections issues.
Also several huge threads in the forums, and multiple posts around the net and
nothing.

And Apple isn't the only company. I don't even want to get started on the
state of video games today (look at the launch of D3 from Blizzard and what a
nightmare that was or SW:TOR - just a couple of recent examples).

I imagine two reasons for that state we are at now: Money - the rush to
release (and "worry about fixing bugs later" -this is VERY true in the gaming
world); and in Apple's case, they hate to admit anything can possibly be wrong
in perfect-town Apple.

~~~
arbitrage
To elaborate on your example: Apple's Mail.app has always been vaguely shit.
Every major rev of OS-X always introduces a new way in which Mail.app fails.

> in Apple's case, they hate to admit anything can possibly be wrong in
> perfect-town Apple.

Bingo. And that's exactly what the article is talking about. Things that a
company or programmer has the ability to fix _now_ just don't get done.

------
Benoit_
It's not specific to software.

The general issue is that the indirect costs of a product are not supported by
the company that created it.

I explain: a company could generally earn more money by releasing new software
(or features) than by fixing bugs, even if its users spend more time and money
because of these bugs than it would cost to fix them.

We can see it everywhere: \- unhealthy foods generating long-term medical care
costs \- short life products generating cost of buying new ones quickly
(built-in obsolescence) \- cheap electricity generating thousands of years of
waste management \- etc

If we find ways to make these indirect costs absorbed, we could improve
software quality.

Ideas: \- for proprietary software, include a kind of warranty to fix bugs
when enough users ask for it (similarly to getsatisfaction.com) \- for
opensource software, I think of getsatisfaction.com coupled with a donation
system to encourage people to fix popular requests

What do you think?

------
motters
I think this could be rephrased as "Apple and Microsoft products are broken",
and that's a problem because he's a Microsoft employee so he probably has no
option but to dogfood. For less constrained users there are other products
around though which are not as broken.

------
squidsoup
There are clearly a myriad of problems contributing to the sense that
"everything's broken", political, social and technical. Focusing purely on the
technical aspect however, in particular how we write software, what has become
of the promise of statically typed pure languages like Haskell?

Can anyone elucidate on whether adopting this mode of development where
software can be formally reasoned about has led to significantly fewer bugs in
real-world software scenarios? Is the legacy of Smalltalk impeding progress?

I ask this as a fairly average OO software developer that has found that
despite being fastidious about keeping up with code coverage, bugs still
present themselves all the same.

------
autophil
The big lie is we as humans have it all together. That we are the superior
species on the planet and we can do what the hell we want.

Global warming, destruction of nature, loss of liberty because governments we
elect betray us - don't worry, somebody else will fix that, probably some Y
Combinator startup. No wait, driverless cars are the answer.

Us humans hallucinate in our own private world more than we interface with the
actual world. We can and will rationalize anything. Nobody is upset because we
aren't really there, or even here. We are off somewhere else, thinking we are
smarter than we are and that everything will be okay.

With the terrifying state the planet is in, we should all be upset.

~~~
lsc
>With the terrifying state the planet is in, we should all be upset.

Eh, really?

What I find so amusing about people like you and me (and OP) whining about how
imperfect the world is that the world has gotten so much better, even in our
lifetimes. And yeah, if you are a white American-born male, it might not seem
that way- in fact, the world might not have gotten better for you. If you
aren't skilled, it almost certainly has gotten worse for you; you've got to
compete against a huge pool of people that were simply not in the running
before. But for the masses of humanity that weren't lucky enough to be born an
American white guy? eh, I think things are better than they were. And really,
things aren't so bad for us, either. Maybe not quite as cushy as they were;
but eh, I'm still a long ways from pretending to be Chinese, or even wanting
to learn a language other than American English for business reasons. Things
aren't so bad, at least from where I sit.

But yeah. Getting upset, first, takes a lot of personal energy; and quite
often is dangerous.

more to the point, quite often, it's counterproductive. The food riots all
over the middle east? (I'm sorry. Look at food prices[1] Then tell me, with a
straight face, that poor people are okay with the cost of living going up 4x,
but have a problem with a high-school talent-show quality video. I mean, I
guess it's possible that it really is the video? but it sure seems unlikely,
compared to the much more reasonable explanation that people get unhappy and
violent when they can't get enough to eat.)

I mean, sure, they are upset, it's difficult to afford food. A perfectly
understandable thing to be upset about. But, is this going to help them?
probably not. I mean, it's going to be bad for us, too... but for us? bad
means paying a little bit more in taxes, maybe, or dealing with fewer public
services. Worst case, we experience more inflation than we'd like. For them? I
suspect it will be much worse. Yeah, getting upset isn't helping them. (One
could argue that it's actively hurting them even if we don't retaliate. We are
a major exporter of grain and soy. By destabilizing us, they are destabilizing
one source of food, and thus driving global prices up further. Of course,
especially in the case of Egypt, well, there's something else going on;
Throughout history, Egypt has been a major exporter of grain. I don't know
what happened to cause that to change, or if our presence in the area has
anything to do with it, but it certainly is... an odd situation that Egypt
can't even feed itself. It's possible that if they could get us to leave, they
would be better off. I'm certainly not in any position to weigh in either way
on that one.)

I mean, I'm not saying you should never work to change anything, but quite
often? pretending that there is not a problem does less damage than getting
upset and 'taking action' without really understanding the situation or the
consequences of those actions.

But yeah; all I'm trying to say is that before you "take action" on a global
issue where you don't have all the facts (and that is any global issue; none
of us have all the facts. On most issues, even if you combined all human
knowledge, we'd still have missing pieces.) you should step back, and make
sure you aren't firebombing an American embassy, if you know what I mean.

For example, some suggest that part of why agricultural commodity prices are
through the roof is demand for biofuel. Sure, biofuel is a great thing- the
people working on that are trying to solve important problems that are real
problems. But... as an unintended consequence, they are driving up the price
of food.

Go look at graph 1 again. god damn. The thing is, for me? And probably for
you, grains are so cheap that they could go up 10x without really altering
what I pay for my prepared food. I mean, even now, you can get a bushel of soy
for $17. A bushel is a lot. like 35 litres. 150 cups. A metric fuck-tonne of
tofu. Man, that sounds so cheap to me. I mean, I could go work at McDonalds
for a month and buy enough soy and rice to live for a year, easy. I mean, in
theory, I could support myself on one day a year of consulting work, if I had
a place to sleep and cook.

but... that same bushel? set you back about five bucks a few years back. I
mean, imagine living somewhere that the actual cost of the soy or the wheat or
whatever your food was made out of was what you paid for? where four hundred
bucks really is your yearly budget? I don't think the biofuel folks gave that
too much thought.

(Of course, many people believe that the commodity price inflation has more to
do with qe3 than with biofuels. The fact that metals have been inflating right
alongside the edible commodities would support this theory. I'm just throwing
out biofuels as an example of a rational and well-meaning attempt to solve one
problem could cause another problem. I have no proof that it /did/ cause that
problem that it could have caused.)

Really, from that point of view? OP's whining about small problems, maybe, is
the sort of thing OP ought to be worrying about and focusing on? These are
problems that can actually be fixed, and that can bring a small amount of
happiness and productivity to the world, and at the very least, probably won't
make anything worse.

Personally, I think OP was being a little dramatic. But that's okay. I mean, I
actually had the same problem opening a word file today, but I was using
LibreOffice, so I figured that was the problem and made the sender send me a
text version. I probably would have been a little steamed if I had paid four
hundred bucks for office.

[1][http://www.indexmundi.com/commodities/?commodity=soybean-
mea...](http://www.indexmundi.com/commodities/?commodity=soybean-
meal&months=60)

~~~
autophil
I'm talking about the BIG things: our planet and ecosystem, clean water,
liberty and human rights, they are all becoming irrepairably broken.

~~~
lsc
>I'm talking about the BIG things: our planet and ecosystem, clean water,
liberty and human rights, they are all becoming irrepairably broken.

food prices aren't BIG? I mean, they aren't big for you and I, sure, but for
most of the rest of the world, there is nothing bigger.

And really? you are seriously saying that the average person's level of
personal liberty and human rights is lower now than it was 30 years ago?

Like I said, that might be true if you are white and male and born in the
US... or if you are anything and live in the parts of the middle east we are
at war with, but for the vast masses of humanity, the world has gotten rather
more free. /they/ now can compete with /us/ for jobs, which is an incredible
improvement. (well, it's an incredible improvement for them. For the least
skilled of us, well, it kinda stinks. Me? I think it makes things a lot more
interesting, and it vastly increases my potential customer base.)

------
RivieraKid
When I make software on my own, I really care about every detail and I'm
focused on making my users happy. I'm thinkng in both low level and the big
picture.

When I do software for money I often just want to quickly do what's required
from me. My motivation is more "getting it done" and less "making user's
happy". I'm thinking "how to implement requirenment A" instead of "how to best
solve user's problem A". Another big factor is that I don't have full
responsibility. If some parts of the UI can be improved I often don't care -
I'm not responsible for that, convincing my manager that the UI sucks just
isn't worth it.

------
krautsourced
He's hitting the nail on the head. As for the reasons... there are multiple
culprits at work here.

\- complexity of modern systems \- reliance on third party libraries that
suffer from all the same problems \- underfunding \- understaffing \- QA next
to non-existant or "sourced out" to support staff \- unrealistic deadlines \-
incompetence (that was always a problem, but combined with the lack of QA
becomes more apparent to the end user)

Basically the issue is we all want more, for less money, in a short amount of
time. And I think we've hit the ceiling for that as far as the human factor is
concerned.

------
peterwwillis
There's more important things in life than getting upset about software. Try
working for a company where everything is "broken" and try to fix it for a few
years, always in vain. You'll stop caring, too.

------
glassx
And it's not just with computers.

I have a Sony Bravia TV and with every update its "UI" got slower and slower,
until I disabled updates. I know it's got a lot of cool features in it, but I
just wanted a simple TV.

~~~
jiggy2011
That's an issue I've had with my HTC Android phone and also with stuff like
Java updates that want to install "Ask toolbar" and updates to Safari that
want to install iTunes etc.

Of course I don't really want to disable updates altogether incase there is an
0 day out there and I need to patch. Problem is that a lot of things don't
give me the option of saying "fetch security updates _only_ , ask me before
installing anything else and allow me to _revert_ if I don't like it".

------
darkstalker
There is a common pattern in all the stuff mentioned there: closed source
proprietary software. The companies who wrote them are the ones to blame. You
can report bugs/problems, then sit there and wait, but as said in the article,
they don't care and nothing will happen. You're already trapped in the closed
ecosystem, your data in some proprietary format, and (un)happily living inside
the walled garden. If everything is broken, is because you chosen broken
software.

------
molbioguy
Patience. As the rate of technological change accelerates, patience is
slipping away. How long can you wait for the next improved version with new
features? From a technical point of view, it's all possible, so why isn't it
available yet? I'd say that both consumers and investors can't wait very long,
so businesses push out features (sometimes prematurely) to meet the demands,
which fuels the impatience for new features. Vicious cycle started.

------
jbert
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?

~~~
conradfr
I thought it was supposed to be Apple ?

~~~
josteink
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.

------
netvarun
When I saw this my initial reaction was 'bleh. bloody #firstworldproblems'.

But then it struck me: One man's first world problem is another man's billion
dollar company.

------
Impatient
"How do we fix it?"

Pay for more stuff.

13 of the 20 issues are on freeware or free services. Gmail way exceeds my
expectations, because I know I'm the product, not the customer.

------
heydonovan
Honestly, I think a step in the right direction would be more people
submitting bug reports. Get more people used to the idea that bugs do exist in
software, and it's up to everybody to say "Hey, your software has issues. This
is how you can replicate it. Please fix!". Also, let's stop implementing
features, and fix bugs first. No use building upon software with known bugs in
it.

------
egiva
Question: maybe just my simplistic take on these complaints - and I have the
same ones - but can 90% of these all be broken down into two categories?
(database-related), and (UI-related) issues? Windows desktop indexing, iPhone
extra space taken up by "other" - can you simplify these things by saying that
they´re database related? I´d love to hear someone´s opinion on that.

------
corwinstephen
True software sucks, but that doesn't necessarily imply that it used to be any
better. I think software has always sucked. Yeah, there are more problems now,
but we're also able to do quite a lot more with computers than we used to be
able to as well. I would say that over time, the level of effort out in by
developers has stayed the same.

------
modernshoggoth
Everything too complicated to fit into any one single person's head is going
to have problems. That's how it works. There is a tradeoff of functionality vs
expense-of-time for any given task, and if you polish the functionality to a
mirror-shine but don't receive any economic benefit for doing so, then your
software won't make much money.

------
pjmlp
The only way out of this is to make companies accountable for the software,
the same way as in any other industry.

------
lazyjones
With no accountability for vendors at all, no software warranties worth the
name, this is hardly a surprise. Until people can start suing for damages (it
costs me time = money to get such problems fixed), software will stay mostly
broken because vendors have no good reason to invest money in fixing it.

~~~
scotty79
Yes. Because all we need in technology is more lawyers.

------
papercruncher
As a Microsoft employee, OP has access to the private symbol server. Open up
windbg and for a lot of MSFT products you can file a bug and send a dump
straight to the team... all with a single command and without leaving the
debugger.

Other than that, I really enjoyed the author's writing style, it was a good
rant

------
rjzzleep
while I do feel the same, it's not like there isn't a solution to most of
those problems.

have problems with stock roms on devices since you don't know what they do?
Try android custom roms.

Have problems with Operating systems doing insane amounts of work without you
ever knowing what that is? Try rolling your own Distro.

Problem with gmail? Try running mutt somewhere and give yourself pub key
access to the server.

But more generally don't fucking rely on the cloud.

Oh dear, skype, I have to use it for work purposes, but man, how I wish I
didn't. He forgot to add android and linux to the list. Compared to that you
can at least just use an older skype version on windows and be done with it.

My notebook runs a heavily customized linux and it boots in under 10 second.
Updating my system? Still boots in under 10 seconds. All my linux distro
setups lasted for years.

------
yskchu
I think it's people deciding that "good enough" is good enough. In any case,
with today's rapid development and update cycles, it's easy to fix mistakes.

Fast, good, cheap; pick any two.

80% of the people only use 20% of the features anyway. And they never see the
bugs that drives the remaining 20% of the people nuts.

------
tambourine_man
_I'm am complaining not because it sucks, but because I KNOW we can do
better._

Yes, I guess that's why we are alone. Most people don't know it can be better.
You probably have to be writing software for a a long time to be furious when
something is slow or broken in today's hardware.

------
Tichy
A lot of these problems seem to relate to Apple products. Just saying - there
are other options out there.

I notice he uses only one open source product (Google Chrome). One aspect of
choosing open source is being able to fix problems you care about yourself (in
theory at least).

------
juddlyon
The more into technology I get, the more I'm amazed that anything works in the
first place.

------
jwatte
It's because the market competes on features. This leads to a race to the
bottom. If you go slower and test more, you will be too late and too
expensive, and nobody will buy your stuff. The market does not value too high
quality.

------
tocomment
I'm hitting the iPhoto problems he mentions pretty bad lately. Does anyone
know what options I have? Is there an easy way to switch to just using the
file system for photos? It seems like iPhoto is so interwoven into the OS.

~~~
jpxxx
Open iPhoto. Select all photos with Cmd-A. Drag them to a folder. The end!

To preserve separate "rolls": open finder. Navigate to Photos. Right-click
your iPhoto Library and choose "show package contents". Find the Originals
folder and drag it out. You're set.

------
anuraj
Over the years we have failed to develop software as a true engineering
discipline. The way a structural engineer can design and certify a structure
as sound, I dream one day we will be able to do for software.

~~~
nradov
Not at all. We have developed software as a true engineering discipline. It's
only applied where it's really needed, and can be economically justified. For
example, avionics and some safety-critical industrial control systems.

~~~
anuraj
If you are referring to the extensive methodology and formal verification
systems used in mission critical software, it is still prone to error and is
still not viable for most projects. So the engineering aspect has to still
evolve and find cost effective means of ensuring quality software. It should
be possible with little more effort and application of mind and is an
excellent business opportunity as well.

~~~
nradov
Why should it be possible? Brilliant minds have been putting a lot of effort
into this problem for decades. They have made some progress, but a little more
effort and application of mind isn't going to get us anywhere close to a
solution.

------
Havoc
Thats quite a long list. Personally I just need the company VPN to break &
then _everything_ I need to do my job goes down the drain...

On an entirely unrelated note, guess how much work I got done today...

------
brendanobrien
first. world. problems.

------
npsimons
Stream of consciousness whilst reading article:

"Hmm, first one is about iPhone; next one is about Windows; I wonder . . . "

Ctl-F "linux" - first hit is the comments, and I close the tab, contentedly.

~~~
shanselman
Heh. Ya, I was going to put a few in around Linux audio drivers and Flash on
64-bit browsers.

~~~
drivebyacct2
I haven't been able to reliably watch Flash video or listen to Flash audio
since early this year in Chrome 64bit Linux. Not to mention the awful
(multi-)touchpad support in Linux.

------
monosym
It's almost kind of endearing,that even digital tools still have bouts of
human error, albeit to a lesser extent than something like vintage/analogue
electronics.

------
udpheaders
"If builders constructed buildings the way software developers write software,
the first woodpecker to come along would cause the collapse of civilzation."

------
RyanMcGreal
Cf. Louis C. K. <https://www.youtube.com/watch?v=8r1CZTLk-Gk>

------
bobwaycott
> _I should get an Xbox achievement for every time I press "Clear" in the
> iPhone notification window._

Too true.

------
perrywky
why should we care about these rarely happened bugs? They just happened in a
complex scenario, which is hard to reproduce and those bugs really doesn't
matter. I think it is not worth the effort to deal with these bugs.

~~~
guard-of-terra
It's not hard to grab a rarely happening bug. I stumble upon a few of those
each week. The OP has obviously stumbled upon dozens of those rarely happening
bugs.

So we should ask ourselves: are they so rare? Maybe we should stop providing
lame excuses and write our codez correctly from the start?

------
moubarak
Thank you so much for this article. Im not alone.

------
systematical
Your title is broken and i'm upset about it.

------
dakrisht
Best post I've read all year.

------
batista
So, your amazing feat of engineering phone, with a color retina display,
audio-video capabillity, 700.000 apps, gyroscope, HD cameras, etc has some
extra stuff taking 3GB drive space (of the 16GB device).

Your amazing, multi million lines of code Windows desktop, the work of some
1000 people or more, has a problem with indexing.

The protocol and apps that connect you via email to everyone you want, free,
globally and instantly, sometimes loses a mail. Or the UI is slow to load your
new messages.

A program with which you can do on your laptop what it took huge teams,
million dollars of equipment, and professional expertise to do (FCP), has a
crashing bug in some particular action.

The program that lets you talk to everybody on the planet, instantly, with
video, and paying nothing, has a badly designed UI.

etc...

Yes, I can see how "everything is broken".

Because, when we didn't have any of these, when 30 years before you had a
rotating dial to dial numbers on your phone that only called landlines and
cost mega bucks to call internationally, when you had MS-DOS as the most
prevalent desktop OS, when 20MB was a huge disk in a desktop system, and
before something like video chat was only possible in huge organizations with
special software, everything was perfect...

Wanting to improve things? Fine.

Not understanding the complexity and magnitude of the technical achievements
you use everyday? Bad.

~~~
zaptheimpaler
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 person sometimes fires rounds without you pulling the trigger and
causes a casualty.

...

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. Given the fact that most (all?) of the
products mentioned in the post have some kind of price associated to using
them, its not unreasonable to expect they work correctly.

This is not to say that the people who made the tech are at fault per se, just
that the customer is not at fault either for complaining when things dont
work.

~~~
prof_hobart
Are they meant to be examples of complex tech that aren't allowed to fail and
don't? Or examples of complex tech that does fail, but really shouldn't?

>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

It's not an excuse - it's an explanation. These things are complex, and
complex things sometimes fail. The average user can be forgiven for not really
appreciating this, but lack of knowledge of the nature of complexity doesn't
magically make it disappear.

Of couse companies could take the NASA approach of spending huge amounts of
time and money on formal requirements/analysis methods, building massively
fault-tolerant solutions etc etc, but I doubt there's a vast amount of users
out there willing to buy tech that's 5 years behind cutting edge, and costing
many times more, simply because it (almost) never fails.

~~~
zaptheimpaler
They are meant to be examples of failures which are extremely rare and would
be unacceptable to consumers. Sorry, I realize they are quite unimaginative :P

My response to your comment is the same as the previous one:

>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.

~~~
prof_hobart
>They are meant to be examples of failures which are extremely rare and would
be unacceptable to consumers. Sorry, I realize they are quite unimaginative :P

Cars stop moving on a fairly regular basis, often as a result of the
comparatively simple mechanical side of things. In the case of Toyota a couple
of years ago, they didn't stop moving at all when the driver wanted them to.

The other examples you gave have happened too - this despite the rather more
critical nature of the machine gun issue and again its relative simplicity
compared to, for example, a modern phone.

I've got no problem with people calling out where they see problems, expecting
someone to at least take their complaints seriously, and in a lot of cases
expecting the company to do something about trying to resolve it.

But that's not really the message I took from the article - the idea that that
these problems are caused by lack of passion or quality on the part of the
people making this stuff rather than being an almost inevitable result of the
complex nature of these systems.

TBH, I'm not even sure I buy that it's really that much of a problem. Almost
everything isn't actually broken - the vast majority of our tech works
remarkably well the vast majority of the time, and I prefer having tech that
mostly works and is both available and affordable than having the same tech
that will work perfectly when it's delivered in 5 years time at a vastly
increased cost.

------
fallenapple
Apple is now as annoying as Microsoft. They have attracted the type of users
who will put up with anything.

Business logic dictates they will do what they can get away with. If they can
sell shoddy product (that looks good in the commercial or in the store), then
they will do so.

Savvy users must suffer, or find a new system to use.

------
goggles99
I love you Scott, but look at projects you have managed and will manage, they
come out with bugs/problems/design flaws every time. Judgment is easy, but
practice what you preach if you really want people to listen.

I think that you are expecting too much from he human race. We CAN always do
better, but there will always be software bugs no matter what.

Humans will always make errors in judgment, planning or execution. Look at the
Mars rovers, they updated the firmware on them once they were on mars. Do you
think that they did not go over everything carefully? Look at anything which
has been acclaimed to have been the greatest design or implementation ever and
you can always find many same flaws with it.

I get what you are saying with the we can do better, but most people
(including you) would rather be productive rather than going over everything 5
times and re-analyzing every design (analysis paralysis). Who could survive
that grind? Humans need to be challenged and need to feel like they are
progressing or their morale will be destroyed.

Things will not EVER change dramatically from this pattern. Everything is
amazing and nobody is happy.

------
kahawe
Skype: Try sending a message...

