A New Emphasis On Libraries

I’ve been talking with a friend about libraries recently. He had noted that the only people he had seen using libraries lately were older; that children had no desire whatsoever to even enter a library. Of course, this bodes ill for the institution because the youth of today will be the supporters of libraries tomorrow. However, his observations don’t match my own. Our local libraries seem to be packed with children. In fact, I saw three children standing outside our local library the other day while waiting for the doors to open. The difference in these two observations has me quite curious.

The way in which people use libraries has always interested me because these public warehouses of knowledge are essential to a functioning society. People require some method of accessing exotic or expensive texts—especially people who have limited means. The way in which libraries present information to the public will change in the future, but I have no doubt they will remain. In fact, I’ve touched on this topic before in my “Future of Libraries?” post. Before a future kind of library can take shape, however, the children of today must be engaged in the materials that a library can provide and see these materials as useful.

The two of us are still discussing the topic of libraries because the differences in our observations provide good fodder for discourse on the topic. My thought is that the differences in our observations could come from a number of sources:


  • A difference in the community (small town versus large city)
  • Differences in the society (such as, beach community versus Midwest farming community)
  • Times of observation
  • Motivation level of the librarians manning the library
  • Perceived value of the library’s content

Our local library is blessed with a great librarian and strong support from volunteers who truly care that we have a library. For example, we actually host events at our library to get people engaged and to enter the building so they can see what the library has to offer. The state has also been running ads to help support the local libraries and those ads may be boosting the number of people the library sees. Whatever the difference, I’m truly happy to see children waiting for the doors to open at our community library.

Of course, I always want to hear your opinion. What level of participation do you see at your local library? Who goes there and what seems to interest them most? What do you see as factors that affect participation in your local library? Let me know your thoughts at John@JohnMuellerBooks.com


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.


Get Ready…Get Set…Garden! 2013

This year’s trip to Baraboo for Get Ready…Get Set…Garden! is part of our continuing education. I talked about this particular educational opportunity in last year’s Get Ready…Get Set…Garden! post. The sessions are hosted by the Sauk County UW Extension, which actually puts on a substantial number of events during the year. Our itinerary for this year consisted of container bag gardening techniques, growing small fruits (strawberries, raspberries, and blueberries), and gardening with aches and pains (essentially a session on dealing with accessibility needs for gardeners).

The first session discussed container bag gardening and the advantages it offers over using buckets or over-sized pots to hold your garden on the patio. Every year Rebecca puts together a wonderful salad garden for me. Of special interest are the cherry and salad tomatoes. If I need a snack, I simply go outside, enjoy the flower garden she has put together for me, and munch a few tomatoes—nothing could be better than that. However, we had always wondered whether there might be something more that we could do. This year’s sessions shows that we can. However, instead of using the really expensive gardening bags that the instructor promoted as part of her business, we plan to use feed sacks. They’ll perform the same function and only cost a fraction of the amount (a bag large enough to grow tomatoes costs $22.00 if you go the garden bag route, the same size feed bag is free since we get them as part of buying feed for our animals).  I’ll post again sometime later this year to let you know how the garden bags work.

We have also had a lot of problems growing blueberries, despite ensuring the ground is acid enough for them. It turns out that we have been doing a few things wrong—the most important of which is that we haven’t been watering our blueberries enough. It seems that they require almost boggy conditions to grow acceptably. Equipped with our new knowledge, we’re going to give blueberries another try this summer. One of the problems with gardening is that you aren’t likely to get the technique right on the first try, or the second, or the third. There are some people who think gardening is science. Well, that’s partially correct, but it’s also part art. Sometimes you just need to feel your way through a growing experience.

Unfortunately, our instructor didn’t arrive for the third session. Someone with the UW Extension did fill in, but I can’t help but feel a bit disappointed because I was really looking forward to getting quite a lot out of this third class. As Rebecca and I get older, it would be nice to know about a few of the things we could do to make our gardening experience better. Even so, I must applaud the UW Extension instructor for getting up and giving an impromptu discussion on a topic that she hadn’t prepared for without any preparation time. To simply get up and start talking would be one thing—to do it exceptionally well given the circumstances is nothing short of amazing. I also plan to post again on some thoughts I garnered on meeting accessibility requirements for gardening.

