Review of Visual Basic 2012 Programmer’s Reference

As you might expect, Visual Basic 2012 Programmer’s Reference is a heavy tome at 798 pages. Of course, those pages could be filled with fluff, but that isn’t the case with this book. Rod Stephens does a great job of covering a wide variety of topics that anyone who wants to know how to write Visual Basic applications will need to know. The book starts with the assumption that you have never worked with Visual Studio before. Actually, it’s a good start for some developers who have been coding a while because they are self-taught and really haven’t explored everything Visual Studio has to offer.

The first part of the book discusses using the tools of the trade—a topic that most books seem to miss for whatever reason. I’m not talking a quick overview either. Rod provides six full chapters, 77 pages, worth of material on how to use the Visual Studio IDE for various kinds of application development including both Windows Forms and Windows Presentation Foundation (WPF). This may not seem very important at first, but quite a few readers of my books have problems with the IDE they’re using and even more have no idea that the IDE supports certain functionality. In short, many developers don’t have a firm grasp of the tool that they’re using to write code, so they can’t perform their best work. However, if you’re already completely familiar with the IDE, it’s probably a good idea to skip this part of the book because it is quite detailed. Missing from this part of the book is material on working with Metro applications. In fact, that material doesn’t appear until Chapter 21, so this really isn’t a strong Windows 8 offering from a building Metro applications perspective.

The second part of the book is entitled, “Getting Started,” which I view as a misnomer. Yes, you’re getting started writing code, but anyone who skips the first part really hasn’t gotten a good start. This part of the book introduces the reader to controls, forms, and other objects used to create applications. There are six chapters of this sort of material. Again, you can’t expect to create great applications if you don’t know what objects are already available to you. Developers who don’t really know what objects are available will tend to reinvent the wheel or assume that the language isn’t capable of performing a specific task. Rod does an outstanding job of making the reader aware of what is available and how to use it effectively. There are 100 pages worth of extremely useful material of this sort.

Chapter 13 should have begun a new part. Rod leaves controls, forms, and other objects in this chapter to begin working with applications. It’s one of the few organizational errors in the book, but one that is easily forgiven. The next six chapters, 160 pages worth, discuss basic programming topics such as variable data types and the use of programming structures. Chapter 18 provides an excellent discourse on error handling and will be one of the chapters that even experienced developers will want to read.

Chapters 19 and 20 provide extremely basic, but thorough coverage of database topics. This is not a book about database development. Rather, it exposes you to the topic of database development and you’ll need to obtain another book on the topic to finish your education. This said, what this book is really doing is helping you understand database development at an extremely basic level so that the second book you get, the one specifically about database development, will make sense.

Chapter 21 (which is only 12 pages), likewise, is an extremely basic view of Metro development. Again, this isn’t a Windows 8 book and it doesn’t appear that the author ever intended it to fulfill that role. What Chapter 21 does is introduce you to Metro in a basic way so that you can go on to work with a Windows 8-specific book and make sense of the material it contains. That said, I did notice that Chapter 21 does miss out on a few fundamentals, such as obtaining a license for developing apps. Rod doesn’t appear to mention that the target application will only work when running Windows 8 either (at least, I wasn’t able to get it to run on Windows 7).

Starting with Part III, you learn about Object-Oriented Programming (OOP) techniques in detail. Chapter 22 is a must read chapter because it provides the theory that many books on the market lack. It describes what OOP is all about. It’s tough to understand coding examples when you don’t understand the basis for those examples and Rod fills all of the gaps for you. In the chapters that follow, Rod leads the reader through basic class development, structures, and namespaces. The book then continues with some specifies on collection classes and generics. Again, all of this material is designed around a person who really doesn’t know anything about Visual Basic, so Rod takes time to explain the details not found in other books.

Part IV of the book fills out some basic information needed to create standard desktop applications, such as printing in Chapter 27 and the use of configuration information in Chapter 28. The use of streams and filesystem objects come next in Chapters 29 and 30 respectively. The book closes out with an enormous array of appendices (22 of them) that contain all sorts of useful reference information. After you’ve gone through the book, the example applications and this reference material continue to provide you with long term value.

