Monthly Archives: October 2007

How to Produce Truly Awful Software

The software world is becoming more competitive, and in light of this increased competition, it becomes necessary to give some thought as to how to gain supremacy when producing mediocre or truly horrid software. We have developed the following guidelines to help perpetuate the myth that sub-standard software is a necessary interference with productivity:

1. Steal ideas from other developers. This is necessary to develop a product when you have no creativity yourself. If you insist loudly enough, and often enough, that it was your idea, people will eventually believe you.

2. Prosecute, vigorously, anyone who tries to develop an idea even remotely similar to yours. It does not matter that you stole the idea to begin with.

3. Buy out the competition. This is the best option for squashing upstarts who come up with a truly original idea. This is essential if the idea threatens you with obsolescence. If it is something people really want, you can release your own buggy version a year later, and then use it as proof that the idea was not very good to start with, or, alternately, take credit for the whole thing if you do get it to work on your existing clumsy foundation.

4. Bloat is Beautiful. If there is a more cumbersome and awkward way to write code, use it. If you can increase the size of the program, and the resources it demands, do so. This achieves a range of objectives, from annoyance, to giving the appearance that you actually added something useful to the program.

5. Require as much RAM as possible. This will place an increased financial burden on the users, as well as perpetuating the technological tradition of planned obsolescence. If you also produce computer systems, you are in a win-win situation. You may also buy stock in companies that produce memory chips, and you’ll be able to assure your future financial base.

6. Add unnecessary features. Make them look really good, so it appears that you tried to please your customers. This tactic is especially useful in achieving maximum bloat and memory usage. It has the further benefit of slowing down operations, placing an additional burden on the computer, and interfering with productivity. Unnecessary features need not be stable, unexpected errors, hangs, and restarts serve to lower the overall expectation of quality.

7. Any new feature which is introduced must be accompanied by at least 10 new bugs. Less than this will foster unrealistic expectations of quality in the minds of your users. If possible, bugs should conform to the following ratios:

  • 1 in 10 should be serious enough to stop the feature from performing at all, on at least 1/3 of all computers.
  • 2 in 10 should cause the computer to require restarting. Complete failure to respond, when multiple programs are opened with unsaved work is optimal.
  • 2 in 10 should cause the program to close without warning, or to hang and fail to respond. Under no circumstances should there be a pattern to these behaviors. Corruption of documents in progress is an added bonus.
  • The remaining 5 of 10 should produce random annoyances such as inappropriate responses to menu commands, dramatic system slowdown, cryptic error messages, failure to open compatible documents, etc.

Patches and updates should promise solutions to these problems, but should not actually provide them.

8. Plumb the potential of dialog boxes. Dialog boxes with unhelpful information should appear at random. You can use them to notify the user of system processes which they do not need to know about (or do not care about), produce error messages which are not related to any action the user performed, or to delineate steps to a process which could be done in a single step.

9. Confirm everything. The simpler the task, the more annoying it is to confirm it. The less likely people are to make a mistake, the more important it is to put in a dialog box to confirm the task. This feature is a cardinal hallmark of bad software, and helps to keep the annoyance factor high, and the user expectations low, so do not overlook it when putting the finishing touches on your masterpiece.

10. Create the illusion of security on the surface. This will relieve you of the obligation of providing meaningful security protection, while giving you the added benefit of being able to create further interference with productivity. The following dialog (or the written equivalent) should be used as often as possible:

“Your computer is doing something that may present a risk. You may have started this process on purpose, or it may be starting without your knowledge. This process may be harmful to your computer – just because you started it does not mean it is not dangerous. This process may cause considerable harm to your computer, up to, and including, total data loss. On the other hand, this process may be necessary to the function of your computer, and failure to allow it to continue may seriously compromise your ability to use the computer to perform essential functions. Click Yes if you wish to continue this process. Click No if you wish to discontinue this process.”

This warning may be followed by small print, reading: “Continuing this process may void your warranty.”

11. Silence your critics. Use creative methods to punish your critics, while rewarding people who praise your software.

12. Force your users to upgrade. This removes the ability for users to choose an older, more stable version of software over a newer, buggy version. Such choices place an unreasonable burden of quality on you, and give the user an excessive degree of control over their own computer.

13. Assume the user is stupid. This assumption opens all kinds of possibilities for maximization of useless dialog boxes, but also allows you to bury necessary controls so that the user cannot locate them. The potential is far greater though, because an assumption of stupidity of the user also relieves you of the obligation of providing anything that is user-friendly, and increases your ability to create more awkward and cumbersome interfaces to interfere with accomplishing simple tasks.

14. Assume the user must be protected from themselves. Ownership of a computer is too great a burden for the average person, but they do not know this, so you must not let them know that you have protected them from themselves. It is best to create the ILLUSION on the surface that they have control of the software, but the real controls should be hidden, and only accessible if someone is aware of the hidden manner of accessing them. This strategy causes untold frustration in the user, as they repeatedly attempt to access the false controls to set necessary configurations or give permissions, not realizing that the controls they are accessing are not the ones they need to access. Naming the real controls and the false ones with the same name further enhances your ability to feel superior and to frustrate the user.