There are some benighted people who think that education ends when you leave high school or college. Education is a lifelong endeavor. Gaining new knowledge and then turning it into wisdom adds spice and keeps our minds fit. Whether your intellectual love is technical, natural, or in some other realm, take time to embrace it by furthering your education. Let me know your thoughts on continuing education at John@JohnMuellerBooks.com.


Debugging As an Educational Tool

One of the questions I get asked quite often is how I learn new programming techniques. After all, I work with a broad range of languages and IDEs in my pursuit of new programming environments. Let’s face it—I like to play with code. For me, it’s not really a job to write application code. I like to see how different things work and what’s possible with a given language. In order to accomplish my goals, however, I need to learn techniques quickly. The debugger is my secret to learning how to code quickly and easily. In fact, I’ve written an article on the topic, “Improve Your Coding Skill by Listening to the Debugger.” You also see this technique emphasized in a number of my books, especially LINQ for Dummies and Start Here! Learn Microsoft Visual C# 2010 Programming.

The main reason that I use the debugger as an educational tool is that I can see the code in action. It’s possible to see how the code actually works, rather than envision what the code is supposed to do. The difference is important. For me, seeing the code actually work demonstrates that the theory behind the code is sound. Many theories sound good until you actually try to use them—using the debugger proves the theory as you work through the code.

From a personal perspective, the biggest hindrance that I face in using the debugger as an educational tool is the lack of good comments. In fact, comments are such a problem that I write about them in Creating Useful Comments. When the code lacks comments, I need to look up the calls myself and then determine how the developer is using them. It’s time consuming and a somewhat painful way to learn at times because I can see the code work, but I don’t know how it works or why the developer chose a particular approach. Even worse is when the code contains misleading comments. Worse still are comments that are outright incorrect because they reflect a previous state of the code or the developer didn’t actually understand why a technique works (the sheer dumb luck approach to coding).

Make sure you check out my article on the topic and get back to me about it. I’d like to hear your views on using the debugger as an educational aid. For that matter, I’d like to hear your viewpoint on debuggers as a class of application. Do you feel they need work or are debuggers as useful as they need to be? You may even feel that debuggers have become encumbered by way too many features. Whatever your viewpoint, let me know at John@JohnMuellerBooks.com.


Review of The Art of Readable Code

I encounter a lot of unreadable code because I work through a lot of code I download from the Internet for learning purposes and rework code from failed projects. So, it was with great interest that I opened The Art of Readable Code by Dustin Boswell and Trevor Foucher. After reading this relatively short book, I’m convinced it should be picked up as a college text. If developers would follow even half the advice in the book, many of the truly weird errors in code today would simply disappear because developers wouldn’t end up overwriting the good parts of other developer’s code due to a lack of understanding it.

The authors rely heavily on humor to make good points about writing code that is easy to read by others. The cartoons are engaging and fun. I wouldn’t necessarily call them funny—some of the jokes are tongue-in-cheek and others are a bit dry, but they’re all in good taste and make important points. As for the good points in the book, I don’t think I’ve ever seen anyone suggest that a developer actually turn to a thesaurus to find a better name for a variable, but the authors make this point on page 9. The point is made in a humorous way—not as a command as I’ve seen some authors do. I did laugh relatively often. For example, “The Ultra Hard Metal Nail Smashing Rod” reference on page 13 gave me quite a laugh. You’ll need to see the reference for yourself to understand it.

You’ll want to pay attention to the frequent Advice blocks in this book. In fact, if you’re short on time, skim the book looking for these blocks (and the Key Idea blocks I describe in the next paragraph) and you’ll improve your coding technique significantly. Some of the advice is obvious to a veteran programmer. For example, on page 25 the authors advise putting max_ or min_ in front of programming elements that describe some sort of limit. (If only novice programmers would follow that simple advice.) I only wish that the Advice blocks appeared with greater regularity later in the book. I would have welcomed advice from the authors on some of the more complex topics.

The Key Idea block is another useful addition in the book. For example, on page 122 you find the authors advocating that you create code that only performs one task at a time. Even though this idea seems quite obvious, you’ve probably seen code that is trying to do too much and ends up not doing anything well. The authors back up their Key Ideas with good coding examples (some relatively complex). Unlike the Advice block, the Key Idea block does appear with good consistency throughout the book and the authors have used it quite well.

