Why are there bugs in software?

If you have ever used a computer you have probably encountered a bug in a program. Bugs range from annoying to catastrophic, rendering the program completely useless. Why are there bugs? They are clearly mistakes, so why are they called bugs?

The term “bug” came about in the days of the earliest computers. This was before the era of the transistor. Computers then were built using vacuum tubes and relays. (If you don’t know what a vacuum tube is, ask your mother!) Computers in those days were very slow and very expensive. Use of them was carefully tracked for budgeting purposes and breakdowns were common. One such failure was due to a moth that had gotten itself stuck between the contacts of a relay. The engineer who fixed it logged the failure as “Bug in computer”. To this day program problems are called bugs, even though there are no insects involved.

The big question is “Why are there bugs at all? Don’t they test the software?” Of course they test. In fact, at least 50% of the time spent on a software project is testing and debugging. All but the smallest software publishers have people on staff who do nothing but testing. In spite of this, there are always bugs. How can this be?

One reason is the very nature of programs. In a very simple program, one that makes only 8 yes or no decisions, there are 256 possible outcomes. Most programs being written today make hundreds of thousands of decisions, and there is simply not enough time to test every possible path. Because of this complexity, a lot of effort has gone into improving the programming process. Writing software is a combination of rules and art. A good programmer tries to be both disciplined and creative. That’s why they usually command a high salary. Such people are scarce, and that has led to a majority of them being mediocre. Companies that try to save money by hiring the cheapest programmers they can find often wind up paying much more in dealing with the inevitable bugs.

The bug fixing process is also perilous. An old programmer’s joke says “I had 99 bugs in my program. I fixed one and now I have 117 bugs in my program.” This is again due to complexity. Fixing a bug often has the unintended effect of creating new bugs. This is especially true for programs that have grown over time to be many millions of lines of code. Microsoft Windows, for example, is now so large that it is thought that there is no longer any person who understands it in entirety.

In practice, programming is not unlike quilting. Precision is critically important. A small mistake in one seam can lead to squares that don’t match. Of course a programmer can fix mistakes with keystrokes, where quilting problems may involve multiple attacks with a seam ripper. Eventually the quilter says “Don’t worry, it will quilt out.” For the programmer this comes from management who says “Stop debugging and ship it!” As long as human beings are creating, there will be imperfections. This truth is evident in the exquisitely beautiful Amish quilts, where the artists will make at least one deliberate mistake in a quilt to underscore the frailty of humans.

Once we accept the inevitability of bugs in our software, we have to develop a strategy for dealing with them. Software updates are a large part of that. Updates are released as often to fix bugs as they are to introduce new features. Some publishers will release an update with no mention of bugs being fixed, but the fixes are there. If the problems being fixed are many, there are probably new bugs in the update as well. At some point, in any large software program, the number of bugs becomes constant, due to new bugs being introduced while fixing old bugs. This should not deter you from installing updates. In fact, before looking for help with a problem, you should always first check to see if there are one or more updates available. Installing updates may fix your problem, but if not you have eliminated what is usually the first thing suggested by technical support personnel.

The cornerstone of your bug strategy should be backup. Keeping copies of  tax records, grandchild photos, and other irreplaceable items is critical. External storage is less expensive than ever, and there are numerous “cloud” options as well. We recommend following the 3-2-1 backup strategy. It’s the best way to ensure that you have protection from loss, whether it comes from software bugs or hardware failures.

With software or sewing, sometimes things just don’t work out the way we want them to. If someone points out a flaw in something you’ve made, just smile sweetly and tell them it’s intentional, to prove you are human!

Avoiding Oops

It’s fair to assume that the machine you are sewing on now is the most expensive one you’ve ever owned. Maybe it cost more than your first car. Clearly you want it to last as long as possible. For some owners, their current machine may be the last one they will ever own. Of course you need to keep your machine in good working order by having it serviced, but is that enough?

Here in the Northern Hemisphere we’re in the middle of summer. The days are warm, sometimes uncomfortably so, and it’s mostly sunny. A thunderstorm is not unusual and most of them come with lightning. Strikes from lightning are rare, but when they happen it can be devastating. A strike on your home can travel through the house wiring, destroying everything that is plugged in. You could prevent this by unplugging your machine at the first sound of thunder, but that isn’t practical. It’s especially impractical if you’re trying to finish a gift for the baby shower you will attend in an hour.