15. When issuing new versions, maximum effort should be taken to introduce a wide range of new (unnecessary, and useless) features, but persistent problems and annoyances should not be repaired. The prettier you can make the new features, the better – this helps achieve your goal of high RAM requirements, and it helps to make it look like you actually added value when in fact you did not. It is easier and more fun to create eye candy than it is to repair deep problems or patch bugs and security holes. Eye candy has the added benefit of being more visually appealing for promotion of the new version, and is easier to promote than stability, enhanced productivity, or greater ease of use.

16. Change the rules. This is most effective if you can establish a standard way of doing things, and then change it after your user base is finally adapted to it. Making the interface less intuitive than it was originally is optimal. A great way to achieve this is to change everything that works, but do not fix the problems.

17. Provide the illusion of automated help. When errors occur, or programs stop responding, provide a dialog box which offers to find a solution to the problem. No further programming is necessary in this feature, other than a progress bar, followed by a message which says that no solution was found, and which instructs the user to visit the software publisher’s website to look for an update. This feature does not provide any useful function, but leaves the user with the feeling that at least you TRIED to help them. This is an easy, and inexpensive way to enhance public relations, without having to actually provide anything of substance.

The software world is advancing, and becoming ever more complex. Keeping software from performing predictably is in the best interest of every software developer, lest computer users feel that good function is a justifiable expectation. It is our hope that this guideline can assist developers in maintaining the status quo, so that profit margins will not be negatively impacted by the expectation of true progress.

If this guideline is adhered to by current developers, we can look forward to wide vistas of ease and profit in the future.

It’s Just Life After Cancer

Alex’s blood tests were ambiguous. They contained “immature cells”. For a kid who has come out of chemo for Acute Lymphocytic Leukemia, that is unsettling news. The lab said they’d get the results confirmed and clarified, and that we’d have to wait until they did. That was on Friday.

Of course, no one was in a hurry over the weekend. Had this been the relapse it very well could have been, the four days that it eventually took just to get the results back could have made a huge difference in his prognosis. Relapse is grim enough as it is, and delays make it worse.

We agonized over the weekend, and through Monday, calling to find out what the status was. We were finally informed on Tuesday afternoon, that he had “reactive cells”. This was their way of telling us that it was normal cells, but cells which are not normally found in the blood (they are normally confined to the marrow). There are three basic times when they come into the blood stream – when the body is reacting to an illness (generally a significant one such as flu or mono, or something else that you know they had), when the body has been subject to trauma, or when the body is stressed by a disease process (cancer can be one of those, or Crohn’s, or other serious but silent illnesses).

To our knowledge, Alex has none of those. His weight had also dropped significantly, and he is looking very skinny and losing strength, feeling fatigued and cranky. Nothing dramatic, but there, and worrisome. The very symptoms he had four years ago at initial diagnosis.

His other blood counts are not typical for a reaction that would normally accompany the presence of reactive cells – no atypical rise or fall in other blood counts. Just this one odd blip, and lymphyocytes on the high side of normal.

But this is, again, all part of living after treatment for cancer. You never see illness the same again. It is not a panicky feeling, though you do worry. And you know, as few parents do, the urgency of getting results in a timely manner. You watch for signs and indications that most parents never think twice about. And it will never go away. There is no known outside range at which B-cell Leukemias have a zero risk for relapsing. It gets less likely over time, but it never completely goes away. You learn to be vigilant – not overreactive, you just pay attention. Because it matters.

We learned things from this. That we were woefully unprepared financially for a crisis of this magnitude. That we are mentally well prepared – we knew within half an hour of the news, just how we would handle it if it were a relapse. We knew within days what our best treatment options would be, and how we’d handle the difficulties that could cause. We knew we’d be ok if it WERE a relapse.

And we learned that four days is far too long to wait for test results. We’ll be using a different lab from now on. One that can determine leukemic blast cells from myelocytes right away.

Alex goes back to the doctor in another week, for a repeat CBC and checkup, to see whether he is still in a decline, or whether he had something going on in the background that he is bouncing back from. So the worst worry is over, but a niggling one remains.

And it probably always will.

An Update on Previous Posts

The experiments are going well, the garden is dead, the classes are thriving, and business is still growing. There… all done. You can go home now.

More detail? Well… If you insist…

Megafamilies and Natural Diabetics are both earning better than before. The forums are hard to get going. People like to post to a busy forum, they shy away from taking the lead. So you have a tidy little catch-22. Nobody posts because nobody posts. So every week or so I email the site members (they DO sign up… they don’t necessarily DO anything once they have, but they do sign up!). I welcome the new ones, give them an idea of the overall membership numbers, and invite them to go out on a limb and get the forums rolling. And I reply any time someone posts. So far the courageous are few.

But the Google income is up. So far up that one of the sites is now making what ALL of my sites used to make. Traffic has not slowed down at all. They’ve been in the new format for a month now, and the traffic is still high – in fact, Megafamilies seems to be particularly high, with a 50% increase over last month, primarily Google traffic. Natural Diabetics has maintained its growth trend.