The section on Eliminating Variables that starts on page 94 was especially useful for me. I often create intermediate variables while writing an application to aid in debugging it. The authors provide techniques that greatly simplify code without making it much more difficult to debug later. Even so, sometimes you really do need that intermediate variable for a while. The point is that you should simplify your code as it nears production to reduce complexity, provide fewer failure points, and improve performance.

As with any book you buy, this one does forward the author’s agenda. If you follow all of the advice in the book, your programming style will closely reflect the style that the authors use. Anyone who has written a lot of code knows that there are many perfectly acceptable styles of coding. The point is to make your code readable so that someone coming behind you can pick up on your style and quickly discover how your code works. For example, I still prefer to use a form of Hungarian Notation for my applications. Because I apply the notation consistently, my code is readable, but many developers feel that the notation is outmoded. Whether you use Hungarian Notation or not is not the point, the readability of your code is. The authors express their view of Hungarian Notation on page 17—as with many other parts of this book, they take a firm middle ground approach that should serve the reader well.

There is a lot to like about this book. As I said at the beginning of the review, colleges would do well to incorporate it into their curriculum. The authors do press their style of coding strongly at times, but I imagine that if I were writing this book I would do the same things, so I can hardly fault them on this point. The content is a bit simplistic for the veteran programmer at the beginning, so you might want to start around Chapter 7. Overall, I think this is a good and much needed book.

Get Ready…Get Set…Garden!

Every year Rebecca and I go to a special educational event called Get Ready…Get Set…Garden! In fact, I reported on it in my Ongoing Education post last year. We both feel that ongoing education is a gardener’s best friend. Otherwise, you don’t learn new ways of doing things that could save time or effort. For that matter, new techniques often help you produce food that is more nutritious or lasts longer in storage. Sometimes, the education is just fun (as it was for the hosta course we took last year), but this year was all business.

This year was supposed to start with a session entitled Growing Small Fruits. We’re having a few problems with our blueberries and I had hoped to ask the instructor some questions about them. It turned out that the instructor never showed up. Instead, we received a master gardener short course called, “Vegetables A to Z.” A lot of the information was already familiar to us, but we picked up some tidbits of information. I especially appreciated some bug management tips for our zucchini and confirmation that the technique we use to plant asparagus is still correct (see Planting Asparagus – Part 1 and Planting Asparagus – Part 2). It turns out that we may not actually be planting our peas early enough and the winter planting of spinach should work better than it did for us (more on that later). The poor woman was roped into giving the impromptu speech, so I could hardly fault her for any flaws in presentation. Still, it’s wasn’t the usual smooth presentation and her persistent cough made things less enjoyable for everyone. Overall, we did get our money’s worth, but didn’t receive the information we really wanted.

The next session was phenomenal. It was a short course entitled, “Native Prairie Flowers and Grasses.” As a result of that course, I plan to obtain some native plant seeds and redo our septic mound. In fact, I have several really good reasons for undertaking the project now:


  • The mound will be less inclined to get wet because the native plants will use up the excess water more efficiently.

  • The flowers will attract helpful insects such as bees to pollinate our vegetables and fruits and parasitic wasps to deal with some of the bugs on our plants.

  • Our mound is impossible to mow in some areas due to the incline and ruggedness of the terrain—using the native plants makes mowing unnecessary.
  • Using native plants will reduce the eyesore factor of the septic system as it currently exists.

The only problem with this particular session is that the instructor had way too much information to give us in a single session. He should have requested a double session. I certainly would have paid extra for the valuable information I received. As it was, the instructor was most definitely rushed and I’ll have to refer to the handout he provided for some information regarding my septic system upgrade.

The third session, Dehydrating Fruits and Vegetables was more pertinent to Rebecca since she does all of the dehydrating in our house (I help, but she’s the one doing most of the work). I do know that she received some valuable information, such as how to preserve the color of her herbs a bit better. I may eventually write a post about the things she has learned after she has had a chance to actually try them to see whether they work. I was able to brag on my wife a bit—Rebecca always makes me wonderful dehydrated snacks for the winter and spring months and I was able to share her approach with the rest of the class.

