Wednesday, December 31, 2008

Power equipment is not always suitable

File this under "Note to self: consider using the shovel to find the paper under the snow instead of the snowblower"

Monday, December 29, 2008

Thanks and Gratitude

My family and I wish to extend our thanks and gratitude to our families and our community; the residents of our town.

At the end of October, the well-funded start up with which I was situated shed over 1/3 of its staff. Normally this type of event would be challenging in and of itself, however given that I funded the start up of my own company in 2005, the current poor economic conditions and the recent, rapid increase in living costs, this loss of income for our one-income family was particularly unnerving. My wife and I started planning for situations and circumstances that I would never have predicted only a few years ago and we prepared ourselves for a very modest and rather disappointing winter holiday season.

However, as we began the process of reining in expenses, a largess that we had not ever expected has been given to us that has made our holidays the most profound we have experienced. A multiplicity of support and generosity has been given to us in the form of gifts from our family (my nieces and nephews asked that their holiday gifts be given to our family), school lunches and assistance with our energy expenses, gifts provided to four of our five children from the elementary and middle school, and even an anonymous donation (yes! a check from an anonymous donor was delivered to us) that has enabled us to provide our children with a warm and intimate holiday celebration. We feel that this holiday season has been the most meaningful we have experienced and we owe a tremendous amount to our friends, neighbors and community.

Therefore, we wish to say "Thank you." Thank you to our families and friends; thank you to our neighbors; thank you to our community for all that you have done to help my family.

The generosity we received has also had another effect. Inspired by the spirit of giving, my eleven year old daughter decided to donate her hair to the Locks of Love program. So, she cut off a braid about 12" long and packaged it up. As pretty as she was with long hair, I think she's even prettier with short. Of course, I may be biased.

Wednesday, December 17, 2008

Humor for Programming Geeks

I have been viewing and reading these and would like to share them; they make me laugh a lot. Commercials. These are a series of spoof ads that take off from the Apple Mac/PC schtick.

If programming languages were religions... from the Aegisub blog walks us through a number of programming languages and assigns them to religions. This works on oh so many levels.

The inspiration for "If programming languages were religions..." was the "If programming languages were cars..." blog post. I love the first lisp entry. Oh, and PHP, that made me howl.

Go ahead, look for your favorite languages there.

Monday, December 08, 2008

Replacing ActiveRecord with DataMapper in Ruby on Rails

This is for the technically minded as it deals with replacing ORMs in a Ruby on Rails application.

I recently had an opportunity to do a little presentation and I chose to talk about replacing the ActiveRecord ORM (Object Relational Mapper) with DataMapper in a Ruby on Rails application. DataMapper was incredibly fast at returning records. For a single table look up, it took 0.0150% of the time that ActiveRecord took to return all 10,000 records. Holy Toledo!

Here, check this out. This is a series of benchmark runs between two nearly identical applications. They both have the exact structure, number of pages, etc. and same number of pages. But, one application is using ActiveRecord and the other is using DataMapper.

10,000 Records recalled with ActiveRecord

#1 1.050000 0.040000 1.090000 ( 1.227590)
#1 1.050000 0.020000 1.070000 ( 1.222924)
#1 1.080000 0.020000 1.100000 ( 1.250905)
#1 1.100000 0.030000 1.130000 ( 1.288719)
#1 0.860000 0.020000 0.880000 ( 1.724392)

Average: 1.342906

10,000 Records recalled with DataMapper

#1 0.000000 0.000000 0.000000 ( 0.000198)
#1 0.000000 0.000000 0.000000 ( 0.000196)
#1 0.000000 0.000000 0.000000 ( 0.000204)
#1 0.000000 0.000000 0.000000 ( 0.000205)
#1 0.000000 0.000000 0.000000 ( 0.000202)

Average: 0.000201

Datamapper requires 0.0150% as much time as ActiveRecord

One cool thing about doing this presentation is that when I started encountering problems with working on Rails in XP (although I know it is possible for the most part), I decided to create a Linux installation. My first thought was to repartion my hard drive and install Linux there. But, I'm using an older machine and was afraid of data loss (fortunately, I use an online backup solution for recoverability, but there is still all that work to do). Therefore, I ended up creating a persistable Ubuntu 8.10 installation on a 2 GB Flash Drive. That will have to be a topic for another post.

The presentation is available on SlideShare for your viewing pleasure. I walk through the steps in the presentation after a very quick overview of ActiveRecord and DataMapper. The source is available on github.