Overall, this is the book that you want when learning Visual Basic. It provides the details needed to write robust applications quickly. However, getting this information is like getting any other sort of education—it takes time and you must work through the examples. This isn’t a quick reference book, nor is it going to provide you with details about specific technologies such as database development or writing Metro apps. Where the book does touch on specifics, it covers those specifics at a basic level with an emphasis on helping people understand the underlying technology. If you’re looking for a book that provides quick answers, a cookbook approach to solving problems, or detailed information about specific technologies, you really do need to look elsewhere. On the other hand, if you’re tired of being confused by online examples and tutorials that don’t really teach you anything, then this is the book you want.


Dealing with Broody Chickens

Chickens can become broody at times. A broody chicken is one that wants to raise a brood of chicks. Nature tells her that she’s supposed to have a number of babies to raise. If you actually want to raise chicks, you’ll want to ensure that hens have access to a rooster when they become broody, but this isn’t the normal need when working with chickens for the purpose of laying eggs.

There are some broody behaviors that are very obvious, such as the hen raising up her bottom on a nearly constant basis. She’ll also sit in the nest box for hours on end, even if there are no eggs in the nest box. This particular behavior is the same one that you see when chicken has an egg stuck up inside her, but she’ll look quite healthy, rather than sick. Less tame chickens may bite or try to prevent you from getting the eggs in the nest box because she thinks they’re fertile. Broody hens will also make a growling-like noise or shriek at you when you approach. The better the mother, the more fiercely she’ll guard those eggs through various behaviors. Henderson’s Chicken Breed Chart will tell you how often your chickens are likely to become broody.

The point to make here is that broodiness is a natural behavior. The hen isn’t going out of her way to be mean to anyone. There is no hate message involved in this. Broody behavior happens most often in the spring because that’s when chickens naturally start to raise chicks, but it can happen at any time. The broody behavior normally lasts for two weeks, but it can be more or less time depending on the hen. When a hen is broody, she may stop laying eggs because hormones tell her that she’s going to be raising chicks and that the eggs aren’t needed. Because of this change in productivity, most people want to change a broody hen’s behavior.

A number of sites that we looked at recommended that you lock the broody hen in a cage away from the other chickens for a period of several days in order to break the behavior. This is an unnatural and cruel way to break the broody behavior. Chickens are exceptionally social animals and locking one away from the others is a terrible way to break the behavior. We’re finding that picking the chicken up and removing her from the coop to be with her compatriots in the run works better. Give her a special treat (we’ve found that mealworms are especially appreciated) to help give her a reason to stay outside. Petting her and telling her that she’s a good chicken in a soothing voice is also helpful. The point is to work with that social behavior to get her past the broody behavior.

Dealing with broody behavior is something that you really do want to do, but take your time and realize that it’s going to require a day or two of working with the hen to accomplish the task. Let me know your thoughts on broody behavior at


Sometimes Newer Really Isn’t Better

I normally spend a good deal of time telling readers to use the latest versions of libraries because the newer versions will have additional functionality and contain bug fixes for issues that have surfaced since the library was released. There are some situations where this tactic doesn’t work and one of them appears in Chapter 2 of HTML5 Programming with JavaScript For Dummies. The example originally displayed information about the host browser, but the property used to perform that task, browser, has been deprecated in jQuery 1.9.

The easiest way to fix this problem is to use a version of jQuery that does support this property. The change is relatively small. All you need to do is change the line that reads

to read

The change will force the application to use an older version of the jQuery library. As an alternative, you can also add a call to the jQuery migrate library so that the code looks like this:

   <title>Detect a Browser</title>

The jQuery site recommends using feature detection instead. Although this feature is directly supported in the latest version of jQuery, there are problems with it as well. The most important issue to consider is that the site tells you outright that the library might have certain features pulled without notice or with a long deprecation cycle, which means that you code could simply stop working at some point. It’s a poor way to detect the kind of browser that you’re using because it’s unreliable. The technique shown in Chapter 2 of the book is far more reliable at the moment.