We had a wonderful time. No, I really shouldn’t have taken the day off, but it’s the only day of the year when we get this kind of educational opportunity and I really couldn’t pass it up either. It’s essential that you do take time to educate yourself. Feeding your mind is a critical part of the human experience and you’ll be a better person if you do it. Let me know if you have any insights into any of the topics covered by our latest educational experience at John@JohnMuellerBooks.com.


Developing the Reader Profile

A lot of people have written to ask me about writing books—about the techniques I use to develop a useful book. So far, all of my books are technical in nature. Not all of them are computer-related, but the majority are. The sorts of books that I write is changing and you’ll likely see me write books in other areas in the future. Whether I ever write fiction remains to be seen, but I do plan to branch out into other areas. No matter what I end up writing, I expect that I’ll use many of the same techniques when writing future books as I use to write my current books. Mainly, I need to find a way to communicate the ideas that I understand in a form that the reader can understand. It doesn’t matter what those ideas are—they exist in my head and I need to get them out of my head and into the reader’s head.

When I’m putting an outline together, I try to put myself in my reader’s shoes. Sometimes that means actually doing a little play acting and trying out things to see how I’d feel if I were the reader. Yes, conveying technology, or any other topic for that matter, means understanding the reader and how the reader feels. It means respecting the reader as a person and understanding that the reader has specific needs, as well as specific skills. Sometimes I’ll talk to the beta readers who are reading my books about issues or bounce ideas off the technical editor for my book. I’ll review materials online and see what people are discussing online. In short, I develop a profile of my reader and roll it around in my head until I can start to see a technology from the viewpoint of my reader. It’s not an easy thing to do, but it’s a necessary skill to develop.

In a way, I’m creating a relationship with what I think my reader will be. Beta readers do offer the opportunity to interact with actual readers, but my reading audience is relatively large, so it really does come down to creating a rapport with an idealized reader—one who encompasses everything I expect that my reader will be. The relationship takes form in a profile that I write down and review relatively often as I write the book. As I come across additional insights during the writing process, I develop the profile of my reader more fully. I keep constantly asking myself how I would talk about the subject at hand if I were sitting in a coffee shop (or some other relaxing environment) with the reader.

To a certain extent, I need to consider the reader’s need for self help. I can’t provide any reader with a specific answer for most problems the reader will encounter. To do so, I’d need to write immense books that no one would want to read because they’d be too bulky. I can provide the reader with knowledge and insights, but I can’t provide the reader with a precise response to any given problem because at the time I write my book, the problem is undefined. So the communication takes the form of ideas, rather than a specific procedure, in most cases.

Authors are hindered by a number of factors. The most important of these issues is the inability to communicate with the reader in real time. It’s the reason that I try to make myself so accessible through e-mail and by writing this blog. Even with these additional levels of communication, however, there are still barriers to communication. For example, I can’t easily read your body language to determine whether my response is actually helpful—I must make my best guess. When writing a book, I have to anticipate your needs and hope that my guesses are good ones because they are, in fact, guesses.

The reader profile doesn’t have to take a specific form, but it does need to provide you with a complete picture of the reader. Even if you define a few reader aspects incorrectly, having a reader profile will help you remain focused throughout the writing process on a particular reader. Here are the sorts of questions I ask myself when creating a reader profile:


  • What is the reader’s education level?
  • Will this reader understand these specific concepts?
  • When will the reader be reading my book?
  • How will the reader react to certain types of information?
  • Are there social biases I need to consider when communicating with this reader?
  • How does the reader view the subject at hand?
  • Is the reader likely to have language issues or special needs?
  • Will the reader be alone or part of a team?
  • How does the reader view me?

Most of my books require that I ask other questions, but this a good sampling of the sorts of questions that I ask myself. You’d think that with all of this effort spent considering my reader that I’d communicate quite well. However, there have been books where I ended up missing the reader completely with my profile. I directed the book at one audience, but another audience actually found the book more helpful and purchased more copies of it. When that happens, I get a lot of e-mail from a lot of disgruntled readers (and the online reviews are also less favorable). These failures require that I go back and review the premises on which I based my book and make corrections. I maintain statistics for the book, and if I get the chance to write an update, I tweak the reader profile accordingly to better meet the needs of the audience that purchased my book.