Please use the SlideShare posting and the github source for your resources. I used the DataMapper web site, of course, as a primary reference. I also used
Fran├žois Beausoleil's blog, How to Use DataMapper From Rails, Including Migrations and Tests, to get started.

Monday, December 01, 2008

The Dumbification of the American People

One of my favorite made-up German phrases is "Der Verdummheit der Amerikanishebevoelkerung", which I translate as given in the title.  Seeing as my wife, a native German speaker, hasn't corrected me, I may have actually gotten this right.  However, this may not apply only to Americans and you can decide for yourself if this shoe fits.

In my neighborhood today we had an accident.  A house on Winthrop Street that had caught fire and burned on July 4th (we saw it as we came back from watching fireworks) was being demolished.  An excavator was ripping the house apart systematically.  My beloved wife saw the work in progress as she walked the dog and commented to me that the operator was driving the machine all over the rubble pile and the machine looked very unsteady as it teetered and tottered atop the pile.

Sure enough, the machine tipped backwards.  But that's not why Americans are dumb.  No, what has me all riled up is the way the accident was portrayed in the media.  I had the opportunity to walk by the accident before the excavator was righted.  It had landed on the roofs of the house next door and its garage.  I remarked to another neighbor that this certainly demonstrated the strength of our houses for the damage was minimal.  The roof upon which the bucket rested was not caved in, it didn't even look as though the roof was penetrated, just a little crushed.  The garage roof fared worse, but didn't look like it would take a roofer more than half a day to repair.

So, with a large exavator boom and bucket resting on the house, relatively minor damage was done, in my opinion. 

Oh, but the media.  "Demolition vehicle crushes occupied house" decries the Stoneham Sun. "Crushes"?  Oh, please.  The neighbor "barely managed to escape" claimed the broadcast on New England News.  Oh, seriously; she watched the darn thing slowly topple over and refused to leave her home for hours because she was fine.  (In all fairness, WBZTV was more balanced in its coverage, identifing simply that the excavator crashed into the house.)  

However, most of the images provided by the news organizations were from behind the exavactor.  These images mask the fact that the garage is a stand alone structure and the excavator landed on the roof of the den, which is a one story extension.  The images used make it look like fully half of the two story house was utterly crushed.  It was such an obvious manipulation that one of my children said, "They're [the news channel] is making it look like a total disaster!  It was nothing like that!"  