Our web development class is going well. Five students payed for the whole course at once. One could not afford to do that, so he pays for each class as he goes. He is my bellweather. As long as he is coming back, I know I must not be doing too badly. We teach SEO this week. Last week was a whirlwind tour of images and the web. Kevin continues to film me, and I continue to sound good, but look stupid. Pretty normal.

The University Outreach Coordinator has asked me to do more this spring. Two full courses, plus four smaller classes. That is a lot. They’ll be done in a series of three saturdays for each full course though, instead of spread out through 12 weeks. I don’t know if that will make it easier, or harder. We’ll teach Joomla, and CRELoaded. The curriculum is outlined, but unwritten, so I’ll have a busy few months getting that done. Fortunately the four smaller classes (2 hours each), will be expansions on four of the modules from the full course that I am teaching now. That means the curriculum for them is already 90% finished, I just have to polish them into stand-alone classes.

Contracts keep coming. I have a few appointments each week to meet with prospects, which is about how it needs to be to keep us in shoes and milk and potatoes. Been so busy lately though that I’ve just wanted to sit down and cry a few times. I’d rather be busy than not, but sometimes it does get overwhelming.

My computer developed some dead pixels. Quite a lot, actually. Enough to be a problem. So I’m now working from a brand new HP laptop (it was cheap), which is in need of a RAM upgrade since it is running Vista (I’d have stuck with XP if they’d have given me a choice). After discovering how to get into the hidden Admin account in Vista, and running from that, I’m less frustrated with the OS in general. Still don’t like it, but now I can at least function at a minimal level.

I’ve had trouble transferring things over though, so I’m functioning with the technological equivalent of having one arm tied behind my back. It is certain to be a few more days before I have this thing firing on all cylinders where my personal info archives are concerned.

And this laptop had 40 GB of stuff on it out of the box. I uninstalled about 10 GB, but STILL… THIRTY GIGS, and they called it a “barebones system” as far as software was concerned! They were right…. it has almost nothing on it but Vista and a few games, and HPs stuff. Greedy beggers, aren’t they? The system has two hard drives – I suppose they thought they should make sure both got used?

Pending Growth within the Medicine Bow, Wyoming Region

The name “Medicine Bow” has been known to only a few traditional western fans. It is the fictional site of a book that is renowned as the “first Western” novel – The Virginian, by Owen Wister. It has been the setting of three movies based on that novel, but has never been the SITE of the actual filming.

Recently, the name of Medicine Bow has been bandied about within the government and alternative energy circles. If you Google “Medicine Bow Coal to Diesel”, you’ll find a treasure trove of both factual and speculative information.

DKRW, a relatively new company, is in the development process for a coal to liquids facility which will be located just 10 miles from Medicine Bow. The facility will support a workforce of approximately 300 workers when it is fully functioning (numbers vary according to sources, this is the most often repeated number). Work crews are currently reported as being scheduled to begin construction in the spring of 2008.

The facility will be the first of its kind, and represents freedom from foreign oil, as well as significant advances on the environmental front. It is supported not only by regional government, it has widespread support on the national level. Several other facilities are planned to be built, based on the success or failure of this one. Coal states are watching this one.

Land prices in Medicine Bow are already rising. The last round of property taxes showed a fairly high increase in tax values (nearly double for many homes). Of course, since taxes have been very low here, the increases were not huge by standards elsewhere, but they still ruffled a few feathers.

Medicine Bow has had a depressed housing economy for decades. Where else can you purchase a 3 bedroom home in decent shape for under $100 k? WELL under $100 k. That may change within the next two years though. Even the housing of the work crews will present a challenge in a town that usually has only 4-6 houses for sale at a time, and where finding a rental is as much a matter of luck as it is of timing.

Growth within Carbon County in general is already strong. Housing in the surrounding towns is becoming increasingly difficult to get. The spillover is already affecting the ‘Bow. If a person had planned to purchase land low and sell high, the opportunity is already all but gone. The feeding frenzy is already on, and houses that you could not give away last year are being priced at twice their current value. In a year, they’ll get it.

For now, the small and isolated feeling is preserved. And even with growth that doubles or triples the size of the town, we’ll still be considered unbearably small to most people. When you are starting with an optimistic estimation of 300 people, the anticipated growth still won’t move us beyond “small” or “rural”. Most people in town really just want to regain a small grocery store, and it would take doubling or tripling the town size to make it feasible. It may no longer be an unrealistic goal.

Some of the atmosphere that brings people here will undoubtedly be lost. But it would be lost due to stagnation and neglect if the growth does not occur, and loss due to growth is infinitely preferable to loss due to attrition. Things will change. But we hope to find progress within the change.

Take a look at the town website for more info about Medicine Bow:


Grow a Garden!

Gardening doesn't have to be that hard! No matter where you live, no matter how difficult your circumstances, you CAN grow a successful garden.

Life from the Garden: Grow Your Own Food Anywhere Practical and low cost options for container gardening, sprouting, small yards, edible landscaping, winter gardening, shady yards, and help for people who are getting started too late. Plenty of tips to simplify, save on work and expense.