Vacation Man Vacates

As of the end of work this evening, I embark upon 9 consecutive days off from work. This is the longest vacation I have taken in the summer for a very long time. I am looking forward to it. I have several things that I plan to do.

First, I have got to finish writing the first draft of the short story that I am  submitting for inclusion in an anthology that my writers group is putting together. We are each writing a story inspired by a Grimm’s Fairy Tale. We have a word limit of five thousand words and I have written almost a thousand words so far.

Also we’re talking about taking a day trip to Nashville some time during this period. There are lots of interesting things to do in Nashville. We always have fun when we do that.

Another thing that is under discussion is going to the movie at the new movie theater in Madison. This might not sound like a very big deal but getting my wife to go out to a movie is a very rare occasion.

I also plan to spend some of the time playing music. I have recently met a musician that I would like to explore playing music with. He is very energetic and has inspired me to look into the possibility of playing music and teaching music.

I will of course be writing my blog every day. I am going to try to get a head start on writing some articles so that I can relieve some of the pressure to write and post a blog post every single day.

I plan to watch some shows on Netflix, Hulu, and Acorn. I have just discovered a series called The Doctor Blake Mysteries that takes place in Australia in the fifties.

I also have an idea for a program that I want to explore some. It might be something that I can sell. I’m investigating whether there exists an app that implements my ideas already. I’ve already taken a quick look. I didn’t find anything yet.

I also want to spend some time studying mathematics. I enjoy learning more about mathematics, especially when it comes to branches that are used in practical applications like physics and computer science.

I have been writing my blog with Scrivener, a program that I have that has lots of features to support writers of all kinds. I have been using it so that I can learn more about the numerous features that it provides. It also helps me organize work on multiple posts at the same time. Tonight though, I’m writing this blog post directly into the WordPress editor.

It may not be fancy but it certainly gets the job done. I am going to finish posting this and then I’m going to go spend some time with my wife. Let the relaxation begin!

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Mutual Respect

I hear the train blowing its whistle as it approaches the crossing near here. I often find myself sitting in my car, waiting for it to pass. I sometimes call it the Great Wall of Madison. The only way past it is to turn around and go back to Madison Boulevard, take it to Hughes road so that you can go over the train on the overpass. Most times the train is gone long before you get there.

The rumbling of the wheels on the tracks tell me that the train is still passing. I am thankful that I don’t need to be on the other side of those tracks.

It is late and I want to go to bed. I also want to write a blog post. I have started no less than five blog posts so far tonight. I am really upset about the political situation but I am resolved not to write about politics on this blog. Hence, I have caught myself on all of those occasions writing something partisan and forcing myself to start over.

I am a rational person. I revel in the scientific knowledge that we have amassed. I am truly awed by the accelerated pace at which we are adding to that knowledge. I fear that this process will be brought to a halt for no rational reason.

I am going to make yet another call for civility and decency among all Americans. We are all citizens of the same country. A country that I was taught values free speech and diversity of ideas. The way to nurture that freedom is to respect everyone’s right to respectfully speak their mind. Mutual respect is the least that we owe each other.

This doctrine of slinging mud during an administration rather than during a campaign has taken an unacceptable practice and brought it into a place where it no longer even makes sense.

I will not take this further. I have neither the energy nor the time to start writing another blog post from scratch. Let’s treat each other with the respect due any human being and stop the reign of hate. There will be plenty of time to debate the politically heated issues. If we can do it with mutual respect, everybody wins.

I hope to be over my obsession over the appalling behavior that has been exhibited today by tomorrow night. Maybe then I can write something that isn’t tinged with politics.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Coffee Talk

The quiet of a bookstore is different than that of a library. There is a pervasive smell of new books and fresh coffee. The lighting is adequate and yet diffused. It is a place of calm.

I enjoy being out in the world without any stress or expectations associated with it. I am writing my blog post on my iPad. I have a case with a built in keyboard with full sized keys but a compact layout. It is friendly to touch typists.

This is going to be a rather informal blog. It is going to be more of a journal entry than an essay. I think that is going to be one of the types of post that I am going to start making from time to time. I’m sure that some readers will decide to give them a miss but others, the friends and family that may not have much use for my technical posts may actually like these better.

I was out at lunch today when I got a call from Pam, my wife. She had taken the dogs to the groomers and wasn’t going to be available to pick them up due to a flare up of her medical condition. She is troubled by a condition that while it doesn’t render her totally housebound can make her loath to get too far from home during a flare up.

She was wondering if I could pick up the dogs when they were ready. I, of course, said, “Sure.” I told her I’d head out to get them right away. She called back immediately to tell me that they wouldn’t be ready for almost an hour.