My point is that the hyping of the accident (which was pretty stupid from my outside perspective; but then again, I've never driven an excavator) creates a false impression.  One could easily conclude that the driver was grossly negligent, that the elderly resident was in serious danger, that Stoneham has huge oversight issues, that the damaged home is unusable.

And here is why I find that so reprehensible and alarming.  If our media organizations can turn such a small non-event into something that attempts to approach epic proportions, when where do they go with the important news?  By filling the American people up with exaggerated fluff, there is no room for serious news, serious matters and serious discussions.

In Jason Calacanis' essay, "The 120% Solution", Jason claims, 

... On average, we’ve:

  1. Spent well over 20% more than we should have on the price of homes.
  2. Built homes that are well over 20% larger than they need to be.
  3. Purchased 20% more consumer electronics than we needed. (In my case, 300%).
  4. Extended home ownership rates 20% beyond where they should be (to the mid-to-high risk credit folks).
  5. Gotten 20% fatter than we should be.

I would like to add that I think we have paid attention to only 20% of what we should have.  And being fed a diet of sensationalism is the root cause.

Monday, November 24, 2008

Re-examining Assumptions

Last Friday I met with someone who surprised me in a way I've not been surprised in a long time. This experience has sat with me since then and is inspiring me to re-examine my assumption model.

You see, the meeting was a first conversation about a position in a company and, truth be told, I was very unsure about the prospects and viability of the company. It has been in existence for over a decade, has a good size staff, but, although a web company, did not have significant traffic and, although established, had significantly lower revenue (and higher percentage overhead) than I had expected and with which I am comfortable. In short, there were warning flags.

My assumptions were that the company was not fully executing on its potential, or that perhaps the competition caught up to it and surpassed it. So that is where I focused my pre-conversation research.

The person with whom I met on Friday impressed me. First, he wasted no time in spelling out that he expected significant growth and he laid out the core thinking to his expectations. He made sense and had a fresh perspective on the problem, which is that the company's traditional domain is no longer its current domain, or more accurately, its current growth opportunity domain. The company has to move from one focus -- let's say "newsletters and messaging for the on-line widget industry" is what the company believes is its current domain -- to a new focus -- let's call that "automated marketplace for connecting widget manufacturers to widget consumers" as its new domain. This person's thinking is revolutionary for the company.

Unfortunately for my "pre-screening interview", it was also revolutionary for me. I assumed that we would be talking about one thing -- the company's market position, brand, existing product line, and immediate growth strategy -- so I didn't scour the information I had sufficiently to anticipate where the conversation would go.

From my project and program management experience, I know that it is critical to identify and document the personal and project assumptions for efforts. One of my favorite books on risk management, "Risk Management, Tricks of the Trade for Project Managers" by Rita Mulcahy is a canon that embodies the assumption identification in the processes. I've used assumption identification to pull out critical risk factors in my product management work; it's been a huge differentiator that has helped me get past personalities and focus on functionality, opportunity and risks in new product development.

So I am more than chagrined that I slipped on this. That made me wonder if assumption examination is part of the professional zeitgeist. It doesn't seem to be. Looking around for conversations on how assumptions are recognized and incorporated into various processes, I found an article from EE Times Asia on Re-examing Assumptions, plenty on assumptions at the software engineering level, a little blurb on program risk management from PgMP by Paul Sanghera in Google Book Search, a news article on SEI from 2003. Much more on the engineering side than the business process side, in my opinion, although New Product Forecasting by Kenneth B. Kahn has a section on assumption management that caught my eye.

There is opportunity here. Seemingly there is need for some assumption evangelism -- how are you going to check into your working assumptions about the important things in your life? I know what I'm going do about it in mine.

Monday, November 17, 2008

How to stay postive when unemployed

Oy veh, have you read the paper? It can drive you meshugga!

Seriously, Fidelity, which had laid off 1,300 announced another 1,700 jobs will be cut. JPMorgan will be cutting jobs. Citibank lays off some 75,000 people over the past few months -- that is three times the size of my suburban community!

So there are a lot of folks who are looking for work. I met a woman who has been looking for another position as an office manager since last July. She wasn't very positive at this point.

No one argues that times are hard. A lot of experts believe that they are going to get harder before they get better. So, no one would fault you for feeling sorry for yourself should you be in the position of needing to find a new position. However, it's the worst thing you can do for yourself.

In just the same manner as sound business theory dictates that one should save cash when times are good and spend when times are bad, one must stay positive when one is in a tough position. If you are depressed, you will simply not be doing the things that you should be doing. You simply cannot afford the luxury of staying depressed.

In the hopes that someone benefits from seeing that they are not alone in tough times, here are some of the things I do regularly to keep myself positive and recommend them enthusiastically:

  1. Count your blessings. Seriously. Daily. I do. My wife, my children, my health, my skills and experiences, my well-trained dog. Everything. And I do it vocally. Here is what I said to my wife this morning "Good morning, my love. I am so glad that you married me." That wouldn't be too hard for you to do, would it?
  2. Enumerate your strengths. Call 'em out. Your years of experience. Your doggedness. Your perseverance. Your ability to judge people. Whatever it is that you know gives you power and ability.
  3. Mitigate your weakness. Whether you feel you procrastinate, or you do not negotiate well, or you do not follow through, or you loose your temper, or whatever, there is a way you can mitigate these failings. First of all, you are in control of your life. You can make amazing things happen. These things you do not like about yourself are not fatal characteristic flaws -- otherwise you would already be dead! They are risks to your positive life style that you can identify, mitigate and control.
  4. Write down your Values and Goals. List your Abstract Goals (long, healthy life; financial security; etc.), Concrete Goals ("A position as such and such earning so much annually") and your Immediate Goals (Two high-quality job applications today and four follow-up calls). Read daily out loud.
  5. Exercise. Yes; take time for yourself to do whatever you need to do as exercise. Whether that be walking to the library for a new book, going for a jog, or swimming a mile, get yourself out of the house. There are tons of reasons why exercise is good for you, so only a great fool would deny themself such easy benefits, and you are no great fool, so what are you waiting for?!
We are here on this earth for such a short period of time and our opportunity to create things of wonder and beauty that outlast us shoots quickly by. So don't waste a moment. Your dreams are converted to goals as soon as you make a plan and start following it. The first step to achieving those goals is to be positive and believe that you can accomplish your goals.

I would very much like to hear what you do to get yourself positive when you're feeling down. Please take a moment to click on the "comment" link below and send me your ideas and practices.

Monday, November 10, 2008

Software Development Process and the Start Up

Start ups are great places, if you like that sort of thing (and I do). Small groups of individuals infused with the entrepreneurial spirit working intensely on their Next Big Idea is invigorating. Strong, smart people can make a huge difference, albeit sometimes with herculean efforts, but at some point (more on this later), you launch.

Then you go right back into it the next day.

Which will eventually burn you out.

But greed and excitement are wonderful things, so you muster your energy, take a deep breath and dive back in. The launches are satisfying. The acknowledgment from your peers and management are satisfying. The accolades, press releases, funding efforts, and the promise that you are contributing to the Next Big Idea are all satisfying. But you know that it can't continue forever; that at some point the company will need to cross over from Commando stage to Infantryman stage and then eventually to Policeman stage (use what ever stage names you prefer here).

So here's the question; What do you need in terms of process at each stage?

Let's work our way backwards. No one would be surprised to find a mature CMMI and ITIL led organization at the Policeman stage. Some degree of CMMI maturity would quite natural for a company at the Infantryman stage, say CMMI maturity level 2 or 3; repeatable and documented process, improvement processes and some feed back capability.

But what about Commando? What about start ups? Eventually the commandos will move on and the company will be taken over by Infantrymen, but that could take years. For how long will the Commandos be running on their own gumption?

Those who live by process know the value it brings; reduced flailing, more reliable delivery, lower defect rates, greater alignment to business objectives. However, there is the challenge of perception to overcome. Perception that process interferes with creativity, introduces bureaucracy, hinders agility and is too expensive. Especially within the start up environment, which is often Cowboy development. "We have smart people, we don't need all that process stuff"

Poppycock and balderdash.

This is a simple case of "enough." Just enough process to deliver effective products. Just enough framework so that everyone knows that stages. Just enough practices so that a repeatably effective cycle can be created. Just enough monitoring and feedback to that mistakes are not endlessly repeated. Just enough borders to ensure that goals are repeatedly redefined to the point of ineffective thrashing. The basic check list is short:

  • Short, but effective cycles -- this allows for flexibility and redirection without throwing away effort.
  • Clear deliverable at the end -- the thrill of victory is a strong motivator
  • Clear success factors -- New features in this build? Then only new features. Bug fixes? Then only bug fixes. One new feature and three critical bugs? Fine; do only that. What is the least amount that you can do to be successful in solving todays problems.
  • Blessing and direction from senior management -- no sponsor, no work. The stakeholders decide what is the most important thing for them to have.

It is quite possible to respond to the short-cycle real-time demands of a start up. After all, the start up is first an idea. That idea will be tested by your customers, who will then tell you what business you're in.

All that stated, you have product to deliver. There is time pressure, and although there are unending pressures to constantly change, tweak and improve your product, you simply HAVE to launch. You HAVE to get to a launch date and the product MUST be released. Never loose sight of that.

So then the next question is "How can you manage the exchange of endless pressure with the real-time need to deliver?"

This is the job of product management. Product management starts with industry and market knowledge, time to market and market opportunity, cost to develop and return on investment. The funnel of endless ideas must be quickly and efficiently evaluated by a capable product manager. The value of the idea needs to be quantified without romanticism. The cherry picking becomes much easier at this point.

In summary, enough software process in the start up will produce superior products more effectively than ad hoc or heavy handed models. Focusing the development work on valuable efforts comes for successfully vetting the opportunities and defining the critical success factors.

Friday, November 07, 2008

Perfect Business Envelopes with Open Office and the Samsung ML-1430

Here is how I was able to get perfect business envelopes to print on my Samsung ML-1430 using Open Office version 3.0.

The key to getting your envelope to print correctly is matching up what the printer expects with what you are telling the printer. That said, here are the specific steps and some thoughts on how you can expand this to other printers.

When you have your business letter printed and are ready for your envelope, I recommend that you create a new document with the envelope format.

TIP: Highlight and copy the recipients name and address from the head of the business letter. That way you have it ready to paste into your envelope wizard.

Insert an Envelope

Select Insert, Envelope to open the Envelope Wizard. The Wizard has three tabs and you need to visit each one!

On the Envelope tab, paste the addressee's information (aren't you glad you copied that instead of having to retype it now?). Make sure the Sender box is checked and that your return address is present. Now select the Format tab. Make sure the Format field in the Size section
is set for "Env. 10" and select the Printer tab. Here is where much of the magic juju happens.

