A Software Developer working for a large financial institution developing Java and .Net based web applications.

Vim and help with the answer 42

Watching a presentation on Vim by Bill Odom and he mentioned a fun item in the help feature for Douglas Adams fans. In Vim issue the following
:h 42
Here is what you see:
What is the meaning of life, the universe and everything?  *42*
Douglas Adams, the only person who knew what this question really was about is
now dead, unfortunately.  So now you might wonder what the meaning of death
is...

Turning Consumption into Production

During my morning run I was listening to This Developer's Life Podcast by Scott Hanselman is a production that deals with general areas of a typical software developer's existence. This latest show discusses the need to be a continual learner.

One of the points made in the podcast was the concept of turning the consumer of software, consider the person playing hours of video games, into a producer of software. Imagine the amount of time and brain power applied to just video gaming by the consumers of those games!

One aspect to turn consumers into producers may be the use game mechanics in the actual creation of programs. The addicting factor of video games is largely the desire to "get to the next level."

Maybe simply making the solving of problems via the writing of code the reward. "How can I 'get to the next level' in my understanding of this framework?" or "How many defects can I fix today?" or "What is the most elegant solution for meeting that business need?" Perhaps creating personal challenges out of the problems by asking, "How much can I accomplish today on this bug or issue?"

Just thinking....

 

Operation not allowed for reason code "7" on table "YourTableHere" in DB2

Note to self: When you make a change to a DB2 table and you see the following database error in the logs:
Operation not allowed for reason code "7" on table "YourTableHere"

It is time to issue a reorg on the table via this:
CALL sysproc.admin_cmd('REORG TABLE YourTableHere');

Review of JavaScript Web Applications by Alex MacCaw

Title: JavaScript Web Applications
Author: Alex MacCaw
ISBN:144930351X
ISBN-13978-1449303518

Javascriptwebapplicationscover

Pros: Extensive, Well-written, Several examples
Audience: Advanced and/or Intermediate Developers

Introduction
I started this book thinking that it would provide a basic overview of the use of JavaScript within web application development. Boy was I wrong! This text is really a manual on creating a full featured JavaScript web based app. Given that the author is the creator of Spine.js, he is qualified to create an extensive JavaScript Manual.

As a Java and .Net developer, this text is more that I require concerning the use of JavaScript. However, I am sure that as time goes on and JavaScript is more embedded in various frameworks via the likes of JQuery, etc. this book will become more practical for me. 

Review
Instead of giving a chapter by chapter review, here is the summary of the overall content of the book (as if such is easy to do for this comprehensive work). This book is not for those just starting JavaScript development. However, if you have experience in another language, this resource will serve you well as you move into further JavaScript programming. 

The initial part of the book deals with the concept of the MVC framework, models, events and event handling, controllers, application state, views, and templating. The examples are mostly in JQuery which is also my framework of choice for JavaScript development. MacCaw also covers Node.js, Socket.IO, and WebSockets. Moreover, he also provides an examples on testing, debugging your apps, as well as a look at the Backbone and Spine.js (which he created) libraries. Finally, the text provides further information on JQuery, CSS extensions, and CSS3 in the appendixes.

Conclusion
When you are ready to take take the deep dive into developing a JavaScript based we application, this is your manual.

Personal Informatics: The Weather

This past year I have been tracking various personal data key indicators. One has been the number of miles ran per calendar month. Having used Runkeeper to do this an interesting observation has emerged. 

It has been no secret how mild the winter has been here in the Greater Cincinnati/Northern Kentucky area. However, this February 2012 is about the same as February 2011 concerning being able to run outdoors. The temperatures seem to be higher in February 2012 but the conditions that allow one to run outside, no ice or snow, were no different this year than in 2011  Look at the monthly numbers from Runkeeper for this 2011-2012 winter season:

2012running

Compare this to the 2010-2011 winter season:

2011running

Running outside November 2010 through January 2011 was not safe due to ice and snow. While there is a vast difference between the months of November through January for both winters, the month of February was not different for either winter season. Interesting....

Autotest on Ubuntu 11.10 running Rails 3.2

I have been I’m reading and working through Ruby on Rails Tutorial from Michael Hartl. The book rightly promotes a "test first" approach. In this Hartl mentions autotest. As the text mentions, "configuring it can be a bit tricky."

Here are the steps I used to get autotest working on my Ubuntu 11.10 OS running Rails 3.2.0.rc2:

$ gem install autotest

$ gem install autotest-rails-pure
$ sudo apt-get install libnotify-bin
$ gem install autotest-notification

Next, I added the ~/.autotest file:

Then, I simply ran autotest from my rails app directory:
$ rails-apps/myapp autotest

This is nice in that I do not have to manually run the rspec tests as autotest runs each time I change a test file or the tested implementation code. 