The point of this post is that there aren’t any absolutes when it comes to coding practice. You need to know when to break the rules. Let me know if you encounter any difficulties with my solution to the problem at If someone has a better jQuery-oriented solution to share, contact me because I’d love to hear about it.


Remembering the Past and Honoring the Present

I’m out of the office today and I hope that you’re making time for family as you celebrate Memorial Day, which is also called Decoration Day. I’ve written about the basis and rituals behind Memorial day before: Honoring Those Who Gave Their All and Memorial Day – A Time of Remembrance. The short story is that this is the day you remember those who have given their all to ensure your freedom. Even though the day was started as a means to remember those who fought and died in the Civil War, the day has come to emphasize the need to remember everyone who has died in every war in which Americans have fought. The price for your freedom is extraordinarily high—paid for in the blood of fallen sailors, soldiers, airmen, and marines. Our need to preserve and cherish our freedoms, no matter how you might believe, is as great as the price these people have paid.

I know that most people will take today and spend time with family. That’s a good thing to do as far as I’m concerned. I don’t think that anyone who has given their all for you will mind even a little and would probably be right there with you if they could. However, spending a few minutes considering the immense gift these individuals have given you is important too. When we forget their gift to us, we begin down the road of losing the freedoms for which they fought so hard. A time of remembrance is essential if we are to learn from history and potentially avoid the mistakes we’ve made in the past.

Today is also a good day to thank the living. Yes, I know we have Veterans Day set aside as a specific time for thanking a vet, but letting the living know that we appreciate their efforts is never misplaced. So, while you’re taking time out to grill a steak on the barbecue, consider the gift that you’ve received in the past and thank someone who is giving of their time now. The person you thank today could very well be the person you remember tomorrow.


Determining the Amount of Shelving You Need

I never anticipated receiving quite so many e-mails about larder shelving (including a few comments about the quaintness of the term). When determining the amount of larder shelving you need, you must consider the kinds of storage you use. We group our storage into four areas:

  • Ready Storage: Used to hold food short term. It includes the refrigerator, kitchen cabinets, and under worktable storage (five gallon buckets).
  • Deep Freeze: Used for moderate term food storage. Some foods don’t can well or they taste better when you freeze them. We have two freezers (one small and one large) for freezing fruit, vegetables, and meat items. Because we vacuum pack our foods, we store some items up to two years. The freezers are kept at 0 or less to ensure the food is thoroughly frozen. Each summer, before we begin storing the harvest, we take everything out of the freezers and use everything that has gotten old in some way (we sometimes put old food in the compost where it turns into dirt that will be used for new food).
  • Larder: Used for long term canned storage of food. Many items will last up to five years in the larder because of the canning techniques we use. Every spring every can is cleaned and inspected to ensure it remains safe. The larder is organized to present the oldest items up front so they’re used first.
  • Root Cellar: Used for winter fresh storage. As the name implies, we use our root cellar to store roots. However, we also use this area to store apples, pears, and squash. The root cellar sees use from September to around April each year. It’s never used during the summer months, mainly because our root cellar isn’t damp or cool enough during that time and the food would spoil.

It’s essential that you determine how each area will ultimately work into your food storage strategy. Determining how large to make the larder then becomes a matter of portions. If you want to be fully self-sufficient, you need to decide where the food will come from for your meals in a general sense.

Let’s look at a specific example. We drink a 6 ounce glass of juice with breakfast four days a week on average. That’s a total of 6 ounces per glass * 2 people * 4 days a week * 52 weeks a year or 2,496 ounces per year. We follow a two year plan for juice because it’s easy to obtain from a number of sources, so that’s a total of 4,992 ounces for the two years. All of our juice is canned, so all of that juice has to be stored in the larder. Juice is canned in quart jars, so we need 156 jars (at 32 ounces per jar) to store that much juice. From last week’s post you know that each shelf segment can hold 42 quart jars, so we need 3.7 shelf segments for juice.

To fill out the remainder of breakfast, we usually have a grain product of some type. In addition, some meals include breakfast meat and/or eggs. Along with juice, we also drink milk and coffee. All of these items come from ready storage, so you don’t need to consider them in creating your larder.