The ML-1430 has a center-feed envelope feeder. The print side faces out and the top of the envelope (into which you slide your letter) is on the right. Therefore, select the icon with vertical envelope orientation that feeds from the center of the print tray and make sure "Print from top" is selected.

Here is what my dialog box looked like:

Add Image

Now click on "New Doc."

What you will see is horrifically ugly, but will get us to where we need to be. So onward!

Format the New Envelope Document

Select Format, Page to get the Page Style dialog box. Change the Format selection list to "Env. #10" and reduce the top margin to 0.00". You will ge a dialog box warning that the margin settings are out of print range. Say "Yes" to apply the settings nonetheless.

Now click on the line of the text box containing your return address so that it shows the little green handles. Then right click inside of it and select "Frame". In the Position section, set the Horizontal and Vertical positions to 0.39" and click on "OK".

Now do the same for the addressee text box and set the Horizontal andVertical positions to 4.5" from the left and 1.75" from the top.

Still with me? Here comes the easy part. About time, too, right?

Print your Envelope

Put your envelope into the envelope feeder of your printer. As mentioned, it goes print side out, top of the envelope to the right. Snug up the print guides to hold the envelope steady. You might need to take the letter paper supply out of the printer to ensure that the envelope gets picked up by the sheet feeder.

Open the output slot at the front so that your envelope doesn't get mashed up by being rolled to the vertical output tray.