So you’ve installed a “surge protector” that you bought at the big box store for $10. It’s got 6 outlets on it and a light that shows it’s working. You’re good, right? Well maybe not. Most of the low cost surge protectors, if they work at all, are only good for one or two surges. The part inside that absorbs the shock is severely weakened by doing so. This part is cheap, which allows the product it lives in to be cheap. It doesn’t take a lightning strike to wear it out; in fact a lightning strike will likely jump right through it.

Lightning is not the only danger brought on by thunderstorms. Just your normal power can have surges and sags, all of which can happen without you even knowing. If part of your power grid goes out the company will switch distribution to keep your power on. When this happens you see the power go out briefly, then come back on. Sometimes this will happen several times in succession. Each time there will be a brief surge as everything powers up again. Those surges are invisible, but dangerous.

The most dangerous time for an electronic device is when it is first turned on. Once the ON switch is engaged electricity starts flowing through the parts at the speed of light. Any part that is just a little below par can fail from this first pulse. Imagine that when you roll out of bed in the morning, you are plunged into a vat of ice water. That’s how it is for your electronics. Power surges that happen over and over will stress devices, and at some point failures can occur. How can we prevent this?

To avoid an “Oops” you can use a(n) UPS. We’re not talking about the brown truck that brings your Amazon orders, but an Uninterruptible Power Supply. These devices plug into your wall plug and have some number of outlets for you to plug in the things you want protected. They monitor the incoming power. If it is too high or too low, they switch the power to your equipment from the wall power to power recreated from the storage battery inside the UPS. The switchover is typically very fast, so your devices never see a surge or a sag. When wall power goes back to normal the UPS switches again. That’s where the “uninterruptible” comes in.

Many of the high-end embroidery-capable machines made in the last 10-15 years have a “Resume” function that allows embroidery to resume at the point where it was when the machine was turned off. You may be thinking that this will protect you from power failure. It will not. When you press the button to stop embroidery, whether or not it is finished, your machine takes note of where you were in the design. If the machine is turned off with the switch or a power failure, you will resume at that point, not where you were when the power failed. The goal of using a UPS with an embroidery machine is not to keep sewing through the storm, but to allow you to push the STOP button yourself when the power has been cut. After the weather calms down you can resume with no problem.

UPS systems are available in my forms and prices. The main difference is the total amount of power that they can provide and the length of time they can provide that power before the battery is depleted. Power ratings are in VA, which is roughly the voltage multiplied by the total current used in amperes. So a sewing machine that uses 120 volts at 1.5 amps would be about 180 VA. Our machines are relatively low power, so even a 350VA unit will be sufficient. You’ll get 15-20 minutes of time before the battery goes flat, which gives you lots of time to stop, turn off your machine, and wait it out. Or keep sewing and hope! You do have to be mindful of how much you plug into the UPS. If you want to plug in the iron to finish up a project you will almost certainly blow the fuse inside. They are not made to provide that much power. This can also happen if you plug in your TV, 3 computers, your machine, and 2 phone chargers. Too much!

Other than the price, the main negative of a UPS is the battery. These are larger than your typical flashlight batteries, and they are lead-acid like the one in your car. That’s why a UPS is so heavy. Depending on how often the UPS switches to battery, they can last 2-4 years. Some of the UPS devices have a light showing the battery status, though you can’t always count on it working. I’ve had many battery failures that were not apparent until the power went out, and so did the UPS. When power came back the UPS would scream continually. Batteries are not that expensive, but I’ve found that the after-market batteries are usually much lower quality than the one initially installed in the UPS. Now I usually replace the entire UPS instead of just the battery. Whether you replace the battery or the UPS itself, don’t just chuck the discard into your trash. That’s very bad for everyone when the lead and acid hit the landfill. Most of the big box electronics retailers will recycle them for you for free.

Whether you need or want a UPS is up to you. If you live in an area where storms are rare you may want to assume the risk. For most of us it’s worth the cost for peace of mind to protect our machines. If you do get a UPS, after the first year I would suggest turning off everything plugged into it, then turn it off at its switch. Wait 10 seconds and turn it back on. If it powers up normally, green light, etc. then all is well. If it fails to turn on, or screams without stopping, the battery is likely gone and it’s not protecting you any more.

 

Evolution

When my wife Diane opened her sewing machine dealership in 1987 she ran it solo for several years. I continued writing software and doing computer consulting until I got burned out. She had grown the business to the point that she needed full-time help and I was happy to oblige. There was much to learn!

The first thing I learned was that to sell sewing machines you must be able to demonstrate how they are used. I had no problem just running a straight stitch down a piece of demo fabric, but when it came to demonstrating how to use the various feet I made a lot of mistakes. Proudly showing off the automatic buttonhole on the Memory Craft 8000, I failed to pull down the buttonhole sensing lever. Of course the buttonhole just kept going in one direction. (In spite of this, I made the sale!)