Lunch is our main meal of the day. Normally we have meat four days a week. Most of the meat comes from the freezer. However, on busy days, we used canned meat from the larder. The canned meat is computed a bit differently. We normally can the smallest chickens and one chicken produces two quarts of canned meat. Each quart contains four pieces: half a breast, wing, leg, and thigh (see Cutting Up a Chicken for details). One quart serves as a main meal and a snack when eaten directly or as two main meals when eaten as part of a salad or casserole. Normally we process eight chickens at a time and the first two processing sessions produce the canned chicken, so there are 32 quarts of canned chicken produced each year, that require 0.8 shelf segments. We produce 1 ½ years worth of canned chicken each year for two years (and take off the third year), so the maximum shelf space used at the end of year 2 is 1.6 shelf segments.

Along with our meat, we normally have two kinds of vegetables, some of which come from the larder, but can also come from ready storage, the root cellar, or the freezer. This is where you need to keep records on how you use your various food storage areas. About 70 percent of our vegetables come from the larder. We eat one quart of vegetables when there is meat included in the meal and one and a half quarts on our vegetarian days. Vegetables are generally stored in pints, but there are times when we store vegetables in quarts as well. Because vegetables tend to have longer cycles between good yields we follow a three year plan. The calculation for vegetables becomes ((1 quart a day * 4 days) + (1.5 quarts a day * 3 days)) * 52 weeks a year * 3 years * .70 percentage stored in larder or 928 quarts or 22.1 shelf segments.

Our afternoon snack usually includes fruit, a grain product, and a dairy product. The fruit is the only item that comes from the larder. It can also come from ready storage, freezer, or root cellar. Our fruit portion is normally 1 pint per day when taken from the larder. Because fruit production can be incredibly unpredictable, we follow a four year plan. About 30 percent of our fruit comes from the larder. This means the calculation for fruit is 1 pint per day * 365 days a year * 4 years * .30 percentage stored in the larder or 5.2 shelf segments.

The evening snack can come from a variety of sources, but we normally have something quite small. This is the time of day we’ll have ice cream, leftover canned meats, fruit, cookies, or something else small such a dried fruit/vegetable slices (see Making Dehydrated Chips for details). I normally don’t include this snack in the calculations, but your eating habits might be different and you might need to include it. The new shelving does include space for four 5 gallon buckets worth of dried fruits and vegetables that don’t appear as part of the calculations that come later in this post.

We also make our own condiments, salsas, jellies, and other items that take up 3 shelf segments. Again, you need to consider your eating habits and make decisions based on those habits.

Now it’s time to add everything up to see how much space is required. Our total shelf segment usage (a shelf segment consists of 42 quarts or 84 pints) is 3.7 for juice, 1.6 for meat, 22.1 for vegetables, 5.2 for fruit, and 3 for condiments or a total of 35.6 shelf segments. Our two larder shelving units currently provide 39 shelf segments (not including the 5 gallon bucket/canning equipment storage in the new shelving unit). The remaining shelf segments are used for organizational purposes and for empty jars.

The calculations for determining how much shelf space you need can seem daunting, but if you address one meal at a time as I’ve done in this post, you should find it possible to do. What you need to do is focus on that meal and the portions you typically eat during that meal. Let me know if you have any additional questions on this topic at


The Making of a Grape Fence

I have spoken a few times about our grapes (see Pruning the Grapes (Part 1) and Pruning the Grapes (Part 2) for details). A few people have asked for details about our four-cane Kniffin system setup. You can see some pictures of the setup in my posts and there is line art available that shows the setup various places online. However, most posts don’t provide details about the actual construction of the setup.

In my case, I used seven large black locust posts cut from trees my grandfather planted. I debarked the logs using a draw knife and then let them dry for a year before putting them into the ground. Black locust is naturally rot resistant and incredibly hard—even the woodpeckers don’t like it. However, carpenter ants will infest your logs given the chance, but even in this case, they hollow out the center and leave the outside intact. So far, I haven’t encountered a problem with carpenter ants because the grape fence is located far enough away from the woods. Because the posts I’ve used are so strong, I didn’t add the angled end posts shown in a lot of illustrations of grape fences. If you were to buy your posts from a lumber hard, you’d want sturdy 4″ diameter or larger posts. Each post is 9′ long and you bury 3′ of the post in the ground.