Anyone writing anything can benefit by creating a reader profile. If you currently write documentation, but don’t create a reader profile, I encourage you to do so because you’ll end up with a far better document as a result. As the years have passed, my profiles have gotten better, but I’m under no delusions that I’ll ever write the perfect profile. Even so, I’d never consider writing a book now without creating a reader profile first. Let me know your thoughts about using reader profiles at John@JohnMuellerBooks.com.


Review of ADO.NET 4 Step by Step

Microsoft has created a plethora of database technologies over the years. The managed form of ActiveX Data Objects (ADO) is just another in a long series of ways to access data from within an application. Because some older technologies, such as Open DataBase Connectivity (ODBC), are so entrenched, there isn’t any way that a single book can tell you everything there is to know about working with databases from a Microsoft perspective. When you add in all of the potential database products (SQL Server, MySQL, AskSAM, Oracle, DB2, and many, many others), the task becomes impossible. So, when I reviewed this book (supplied to me by the publisher), I didn’t consider completeness from the perspective of providing a single source solution to database management. In fact, given 25 years of experience, I feel that such a book is impossible to write—at least as a single useable volume. When shopping for a database management book, be sure you look for a book that covers both the required access technology (such as ODBC, ADO, or ADO.NET) and the database manager (such as SQL Server or MySQL) that you need for your project.

Tim Patrick has written ADO.NET 4 Step by Step with ADO.NET and SQL Server in mind. In fact, the book is incredibly focused and I applaud the author’s single minded devotion to this combination of technology and product. Other database books I’ve read just don’t seem to get the idea that watering down the message won’t work. While it might be possible to include multiple products in a book, trying to cover multiple technologies seldom works because there is too much to discuss and, even if the author successfully writes about each technology in an unbiased way, the reader tends to become confused. So the first thing you must know about this book is that it’s strictly about ADO.NET and SQL Servertry another book if you need any other combination.

This is the second Step by Step book that I’ve reviewed (see Review of HTML5 Step by Step for details of the other review). As with that other book, this book is heavy on hands on involvement and light on theory, which is just fine because many people learn better using hands on tasks. However, database management is a more complex task than creating a Web page because you have data integrity rules and other issues to consider that simply don’t come into play when working with a Web site. (To be fair, Chapter 12 does discuss data integrity, but mainly from a hands on perspectiveyou end up understanding how, but not what, why, or when.) I mention this because the hands on approach in this book does help you create applications fast, but it doesn’t provide you with everything you need to know to create good applications. For example, the discussion of ADO.NET components consumes a scant two pages. Database normalization is covered in a two paragraph sidebar in Chapter 2. The author is cramming a huge amount of theory in an incredibly small space and glossing over a lot of details. I would have liked to have seen some notes, tips, or sidebars with online resources as a minimum so the reader could fill in the missing theoretical details later.

The best part about this book is the activity. I was able to create a basic application in less than an hourfar faster than any other book I can remember using, even my own books. By the time you reach the end of Chapter 1 (about 15 pages), you’ve already learned how to create a connection to your data. Chapter 2 has you creating tables using several different techniques.

I loved the quick references at the end of each chapter. They act as a quick method of ensuring you got all of the details out of each chapter. If you read the entire chapter, you can go back to the quick reference later as a reminder of the things you learned.

Patrick provides a relatively good discussion of every aspect of managing the database and the information it contains using both C# and Visual Basic examples. Support for both languages is a good addition to the book. In addition, the support isn’t sporadic as it is in many books that favor one language or the otheryou’ll find most information discussed equally in both languages so neither language feels like a second class citizen.

Chapter 8 does discuss external connectivity, but it feels like Patrick is discussing the topic from the perspective of the developer who normally uses ADO.NET exclusively, which is absolutely correct for this book. You’ll discover how to interact with OLE DB and ODBC data sources. Unfortunately, as with many other areas of the book, the author digs right into using the connections without providing any theory whatsoever. This is another area where it would have been nice to have resources provided so that the confused reader could learn more. Still, everything works as promised, so there is something to be said for that. Many readers don’t want to know how it works, they simply want to know how to do something black box style and this chapter fits in perfectly with that mindset.