When we retired I decided to return to the world of computers, focusing on the Apple iPhone and iPad. Although I had been programming for 44 years, these devices were very different from any I had ever worked on before. Fortunately I had my oldest son to  mentor me as I developed the first version of FootBook. He made me start over no less than three times, as my first clumsy efforts were not acceptable! I’m not sure how much of that was payback, but it worked out for the best. Now, seven years later, I am very much at home with the devices and the software.

The art of sewing is a lot like that. My first attempts at free motion quilting were absurdly awful. Even now I am unable to do more than a couple of loops before the stitch lengths are completely random. Fortunately I no longer have to demonstrate my lack of skill. The point is, some things require a lot of time and practice to master. There are techniques that help you learn, but trying and failing over and over is the best path to success. With our videos we try to show the best way to learn techniques, with the goal of helping you master them as quickly as possible. The learning process is a lot more fun if you have a clear path to start with. As Henry Ford famously pointed out, there are no failures, only things that don’t work.

What computer should I buy?

This question has come up a lot over the years. It’s usually asked by the people who regard their computer as an appliance, and they want to maximize its useful life. Much more common is the person who considers their computer to be a necessary commodity that they have to have. Typically they buy the lowest-priced computer they can find from a “big box” store. Use it a couple of years and repeat.

There are a lot of manufacturers of Windows computers, which makes for fierce competition. Since they are all using the same software, and mostly the same hardware inside, the main tool they use to achieve market share is low price. Selling through chain stores sets up a race to the bottom – how low can they go? The result is computers that are made as cheaply as possible so they can sell for a price very close to the cost of the components inside. How can they do this and stay in business?

The secret is to load up each computer with “trial” versions of various software. The publishers pay to have this done. The purchaser winds up with a barely adequate computer, bogged down with a plethora of added software that will not be fully functional until more money is spent. These days laptops are more typically sold than desktops. They are made with very small parts, to keep weight down. This makes them very expensive to repair – impossible in some cases. Carrying them around leads to bumps and bruises on mostly plastic cases and in a short while it’s time to buy a new computer. Again.

While computers made for playing games are somewhat upgradeable, the same cannot be said for typical consumer-grade computers. Because of this, it’s less costly to buy more computer than you need so you can keep it longer. Here are some key things to look for:

  • Processor – the actual brain of the computer
    Although the processors keep getting more powerful, the increments of improvement are getting smaller. Chip makers now use multiple “cores” to improve performance, where each core is sort of a computer within a computer. When buying go for a minimum of 4 cores. Anything less is already on the way to becoming obsolete. Speed is not of particular interest as they are all pretty fast.
  • RAM – the working memory of the computer
    Every version of Windows is bigger than the last, with more and more features. A computer with 4 gigabytes of RAM may be adequate today, but the next version may slow it to a crawl, particularly if it’s loaded down with trial software. Consider 8 GB as a working minimum. More is better.
  • Storage – the place where all your stuff goes
    Hard drives get cheaper all the time. They are also the weakest link in any computer. The spinning platter inside will fail at some point, with cheap drives failing sooner, often in a couple of years. The new trend is for Solid State Drives (SSD) that have no moving parts. These offer several advantages. While they do have a working lifetime, they are designed to spread wear evenly over the drive. For most people a one terabyte drive (1,000 gigabytes) will last many times longer than a mechanical drive. Lacking a motor, an SSD is much less weight in a laptop. Bumping or dropping a computer with a conventional hard drive can cause the read/write heads to contact the spinning platter. This renders the computer broken and the data lost. That’s not a problem with SSD, since nothing in it is moving. Then there is speed, the most important feature of a SSD. SSD drives are faster than hard drives by a factor of 10 or more. This leads to laptops that are ready to use just seconds after turning them on, rather than minutes. SSDs are more expensive than hard drives, but prices are coming down. With all the advantages they offer, you should not consider any computer that does not have an SSD.

All of the above apply without regard to whether you are buying a PC with Windows or an Apple Macintosh. With Apple being one of the most profitable companies ever, it’s easy to argue that their computers are overpriced. I have been using only Macs for the past 10 years, and have purchased a number of them. Every one is still in use, either by me or a member of my extended family, making it well worth the higher price. Nearly all sewing software requires Windows, mainly because most people have a Windows computer. It’s possible to use Windows on a Mac, though it requires more expertise than knowing how to use a mouse and keyboard. We address the issues in this free PDF. It’s a little dated, but still relevant.