The cabling is 1/8-inch galvanized wire rope. You want to use wire rope because it’s made up of many small wire fibers and is quite flexible—making it easier to work with. This size cabling will support six to ten canes without any problem. Make sure you read about the weight capacity of the cabling. Each cable must be able to support a minimum of 50 pounds per cane per cable. So, if you have six canes in a row, the cable must be able to support at least 300 pounds (more is better). Otherwise, you have the risk of the cable breaking as the fruit ripens.

You’ll need some method of clamping the cabling. The method for attaching the cable to the earth anchors and turnbuckles is to create a loop and then clamp the loop. Some people will try to use crimping sleeves because they’re easy to work with and inexpensive. This solution works fine for fencing, but not for grapes. As your setup flexes and breaks into the task of supporting the grapes, you’ll need to make adjustments and tighten the cables. For this reason, you want to use wire rope cable clip clamps instead. I’ve found that the 3/16″ or 1/4″ sizes work best for the cabling used on my setup.

Two turnbuckles help tighten the cables. One turnbuckle for the upper wire and one for the lower wire. The turnbuckles make it possible to make small tightening adjustments as the season progresses (you normally make major adjustments in spring, before the canes become active). You want to keep the cables as tight as possible to help support the canes properly. I prefer a 5/16″ × 9 turnbuckle because it provides enough adjustment potential in most cases. Make sure the turnbuckles you choose can support the weight of the wire rope and canes.

The wire rope is ultimately supported by two earth anchors—one at each end. Both rope wires can go to the same earth anchor. It’s a mistake to assume that you can use a short earth anchor because it will pull out over time. In order to ensure that your setup will remain sturdy, you need a large earth anchor. My setup uses 6 × 48″ earth anchors with attached auger for maximum strength.

An earth anchor the size of the one discussed in this post requires a fair amount of muscle to put into the ground. I highly recommend having a piece of metal pipe to use to help get the anchor into the ground. My piece of pipe is about 30″ long. You put the pipe through the eye in the earth anchor and use it to turn the earth anchor as it goes down into the ground.

The final piece of the puzzle are the screw eyes used to hold the cable at each post. The screw eyes are attached at heights of 30″ and 60″ on my setup. Each screw eye must be able to support the weight of all of the canes and the wire rope. A 2-1/16″ screw eye (size 104) will probably work, but I prefer a larger 3″ screw eye to ensure it will hold up.

This is all that you need to setup a grape fence of the type I use. There are ways to make the fence using other materials and I’m not saying my method is the only method available, but it has worked well over the years we’ve had grapes. Let me know your thoughts on grape fence construction at


Working with the HTML5 Canvas

HTML5 has a considerable number of new features to offer. In fact, I discuss many of the new tags that HTML5 has to offer on page 228 of HTML5 Programming with JavaScript For Dummies. In fact, my book demonstrates a number of these tags as part of showing you how to use JavaScript to create applications that run anywhere and on most devices that support HTML5.

One of the more amazing (and least talked about) features of HTML5 is the concept of a canvas that you can draw on, much as an artist uses a canvas to create interesting pictures. I encountered an article about the HTML5 canvas the other day entitled, “All About HTML5 <canvas>” by Molly Holzschlag. In this article you get a great general overview of precisely what a canvas can do for you. I think you’ll find it quite useful, especially if your artistic skills are at the same level as mine are (nearly non-existent). The <canvas> tag makes it possible to create useful graphics in a way that most developers can understand quite easily.

This is one tag that I wish I had explored more fully in my book, but picking topics carefully is part of being a good author. Instead of providing an overview like the one that Molly provided, I chose to include a more specific example that also employs the Google API. My Working with Data Using Maps post describes just one method of working with the Google APIs. Chapters 18 and 20 both discuss methods of working with the Google API and the example in Chapter 20 combines the Google API with the <canvas> to create an interesting example.

