Chickens at Play

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.

 

Waiting for Spring Weather

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.

 

Saving Development Time Using CSS Templates and Boilerplate

Recently I created a post entitled, Differentiating Between CSS Boilerplate, Template, and Frameworks that defines the differences between these technologies. However, I stopped short of making any product recommendations. A few of you have asked about the products I’ve tried and liked. So, I put some suggestions together in a recent article, 5 Truly Effective CSS Boilerplates and Frameworks. Mind you, there are scores of such products available on the market. This article represents the cream of the crop from my perspective based on those products I’ve actually tried and found to work well in my particular circumstances.

There are many criteria for choosing a development product and you probably have specific needs that you must address. For example, you might have specific packages that an solution must work with because these other packages form the basis of a mission critical applications. Only you know what these criteria are and it pays to write them down before you look for any third party product. However, there are some questions that you can ask yourself before you begin the search.

 

  • Will the product actually save me time?
  • Can I create a unique look using it?
  • Is the product simple to use based on my experience level?
  • Does the product come with good documentation?
  • How much community support can I expect to obtain with this product?
  • Does the vendor clearly state which packages this product will work with?
  • Has anyone investigated, validated, and qualified the vendor’s claims?


These questions will definitely get you started in the right direction, no matter what your other needs might be. Learning to identify products that meet your specific needs is important because no one can perform that particular part of the software development process for you. Yes, you can hire a consultant to guide you in your efforts, but when all is said and done, you need to make certain decisions regarding the products you use, especially when it comes to intangibles such as appeal and usefulness in making a statement your organization can live with.

In addition to these questions, you need to also ask yourself organization-specific questions such as the need to have access to a Content Delivery Network (CDN). Some organizations prefer to host third party software on their own server (which requires a download), but other organizations prefer to use a CDN that makes it possible to access the product from a remote server. There are advantages and disadvantages to each approach.

What sorts of questions do you ask yourself when looking for a third party product to save development time? The kinds of questions you ask is important and I’d love to know more about the processes that take place in other organizations. Let me know your thoughts at John@JohnMuellerBooks.com.

 

Understanding the Effects of REM Sleep on Writing

A lot of people wonder how authors sometimes make the creative leaps they do in books. Of course, part of it is natural gift. Writing does involve some element of innate ability—a requirement that has been proven to my satisfaction more than a few times. Another part of the creative leap is mindset. When you spend a great deal of energy looking for something, you’re bound to eventually find it. We can target how our minds process information and therefore, control the resulting output to some degree. Hard work also comes into play—the best authors research their topic heavily (even in the fiction arena).

However, the obvious factors alone can’t account for the creative leap. Something more is at work than these elements. Over the years I’ve come to understand that part of what makes me a good author is my subconscious. An ability to take information stored during my waking hours and turn it into patterns as I sleep is part of the writing process for me and most likely many other authors as well (whether they realize it or not).

Sleep alone isn’t enough to generate the informational patterns, however. Over the years I’ve read articles such as REM Sleep Stimulates Creativity and Sleeping on it – how REM sleep boosts creative problem-solving. In fact, because the topic interests me so much, I’ve probably read a hundred or so such articles and a few books as well (such as, A Whack on the Side of the Head: How You Can Be More Creative). Getting sufficient Rapid Eye Movement (REM) sleep is an essential part of the creative process. In graphing my own productivity over the years, I’ve found a correlation between the quantity of REM sleep (and most especially, remembered dreams) and the quality of my output. Sometimes quantity is also affected by REM sleep, but the best writing I’ve done is when I’ve had enough REM sleep.

The onset of REM sleep usually occurs about 90 minutes after falling asleep. The sleep cycle varies between light and REM sleep depending on the person. A number of other factors also seem to play a role in my own personal sleep cycle. For example, I tend to get more REM sleep after a day of moderate physical exertion, mixed with plenty of research time (non-writing time). Eating no more than two hours before I go to bed is also a factor and I also try to create a restful environment conducive to sleep. In fact, more than once I’ve taken a two hour nap after performing research to overcome writer’s block. The technique works quite often. (Shorter nap times don’t appear to provide any advantage because the REM sleep cycle may not even occur or is of insufficient length to derive a solution to the problem at hand.)