With the advent of the iPad there was a big shift in the world of computers. As Steve Jobs famously noted, computers are like trucks while iPads are like cars. Most people can use a car for all of their needs. Only professionals need a truck. The analogy is not perfect, but now that Janome has embraced the iPad with the Memory Craft 15000 and 9400 it opens the door to the possibility having only an iPad for sewing. We’ll cover that in our next post.

Hackers ‘R Us

You get an email from Mary Jane, your best friend since third grade. It’s just one line that says “Hey, you’ve got to see this!”, followed by a link to a website. You click on the link. It’s an ad for some kind of fad diet. Weird, why did she send this? The next time you see her you ask. “I didn’t send that!” she says. Oh no, you’ve been hacked!

Yes, it’s true. You may be thinking the hacker is some freak living in his mother’s basement, or a shadowy figure in some remote country. Sadly the hacker is much closer to home. It’s you. “What? That’s crazy, why would I hack myself?”

It all started with that email, which you now know did not come from your friend. It came from someone who happened to have both her and your email address in her address book. She got hacked and the malware (unwanted bad software, commonly called a virus) installed on her computer and started sending emails from and to every name on her contact list. By choosing every possible sender and recipient from that list, the odds of someone actually opening it and clicking the link are much higher. You were fine up until you clicked or tapped on that link.

When you did that you got sent to a site that was probably itself hacked. The web page that loaded contained a program written in a language called JavaScript. It’s invisible and starts executing as soon as the page loads. The goal is to install itself into your computer and immediately start looking for email addresses to send itself to. So when you clicked the link in the email, you unknowingly hacked yourself.

We’ve all got that friend who has too much time and an Internet connection. Every day you get new emails with links to YouTube videos, pictures with the latest meme, and other trivia. Sometimes they are funny enough that you click on them just to see what the latest discovery is, and BOOM!

Getting rid of malware is hard, and ultimately expensive. I’ve seen people actually go out and buy a new computer because they were hacked. That’s pretty extreme, and not necessary, but getting a geek to clean out a virus can also be so expensive that a new computer is a viable option. The best practice is to avoid getting hacked in the first place.

There are plenty of websites with tips on securing your computer. This one is typical, and as good a place as any to start. You can do a lot just by being careful. Assume that any email containing a link might be bad. If it’s from a sender who normally would not send that type of email, if the wording is strange or awkward, or if it’s from someone that you would normally trust, like your bank, don’t click. Double check with the friend to confirm she sent it. If it’s the bank or some other trusted source, don’t click the link. Instead open your browser and go to the website for that source. Remember that no legitimate organization will ask you for your password or other login information via email, or even by phone for that matter.

By virtue of numbers alone, Windows computers are far more likely to get hacked. That’s because there are so many more of them, making them rich targets. Macs can also be hacked, though it’s usually by means of embedding the malware in software you have downloaded. “Pirated” software, programs that are normally expensive but are found free or cheap online, is a favorite place for this. Be vigilant and keep your computer’s operating system and programs updated. There are huge numbers of people making malware with the goal of getting money from you, either directly or by using your computer to do it. Don’t be that person frantically sending out emails saying “Don’t open any emails or Facebook messages from me. I’ve been hacked!”

Version 1.5 just published

I have just received notice that version 1.5 of our My 15000 app has been approved and is ready for sale. It may be as much as 24 hours before it shows up in the store as an update. There was a lot done in this version, but most of it is on the inside where it doesn’t show. Here’s a brief summary of what’s new:

  • Videos can now be downloaded. If you are going to be without Internet, on an airplane for example, you can now download videos to watch offline. You will always get the best quality video, even if you download over a poor connection. These saved videos do consume space on your iPhone or iPad, and if iOS runs out of space they are subject to being deleted. You can delete them yourself once you have viewed them. Downloading happens even when the app is not running, so you can start a lot of downloads before bed and have them go all night if need be. This new feature is controlled by a new bar at the top of the screen:
    Mode Bar
    The first time you tap the bar it will present a screen explaining exactly how it works. After that you can tap the “i” in the circle at the end of the bar to see it again.
  • Videos can now be resumed. If you stop a video before finishing, and then come back to it, you will have the option of resuming where you stopped or playing from the beginning. This will save time trying to find out where you left. If you are within 5 seconds from the end there will not be an option to resume.
  • A 15000 V3 (Quilt Maker) theme has been added for new color choices. You’ll find it on the Settings tab.
  • A series of Troubleshooting documents has been added to the Resources tab. These are PDF documents (printable) that give you tips on solving some of the common problems that have come up over the years. We’ve also added direct links to the App Store for all of our apps, as well as all of the Janome apps.