If you’re working with HTML5 for the first time, make sure you spend time working with the <canvas> tag. It makes data presentation considerably easier, even if you lack artistic skills. Let me know about the projects you’ve created using the <canvas> tag at


Building Larder Shelving

Creating a place to store your canned goods is an essential part of making self-sufficiency work. In Fun is Where You Find It! (Part 3) you see one view of the larder shelving we use to store our canned goods in the basement. The shelving has to be built to withstand the weight of the canned goods without sagging. In addition, you want to be able to support part of someone’s weight when they need to regain their footing. If you are looking for supplies to help with your building project, you may want to visit a trade supplier website similar to Tradefix Direct, where you may be able to find the supplies you need for your building needs.

In order to create our shelving, I played with some wood and actually weighted it down to see when it would sag. I then used those assumptions to start designing the shelving and to feed the numbers into the Sagulator. The maximum amount of sag you should be willing to tolerate is 0.01 inch per foot. You need an engineering margin to ensure the shelves will hold up.

Of course, the problem is getting the numbers the Sagulator requires. A typical quart jar of canned goods filled with a liquid weighs 3 pounds. If you make the shelves 24 inches deep using three 1 × 8 boards and create spans of 25 inches, you can store 42 jars per span for a total weight of 126 pounds. Using #2 Douglas fir, you get a sag of 0.01 inch. You must consider the kind of wood that you’re using as part of your calculation and keep refining the measurements until you obtain a setup that works.

You also need to consider the shelf spacing. It’s important to allow finger spacing between the shelves so that someone can reach all the way into the back to retrieve a jar without problem. After a lot of experimentation, I came up with the following shelf spacing:

  • 8 inches for quart jars stacked one high
  • 10 inches for pint jars stacked two high
  • 16 ¾ inches for 5 gallon buckets and canning equipment

To create our new larder shelving, I started with four 2 × 4 supports tied into the ceiling joists. You absolutely don’t want the shelves falling on you, so make sure you use sturdy screws. I relied on 5-inch heavy decking screws that went completely through both the 2 × 4 support and the joist as shown here.


Make sure you use at least two sturdy screws to hold each framing member for the shelves for each shelf you create. My shelving ended up being 75 inches long, 24 inches deep, and 84 inches high. The shelving arrangement includes one shelf for five gallon buckets, two shelves for quart jars, and three shelves for pint jars as shown here.


Make absolutely certain you keep everything square and level as you build because any deviation will lower the amount of weight the shelving can carry. Each shelf should be tied into every framing member with at least two screws. In this case, that means eight screws per board or 24 screws for each shelf (because there are three 1 × 8 boards used for each shelf).

Because of the shelf heights, you’ll find that you have to insert the screws at an angle. Actually, this is a good way to add the shelving anyway because the screws gain greater purchase in the wood. However, make sure you alternate the direction you screw the screws so that you don’t end up racking the shelving (making it out of square or level). Here is how your screw pattern should look.


In this case, the first and third shelves have screws coming in from the right, while the second (center) shelf has them coming in from the left. In the next section, I reversed the direction so that the first and second shelves came in from the left, while the second shelf came in from the right. Alternating directions like this helps make the shelves stronger.

Every shelf should also have a backer board to keep the canned goods from simply falling out the back of the shelf. In this case, I used 1 × 6 boards secured with two screws in each section. The backer boards also provide added strength to the entire unit.

Finally, to keep things from sliding out of either side and to also provide places to put hooks for items we wish to hang, I added end pieces. These end pieces are made from two 1 × 10 and one 1 × 8 boards. Here is how the shelving looked after I finished it (with some items already in place).


When building shelving, make sure you take time to ensure that the shelving will actually hold the items you want to put on it. The essential issue is to control sag so that the shelving doesn’t fail in the long term. Let me know your thoughts about larder shelving at

There is No Start Menu