For me, the highlight of the book was Chapter 16. In this chapter, the author cuts through all of the usual garbage associated with objects and shows the bare essentials to use technologies such as LINQ. This is possibly the shortest, yet best conceived, coverage of the topic that I’ve seen anywhere. Again, you’ll find yourself lacking theoretical details, but the how discussed in an elegant way that will enable most readers to make use of these newer technologies in an incredibly short time. In fact, Part IV of the book goes on to cover LINQ in detail. I’m convinced that LINQ will eventually become the data query technique of choice because it’s relatively easy to understand, requires little code, and generally produces optimized results with little effort on the part of the developer. Obviously, the author agrees with me on this matter.

Overall, ADO.NET 4 Step by Step is a fantastic book for teaching you the “how” of database management using SQL Server and ADO.NET. In fact, you’ll learn how to perform many tasks that other tomes simply leave out. However, if you want to know why you’re doing something, when to do it, or understand the theory behind a task, you’ll need another book. I recommend this book to anyone who wants to get started quickly. You can always obtain a theoretical book to fill the gaps in your knowledge and you experience programming scenarios you don’t understand. The best addition the author could make to a next edition is some online sources to help the confused reader. Writing a database management book is tough, but it’s important to recognize that there are limits to what you can do and provide the reader with help in overcoming those limitations.


Pondering Practical Play

People often ask me where I get ideas for my books or come up with solutions for business needs. The answer is simultaneously easy and difficult. One of the topics I don’t discuss often enough in books such as C# Design and Development is the need for play. If you don’t play, then you’re not spending your time wisely because play opens the mind to possibilities that you might not have considered. The essence of play is thinking about the impossible and making it happen. Many adults think that play is just for children, but play is for everyone.

I’m not talking about the sort of play that many people think about today. Exercising your thumb muscles during a video game isn’t the sort of play that promotes creative thought. Mindlessly watching the television doesn’t work either. The sort of play I’m talking about is where you look at something and decide to do the impossible with it. When a child plays, a block of wood can become nearly anything. A stick becomes a broomstick for riding, a sword for fighting, a flagpole with a banner attached (whether there is a banner to see or not), a magic wand, or literally thousands of other items. The stick is still a stick, but play makes it into something more.

Do you take time anymore to watch a spider spin a web? When was the last time you decided to imagine shapes in clouds? The colors that you see—are they really as dull as you think? These sorts of questions are answered during play. I played in another post on this blog. Read the Quick Sugar Free Cupcakes post again and you’ll see that I played with the batter until I created something that pleased both Rebecca and me. No, they weren’t the most exotic cupcakes ever made, but that isn’t the point of playdoing something new and interesting is what play is all about.

Practical play is goal-oriented. I’m currently writing a series of posts about a program named GrabAPicture that I created during play time. My only goal when I started creating that application (and many others on my system) was to see what I could do and what it would take to do it. I played with the code until I created an interesting application from it. How many developers take time to play today? If we had more developers playing, perhaps many of the problems that we’re facing today would already be fixed. So, I started GrabAPicture with a goalto change my desktop wallpaper in a certain way, but I didn’t place any restrictions on how I achieved my goal or how long I’d play until I was happy with it. The idea was to spend some time writing code for no other reason than the sheer joy of doing so.

In most cases, practical play is also more artistic, than scientific or concrete. Decorating eggs my not seem very practical, but I experimented with various color combinations as part of the process. The knowledge I gained has changed some of the things I do in my books. An idea experienced while decorating eggs has had a practical outcome in the way that I view color in my books. This is what play is all about.

Play is an essential part of the human experience. When you play, you free yourself from the bonds that normally keep you from thinking with your whole mind. A person who is playing is relaxed and free to think outside the normal boundaries that we set for ourselves. Some of the most influential thinkers throughout history have played. Read about Einstein and Edison as just two examples. You’ll find that they both played while others kept to the grindstone. How do you play? Let me know at John@JohnMuellerBooks.com.


Review of HTML5 Step by Step

Microsoft has thrown developers yet another curve—Windows 8 will rely on HTML5 and JavaScript for a programming interface. The revelation has many developers horrified. For me, it means updating my HTML and JavaScript skills, which was one motivation for reading the book reviewed in today’s post. HTML5 Step by Step, written by Faithe Wempen, provides a quick method of getting up to speed on HTML5.