I decided that it didn’t make sense for me to drive across town to my office only to have to get right back in my car and drive back across town to pick them up. Instead, I stopped at the bookstore, got a good cup of coffee and took advantage of the time to write this blog post. It is a nice little treat in the middle of an otherwise stressful day.

Another benefit of getting my blog post written in the middle of the day is that I can use the time when I would normally be writing my blog this evening to work on writing the story that I am contributing to the anthology that our Downtown Writers Group is writing to sell as a fundraiser for the library.

The story has a five thousand word limit. I’ve written less than a thousand words so far and I’m afraid I’m going to have to edit ruthlessly to get it to fit within the prescribed word count. This will be the first time (that I recall anyway) that I will have been published in a printed book. I’m excited.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Sensual Language

It was a daft and turbulent night. The underwriters overcame their sense of vertigo and started to finish the journey that they had undertaken. No one could have foreseen the aftermath of their shortsightedness. The perception of the groundlings was that the senseless waste of time was harmless.

Words evoke more than simple understanding of their meaning. They stir our emotions, excite our senses, and call us to action. They have connotations that recall memories long dormant. The artist that can wield them can paint pictures as provocative as anyone working in oils, acrylic, or watercolors.

The average adult has a vocabulary of between twenty thousand and thirty five thousand words and yet they only use around five thousand words when they speak and ten thousand when they write. It is as if they choose to paint their verbal pictures with an extremely limited palate.

What does the first paragraph of this post make you feel? Does it conjure any pictures? Does it bring any memories to mind? Or is it merely nonsense? Does it tell a story? Or is the story all in your mind, due to your attempt to make sense of it?

Our use and perception of language is at the heart of our culture. When I read Shakespeare I wonder if the common man spoke with nearly the eloquence that the bard imparted to them in the dialog of his plays. Or, is it more likely that they were as much in awe of his language as we are.

Writing often feels like juggling words. You strive to make them express the concepts that you are trying to convey but you want to put your best foot forward and be both concise and eloquent. Some people will tell you to use a thesaurus to expand the vocabulary that you use in a piece. That is only necessary if you are having trouble remembering the exact word for which you are struggling.

If your words are bland and tasteless, you will likely put your audience to sleep. No writer wants to do that. They want to engage their readers and inspire them to think about things in a different way. Colorful language helps people to stay awake and absorb the message behind the words.

And so, I come to the end of the story for tonight. I wish I had some profundity to leave you with but it seems that I am all out of anything profound to say. I am somehow convinced that if I write a blog post every day, that someday, someone will stumble across my writing and be inspired to do something differently.

Good night and sleep well. Tell yourself stories while you sleep. The best stories occur to us when we are on the border between wakefulness and sleep. Keep a notebook and pen by your bed and use them like a literary butterfly net to capture your dreams.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Turning Point

I have been reading articles about writing. It reminds me of the story of the blind men describing an elephant. Each one had a different experience of the elephant. One described the trunk as being like a rope. Another described the leg as being like the trunk of a tree. Yet another described the ear as being like a palm frond. Each writer describes the relationship that they have developed with the written word an how they get it on the page.

One piece of advice that I’ve read more than once is to figure out what each character wants. This appears to be sound advice and serves to explain some of my struggles as a writer. How can I succinctly state what my characters want when I am having trouble figuring out what it is that I want. I know, I’m supposed to figure out what the characters want but it’s not required that the character knows what they want themselves.

In fact, it’s a useful plot mechanism to have the character be on a quest to figure out what it is that they want. An example of that is Dorothy in The Wizard of OZ. She realizes that what she really wants is to go back home. I doubt that is the heart’s desire of any of the characters in any of the stories that I am working on right now but it does serve as a starting point to think about what they do want.

As for me, I want to write, whether on my blog, or stories or articles to sell. I also want to write code. Whether it is for profit or just the edification of writing software that I, and maybe others, find useful. It is an obsession, similar to those that some people have for prospecting, or travel, or mathematics. There are many different obsessions that motivate people. I probably have as many as some and more than others.

I am looking for a way, both economically, and professionally to wrap up my obligations to my current job so that I can move on to the next phase of my life. I am happy when I am writing, be it prose or code. I have responsibilities, both to myself, my family, and my colleagues. I don’t intend to let any of them down. I just need to find the courage and the way to execute this tricky maneuver.

In the short run, I need to find ways to increase the productive use of the time that I have. I need to make time for all of my passions and concentrate exclusively on each one when I am doing it and then move on to the next. There are plenty of people that are willing and able to help me if I’m honest with them and myself. It is calming to come to such clarity about my life. And it is edifying to share my moment of clarity with you, my readers.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Scheduling Software Development