Note that this update requires iOS 11 or later. That’s the only way we could add the download feature. If your device is on iOS 9 or earlier, you will not be able to get this update. Not to worry! You will still get new videos as we add them, but your app will no longer be updated.

On asking for help and offering help

In both sewing and computers, sooner or later there will come a time when things just aren’t working. It usually happens when you are up against a deadline, such as finishing a quilt to be judged or digitizing a gift. What to do? Usually it means going to the Internet to ask for help. That can lead to some of these common mistakes:

  • Being too vague – When you ask a question, be specific. “Why does my thread keep breaking?” has dozens, maybe hundreds of answers but it’s likely that only one of them applies to you. By providing more information, you’re more likely to get a useful answer, without having to go back and forth supplying the information you left out. “I’m sewing a blind hem on my Janome S9. The fabric is lightweight cotton and the thread is some polyester I got from the dollar bin at Walmart.” This will get you an answer quicker, and it will likely be the right one.
  • Using a shotgun approach – Posting your question to every Facebook group you ever joined, as well as all of your email groups, may seem like a good idea. However most of the people in those groups are in multiple groups and it’s irritating if they answer your question in one group, only to see it again in another two or three. This practice, sometimes called “cross-posting”, just clutters up lists. Rather than get you an answer quickly, it may cause some people who might be able to help to just skip over it entirely.
  • Asking for help prematurely – This happens a lot with computer problems. Someone gets an error message in Windows and sends me a screen shot in an email wanting to know what it means. Though I’ve been using computers for more than 50 years, I do not have every possible error and corresponding fix committed to memory. I’ll have to go to Google and search for the text of the message. Do that yourself before asking for help and you may not even need to ask for help.
  • Be courteous – Yes, you are frustrated, desperate, and maybe angry. Even so, it’s rude to grab the latest post in a thread about how to best bind the edge of a quilt and post a reply with “How do I put a buttonhole in velvet?” This annoys everyone in the thread and is not likely to get you a usable answer.
  • Be responsible – Questioner: “My machine is skipping stitches.” Response: “When was it last serviced?” Questioner: “It was right after Bobby’s third birthday. He’s in college now, so that would be …” Clearly this is not a quick-fix question, and the answer is obvious. In a similar manner, if you are using a software package you bought 4 years ago, and you have never updated, you should check for updates first. Software always has bugs, and all responsible publishers provide updates to fix them.
  • Me too! – A post is made asking a question. The first reply is “I have that problem too! What’s the fix?” This doesn’t help the person who asked the question, and now we have two questions to answer, at least potentially. If you have the same problem there’s no need to post it. Just watch the thread for any potential solution. If it doesn’t work for you, then it would be good to re-post the question and note that the fix did not work for you.

Most folks on the Internet are more than willing to offer help. Sometimes that help is not really helpful. Consider these scenarios:

  • Relevancy – The question “Why is the bobbin thread showing on my embroidery?” may get a response like this. “My brother-in-law’s aunt had the same problem, only it was with thread breaking when sewing a leather vest together. She had to use bear grease on the needle.” Not only is this not helpful, it has wasted the time of everyone who bothered to read it.
  • Jumping the gun – I’m on my computer most of the time, because I use it to create and maintain apps. If an email help request comes in I try to respond when it arrives, but sometimes I don’t read the question fully and supply an answer that is incomplete or outright wrong. I’ve tried to mend my ways by waiting until I have time to consider the response, though often others will have already responded with incomplete or wrong answers. Sometimes folks will continue to respond after I have posted, echoing the same answer. This is not necessary, and it just clutters up the list.
  • Echo – If a question is asked and answered with an answer you agree with, it’s not necessary to post “Yes, that’s right.” If the posted answer is incomplete or flat out wrong, then a follow-up would be appropriate.

Diane and I have been answering sewing and computer questions for a long time, and we plan to continue as long as we’re able. This blog does not permit comments, which is by design. Comments that include questions may get missed. We have two main places to ask questions:

  • Our email discussion list on Groups.io – membership is free and it is dedicated to all models of Janome sewing machines.
  • The Support Page for our apps. While we created it specifically for questions related to our apps, I have attempted to answer every question submitted. The only time this fails is when the supplied email address doesn’t work, and I have no way to reach the questioner.

We do monitor some of the Facebook groups, and will occasionally throw in a comment or suggestion. However the endless stream of ads and vacuuming of our personal information has put us off spending much time there, and we have stopped publishing on Facebook.