Ghost in the Machine - secondary, tertiary, etc.side effects

Was listening the the This Week in Tech podcast and caught a comment by Kara Swisher. The statement dealt with the Wall Street Journal article Google's iPhone Tracking: Web Giant, Others Bypassed Apple Browser Settings for Guarding Privacy where she felt that the Google was not honest in their claim that the code applied to bypass Safari Web Browser settings was not to steal user information. Here is where someone who has not been involved in the development of software systems of any size fails to realize that when you have several coders working on a system, some pieces of code have side affects that have not nor could not be anticipated, period.

Yes Google has some brilliant software engineers. However, even the best minds cannot foresee all or most secondary and tertiary effects of a piece of code. To simply say that they knew all ramifications of the code is not to consider the complexity of their systems.

I am not saying that Google is always ethical. I have submitted previous posts that clearly state that I understand the danger of user data potentially being misused. I am not so naive to think that they are not interested in making money. But I am not sure that this case, that stemmed from code added that was designed to make different web browsers consistent which is a better experience for the user, is the result of malevolence to steal user information. It is certainly possible for it to be used in that way but again, this really could be a case of an unintended side effect or what is commonly termed, the ghost in the machine.

Use and Calibrate the Compass

Seth Godin makes a good point in his blog when he states:

The map keeps getting redrawn, because it's cheaper than ever to go offroad, to develop and innovate and remake what we thought was going to be next. Technology keeps changing the routes we take to get our projects from here to there. It doesn't pay to memorize the route, because it's going to change soon. The compass, on the other hand, is more important then ever. If you don't know which direction you're going, how will you know when you're off course?

The map may be easier but as Godin says it will be constantly changing. Therefore, let's get good at using a compass.

To find our direction, I must turn the compass dial until the North mark and the "Orienting Arrow" are lined up with the North end of the needle. Then, whichever direction is on the opposite side of the compass, that is the direction you are heading. Now, orient yourself to the direction you want to go with the compass dial until the North mark and the "Orienting Arrow" are lined up and you are good to go. For example, the picture below shows you pointing west.

Compass-west

Now, you can take any road that will allow you to go west and not be stopped if the road your on is closed. Just navigate to another road going west by the use of the compass.

Of course, the compass in Godin's article was a metaphor. Yet, this concrete example shows us that we need to get better at calibrating our compasses or our sense of the proper direction. We need to determine the best direction via "the compass" and stop memorizing maps to get where we are going professionally, personally, etc.as the maps will be changing faster as we move forward in our journey.

I need to remember this next time Google Maps leads me into a corn field instead of where I wanted to go!

...fatal error: parser/kwlist.h: No such file or directory compilation terminated on Ubuntu

Yesterday I was compiling and installing the latest source code for pgAdmin3, a popular Open Source administration and development platform for the PostgreSQL database, on my netbook with the Ubuntu 11.10 operating system and ran across the following error:

...fatal error: parser/kwlist.h: No such file or directory compilation terminated. 

Earlier this month I had built and installed pgAdmin3 on two other systems and ran into the same problem. Because I had hunted this header file down and stored it on my Dropbox account, I had it handy and dropped it into the source code and went on my merry way with the build. 

Therefore, for those who run across this issue I have linked the file here.

Simply drop the file into the /theSourceCodeDir/pgadmin/include/parser directory and reissue the make command. 
Enjoy  :-)

Build an adaptive culture that will invest in process only when it is needed

I just watched a great video with Eric Ries, entrepreneur-in-residence at Harvard Business School and author of the book The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses.

Within the video he examines the technique of the "5 whys." In short, those involved in a lean startup will for each problem they must tackle (1) ask "why" at least 5 times digging further into a  problem with each "why" question. (2) Next they are to find the human problem behind every seemingly technical issue. And finally, (3) make a proportional investment in each of the 5 "why answer" layers. This will build an adaptive culture that will invest in process only when it is needed and not expend valuable resources.

For example, let us suppose you are part of startup X and one of the startup's main partners asked a software developer, "Why didn't we get that last feature into the release to show to the investors?" That was why number 1. The software developer answers, "Because I did not have enough time." The partner then asked, "Why didn't you have enough time?" Again, why number 2. "Because I can only add features to the application on week-day nights." "Why only on weekday nights?" Why number 3. I think you are getting this by now. "Because I have a full-time developer job that I work during the week and I want to spend time with my family on the weekend." "Why did we not consider your time limitation when prioritizing features and do the more important features first?" "Not sure, I was told to add the features in this order." "Why who was it that told you those features?" "The project manager."

We see the human factor here is both the developer resource limitation as well as with the program manager on how the priorities of the software program's features were determined.

Proportional investments into the first three layers could be addressed by adding development resources. The last two layers could be remedied by the full team collaborating on what the startup's software should feature. Simple and elegant.