Intelligent Giving

‘Tis the season for giving. Why not make sure your hard earned money is going to the right place? Do a search on Google for “charity finder” or some similar phrase and you will see there are a number of sites to assist you in finding and evaluation charities. Charity Navigator is my personal favorite.
Temporary Trees and Software Decay
Today, I was lucky to get to spend most of the day outside and enjoy a beautiful, autumn day with a high in the upper 60’s. I spent most of the afternoon removing two trees that I no longer wanted in my backyard. As only a good technology blogger would do, I will relate this event to software. Because I am able to blog here about two of my favorite things, the outdoors and software, this may be one of the most enjoyable blog entries I will ever get to write.
The reason I removed the two trees was because there were four trees planted in a row, with about ten feet in between each tree. The trees were most likely all planted by the original owner or builder and are perhaps 13 old, which is the age of the house. The tree types as they appeared in the back yard from left to right were oak, plum, maple and Bradford pear. The trees were growing into each other, so either the first and third or second and fourth trees needed to go. No one in their right mind would have planted these four trees so close together. The plum and pear trees were most likely temporary trees, because these trees are lower quality than the oak and maple. So, I decided to remove the two fruit trees, which should give the oak and maple plenty of room to grow properly. Plus, this is a chance to get the chainsaw out, and one can never pass that up.
OK, here is the part where I relate the tree story to software decay (or software rot). When a new home is built, often many trees are planted around the home for various reasons. Some are for aesthetics, some are to prevent erosion of newly landscaped hills and topsoil and others are for privacy. I’m guessing the temporary trees in my backyard were planted to prevent erosion or to provide privacy between my yard and the yard that backs up against me. With software, we often write temporary code for debugging, as a temporary error patch or maybe as a temporary feature to help the users out until another more complete feature is developed. In addition to temporary code, over time we may also add overly complex features, unwanted features and some not so really needed bells and whistles. Hopefully, from the beginning of the project we added a whole lot of required features that make the software useful.
So, most software contains temporary code, overly complex or unneeded features as well as valid code to implement the requirements. This code now needs to be maintained, updated and reviewed over its lifetime. The temporary code needs to be removed. Unneeded and unused features need to be recognized and removed also. Overly complex features need to be simplified. Existing features need to be improved. New features need to be added. How many times have you worked on a project that was completed and then everyone moved on to something else? Sure, a few developers stuck around to do maintenance on that original program. Did they do only the minimal needed to keeps things rolling along and then move on to something else also. Did they do all of the things I just listed? Maybe just a one or two of them, like adding new features?
I’m the third owner of my house in 13 years. I think the previous owners knew those two trees needed to go. But since they were leaving, why not let the next owner fix the problem? A problem that grew a little bigger every day. Hey, at least I had a reason to get the chainsaw out on a beautiful, sunny day.
A CSS Tooltip Solution For Long Tooltips
Recently, I created a custom CSS tooltip solution for a Web project I have been working on. I was so pleased with the solution, I thought I would share it here. Before I get started, I need to give credit to the online article, CSS Tooltips - Part One, from which I acquired the meat and potatoes of the solution.
There is an easy way to create a tooltip in HTML, that almost saved me a half day of work. You can use a title attribute on a span tag and the major browsers will display the text in the title attribute as a tooltip. The problem with this solution is that only the first 50 characters or so of the title attribute value will be displayed. I didn’t take the time to figure out how many characters exactly are displayed, but if the tooltip cuts off the text, then an ellipsis (”…”) is displayed at the end of the tooltip. Well, my tooltip text was too long, so I was stuck looking for another solution.
Once I found the CSS Tooltips article, I was on my way to a cool solution that pretty much only requires CSS. This is a nice feature in the event JavaScript is disabled in the user’s browser. I added the following entries to my CSS file…
.tooltip { position: relative;
text-decoration: none;
}
.tooltip span {
display: none;
}
.tooltip:hover span {
position: absolute;
top: 1px;
left: 75px;
width: 500px;
display: block;
background: #fdd;
border: 1px solid red;
}
I then assigned a style class of “tooltip” to an anchor tag in my HTML that contained the text to display on the screen as well as a nested span tag containing the tooltip text. The only JavaScript in this solution was the tiny bit I placed in the onclick event in order disable the link. Here is an example anchor tag…
<a class="tooltip" onclick="return false;">
My display text.
<span>My very long tooltip text.
My very long tooltip text.
My very long tooltip text.
My very long tooltip text.</span>
</a>
That’s the solution. Grab the CSS entries and the anchor tag and you’ve got it.
Here are a few more notes about this solution…
- You can omit the text-decoration style if you really have a true link. In my situation, I did not want a link. I did read a little about the “div’ tag having support for hover, but it sounded as if there were browser compatibility problems with it. I may do some more investigation into this possibility.
- Same goes for the onclick event. If you have a true link, then you can omit this as well.
- Other links seemed to “bleed” through my tooltip box. Since, my tooltip box was larger than the standard tooltip box, I had be careful with my relative placement.
- Since my box was large, I also had to worry about the box going outside of the frame of the browser. Again, I was able to adjust my box placement, so that this was not an issue.
Update: Here is an example of this solution in action.
Good luck and thanks again to the guys who wrote the CSS Tooltips article.
Lincoln’s Insights Into Electronic Messaging
OK, Abe Lincoln didn’t have email, instant messaging or blogs during his lifetime, but he did have the telegraph. The following Web site / book gives a fascinating account of how Lincoln used the telegraph to help win the Civil War. I particularly find interesting Lincoln’s use of the telegraph versus how we use email and blogs or even write software today. My favorite phrases to take from this story are “Words are Important”, “Less is More” and “Message Candor”.
Become a Radio Mogul

Ever want to run your own radio station? Now you can. Pandora is a great new Web site that let’s you create a custom radio station in your browser. As you listen to your customized station, Pandora acts like a DJ and serves up songs by the artists you have selected or songs by other artists that sound similar to your selections. Besides just being an easy way to set up a custom radio station that plays music you like, Pandora is a great place to discover new artists and songs.