I’ve been struggling with working to a schedule lately. In my experience, schedules have been arbitrary constraints imposed by people that don’t understand the work to be done and have been tasked with reporting on progress and projecting when the work will be finished. This is due to the fact that in some domains that is an entirely reasonable way to work. Software is different for any number of reasons. That is the topic that I will explore in this post.

First and foremost, programming is a creative task. Even when you have a very specific problem to solve, there are any number of ways to solve it. Furthermore, a large number of those ways turn out to be good solutions. The difficulties start to mount up when you have a bunch of different people working on the same project. Each of the pieces contributed by individual programmers have to interface with some number of other pieces to solve the big picture.

There are a number of techniques that are used to address the issues arising when integrating software components designed and written by different developers. One popular method is to design the functional interfaces to the components first. Then, you write each one to do the function according to the description of their function. Then, it remains to put the pieces together into an implementation of the use-cases of the application.

Software is hard to define in a linear fashion. When you set out to write an application you have a vague idea of what you want it to do but almost no idea of how to get the application to do it. Typically this is addressed by defining one feature and writing a test for the feature. Initially the test will fail. Then you implement the feature. At this point the test will pass. Then, you define a second feature and write a test for it and then an implementation. At each step in the process, you run the complete test suite to make sure that a new feature hasn’t broken one of the already implemented features. You have to constantly refer back to the initial vision for the application to make sure that you aren’t going too far afield.

Sometimes, while practicing this incremental, iterative development approach, you will discover that you have painted yourself into a figurative corner. You know what the software does now and how it does it. You know what you want it to do in the next iteration, but  you can’t see a direct way to get to where your going from where you are.

This leads to a practice called refactoring. In order to successfully refactor code you must first make sure you have a copy of the code in its present state in some sort of source code management system (SVN, and git come immediately to mind). Second, you must have a rigorous test suite for the code as it exists. Finally, you transform the existing code, misfeature by misfeature into the new code. For each feature that you transform you should run the test suite to make sure that you didn’t break anything. Once you have finished refactoring the code, it should be straightforward to pick up the rhythm of writing a failing test for the next feature and then implementing it such that it passes the test.

Refactoring is still more of an art than a science. There is a lot written about refactoring in various different computer languages online. Google will turn up plenty of references if you search for “refactoring” and the language of your choice.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Which Programming Language Should I Use?

When you first learn to program life is relatively simple. If you sit down to write a program, you are going to use the language that you know. This is okay for a while but then something happens. Maybe you take a class and they are using a different programming language than the one you already know. Or you are asked to write a program at work and they want you to use the same language everyone else on the project does.

So, you buy a book, or maybe you find a tutorial on the web, or you watch videos on You Tube that teach how to program in the new language. You install the language on your computer and you enter the first example program and compile and run it. It prints “Hello, world!” On your screen and you sit back pleased with yourself. You are now officially multi-lingual.

After a while you have gotten the hang of the new language. You have compared the new language with the old. You have found that they both have their strengths and weaknesses. It starts becoming second nature deciding which one to use when you start a new project.

Then one day you have this great idea for a program. It requires you to access data on a web site using http. You Google it and discover there is a great library for creating http requests. It is written in this other language that you don’t know. So you sit down and learn it. Now you are hooked. You discover that there are actually thousands of computer languages, all with their own claim to fame.

You start reading articles on the web with titles like “The Five Languages to Learn to Get a High Paying Job”. At this point you know all thyourose languages but you don’t have a high paying job. What is wrong? What are you missing?

It’s no use knowing computer languages if you don’t actually use them to write programs. Just like it’s no good to know English, or any other spoken language if you don’t intend to use it to communicate with people.

So, point taken. You sit down to write your masterpiece program. What language should you use? First you should ask some other questions. Whom are you expecting to use the program? Are they paying you to write it? Are you going to have to maintain it? Is anyone else going to have to maintain it? What kind of functionality will the program provide?

The key fact to remember about programming languages is that although you want them to execute properly on a computer in order to provide the intended functionality, you are primarily writing the program in a higher level language so that you are some other programmer can read and understand it later. You want to pick a language that provides features that allow you to clearly specify exactly what your program does both to the machine (the compiler will enforce that), and to another programmer. Keep that in mind when you choose names for functions and variables and when you decide whether or not to include a comment to explain that difficult piece of coding that you had to do to get the program to work the way you wanted it to.

And also, try to follow the conventions and standards established by the community that uses which ever language you decide to use. It may not change the way the program works but it will help make your code easier to understand when someone else in the community wants to fix or extend it.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.