As part of the dreaming cycle, I’m often able to employ lucid dreaming techniques (or what is commonly called directed dreaming). However, more often than not I simply wake with the answers to the questions I had when I went to sleep and quickly write them down. It’s a technique authors have used successfully over the centuries to great effect.

The point is that REM sleep is a required component for many creative endeavors. It’s not just authors who require REM sleep, but anyone who is involved in any sort of creative effort. A lack of REM sleep may be why engineers on a team are unable to create a useful solution to problems or why developers write buggy code. There is certainly nothing mysterious about the process, except why more people don’t employ it.

What is your take on REM sleep? Do you ever stuff your head full of information and then go take a nap to solve problems? If not, would you be willing to give the technique a try after reading this article? Let me know your thoughts (and the results of any experiments) at John@JohnMuellerBooks.com.

 

Working with Procedures

Procedures, a description of how to perform a task, form the backbone of most non-fiction books and even appear sometimes in fiction books. The process of doing something is the reason that many people buy a book. It’s important to realize that most people buy books to fulfill a need—often to save time and effort. Yes, it’s important to present information in the most professional manner possible, but the accuracy and completeness of the information you provide is actually more important.

Some authors make the mistake of thinking that books only contain one type of procedure. This perception can be reinforced by books that follow a certain style in order to create a book brand that offers the reader a consistent experience. However, authors can actually choose from a wide range of procedure types:

 

  • Numeric Steps: Step-by-step procedures are the kind that most authors think about immediately. This type of procedure has the benefit of clarity and of a visual presentation that the reader will understand quickly. However, they lack depth and when an author needs to explain a process in detail, numeric steps can become cumbersome and difficult to use. In addition, numeric steps are often limited to just two or three levels and some processes may require additional levels.
  • Running Commentary: The author places each step in an individual paragraph. The first sentence normally provides an overview of a more complex process that the step must fulfill. This type of procedure allows the author to provide much needed detail and to emphasize information in ways that would be difficult using numeric steps. In addition, this kind of procedure is often viewed as friendlier and more accessible by the reader (especially novices who want to learn a process in detail). Unfortunately, the reader will have a hard time finding this sort of procedure because it doesn’t generally stand out from the rest of the text. In addition, this form doesn’t offer levels, as such. It’s basically a single level procedure.
  • Outline: A complex process could be explained using an expanded outline format. Each heading is an individual step. Depth is achieved through the use of subheads and the number of layers is limited only by the number of heading levels (generally between four and six) that a book design accommodates. Readers can usually recognize this sort of procedure visually, especially if the headings include numbers to indicate steps. The problem with this format is that it tempts the author to provide too many unneeded details, a wealth of asides, and even to get completely off track.
  • Graphic: Some processes aren’t easy to describe using a written procedure. It’s possible to use a flowchart or organizational chart format to describe many processes in a manner that the reader can grasp almost immediately. The down side to this kind of procedure is that the author must be extremely terse. There is only so much space for text in a graphic procedure.
  • Hybrid: Using links makes it possible to combine approaches when necessary. For example, a graphic procedure could include references to pages that contain detailed information. The pages could then employ any of the other procedure formats to enhance the detail offered by the graphic format. In fact, it’s possible to link multiple graphic presentations so that one flows into another.


These are just a few of the common offerings at an author’s disposal. There are many ways to format a procedure so that it conveys the information the reader needs in precisely the right way. Experimenting with procedural formats will help you hone your skills and to choose just the right form for your readers. Let me know if you have any questions about writing procedures at John@JohnMuellerBooks.com.

 

Possum’s Surprise

Little possum thought it best,
to spy out eggs in the chicken’s nest.
So in he swooped,
to the chicken coop,
to see what he could find.

The chickens took,
just one look,
a nod, a wink, a little blink,
and possum found trouble before he could think.
His tale is one of woe.

Before he knew,
just what to do,
the chickens came thumping down,
and broke his crown,
they pounced and pecked and tore.

Possum growled and hissed,
his exit missed.
As round and round he tore,
he missed the door.
The chickens pressed their advantage sore.

It was with relief,
the respite brief,
as the farmer came to seek,
the sounds of noisy chicken’s beaks,
and gave possum his chance to leave.

