Microsoft has a habit of making updates between versions of Visual Studio applications difficult. For example, the simple act of opening a solution (.SLN) file using a different version of Visual Studio than the one used to create it can be difficult or impossible. Most technology updates contain breaking changes that mean older code requires tweaks in order to continue working. Even the Visual Studio IDE interface changes, which means step-by-step instructions no longer work properly. Unfortunately, all of these sorts of changes have affected the examples in Microsoft ADO.NET Entity Framework Step by Step. This book is written to support:
Visual Studio 2012 Professional (or above)
Entity Framework 5.x
It doesn't surprise me that Visual Studio 2013 developers are encountering problems with the book. Changes to the IDE mean that the step-by-step instructions won't work as stated and there isn't an easy method of fixing this problem short of rewriting the book. Likewise, changes to the Entity Framework mean that some assemblies such as System.Data.Entity don't even exist any longer, so some book explanations won't make sense.
However, it's still possible to open the examples and see how they work. Instead of opening the .SLN file associated with an example, open the C# Project (.CSProj) file. For example, when looking at the example in Chapter 1, you open the SimpleEF.csproj file found in the \Microsoft Press\Entity Framework Development Step by Step\Chapter 01\SimpleEF\SimpleEF folder instead of the SimpleEF.sln file found in the \Microsoft Press\Entity Framework Development Step by Step\Chapter 01\SimpleEF folder when using Visual Studio 2013.
Much of the theoretical, usage, and general functionality information in the book (about half of the book) is still useful to the Visual Studio 2013 developer as well. So, there is still a lot of value to obtain by reading my book, but readers are right to point out that not every feature will work as written. Please accept my apologies in advance if you purchased the book and were disappointed with it. I did provide clear instructions about the products to use with the book in the book's Introduction, but such information can be easy to miss.
As always, I try to provide every reader with a great reading experience. Should the publisher decide to update this book, you'll learn about the update here when I start looking for beta readers. Please let me know about your other book-specific questions at John@JohnMuellerBooks.com.
Early spring is the time for snow. However, it's not just any snow. The snow in spring can be magical at times. It drapes itself onto the trees and other plants in ways that reveal new ways to look at the mundane. The trees and other plants take on a new appearance.
We recently had a spring snow and I took a few pictures of it. For example, here's one of my favorite trees viewed in a new way.
Everywhere I looked, the snow had done amazing things to the landscape. Even our orchard looks magnificent with its coating of perfectly white snow. (This is a view of our apple orchard from the house.)
The woods can be exceptionally pretty. They take on a mystical appearance. Paths all but disappear, but are still visible when you look closely enough.
Of course, my favorite thing about springtime snows is that you get to enjoy all this beauty without any of the usual shoveling. The spring weather dictates that the snow melts sooner, than later. Anytime I get a beautiful scene from nature without any work on my part, I'm overjoyed. What is your favorite thing about springtime snows? Let me know at John@JohnMuellerBooks.com.
It can be difficult to choose just the right kind of source code examples to include in my books. In fact, readers often write to ask why I didn't choose a different kind of example for a book. For example, a lot of readers tend to prefer console applications because they're:
Easy to understand
Easy to write
Demonstrate the code clearly
Don't rely on any automation
Given these reasons, it would seem as if I'd use console applications for all of my examples in all of my books. In fact, these benefits (and others) are the reason I used console applications in C++ All-In-One Desk Reference For Dummies. In fact, to this list, you can add the benefit of the same example code running on multiple platforms to the list. The same example code runs on Mac, Linux, and Windows platforms with the GCC compiler. Even with this book, however, I've had readers write to ask why I didn't use a different compiler or IDE and why I didn't include examples that demonstrate the ability to use C++ to create user interfaces in anything but Visual Studio (the new edition of the book won't include the Visual Studio examples).
Some books don't lend themselves to console applications. For example, one of the purposes of Microsoft ADO.NET Entity Framework Step by Step is to show how you can use the automation provided by Visual Studio to write your applications with less code and in significantly less time. Not everyone likes the automation and I've actually had a few readers ask why I couldn't write the examples using a console application format. The problem is that few people use the Entity Framework with console applications and the automation is there to simplify things. I understand that other books may provide console application examples, but I chose to provide the examples in a form that the majority of my readers would use in a real world setting.
Trying to come up with a book that pleases everyone is simply impossible because everyone has different needs. It all comes down to people wanting the best deal possible in a book, which means seeing an example that uses their environment on their platform and demonstrating precisely the kind of code they need to write. It's an unrealistic expectation for any book. My Getting the Most from Your Technical Reading Experience post explains how you can optimize the purchasing experience to obtain the best book for your needs. The caveat is that no matter how good the purchase is, the book will never answer all of your questions and most definitely won't answer them in precisely the way you need them answered for fulfill an application development requirement.
Of course, I'm always open to your input. It's the reason I run this blog and ask for your input in nearly every post. My purpose in writing is to answer as many questions as I can for as many readers as I can in the best way possible. Sometimes that means I need to take a step back and rethink a particular process I'm using, technique I'm applying, or perspective I'm pursuing. I encourage you to continue contacting me at John@JohnMuellerBooks.com with your book-related queries. I always use your input to help create better books in the future.
Whenever a new exploit surfaces, such as Heartbleed, and the media focuses all its attention on it, I have to wonder whether the exploit may not be a red herring—a bit of misdirection used to keep our attention focused anywhere other than it should be. It's true that this exploit is quite terrible. It affects any server running Secure Sockets Layer (SSL) and Transport Layer Security (TSL) software based on OpenSSL, which is actually supposed to protect people engaged in confidential transactions. Supposedly, Windows and OS X servers are immune to the exploit, but these servers often rely on services offered by servers that are affected, so everyone is suspect at this point. It's my understanding that the exploit is incredibly easy to implement and doesn't leave any trace once the perpetrator has gone. Fortunately, there are also ways to fix the problem and most sites will likely have it fixed within a couple of days.
The exploit is an eye opener for users who have grown complacent about Internet use over the years. Most of the articles I read about Heartbleed don't even address the user, but the user is the real loser. It's the user's information that is gone forever without a trace and the user who will likely bear the brunt of the financial problems caused by Heartbleed. Even if a company is forced to pay some sort of compensation to the user for the loss of information, the compensation will never fully repay the user for the inconvenience and loss of reputation that such an exploit causes. Unfortunately, the user continues to pay a price long after the exploit is forgotten in the form of lost opportunities and an inability to make use of certain services due to a loss of reputation caused by the exploit.
However, I began this post by talking about red herrings—the misdirection often found in the plot of detective novels. I find it interesting that this bug was introduced in December 2011 and is only now making headlines. This means that Heartbleed was a usable, viable means of grabbing information surreptitiously for over two years. It makes me think that there must be other kinds of exploits of this sort that nefarious individuals are currently using to grab every last bit of information possible about you. All the media attention on this one particular exploit is taking the spotlight off those other exploits. Perhaps Heartbleed has outlived its usefulness and was actually made visible by the hacker community on purpose for the purpose of hiding the true activities of these individuals. Of course, there is no way of knowing.
What all this leads me to believe is that individuals must exercise good judgement when engaging in online activities of any sort. No one will fix your credit report or reputation once ruined and counting on the financial community to make amends simply won't work. These people are rich for a reason—they know how to hold onto their money (as in, you won't get any). In addition, software is always going to contain errors because programmers are human, so you must count on future exploits every bit as bad (or potentially worse) than Heartbleed. With this in mind, consider taking these suggestions to moderate your online behavior and make it a little more safe.
Use strong passwords that are easy to remember so you don't have to write them down.
Change your password relatively often (every month or two works pretty well).
Use different passwords on every site you visit.
Never engage in transactions of any sort with any organization you don't know.
Rely on a single credit card for financial transactions and never use the credit card for any other purpose (better yet, rely on an online-specific financial aid such as PayPal).
Don't expose more information about yourself than necessary.
There are other ways in which you can protect yourself, but if you follow these few techniques, you can avoid a considerable number of security issues. The point is that Heartbleed is a scary exploit and there are probably a hundred other exploits, just as scary, already in play out there. Someone will always want your information and just handing it over to them seems like a bad idea, so take steps to personally keep your information secure. Let me know your thoughts about security red herrings at John@JohnMuellerBooks.com.
Microsoft has taken great pains over the years to try to kill VBA off. I've discussed some of the issues surrounding this effort in two previous posts: VBA and Office 2013 and VBA and Office 2013 (Part 2). Because of these efforts, a number of people have written to ask me about VBA and my book about it. The fact of the matter is that most of the examples in VBA for Dummies continue to work fine and VBA remains a viable development platform for applications. Microsoft's efforts to move VBA developers to Visual Studio Tools for Office (VSTO) haven't been as successful as Microsoft would like—mostly because most VBA developers have other careers and don't want to learn how to use VSTO.
I do continue to provide updates for my book in the VBA for Dummies category of this blog. The latest such post discusses trigonometric calculations in VBA. As you find book issues, I'll continue to address them in this blog. In addition, as time permits, I'll discuss VBA issues in general and provide additional examples that relate to the content in my book. All I really need is your input at John@JohnMuellerBooks.com to know what sorts of content you'd like to see. Your e-mails help me decide which issues are most important to you, so please do write when you see a particular need.
Of course, the biggest question about VBA is the one I haven't answered yet. Some people have wondered whether VBA is still a viable language for new development. The fact that even Microsoft has provided updated macros for VBA should tell you something. If there were no interest in new development, you can be sure that Microsoft wouldn't waste time in posting macros for Office 2013. In fact, a Google search shows 122,000 hits for sites that have updated their VBA information in the last year. That's a lot of interest in a language that Microsoft has tried so hard to kill off.
I still see VBA as the language to use when you have any sort of Office automation need—VSTO is a better choice when you actually want to extend Office functionality or define new behaviors (work that full-fledged developers normally perform). It's incredibly easy to use and most people can learn to use the basic features quite quickly. In fact, because it's interpreted, VBA makes a great way for people to start learning basic programming principles.
The only caveat for today is to ensure that your code doesn't have any compatibility issues, especially if you plan to use your VBA macros with Office 365. There is a lot of old code out there that might not work with newer versions of Office. With this in mind, Microsoft has created the Office Code Compatibility Inspector (OCCI). Make sure you download as use this tool to check your code.
There have been a lot of stories in the trade press about Windows XP as of late. A number of readers have written to ask about the aging operating system because they're confused by stories from one side that say everyone is sticking with Windows XP and stories from the other that say people are abandoning it. Windows XP is certainly one of the longest lasting and favored operating systems that Microsoft has produced, so it's not surprising there is so much confusion about it.
Microsoft is certainly putting a lot of effort into getting rid of the aging operating system and for good reason—the code has become hard to maintain. Development decisions that seemed appropriate at the time Windows XP was created have proven not to work out in the long run. Of course, there are monetary reasons for getting rid of Windows XP as well. A company can't continue to operate if no one buys new product. It must receive a constant influx of funds to stay in business, even a company as large as Microsoft. In short, if you're Microsoft and you want to stay in business, rather than service what has become an unreliable operating system, you do anything it takes to move people in some other direction.
On the other side of the fence are people are are simply happy with the operating system they have today. The equipment they own is paid for and there isn't a strong business reason to move to some other platform until said equipment breaks. The reliability of computer equipment is such today that it can last quite a long time without replacement. Theoretically, based on reliability alone, it's possible that people will continue to use Windows XP for many more years. I have such as system setup to hold my movie database and to play older games I enjoy, but I don't network it with any other equipment and it definitely doesn't have access to the Internet.
From many perspectives, reports of the death of Windows XP are likely premature. The latest statistics still place the Windows XP market share above 27 percent. Even when Microsoft's support goes away on April 8th, many third party vendors will continue to support Windows XP. What Microsoft's end of support means is that you won't get any new drivers for new hardware or upgrades to core operating system features. However, you can still get updates to your virus protection and Windows XP will continue to operate with your existing hardware.
For most people, the question of whether to keep Windows XP around hinges around the simple question of whether the operating system still fulfills every need. If this is the case, there really isn't any reason to succumb to the fear mongering that is taking place and move to something else. However, once your equipment does start to break down or you find that Windows XP doesn't quite fit the bill any longer, try moving along to something newer.
As to the essential question about the level of Windows XP support I'm willing to provide for my books, it depends on the book. My system no longer has development software on it because developers have moved on to other platforms. So, if you ask me programming questions about Windows XP, I'm not going to be able to help you. To some extent, I can offer a little help with user-level support questions for a few of my older books. However, I won't be able to cover issues that my support system doesn't address any longer, such as connecting to a network or the Internet. In sum, even though I can offer you some level of support in many cases, I can't continue to provide the full support I once did. Let me know about your Windows XP book support questions at John@JohnMuellerBooks.com.
Sometimes applications don't get along, especially when one application is designed to create new content at a low level and the other is designed to prevent low level access to a system. Such is the case with compilers and antivirus applications in some cases. I haven't been able to reproduce this behavior myself, but enough readers have told me about it that I feel I really do need to address it in a post. There are situations where you're working with source code from one of my books, compile it, and then have your antivirus application complain that the code is infected with something (even though you know it isn't). Sometimes the antivirus program will go so far as to simply delete the application you just compiled (or place it in a virus vault).
The solution to the problem can take a number of forms. If your antivirus application provides some means of creating exceptions for specific applications, the easiest way to overcome the problem is to create such an exception. You'll need to read the documentation for your antivirus application to determine whether such a feature exists.
In some cases, the compiler or its associated Integrated Development Environment (IDE) simply don't follow all the rules required to work safely in protected directories, such as the C:\Program Files directory on a Windows system. This particular issue has caused readers enough woe that my newer books suggest installing the compiler and its IDE in a directory the reader owns. For example, I now ask readers to install Code::Blocks in the C:\CodeBlocks directory on Windows systems because installing it elsewhere has caused some people problems.
Unfortunately, creating exceptions and installing the application in a friendly directory only go so far in fixing the problem. A few antivirus applications are so intent on protecting you from yourself that nothing you do will prevent the behavior. When this happens, you still have a few options. The easiest solution is to turn the antivirus program off just long enough to compile and test the application. Of course, this is also the most dangerous solution because it could leave your system open to attack.
A safer, albeit less palatable solution, is to try a different IDE and compiler. Antivirus programs seem a little picky about which applications they view as a threat. Code::Blocks may cause the antivirus program to react, but Eclipse or Visual Studio might not. Unfortunately, using this solution means that steps in the book may not work precisely as written.
For some developers, the only logical solution is to get a different antivirus application. I've personally had really good success with AVG Antivirus. However, you might find that this product doesn't work for you for whatever reason. Perhaps it interacts badly with some other application on your system or simply doesn't offer all the features you want.
My goal is to ensure you can use the examples in my books without jumping through a lot of hoops. When you encounter problems that are beyond my control, such as an ornery antivirus application, I'll still try to offer some suggestions. In this case, the solution truly is out of my control but you can try the techniques offered in this post. Let me know if you find other solutions to the problem at John@JohnMuellerBooks.com.
A lot of people see chickens as being confined to a particular area and quietly pecking at the dirt for most of their lives. Meat chickens do have a certain lack of personality and do spend most of their time eating. However, laying hens are a completely different story. Depending on the breeds you get, you can see a wide range of interesting behaviors, some of which are quite funny.
There are still some snow hills in our yard. The other day I was looking out our kitchen window at one of them and there was a chicken at the top pecking into the top of the hill. She was obviously eating some of the ice in order to get a drink. However, it wasn't long and another hen ran up the hill and knocked the first hen off. Now she was going after the ice. Soon, there was a general melee as different chickens proclaimed herself the queen of the hill. I was laughing so hard that I nearly dropped some dishes I was putting away. The hens looked so intent about their play and so funny at the same time.
A few days later I was out pruning our pear trees. Suddenly, one of the chickens (Daisy, an Americana) started clucking quite loudly—the sort of cluck that says, "Hey, I've done something really cool!" She jumped over the top of the run fence and waddled as quickly as she could to me, clucking intensely all the way. Then she curtsied. So, I petted her and told her was a good chicken she is, but the action didn't satisfy. As I tried to go back to work she shrieked at me and curtsied again. So, I picked her up and took her back to the coop. She had laid a beautiful blue egg for me and wanted me to know just how beautiful it was. So, I accepted the egg and made a big deal over just how good a chicken she is, which seemed to satisfy her this time. Just why this particular egg was so special is beyond me.
Later in the same day, Violet, our Black Australorp, was making one of her usual speeches. She's the queen of the coop and when she speaks, the other chickens listen. Just was she was saying on this particular occasion is beyond me. However, she was in fine form and rattled off quite a long discourse on something only other hens would care about. The other hens gathered around her and listened intently, murmuring to themselves in agreement with whatever it was that she was discussing.
There is seldom a day when our chickens don't do something interesting and special. Even if they didn't produce copious eggs, I'd keep them around just for the laughs they provide. I actually consider them an essential part of my health plan now. A laugh a day keeps the doctor at bay. If you do get laying hens, make sure you take time to enjoy their behaviors—you'll be glad you did! Let me know about your interesting chicken stories at John@JohnMuellerBooks.com.
As I write this post, it's a balmy 17 degrees outside my window (a mere 3 degrees with the wind chill). It's definitely not tree pruning weather. At least, it isn't comfortable tree pruning weather. Of course, that's the problem of spring—trying to find time to get the pruning done in weather that doesn't promise frostbite (at least, not immediately). There is always a race that occurs. On the one hand, you have trees that are on the verge of waking up and you need to prune them before that happens. On the other hand, you have old man winter sticking around just long enough to make life difficult.
Trying to figure out the best time is made even more difficult by the weather conditions. It pays to have some sunlight when you prune so that you can see bug infestations on the trees and pick them off. For example, this is the time of year you want to find the egg clusters of the Eastern Tent Caterpillar. However, you don't want full sun either. For the most part, you're looking up into the trees to see where to prune next. If the sun is constantly in your eyes, you may not prune the tree correctly (not removing enough or removing too much). So, finding a partly cloudy day when the temperatures aren't too extreme during the most perverse weather of the year can prove difficult, if not impossible. All this also assumes you can drop everything else to do the pruning.
Generally, I find that the perfect weather is nearly unattainable and settle for something that works. A little too warm is better than not warm enough, but I also have my handy wood stove to warm up in front of should things get too cold. A little hot chocolate or broth goes a long way toward making less that perfect weather endurable. Truth be known, pruning is normally a cold affair that's enjoyable simply because the snow has abated and there is the promise of warmer weather to come.
Of course, what warms us most this time of year is the hope of spring. Even with the weather the way it is today, you see all the indicators that spring has arrived. My personal favorite is the birds; at least, until our Easter garden starts to bloom. What is your personal favorite indicator of spring? Let me know at John@JohnMuellerBooks.com.