This book is designed to aid anyone who wants to know how to work with HTML5, which means that it starts out extremely simple. The book avoids the ever popular Hello World example, but the example it does provide is small and easily understood. The chapters don’t remain simple, however, so even if you have some experience with HTML, you can use this book to update your skills. You’ll likely want to start around Chapter 3 if you are experienced and skim through the material until you come to something unfamiliar, which could happen relatively fast given the changes in HTML5.

HTML5 Step by Step is light on theory and reference information, but heavy with hands on experiences. It relies on using Notepad as an editor, which may seem like an odd choice, until you read the “Why Learn HTML in Notepad?” section of the Introduction. The author’s reasoning is akin to the same reasoning I would use, which is to make sure that the reader types everything and understands why a particular element is required. If you really want to get the most out of this book, you have to do the exercises in Notepad as the author suggests. Otherwise, I guarantee you’ll miss out on something important. Faithe has made a great choice of teaching aids in this case.

Chapter 1 is most definitely designed for the rank novice. It even shows how to set up the examples directory as a favorite in Notepad. However, unlike many books, the rank novice should read the book’s Introduction because Faithe does provide some needed information there, such as the “Understanding HTML Tags” section.

Chapter 2 gets the reader started with some structural elements. Faithe covers everything that the reader is likely to need for a typical starter Web page. I wish that the chapter had covered <meta> tags in a little more detail, or at least provided a table listing them, but this book does have an emphasis on hands on exercises, so the omission isn’t a glaring one. As an alternative to including the information, an update could provide a URL that lists the tags so the reader knows where to go for additional information.

By Chapter 3, the reader is formatting text and starting to make the sample site look pretty. I really thought Faithe did a nice job of moving the reader along at a fast, but manageable pace. She shows the reader how to make effective use of tag combinations, such as the <kbd> (keyboard) and <b> (bold) tags.

There is the smallest amount of reference information in some chapters. For example, Chapter 4 contains a table on page 50 showing the list attributes. These references are very small and quite helpful, but the reader should understand that the emphasis is on doing something and that the reference material may not be complete. For example, the special symbols table on page 56 is missing the em dash, which is something most people use.

The book progresses at a reasonable pace. Never did I find myself rushed. The examples all seem to work fine and I didn’t find missing steps in the procedures. The author uses an adequate number of graphics so that the reader doesn’t get lost. I liked the fact that every exercise ends with a cleanup section and a list of the major points that the reader should have gotten from the exercise.

Readers who are only interested in new tags will need to wait until Chapter 9 to see one. The <figure> tag makes an appearance on page 141. However, even some professionals didn’t use all of the HTML4 tags and it really does pay to start at Chapter 3 and look for something you don’t recognize. It may surprise you to find that an earlier chapter contains a somewhat new (but not new to HTML5 tag) that you’ve passed by.

There are a few nits to pick with this book. The first is that the author places the accessibility information in an appendix where almost no one is going to read it. The information should have appeared as part of the rest of the book as appropriate. In addition, the author misses the big point that most people today have some sort of special need addressed by accessibility aids. The number of people who are colorblind alone is 8 percent of the male population and 0.5 percent of the female population. This book is unlikely to help you create a truly accessible sitenot that this is the reason you’re buying the book.

The second is that Appendix C doesn’t really help very much with the additions and subtractions for HTML5. For example, Appendix C doesn’t tell you about the new <aside> tag. If you want a quick list of the new tags, check out the www.w3schools.com HTML5 New Elements page. (I checked the missing <aside> tag against a number of other sites, such as About.com.) The point is that Appendix C won’t give you the complete picture. Again, this isn’t one of the selling points of the book, but the list should have been complete.

The third is that there isn’t really enough information about why something is done or why it changedsimply that it must be done or that it did change. The reader probably doesn’t want a full blown history of the change, but the why of something can make understanding and, more importantly, remembering a concept easier. Still, this particular nit is minor since the purpose of the book is to get you started with HTML5 quickly and not to explore it at a theoretical level.

Overall, HTML5 Step by Step is a great book for the novice who wants to learn how to create Web pages. It’s also an acceptable book for someone who’s experienced with HTML coding, but wants to get up-to-date on the HTML5 changes quickly. This book is definitely designed for someone who wants to do something, rather than simply read about it. If you don’t perform the exercises, you won’t get much out of the book.