Never again will possum seek,
the eggs so sweet.
He’ll look for easier prey,
during the day,
in the woods he knows so well.

Copyright 2014, John Paul Mueller

 

Thinking of All the Possibilities in Software Design

A number of books on my shelf, some of which I’ve written, broach the topic of divergent thinking. Unfortunately, many developers (and many more managers) don’t really grasp the ideas behind divergent thinking. Simply put, divergent thinking starts with a single premise and views as many permutations of that premise as possible. Most developers don’t take the time to use divergent thinking as part of the development process because they don’t see a use for it. In fact, most books fall short of even discussing the potential for divergent thinking, much less naming it as a specific element of application design. I’ve explored the topic before and a reader recently reminded me of an article I wrote on the topic entitled, Divergent Versus Convergent Thinking: Which Is Better for Software Design?.

The process that most developers rely upon is convergent thinking, which is where you convert general goals and needs into specific solutions that appear within a single application. The difference between the two modes of thinking is that divergent thinking begins with a single specific premise, while convergent thinking begins with a number of general premises. More specifically, divergent thinking is the process you use to consider all of the possibilities before you use convergent thinking to create specific solutions to those possibilities.

There is an actual cycle between divergent and convergent thinking. You use divergent thinking when you start a project to ensure you discover as many possibly ways to address user requirements as possible. Once you have a number of possibilities, you use convergent thinking to consider the solutions for those possibilities in the form of a design. The process will point out those possibilities that will work and those that don’t. Maintaining a middle ground between extremes of divergent and convergent thinking will help create unique solutions, yet keep the project on track and maintain project team integrity. Managing the cycle is the job of the person in charge of the project, who is often the CIO, but could be some other management position. So, the manager has to be knowledgeable about software design in order for the process to work as anticipated.

One of the reasons that many applications fail today is the lack of divergent thinking as part of the software design process. We’re all too busy thinking about solutions, rather than possibilities. Yet, the creative mind and the creative process is based on divergent thinking. The reason we’re getting the same solutions rehashed in a million different ways (resulting in a lack of interest in new solutions) is the lack of divergent thinking in the development process.

In fact, I’d go so far as to say that most developers have never even heard of divergent thinking (and never heard convergent thinking called by that name). With this in mind, I’ve decided to provide some resources you can use to learn more about divergent thinking and possibly add it to your application design process.

 

These are just four of several hundred articles I located on divergent thinking online. I chose these particular four articles because they represent a range of ideas that most developers will find helpful, especially the idea of not applying stereotypical processes when trying to use divergent thinking. Stereotypes tend to block creative flow, which is partly what divergent thinking is all about.

The bottom line is that until divergent thinking is made part of the software design process, we’ll continue to suffer through rehashed versions of the current solutions. What is your view of divergent thinking? Do you see it as a useful tool or something best avoided? Let me know your thoughts at John@JohnMuellerBooks.com.

 

Finding the Source Code for Microsoft ADO.NET Entity Framework Step by Step

Sometimes a bit of information isn’t known by an author at the time of writing, so the book will contain placeholder text to remind everyone to add the information later. Normally, the process works great and the replacement is made without problem. I was recently informed of a problem in Microsoft ADO.NET Entity Framework Step by Step. It turns out that there is placeholder text in some places that reads, “Provide URL Here.” I added the placeholder because I didn’t know where the publisher would store the book’s source code at the time of writing. Of course, the placeholder is hardly helpful to anyone who really would like to find the book’s source.

If you encounter such a placeholder in this book, please go to the O’Reilly download site at http://aka.ms/ADONETEFSbS/files or http://examples.oreilly.com/9780735664166-files/ to obtain the files. I really do consider it important that you download the book’s source code and use it as you work through the text. This particular book has a lot of complex examples that will be tough to get right if you type them in by hand. A single typo can make the examples completely unusable, or at least cause damage to your sample database.

In addition to reading about potential problems and obtaining useful bits of additional information by reading my blog, make sure you also check the book’s errata page at http://www.oreilly.com/catalog/errata.csp?isbn=0790145339164 (see my Errors in Writing post as well). This page provides you with succinct summaries of potential problems and the fixes I suggest for them. Always feel free to write me about my books as well at John@JohnMuellerBooks.com. It’s important to me that you always have a great experience when using my books.

 