A number of readers have recently asked me about the viability of my comments about the Start menu in Windows 8 for Dummies Quick Reference. There are a number of stories that make it seem as if Microsoft is adding the Start menu back into Windows 8.1. You’ll see article titles such as, “Windows 8.1 set to bring back the Start button” online. It’s only when you start reading the details in the article that you realize that the title is misleading at best—someone with Microsoft marketing might well have written it. The fact is, if you want Start menu functionality in Windows 8 or 8.1, you still need a third party product such as ViStart. I discuss the updated features of this product in my ViStart Updates post.

In order to get a better idea of just how Windows 8.1 changes things, you need to read articles such as “Leaked Windows 8.1 Build 9374 disappoints Start button fans.” I’ll also be providing updates as readers ask specific questions and more information about Windows 8.1 becomes available. Remember that Windows 8.1 won’t be released until late this year (assuming Microsoft remains on schedule).

So far, my take on Windows 8.1 is that it doesn’t change much—it mainly fixes problems or addresses fit and finish issues. For example, a lot of people rightfully complained about being able to display only one or two apps on screen. (After all, this is a step backward compared to Windows 7.) Even with Windows 8.1, the ability to view more apps on a single screen will only work when your device has sufficient resolution (a minimum of 1366 pixels in Windows 8). The new version is supposed to let you view up to four apps at a time, but it sounds as if you need a high resolution display to do it. It does appear that you’ll at least be able to split the screen as long as you have a 1024 × 768 display, but this really isn’t much of a help.

There are some window dressing changes as well, which I won’t address until I see an updated beta. In addition, Windows 8.1 could work on other platforms. The point is, the Windows 8 book you have in your hands now should work just fine with Windows 8.1 as well. I’ll provide updates on the blog after Microsoft releases Windows 8.1. In the meantime, don’t believe all the rumors you see online. Windows 8.1 is an incremental release, much as the version number states. Let me know if you have any other questions or concerns about the book content at


Making Smart Computer Language Choices

Many readers have asked over the years why I spent time learning the computer languages that I have. Some languages were learned as part of the requirement for getting my computer science degree and a few were learned as part of getting a job. However, most languages were learned as a means to communicate better with the computer. A computer speaks only one language—machine code, which is nearly impossible for humans to learn. My first coding experiences started with machine code and then progressed to languages such as Macro Assembler (MASM). As technology has improved and my needs have changed, I’ve learned other languages, which is why I wrote “6 Ways to Determine a New Programming Language is a Turkey.”

Some of the languages I’ve learned over the years really were turkeys. The language is probably acceptable, but I didn’t get anything for my efforts. The language wasn’t right for me—it didn’t help me to communicate better with the computer. You’ll likely find that you experience the same problem if you spend enough time writing code. The more time you spend writing applications, the more languages you eventually learn.

I rarely get into arguments with other people who feel the language they like best is superior to all others. I realized a long time ago that the language really is superior from their perspective. If I were in their precise situation and writing exactly the same kinds of application they’re writing, I’d probably come to the same conclusion. That’s why the choice of language is both personal and imprecise. My article helps you make an informed choice based on the criteria that I use most often to select a new language. An informed choice will reduce the mistakes you make when selecting a language.

The point at which some developers make a mistake is in thinking that the computer pays any attention at all to the language they choose. The computer couldn’t care less. All the computer knows is machine code. The language you choose is for your benefit, not the computer’s benefit. The moment you start thinking that a language does anything at all for the computer, the chances of choosing a turkey increase greatly.

There are some mechanics of computer languages that you do need to consider. For example, you need to know that the language you choose will translate into machine code your computer understands. You also need to know that the more comfortable you make things for yourself, the less efficient the code becomes. That’s not really a problem in today’s environment of high-powered computers, but that reality did affect my decisions early in my career. At the time, MASM provided the most efficient means possible to communicate with a computer without resorting to machine code. Even so, MASM was difficult to work with and I welcomed the introduction of C as a means of making things easier on myself.

Of course, this all leads into the question of which language you feel works best for your needs today. Some developers know just one language well—others, like myself, have an entire toolbox full of languages to use to meet specific needs. Where do you fall into the list? As I continue to write books, I’d like to hear about languages and techniques for using those languages that interest you most. Let me know your thoughts on computer languages at