Click on the print icon in Open Office and make sure your envelope feeds correctly. Voila!

Do you need to print with an earlier version of Open Office? Here is some advice that got me started. However, the specifics of the Samsung ML-1430 and Open Office 3.0 were enough that I wanted to document this for electronic posterity.

Save the Envelope as a Template for future use

Oh, one more tip.

TIP: Save your envelope as a template so you can easily print envelopes whenever you want.

Here's how to do that:

Start by replacing the specifics of the addressee field with some generic placeholders. Here is what I used:

Address Line 1
Address Line 2
City, State, ZIP

From within your envelope document, select File, Templates, Save. Select "My Templates" as the category and enter a name for the template. I used "ML-1430 Envelope" and click on OK.

The next time you need a size 10 envelope for a business letter, select File, New, Templates and Documents. Click on "Template" and then double-click (tricky that!) on "My Templates". There you will see your ML-1430 Envelope template and you can easily replace the placeholder text with the address information from your letter.

There you have it! I certainly hope that helps you in your quest for perfect business envelopes!

Monday, November 03, 2008

Reflections on a marathon

I recently ran my first marathon. Simply stated; it wasn't easy.

In the best of circumstances, a marathon isn't supposed to be easy. Add to the mixture that I am not a natural endurance athlete and the equation becomes much more challenging to solve. Add that I was part of a sizable "reduction in work force" just two days before, and the challenge became yet even more steep.

Nonetheless, I did it. I (mostly) ran 26.2 miles, which is in my book a Really Big Distance, with my best friend along side me, cajoling and exhorting me to push through to the finish. It took me more than 4 hours and 35 minutes, which is in my book a Really Long Time. But I did it.

I will likely loose two toe nails and the blisters haven't quite healed, but are looking much better. But I did it. And I will do it again.

I have turned myself into a runner -- I really like it and look forward to it -- and I have turned myself into an endurance athlete -- I can swim, ride and run some pretty long distances now -- and I have tested my physical and mental mettle.

I ran a marathon, and I will do it again, and I will do better. That makes me feel really good.

Now that I am in the job market, having completed my marathon, looking for the next and best opportunity that can take full advantage of my passions, skills, determination, interests, and experiences, my marathon is more than just a race I ran. It is a mark of what I can achieve and a measure of how determination can see one through difficult challenges.

Monday, June 23, 2008

More on Things Physical

I've had a change of heart.

In following up with a number of doctors on the on-going issues related to having been hit by a car while riding my bike, I've had my self assessment changed.

While admittedly no younger, having all those doctors and other advisors say, "Well, you're still young..." as a preamble to their anaysis certainly has had an effect. I'm not feeling quite as old as I did in November when dealing with the injuries was more immediate. I've been through a winter of rehabilitation and have emerged into Spring with renewed passion.

On my first race of the season, even though I was pushed up into the next age group by the reality of my birth date, I was 10 seconds faster than my time last year -- and I did really well on that race last year.

Last night, I went running with my training partner. We ran further and faster together, keeping each other from flagging at different time and turned in a really respectable time for around 8.5 miles. Next week we push up to to around 10 miles.

Yes, I still need to swim, ride and run, plus stretch out and rest to keep my body flexible and strong and hold off the decay of spondylolisthesis. Having been hit by a car and the resulting long term injuries certainly complicates matters and requires significant additional time every day to restore strength and flexibility.

But, gosh darn it, I can do it. I am doing it!

Nothing like a new mind set to undo a year of aging.