Using Code::Blocks 13.12 with C++ All-in-One for Dummies

As stated in my Beta Readers Needed for a C Book Update post, I’m currently working on an updated version of C++ All-In-One Desk Reference For Dummies. The 2nd Edition book that is currently available relies on Code::Blocks 8.02 (the version I still recommend you use with this particular edition), which is really long in the tooth at this point. I’ve provided a number of update posts since the book was released to help you use Code::Blocks versions 10.05 and 12.11. However, as the example code has gotten older, more and more problems have surfaced with the example code because C++ itself has changed. The new book will use Code::Blocks 13.12, so the example code problems will disappear.

Most of the book examples for the 2nd edition will still compile with Code::Blocks 13.12, but not all of them will (the series of Code::Blocks 10.05 update messages should give you some idea of the problems you’ll encounter using a newer version). However, there are issues with one of the Code::Blocks 13.12 releases that will cause you serious problems in using the book. If you insist on using the latest version of Code::Blocks, make sure you download the codeblocks-13.12mingw-setup.exe file and not the codeblocks-13.12mingw-setup-TDM-GCC-481.exe file. According to the site, this second file has some issues with Code::Blocks. A note on the site page at http://www.codeblocks.org/downloads/26 explains the problem. Essentially, the GCC 4.8.1 release has problems with Code::Blocks, so you’ll see behavior that has nothing to do with the example code if you use it.

One of the beta readers for the new edition actually pointed out this problem. He inadvertently installed the buggy version of GCC 4.8.1 and I was able to see first hand that it really does cause some serious issues. (Actually, we couldn’t figure out what was going on at first.) This is one of many reasons I love to use beta readers when working on my books. In finding just this one problem (and he has found others), this beta reader prevented a whole lot of other readers from having issues with my new book .

I always want to hear about issues you have with my books. If you find that you have problems with the examples after reading through the posts on my blog, please contact me at John@JohnMuellerBooks.com and tell me about them. In many cases, the only way that I know a problem exists is when you make me aware of it. Thanks again for all your helpful support over the years!

 

Backslash (\) Versus Forward Slash (/)

A number of readers have noted recently that I’ve been using the forward slash (/) more and more often in my books to denote hard drive paths. Of course, when working on Windows systems (and DOS before that) it’s common practice to use the backslash (\) for paths. However, using a forward slash has certain benefits, not the least of which is portability. It turns out that the forward slash works well on other platforms and that it also works on Windows systems without problem (at least in most cases). Using a forward slash whenever possible means that your path will work equally well on Windows, Mac, Linux, and other platforms without modification.

In addition, when working with languages such as C++, JavaScript, Java, and even C#, you must exercise care when using the backslash because the languages use it as an escape character (a character pair that denotes something special). For example, using \n defines a newline character and \r is a carriage return. In order to create a backslash, you must actually use two of them \\. The potential for error is relatively high in this case. Forward slashes appear singly, so you can copy them directly, rather than manipulating the path in various ways.

There are situations where you must use a backslash in the Windows (and also the DOS) environment. You can type CD / or CD \ and get to the root directory of a Windows system. However if you try to type Dir /, you’ll get an error. In order to obtain a directory listing of the root directory, you must type Dir \ instead. In fact, many native utilities require that you use the backslash for input. On the other hand, many Windows APIs accept the forward slash without problem. When in doubt, try both slashes to see which works without problem. If you see a forward slash used in one of my books, the forward slash will definitely work in that instance. In general, I only use the forward slash when compatibility with other platforms is a consideration. Windows-specific platform information will still use the backslash.

As things stand today, the more you can do to make your applications run on multiple platforms, the better off you’ll be. Users don’t just rely on Windows any longer—they rely on a range of platforms that you might be called upon to support. Having something like an incorrectly formatted path in your code is easy to overlook, but devastating in its effects on the usability of your application.

Let me know your concerns about the use of backslashes and forward slashes in my books at John@JohnMuellerBooks.com. The book that uses the largest number of forward slashes for paths right now is C++ All-In-One Desk Reference For Dummies. I want to be sure everyone is comfortable with my use of these special symbols and understands why I’ve used one or the other in a particular circumstance.