GBIC >> Beene Blog >> History
Beene Blog History
Here are all of my previous blogs (about 100), with the most recent at the top. Many are about programming, but I also provide my observations about life and family!

I'm Not Just a Programmer!
Each morning my wife and I have this ritual - of asking each other what our plans are for the day. Invariably, part of my answer is that I have some studying to do. She always thinks that I'm crazy - spending as much time as I do learning new things.

Of course, when something comes up that she needs to know, who does she ask?

Except for spending time with my two grandsons, I can think of very few things more interesting that learning something I don't already know. Science and technology, history, and cooking are high on my list right now.

My cooking interest is especially strange because I'm the very picky eater of the family. You don't need a book to list the foods I like to eat - just a few pages will do the trick!

What I like about learning to cook is trying to figure out the science/chemisty involved. Why add this, why that much of an ingredient, who thought of this, what happens if I change something - those are the parts of cooking I enjoy.

I read of a restaurant in England that hires several full-time chemists specifically for the purpose of understanding such questions. They try some very outlandish combinations to see what might become the next new popular food.

Even Cook's Magazine (and their online TV show) are spending more and more time explaining why recipes work the way they do.

Cooking - it's hasn't been just for mothers for a long time!

Oh yeah, and back to the PowerBASIC thing....

One of the most useful things about PowerBASIC is that the more you use it, the more you tend to use SDK-style programming to write your applications. PowerBASIC has the syntax of a traditional BASIC language, but it's written to rely heavily on the use of API.

What PowerBASIC apps doesn't require (thank goodness!) are the various API wrappers - such as MFC, which wrap the Windows API into C++ classes. I'd have to say that I wish I had discovered it years ago. I'd probably have weaned myself from VB6, especially when the VB.NET fiasco was put in place by Microsoft.

If you have thoughts on these topics, please feel free to let me know.

I just spent the last 3 months of my free time completing a new section at this site on PowerBASIC.

It's part of my ongoing desire to pick up new languages. When Microsoft decided to no longer support my VB6 habit I felt like I had to make a decision about the direction of my future software development skills.

For a couple of years I made no decision at all. VB6 still works, and will continue to work for the forseeable future so there really wasn't any pressure to make any immediate decisions.

In a way MS did me a small favor. I used VB6 but never felt it was anything more than the language I knew - not the language I had to know. So when the future of VB6 turned gray, I began to look around - something I might not have done otherwise.

Being mad at Microsoft for not continuing to develop my tool of choice, the first response was to avoid Microsoft completely. Then I decided if I had to change, perhaps Microsoft's C# might be okay. Moving to VB.NET didn't seem particularly attractive.

My guess is that the selection of a language isn't as critical as it once was. Pretty much all of the top languages are very capable and can do just about anything needed. It's the skill of the programmer that's the biggest factor. The one big exception is in getting a job - you have to have skills in your employer's language of choice.

Eventually I decided that I simply didn't know enough about languages to know which way to go. So I decided that I'd learn several new languages and see if that would give me an opinion on whether any specific language would stand shoulders above all others.

In the end, I picked PowerBASIC as one of the languages to learn. It's reputation for small, fast executables fit nicely with my need for speed on some stereogram apps I'm writing which include animated stereograms. I was also aware of an expression evaluator call UCalc, written in PowerBASIC, which I knew to be at the top of the list in terms of speed, so PowerBASIC already had a good reputation with me.

So here I am, about mid-way through my PowerBASIC learning cycle. So far it's been interesting but I've not written anything of significance so I don't yet have a huge opinion about PowerBASIC. But the promise is still there. Shortly I hope to rewrite my stereogram app and then I'll see if PowerBASIC can deliver on its promise of speed!

One real benefit of PowerBASIC has been the experience of seeing how to handle aspects of programming that VB6 once handled for me. Using PowerBASIC to write GUI applications is much like writing HTML code by hand (which I've done for all 2000+ pages of my website). You get understanding, power and control that programs like VB6 take away from you. My hand-written HTML code comes out very small, much like PowerBASIC apps avoids the fluff that VB6 added.

Having said all that, don't let me leave without saying that the power of VB6 has always been in the speed of creating an application. All of that hiding of details may have come with with a performance price, but skilled VB6 programmers can quickly create usable, stable applications. I still use it!

I'll report back with more details as I get further into PowerBASIC.

BASIC Capabilities
I just spent the last month of my free time completing a new section at this site on QBasic.

And why did I do such a thing?

Aside from a general interest, I wanted to take a closer look at the roots of programming (BASIC being one of the earliest, widely available languages). As you've seen in my blogs I'm in the process of picking up other languages and am also working on a comparison of languages. By understanding the history of programming I expect to gain a better perspective on current languages.

One clear result of renewing my QBasic skills (which I'll probably use very, very infrequently) is the exposure of significant limitations of the early BASIC languages. The inability to create programs with modern user interfaces, lack of long filename support and almost non-existent graphics and API/DLL support top the list - not to mention problems with working in Windox XP and Vista.

It doesn't mean that you can't still do useful things with QBasic. It continues to be used by thousands of programmers to create utilities, business application and simple games. It can also be a reasonable learning tool for beginning programmers.

But the bottom line is QBasic is out and new BASIC dialects are in. Which ones? That's what I'll be working on. And are the new BASIC dialects up to the challenge of producing applications that rival what can be done with the Microsoft stable of tools? That too, is one of the reasons I'm spending time looking at non-Microsoft options. Just as Vista's luke-warm reception has raised interest in alternatives to Windows, so has their .NET offering (which places a huge learning/cost/legacy/development burden on programmers) raised interest in alternative languages.

If you're a corporate programmer, you mostly don't care about this topic because you'll be using whatever language the company requires. But if you're a free-lance, independent programmer then you'll want the best results with minimum hassle - which simply may not be Microsoft.

If you have thoughts on this topic, please feel free to let me know.

Aren't They All BASIC?
As I've been putting together a summary and comparison of various BASIC dialects, I've run into an interesting problem - how to classify a language as BASIC or non-BASIC.

After looking at a dozen languages, those considered BASIC as well as those which are not, I find that about 80% of the functions are pretty much the same. I guess it's no surprise, given that the needed manipulations of numbers, strings, arrays and images are common to most applications.

The problem is that there's no sharp division between BASIC and non-BASIC dialects. There's C on one end and BASIC on the other. Then there's a language at every step of the transition between the two.

Most often a language is considered to be a BASIC dialect if it uses the syntax of the original BASICA, GW-BASIC, or QuickBASIC languages. The key word is syntax - how the code is written.

Often there's no doubt about a language's pedigree. BASIC language authors usually follow the original BASIC syntax closely, adding features or functions to tailor the language to the category of applications (such as games) for which the language is written.

At other times there's no such clear distinction. Yes, C has funny syntax. Yes, Perl can be written with obfuscations. Yes, Java treats everything as an object. Differences yes, but what's an unambigous way to cleanly categorize all the differences - separating the world into BASIC and non-BASIC?

For that matter, why bother doing it? This bring my original goal into question. Given the disdain that BASIC received throughout its history, many language authors would rather not have their languages thought of as a BASIC dialect. However, most programmers simply want a tool that gets the job done with a minimum of fuss.

One of the languages describes itself as "Easy as BASIC, Powerful as C", which typifies the reputation of BASIC dialects in general.

In my next several blogs I'll dwell on this topic in more detail.

More Monkey Play
In my last blog I talked about the problem of the monkey and the cookie jar. Here's one more look at how much of a monkey I am.

1. Before retirement I made a list of over 200 tasks I wanted to complete, totalling over 9 man-years of effort. No schedule was made, just the list of tasks. The list of tasks has grown since then.

2. When I retired, I started going to bed at 10:00pm. I felt better but I got behind schedule. Now I'm back to staying up until 1:00am to work on my list of tasks.

3. I play tennis daily, with a different group on each day of the week. On Thursdays, one of my (much) older buddies will whisper to me "Ease Up" when I'm too aggressive for the level of players in that particular group.

4. My wife says "Honey did you do ( ... something she asked me to do)?" and I say "Not yet." It happens all the time.

5. Now that I'm retired, my technical social circle has dropped to about zero. I lost all my daily technical contact with coworkers and haven't found the time to replace them during retirement.

6. My day's activities carve out roughly as 25% caregiver, 20% tennis, 15% grandkids, 20% wife, and 10% grooming/eating - leaving little to pursue technical activities.

Life is Good, really - it's just not what I had planned. It sounds like this monkey should let go of some cookies!

The Monkey and the Cookie Jar!
You all should know the story - the monkey grabs so many cookies with his hand that he cannot get his hand and cookies through the lid of the jar!

I'm afraid that's how my website updates are going. I have so many things I want to do (updates, new content, completely new sections, software, reviews, new tutorials ...) that I don't feel like I'm making serious progress in any one area. It's frustrating!

I know I'll get it all done eventually, but right now I need to let go of some cookies!

The Book of Power!
My grandson, Nathan, says he has the power to control signal lights at intersections. He claims to be able to make a light stay green when we're driving, so that we don't have to wait at intersections.

I've discovered a 2nd way to achieve the same results. I simply take a science fiction book with me and leave it in the car. The plan is to read the book at any red lights.

If I pick a random book, one which I've not started, then the book simply sits there.

But if the book is one I've started, that I really like, and that I can't wait to finish reading, then the book will force all signal lights to turn and stay green! It's some kind of negative power. What I want is to read the book, but what I get is a green light that keeps me from reading the book at all!

Try it for yourself and you'll see how to use the perverse humor of nature to your own benefit. Let me know if a non-science fiction books works as well.

I haven't told Nathan about this. I'll let him continue to think the green-light power is his alone!

Microsoft Strategy Costs Me Money!
I was making a list of the several 3rd party libraries/components needed in today's professional applications, when it occurred to me that Microsoft was deliberately keeping these features out of the baseline Visual Studio.

I've had the thought before, but it never struck me how hard it hits my pocketbook until I started pricing the list I made.

Think of these commonly used embedded components/libraries:

  • Spreadsheet
  • Scripting Engine
  • FTP
  • Equation parser
  • Vector Graphics
  • Video Capture
  • Screen Capture
  • Tree Display
  • Syntax Highlighter
  • 3D Display/Conversion
  • Image Display/Editing

Some of these are found in Visual Studio, but Microsoft goes out of its way to placate the 3rd party industry by including only light-weight components - the equivalent of MSPaint when compared to industry standards.

Not only does the programmer pay through the nose for the dozen plus tools needed, but the users also pays because of the increased costs of the developing programmers.

If Microsoft wanted to help ensure the loyalty of its customers, it would provide them with a complete set of building tools, rather than just the raw wood and nails!

Can't See the Forest for the Trees!
This old saying still applies: "It's the poor carpenter who blames his tool!".

I read somewhere that over 1,000 programming languages have been created. Of those, about 10-20 currently account for over 98% of all programming activity. And of the top 10, at least half are so similar that no consensus can be reached as to which language new programmers should learn.

It seems to me that there are a lot of carpenters running around ...

Personally, I've been able to write applications with every language I've tried, and enjoyed the learning process immensely. Considering how powerful the tools are that we get to work with, I'm always surprised about all the negativity I see from programmers. To me, it all seems a lot like re-arranging chairs on a bus to heaven!

I'm Serious About 412
Throughout my life I've joked with my kids about wanting to live to be 412. I don't really know where the number came from - it just showed up in the conversations.

But now I'm serious about it. Since I've retired and started learning new skills, I've decided that my allotted 85 (or so) years is way too short. I barely know enough to tie my shoes and there's not enough time left in my life to learn more than a fraction of the things I want to know.

Someone told me that no matter how old I got, that there'd still be things to learn. That may be true, but then again there are some fundamental things to learn that will never change. From chemistry to culinary the basics haven't changed in years and aren't likely to change in the future.

The cool thing about basic knowledge is that it represents a 90% solution. With basic knowledge you can do just about 90% of everything you want to do. Unfortunately, some of the really cool stuff requires some of the 10% remaining knowledge, but I'd be happy to live with having the basics of everything down pat.

Then of course, I need many more decades in which to practice the basics, plus even more decades to apply the basics to solving mankind's big issues.

I'm not sure that 412 is even enough!

A Little Knowledge Saves a Lot
AT&T told me they wanted $400 to run wire and create three jacks for two-line phones. They'd be available in about 3 days.

So instead I went to the Internet, read up on telephone wiring, and did the job myself for about $50 in materials and 8 hours of labor.

I bought the wires and jacks, laid the cable through the attic, and wired the jacks. I also called Jack (my friend) and asked about jacks. I told him I didn't know jack about jacks, and Jack told me he'd help me if I needed him. I decided I didn't need Jack's help to wire the jacks so Jack's out of the jack business unless I've messed up.

Necessity is the Mother of Technicians
You'd think that as an electronics engineer I would be happy to take on any task around the house that involves wires and electrons. But I've not really gotten that interested in working on house wiring and usually just hire an electrician to do any jobs needed.

They have the right tools and the right experience to make short work of the jobs. I've always found that I can get a wiring job done, but I do them so seldom that it takes way too much time because I've forgotten everything I learned the last time, not to mention not having the right tools for the job.

I arranged for a technician to come to the warehouse of our new business to install some two-line jacks for our phones. The prior owners of the warehouse seem to have removed all the wires, so that even though AT&T has gotten the lines turned on we're still without phones for lack of a connection to the main box.

The technician didn't show, didn't call to say he wouldn't show, and won't return my phone calls. Needless to say there won't be repeat business for this guy. You'll recall how I got great service a few days ago from three different companies - but alas, the streak stopped short today!

So, on Sunday I'm going to get my tool kit, head out to the warehouse, and wire the lines myself. I'll let you know if my first cut at being a phone technician goes smoothly. I suspect it will get done but it won't be a 30 minute job! If all else fails, I'll get my friend Jack to help out. He's available, and his price is right!

Dual Blogging
I've been blogging on my web site for several months now - just a simple blog with no capability of user response other than through email.

I can't say it's boring but I will say that a bit more user response - accolades or blasphemy - would be a lot more fun.

So, I plan to adding my blog to a more traditional blogging site as well as add interactivity capability at my own site.

That means I'll have to do a little reading to figure out the best place to be and which software to use.

I also plan to use some of my previous blogs - "The Best of Gary Beene". Eventually this site and the new site will be in daily sync.

Applauding Good Service
As part of the new business my wife and I are starting we have dealt with a lot of service companies. Generally, the experience has been very frustrating. Nothing happens on time and when it does it's not what you asked for.

But today was very different. We had three service folks come to our house and the experience was nothing short of amazing.

Time Warner Cable
On time, courteous, helpful, friendly and informative.

ADT - Security
Same day service, knowledgable, accommodating and efficient!

Grout Doctor
Called ahead, very polite, skilled and very neat!

I will be calling their companies to let them know how much I appreciated the service and what an heartening experience it was to get exactly I paid for. Congratulations to all three!

Variable Base Numbers
I wrote an online paper a while back, introducing a numbering system where each position of the numbers was created using a different base system. For example, instead of having all positions be base 10, base 2, base 16, or base 8 - the number might have position 1 (right-most) be base 16, whereas the next position (moving leftward) would be base 10.

I posted an online description of the variable base numbering system.

In my case, I needed to generate all possible equations using a fixed set of programming functions. The total came in at a little over 75,000,000 equations - all of which are available online.

I always wondered if anyone else found any way to apply my variable base numbering system to solve a problem of theirs.

One Last Perl
I've just about completed the updates to my Perl website, and I'm adding code snippets to my gbCodeLib code librarian database. It's the first chance I've had to simply lean back and take a big picture look at Perl.

As I stated before, it's definitely true that you can learn Perl quickly - at the 80% level. However, I've begun to realize how powerful a tool it is and how much longer it's going to take me to get the next 20%. I probably won't do it. 85%-90% is all I'll do.

What I've also discovered is that while Perl was written to require very minimal code to do a task, it came at an enormous cost of complexity. There are nuances and branches and exceptions and multiple uses and module without end and insufficiently informative documentation - too, too many obstacles to being an expert Perl programmer. There are even books out on the next version of Perl - a version that's not even available!

Still, I really like Perl. As an engineer, you have to like a language that lets you create masterpieces of construction for the simplest of tasks. In no other language are jammed tight one-liners, obfuscation, and code poetry a part of the programmer culture.

However, you'll remember that my goal is to learn all the major languages, so while I'll continue to use Perl I'll also be comparing it to the next language I learn.

Will it compare favorably? Will newer languages be more hype and less meat? Will I look back on Perl and wonder how I ever thought it was so great?

Who Moved My Cheese?
The book by this title is a standard for managers. I've found that the title and book content have bearing on my own situation - where both my wife and I have retired (never mind that we're actually starting a new business - the point is that we're both at home, together, a lot!).

Yesterday I bought two door keys. This morning they disappeared. This afternoon I found them in the laundry room where my wife had moved the clothes whose pockets contained the keys.

Last week we had family over and my wife made acorn squash soup. She used an immersion blender in the process. It disappeared. Tonight she found it in the kitchen, but on an improbable shelf.

Those kind of events have happened over and over lately. Now that there are two people in the house, competing with using and cleaning the house, things get moved by one person and the other person has no idea where the item went. Worse, at our age and as busy are we seem to be, neither of us can remember moving them.

It's really annoying, but since I seem to be half of the problem, who do I get annoyed with?

The List of Important Issues
Last week I challenged my fellow baby boomers to become a volunteer army - using their free time to solve the problems of the world.

I also challenged Bill Gates to fund the army of volunteers - using the voluntary effort of the mass of professional baby boomers entering retirement to multiply the results of his money far beyond the excellent foundation he has already set up!

Since it's my blog, I also get to put my list of major issues needing solution on the table. Here's my list, in priority order.

  1. Cheap De-salinization of Sea Water
  2. Energy/Oil Alternative
  3. Extra-Solar Colonization
  4. Free Food - 1500 calories per day per person
  5. Personal Security
  6. Wood Substitute
  7. Population Reduction
  8. The Alibi System, Installed
  9. Education for Everyone

This are not on my list.

  • Life extension
  • Crop yield enhancement

Now that I've made the list, I'll think more on it. Just consider it a first draft.

A Plan to Shape the Future
I often ask questions about why something isn't already available, things from the small to the sublime - a side-by-side comparison of languages, easy access to tutorials in all languages, better coverage of freeware by magazines, a working autoFab, a legal Alibi system, and all those other things that I've whined about in my blogs.

Ok, I actually know the answer, which is simply that there is a lack of folks who can afford to work on them - but that's about to change!

You may be familiar with the idea that many inventions and scientific advances came from folks who not only had the skills, but who also had the time to work on the advances. Typically, that would have been the rich folks of history. These days, being rich takes full time so the burden of invention (the free-for-humanity kind, not the corporate make-me-money kind) has found itself without owners.

I propose that we baby-boomers take on the responsibility. I'm told there are millions of us going into retirement - skilled professionals with the willingness to give time for worthy causes. Our job is to use those skills and the available time to tackle the problems of the world (well, at least the problems I mention in my blog).

I've already started working on some of the issues, in part by bringing to public attention and in part by starting web sites on some of the issues.

I won't let this ride. You'll see it in my blog regularly.

Also, Bill Gates, if you're reading this blog then I want you to empower an army of thousands of volunteers to tackle the issues - we'll work for free if you will cover the business expenses! The foundation you have where you give away money/pay for services is great, but how about tapping into the huge free labor pool that we retiring baby-boomers represent!

Black Friday!
The day after Thanksgiving, I got up at 5am and went on my first ever Black Friday shopping trip!

Within 30 minutes I was back home, in bed and snuggling next to my wife - safe against the barbarian horde of bargain shoppers that had repelled my insignificant attempt to actually buy something on sale!

Best Buy - lines started at 4am, doors opened at 5am, I got there at 6am. Nothing on the sales advertisement page was available because coupons had been given to people in line, authorizing them to buy sales items of their choice. By the time I got there, no coupons, no sales items and no shopping satisfaction for me!

Staples - the line went from the front of the door to the back of the building, snaking it's way around aisles just like the line rides at an amusement park. I went in, I went out. No chance whatever of buying anything before I reached old age!

Obviously I'm not a serious shopper, like all those folks who arrived before me. This was a shopping eye-opener for me, one that won't be repeated!

Thanksgiving Day!
Thanksgiving is a holiday that we reserve for family activities.

In case I've not mentioned it, my wife and I often share events with my wife's ex-husband and his wife, all of our respective adult children, and all of the grandkids - plus the girlfriends and boyfriends of family members.

We call it the extended family, and except for a daughter in Alaska (hi Carmon!) we were all there. We did get to talk to her, and she was wife friends today.

It works really well. We all get along pretty well, with minimal inter/intra-family friction.

On the most recent Thanksgiving, a group of the family ran in a holiday race (Dallas Turkey Trot, with over 30,000 participating). Then we all met for Thanksgiving dinner - ham, turkey, dressing, mashed potatoes, green beans, breads, pies and ice cream. We all pretty much waddled away from the table, headed towards the TV to watch the Dallas Cowboys.

The great-grandmother of the clan gave a short, thankful prayer for all that we've been bless with in our lives.

It might not always be that way - life has its ups and downs - but today was a very good day!

My wife bought me a t-shirt that says "Life is Good" - and that's how it was today. I wish it could be like that for everyone, the world over, every day!

New Person, Same Questions - Poor Customer Service
My wife and I are working diligently to start up a new business. As part of that effort we're having to contact service companies (gas, electric, DSL, phone, ...) to get new service started. It takes a lot of time, too much time!

What has particularly started to chap my you-know-what is the practice of having a screener ask me a half dozen questions (name, account #, password, issue, ...), only to transfer me to another customer service person who asks me exactly the same information.

I surprised my wife today by giving grief to employees of two such companies. The customer service folks would say "Mr. Beene, do you mind if I ask you a few questions for security?" - or some such segway into asking the same questions again.

I stopped both of them (it happened yesterday too, and I was getting darn tired of it) and told them I did mind. I asked them why their companies were so inefficient or so uncoordinated that the information I just gave couldn't be shared within their own company?

I asked to speak with their manager so I could explain to them how unacceptable the service was. I asked them to also speak with their manager, to tell them that their customer base did not like having our time treated so poorly.

Of course, I had to give the information anyway. But I did put in my two cents. I felt better. I hope they felt worse. I'm certain that if 500,000 more customers revolt like I did, then the problem will magically disappear.

Top 100 Snippets
I have a "Top 100 Snippets" page at my web site, providing my recommendations for the programming functions/features which every programmer should know. I also provide the source code for these in the fourteen languages contained in my freeware code librarian, gbCodeLib.

In my recent effort to expand the number of languages I can program in, I've started comparing the Top 100 list with the capabilities of each language. It's already an interesting comparison because my Top 100 were written with Windows stand-alone applications. With Perl, JavaScript and HTML - for example - some of the Top 100 are not even possible.

So, I can see that I'll have to rethink what constitutes a Top 100 list. I'll also have to rethink how to make the comparison.

Surely someone has already set themselves to this task?

Turkey Trot
Thanksgiving day at the Beene's consist of a family outing - the annual Dallas, Tx, Turkey Trot race. It consists of both a 3 mile and 8 mile race. The 25,000 contestants can run/walk whichever one they want.

My wife and I take sons and daughter, and now even grandchildren to participate in the race. Costumes are allowed and lots of folks dress up as turkeys, pumpkins, and other holiday characters.

My wife and I have run this event for over 15 years, although age and bad knees have shoved us into the 3 mile event. We've had good weather and bad - so bad that in one race we finished with a sheet of ice over our front side, where falling, freezing precipitation stuck to all the race contestants.

Yep, we all moan and groan at the early start, the cold temperatures, and the distances involved - but we still look forward to it all year. It's a great tradition, and one at which we'll all laugh and share stories for the rest of our lives.

Wife, Uncensored!
I promised I'd let you in on what it's like to work with my wife. Throughout our careers we worked for different companies, coming together weeknights and weekends. We were worried that retirement (I started in Jan, Nancy in Oct) would be an issue in that we'd be spending more time together - possibly too much?

Little did we know that a scant few weeks later we'd be working side-by-side for 10+ hours a day as part of investing in a startup company and as employees of that company!

What I found was that focusing on results, not approaches, makes for the smoothest working relations between co-workers, particularly when co-workers are also spouses!

  • Language
    We don't speak the same one. She can say something - perhaps only 4-5 words - and I have to stop and think about what she meant. I over-analyze what she could have meant, and she under-clarifies what she wants. Half the time I simply have to guess what she meant, and if I ask for clarification then it's apt to be taken as a form of criticism.

  • Communication
    Actually, this works pretty well. In our marriage we're already used to talking about everything in our private lives, so discussing business matters is far easier.

  • Philosophy
    At a high level, we're in perfect sync. We picked each other because we had similar beliefs and ethical codes. As they say, though, "The devil is in the details!". In running a business there are value decisions to be made every day. Once we agree on who makes the decision it's all to easy to second-guess a decision.

  • Technique/Methodology
    She simply doesn't do a task the way I would do it, nor do I do a task the way she would want it done. We get along best if we give the other a task to do on their own - state the end result and then depend on the other to get it done. Micro-managing is a bad thing.
  • Responsiveness
    We don't respond to each other like non-spouse employees.

    Responding to questions from a non-spouse co-worker, I'd give a simple business response - basic actions taken, status of tasks in work, and expected completion of remaining tasks.

    With the wife, however, there's this little bit of defensiveness that creeps into just about every conversation. With a spouse, you tend to protect yourself from criticism even though you wouldn't blink at the criticism for a normal co-worker. More importantly, you especially want your spouse to think well of you, so there can be a tendency to hide mistakes even more than you might hide them from normal co-workers.

    The best guidance is the old saying "Don't shoot the messenger!"

Fortunately for us, my wife and I have long ago learned each other's strengths and weaknesses - in minute detail. Aspects of our spouse may still annoy us, but we're well past the point where the annoyment is more than a passing observation. We know the heart and soul that lies behind our new co-worker, and those things triumph over any differences in business approach or technique. .

No Longer Retired - For Now!
I retired. My wife retired. Plans changed. Now we're both working again, together!

Somehow we decided that investing in a business startup would be a good idea. Now we're working 12 hour days, including weekends, and discovering that everything you hear about starting your own business is true. You wake up thinking about it, you think about it all day, and you go to bed with it on your mind. There's no escape from it!

Having worked many 12+ hour days and weekends in my years at Raytheon, I can't say that a startup requires more time than my previous job. But I can say that the personal stress is much greater. It's like they say - "If it were your money, you'd be more careful!". Well, this is our money and it's almost agonizing watching it flow like water running downhill.

It took years to save it, and mere days to spend it.

The good news is that in 3-4 months we'll know if we made a wise investment, or if we'll be picking up roadside pecans for next year's family Christmas presents!

My Time - Speared, Not Spared
I seem to have a growing dissatisfaction, or perhaps frustration, with the proliferation of programming languages. This arises from the fact that I'm finding it difficult to spend the time needed to learn all of the popular languages. I'm all for the next best thing, but not it there are no clear benefits to making the change.

So I'm asking myself, "Why do I need to learn all these languages? Whose great idea was it to create so many, and why do they generate such popularity?".

This topic came up yesterday when I was researching Perl one liners. I ran into PHP, Ruby, sed, awk, and other languages which also support creating one liners. Most of the code looked similar to Perl, raising the question of why these other languages needed to be created at all - and why do I need to learn them?

Of course, I already know some of the answers - there are benefits to each language, or features which another language may not offer.

Still, it's annoying. My time is being split - which means that instead of becoming more and more expert with one tool, I'm becoming a reasonably good user of several tools.

Is that a good thing - being a jack-of-all-trades instead of an expert in one area?

Spreading our Wings?
I've mentioned before that I retired from Raytheon this year. But it's not full retirement, as I have a half dozen income-earning activities that I'm pursuing with the hope that one of them will grow into a supplemental retirement cash flow. All of these are technology related - book publishing, shareware programs, custom programming, web sites, and small business IT services.

Out of the blue, however, has come an opportunity to invest in a business - one far removed from technology. The business is event planning. This is where a company provides help in staging an event for another company. Location, food, transportation and entertainment are all part of the services involved.

My wife has experience in the business, as have our potential partners.

It could mean working salary-free hours until the business builds up a reasonable cash flow. It may also require putting in far more hours in an office environment than either my wife or I had planned.

Will we do it? Do we want to? Will it be successful? Will we get a steady flow of left-over flowers from events?

Stay tuned.

One of the hardest lessons I've ever had to learn (and keep learned) is the concept of touching something once, and only once. This refers to the idea that when you're in a business and get a document, you should take the action needed so that you never have to touch the document again.

Instead, many of us read the document and put it in queue. Later on, we re-read the documents from the queue and if it seems like taking action will take too much time then we put it back on the queue for later action.

Sometimes, we touch things daily for months, never quite committing to completing the needed action. It's an especially sad habit when the item taking up the time isn't really that important, but is really just cleanup work on a bigger task.

I'm giving the bad habit the nickname ToToMaTi (to-to-ma'-tee) - Touched Too Many Times.

I'm Guilty
I freely admit to being guilty of this practice ... especially on trivial tasks. I'll put something on my go-do list, then don't do it. But every time I update my go-do list, the task gets written down one more time. I've had some items, which might take only 20 minutes, on my list for as much as a year!

My latest ToToMaTi is a page of about 100 Perl one liners. I can't find the time to test them all in one sitting and every time I start back up, I spend at least 20 minutes reviewing how far I got the last time I worked on them. This has been going on for almost 3 weeks now, wasting valuable time which I need for other ToToMaTi's that are clogging my in basket.

Surely there's an effective way to instill better work habits. Apparently the embarrassment of inefficiency and razed schedules doesn't have the desired effect.

Sci-Fi Makes Us Better Programmers
I've always told my wife that productive programming requires that the programmer get in the 'zone' - that intense concentration mode where all of the code he has written is playing in his mind and there's nothing to interfere with the efficient manipulation of the code to get the performance/features needed.

Unfortunately many of us only get 20-30 minute intervals of uninterrupted time. After that, family and/or coworkers disrupt the train of thought, causing a restart in the countdown to the 'zone'. Even as I write this, my wife is struggling to get my attention!

One of the key problems caused by interruptions is an inability to come up with good ideas, particularly ideas outside the box. Simply writing code once you can have the basic algorithm in mind can be done with any number of distractions going on, but coming up with good ideas - now that takes some quiet time.

Or, I find it also takes some extended subconscious thinking - which brings me to science fiction. Don't laugh - but I've noticed that after reading hard science fiction stories I'm better at coming up with ideas that aren't simply linear combinations of ideas I've already had.

It's similar to the idea of getting your mind off a topic to let your subconscious work on the problem, except that reading science fiction seems to provide more guidance for the subconscious.

Anyone else noticed this?

Wanted: Spy in the Sky
I went to Frye's and bought a $24 helicopter, suitable for indoor flying only. It was very difficult to control, was very noisy and didn't have much battery life. But it did fly.

I was very disappointed because it had absolutely no potential to become what I really wanted - an information agent that I can send throughout the house on missions.

I'll admit I don't know what those missions are just yet, but if I had an agent then I'm certain the mission list would grow without bounds.

Here's my list of specifications for a flying platform for in-house use, one that is tied by wireless to my PC.

  1. Small size - somewhere between a football and a softball
  2. Extremely low noise
  3. 4 hour power charge life
  4. Proximity charge capability (i.e., contactless charging)
  5. Onboard sensors (proximity, video, sound, IR)
  6. Hovers, with gyroscopic directional stability
  7. Wireless control interface (75 meter /250 ft. range)
  8. 250 gram payload (~ 0.5 pounds)
  9. Power interface to payload (affects charge life)
  10. $100 price tag

As best I know, there's no such thing - not in Nuts & Volts magazine and not even in the military, which would kill (pun intended) for such a device.

On-Demand, Throwaway Software
Before I wrote this blog, I thought I wanted software that would generate code by voice command. After thinking it over, that's not what I want at all.

My computer goes by the name of Thor, so I thought I might issue a command like this:

    "Thor, please write a program that will remove all lines from a file, where the lines have the word 'comment' in them"

But this is a limiting question. What I should really want to say is this: :

    "Thor, remove all lines with 'comment' from the highlighted file."

Thor would then respond by writing a program that removes the comment lines, backs up the original, and then discards the on-demand code it generated.

I'm under no illusion that voice will supplant keyboarding. There are simply too many conveniences associated with the keyboard, including the simple joy of silence that comes from not having to speak to anyone - not even Thor. But there is a real need for an end-result dialog between me and Thor.

As best I know, there's no program that comes close to what I want. For that matter, I can't even think of any serious, main-line press coverage on the topic.

Why is that? Aren't there any mainstream products available for evaluation that begin to address this need? If my computer could learn to do that, I might have to rename the computer 'Genie'!

More Stupid Things We Did
It was so much fun yesterday - remembering stupid things we did as kids - that I decided to see if I could remember some more!

Steelies We called round ball bearings 'steelies'. We would set up plastic army men in a pile of sand - two armies facing each other. Then two of us would drop behind our army and start throwing steelies at the opposing army. Sometimes, we lobbed the steelies too far and would hit the opposing General!

Dodge The Arrow Alone, or with friends, we would shoot an arrow straight up into the sky. Then, we'd try to dodge the arrow when it fell.

Catch the Arrow My brother would stand away from me and shoot an arrow along side me. My job was to reach out and grab the arrow in mid-flight, as it was passing by.

Pound the Stake We worked on road crews with my dad. One of us would hold an iron stake upright with one hand, while the other would swing the 10 pound sledge hammer to drive the stake into the ground. This is one of the places where I learned the appropriate use of cuss words. We were very nice to the hammer man!

Tractor Tires As the age of 5, a tractor tire was big enough to fit in. So we'd get one, lay down in it, and have our friends roll us over and over. It was great fun until the tire would go off course and land you in a ditch full of water and mud.

Surprise & Look Out Below! On the road crews we built 12 foot tall concrete culverts - barrels we called them. We thought it was fun that when someone wasn't looking, we would push them off the edge of the barrel to fall into the dirt below. Sometimes there was a moat of water that had been built to channel the water around the barrels while we worked on them. In the winter, it was especially fun to see your brother make a splash in the moat!

Finger Smacking Good! We learned that you can let a firecracker go off in your hands without getting hurt - so long are you hold it by the least possible grip in your longest fingernails. Hold it too tightly and you had to use the fingernail clippers to smooth out the rough edges of the fingernail!

Slip Sliding Away! To keep the track flat, railroads often dug through hills, leaving slopes leading down to the tracks. In the Fall, when the tall weeds were brown and dry we would jump on a piece of cardboard and slide through the weeds. Sometimes we made it down smoothly. But all to often, there would be an unseen rock or sudden dropoff in the slope that made the ride less fun that we had planned!

Tar Babies When the workers were putting new tar on the local business roofs, we would steal gobs of hot gooey tar and chew it like gum. But Mom always caught us because it took days for our blackened tongues to revert to normal.

What They Don't Know Working on road crews in Oklahoma, with temperatures of 107F or more was not much fun. When our co-workers weren't looking we'd take the lid off the water can and plunge our hot, dirty, sweaty arms into the water to cool off. Then, somehow, we'd still be willing to drink the water throughout the day.

BB's and Dirt My sister and I concocted a special drink - water, BB's and sand. We'd stir it up so that the hard parts were 'floating', then take a drink. It made a great way to flush down the mudpies we made from Oklahoma red dirt. We'd mix the water/dirt, put it on the storm cellar door to 'bake', then have a bite.

Scab Contest As kids we had free rein to ride our bikes almost anywhere and seemed to have more wrecks than kids today. When the scabs from the bloodied knees formed, the edges would lift away as we flexed our knees. We would have contests between our friends to see who could peel off the biggest scab. Gross! That's why we have so many scarred knees!

Straight as She Goes, Scotty! In the city park was a 20 foot cliff, with a barbed wire fence only 2-3 feet from the edge, creating a narrow path that was only slightly wider than our motorcycle handlebars. We would attempt to ride the 20 yard path on the ledge. Veer slightly left and it was steel barbs in the thigh or foot. Veer slightly right and it was down the cliff - usually with the motorcycle on top. The success rate was less than 25%!

New Respect for Op Editorial Writers
Of course a blog isn't expected to win a Pulitzer Prize every day but as a blog writer I don't want to be too trivial with what I write. What I'm finding surprising is that creating a worthy opinion every day - without fail - is harder than it looks.

Once I got past the first 50 or so hot issues that have always been on my mind, deciding on meaningful topics for the blog has gotten much more difficult.

I've come to a new position of respect for the newspaper writers who do it day after day after day.

Still, if they can do it, so can I!

Morgan Freeman - Inspirational Story
I read an article this week about Morgan Freeman. It seems that until he was about 50 his career was going nowhere - minor parts and relative obscurity.

Today he commands about $20M per movie.

The point is that while my web sites get a reasonably draw of visitors each year, my fame as a programmer/technologist is like that of Morgan Freeman at age 50 - plenty of room for growth.

So I'm encouraged that the opportunity for success can be still ahead of me, but as a retired person I'm less interested in name recognition/wealth building than in figuring out how much good I can do for the world in the years ahead of me. Whereas Morgan applied his talents to reaching new levels of professional success, I'm interested in how to use my talents (if any such exist!) to have an impact on the world, not my world. And BTW, I've also read that Morgan Freeman has been extremely generous with his money, so kudos to him for his achievements and his community support.

I could simply donate my time to helping other folks in need. That would be an eminently good thing to do and I have already started doing some of that.

But I was hoping for a larger, more global impact. Perhaps every person, in the twilight of their life (ok, that's a bit melodramatic - I'm only 55), has the same thought.

That's why I so taken with Morgan Freeman's story. It's a great example that the best can be yet to come. Now, if I can just figure out what that best is, I'll know where to start working for the results I want.

The Alibi
I'm working on a new site, called the "Alibi Information Center".

The concept is simple, and is based on an idea presented by Robert J. Sawyer in his book "Hominids".

Basically, people in a parallel universe decide that their base nature is not quite civil, so they invent a way to record their activities 24-7 throughout their entire lives. Access to the recordings is through court order only.

The point is that the people tend to behave better knowing they are subject to full time scrutiny. Also, individuals feel more secure, knowing that they are safe from false accusation/convictions. And of course, criminals are easier to catch.

Legal issues, political issues, privacy issues, societal issues - you name it, the concept is fraught with issues.

The impact of having your life potentially under second-by-second scrutiny is discussed in several sci-fi books, such as "The Light of Other Days" (Arthur C. Clark, Stephen Baxter).

I'm not interested in the slippery slope of having everyone's life under the microscope, but I am interested in people placed in positions of power being under exactly that kind of scrutiny. It's open government taken to the highest degree.

Would you have the courage to be a public office holder if every single act you performed was watched 24-7? I might not, but I'd bet there are zillions of civic minded citizens who would accept, and perform well, under such scrutiny.

Of course, if the technique were available, it's use would spread. Many folks would trade their privacy for the security against false accusation or (more positively) the verification of their trustworthiness! I have no doubt that there would be volunteers to go under an Alibi system and even more people wanting to place others under such a system.

So, my site will discuss the concepts, the issues, and the specifics of how to use technology to implement an alibi system. I'm anxious to get started!

All The Eggs in One Basket
In 1996 an asteroid capable of wiping out the entire state of Texas passed closer to the Earth than the distance to the moon. By astronomical standards, that was darn close.

Now, evidence is indicating that a major asteroid collision with the Earth has happened every few thousand years.

We're due!

The point is that the human race has all its eggs in one basket - the planet Earth. If ever there was an argument for space travel, this is it.

Another planet in the solar system, asteroid belt colonies, arks on multi-generation trips to other systems - it doesn't really matter which, we just need to spread out.

The military teaches soldiers on patrol to spread out, so that a single weapon or explosion can't get everyone. We seriously need to apply that lesson to the fate of the human race.

There are already dozens of seed and DNA archives spread over the face of the world - as a restart mechanism for regional catastrophes. But what about planet-wide catastrophes?

There's a Lesson to be Learned
As you may know, one of my websites is the Pepsi Information Center. Yep - an entire web site devoted over to Pepsi fans.

So here's my dilemma. My Pepsi and VB6 sites are equally popular, each delivering roughly 0.5M pages per year. But the Pepsi site page count is only 1/3 that of the VB site.

If I were in a business I would have to argue that putting more Pepsi content online would be the smart move - more visitor volume for less effort.

But I've known this for over 5 years, so the question is why haven't I done something already to take advantage of the apparent popularity?

The sad answer is that I enjoy working on the technical side of my site more than the non-technical side.

I suspect this short story explains a lot about why productivity in the office place isn't all that it can be. People tend to work on the things they enjoy, not necessarily those things which have the biggest impact on the bottom line.

Haven't you ever heard someone say "I could do that if I wanted to!"? The trick is in getting people (like me) to want to

Patent System Reform
Here's my take on how the US patent system should work.

  1. I invent something.
  2. I submit to the Patent Reward System.
  3. I am officially designated the patent holder.
  4. I receive a reward from the US Government, determined by a board whose job it is to asses the value of the patent. Congress sets the reward values, which are based on the contribution of the reward to the US economy. Rewards can be millions of dollars, or pennies, depending on the assessment of the Patent Reward Board.
  5. Anyone in the US can use the patented idea in their products, without fee. The US Government owns the patent for purposes of collecting usage fees overseas.
  6. If the patented idea proves to be more valuable than originally predicted (bigger impact or longer lifetime) by the Patent Office (at home or abroad), the patent holder can petition for a re-evaluation of the reward.

That's it.

Unlawful vs Unethical vs Immoral
I often read various letters to editors where the author discusses their opinion of why certain actions should be taken or should be disallowed. Or they discuss the rights they think individuals have.

There seems to be a lot of confusion how to discuss concepts behavior and personal privileges.

So in a series of blogs - this one, then others later on, but not right away - I plan to discuss the topics.

Here are the three basic categories into which behavior falls, more or less by the source of authority

  1. Unlawful
    Against the laws of a government
  2. Unethical
    Against a behavioral code
  3. Immoral
    Against the behavioral code of a diety (God)

From these definitions, you might notice that unethical is not necessarily immoral, and neither are necessarily unlawful.

The concept of Rights is a favorite topic of mine. I've heard folks say "I have a right to ..." where you can fill in the blank with an answer of your own.

Personally, I don't believe an individual is born with any rights at all. I do have a strong belief in rights which I think all humans should be bestowed, but rights are privileges conferred in life, not a property a person is born with.

Not only do folks disagree on what rights individuals should have, they also disagree on the source of these rights. Here are the four categories of rights as I see them.

  1. Rights #0 Privileges I was born with, not conferred on me by anyone, somehow associated with simply being alive - no source implied
  2. Rights #1 Privileges I want
  3. Rights #2 Privileges I believe a diety has given to me
  4. Rights #3 Privileges lawfully assigned to me by the laws of a government

I really don't believe there is a Right #0. I think it's really a confusion of Rights #1 and #2, but the definition expresses the need people feel for ensuring the security/absoluteness of their rights.

So why these weighty thoughts in my blog? It opens the door to making arguments on actions I think people should take - which I will discuss in future blogs.

No Virtual Memory - None
Over the last several years I've kept adding RAM to my PCs. I have about 3GB now. I kept reading about how much hard drive space to allocate for virtual memory. Eventually I decided that none was a good answer, so I set my virtual memory to zero.

So far I've not seen any problems at all.

Facts I Didn't Know
Did you know that your intestines are lined with muscles which move the food through them, slowly, just as the muscles on a snake do the same thing?

I thought gravity, stomach gas pressure, or low pressure at the outlet were responsible for the food moving from the stomach to the exit point.

I was wrong. The intestines actually wiggle like a snake, swallowing its prey and using its perimeter muscles to move the meal towards the other end.

If that's so, why can't I feel the movement, in the same way a pregnant woman feels the baby move and kick? And why isn't there a YouTube video of it?

I don't know.

It Doesn't Take Much to Make Me Happy
As I noted recently, I'm finishing updates to my Perl website, so I can get to work on my .NET websites. So much to learn, so little time.

But I found myself playing with some code to open files. It was very simple code, but I just liked that way it worked - simplicity belying the power it contains. Perl is like that - it looks like a foreign language or just typewriter gibberish. But if you understand Perl it can be fascinating and deceptively powerful.

I spent over an hour playing with the code - changing it around, seeing what happened if I purposely made a mistake, just generally checking out the limits of what it could do. All the while I had more "serious" work that needed doing.

The point is not to tout Perl, but to note how we as programmers can get carried away with the awesomeness of a tool or a solution - to the detriment of the reason we have the tools in the first place.

The real culprit is that programming is fun (don't laugh), and when you mix fun and work you may get a better product but it's much harder to keep a lid on project schedules and costs.

I don't know that I want there to be a solution. I like enjoying my work.

That Damned Computer! Misconception Revealed
My mom would always say "You spend too much time on that damned computer!". This was, of course, when I was 40 years old and had my own wife to harangue me. Yes, my Mom used the d-word. She invented it long before programmers adopted it for there use.

But I knew something she didn't, so I never took offense. I just smiled.

Did anyone tell Mark Twain that "You're using that damned pencil too much?". Or did anyone ever tell Socrates that "You think too damn much!"? And did Da Vinci ever hear "You're using that damned brush too much!"?

Mom never understood that the computer was just a tool - a very versatile one that let's you do more things than any tool she every used in her life. I can be a writer (Twain), I can put my thoughts down in my blog (Socrates), and I can create art or design a concept (Da Vinci) - all with a single tool.

Despite all that, I'll still be my mom's little boy, whom she nicknamed Bimbo as a child. It's one more case of my mother inventing a word before other people took it over for their own.

Hermit the Frog
Despite being a programmer for over 20 years, I can't say that I've ever felt like I'm part of a big "software/programmer community". It's just the opposite - I feel more like a hermit.

I'm a solo programmer. I work by myself. My clients have typically been small companies who have no programmer of their own. I don't correspond with many programmers. I can't say that I've actually ever talked with another programmer in any great detail about programming. I've never worked on a project with a team of other programmers. I tend to solve my problems myself, with either brute force, brain power or by drawing on the infinite wisdom of the Internet. I don't have a buddy programmer to whom I turn, nor one that turns to me, for help. I'm alone, but I've never thought of myself as lonely.

Yep, that pretty much sounds like a hermit.

In my defense, I will say that my wife and I go out almost every Friday/Saturday night - dancing, movies, dinner. We call the two days Date Night / Party Night.

Still, I need to get out more, and make a few (non-electronic) friends, in my own community.

I often wonder if there are more folks like me or more folks like the opposite of me? Is there an AA, 12-step kind of place for programmers like me? Or is that what a wife is for?

My Loyalties Lie with the Human Race
When I married my wife we were talking about spousal support and I told her that right or wrong, I'd love her, but I'd support right.

When one of my grandsons or children have gotten in trouble with authority, I've tried to mitigate, but not eliminate, the punishment they received. My support has gone to the "right" thing, not to familial loyalties.

Jumping up a level, some friends and I discussed the question of what are the most important needs facing the world. Among more earthly things, I noted that space colonization outside the Sol system was easily in the Top 10 list. The thought being that one dinosaur asteroid and the whole race is toast. They looked at me like I was weird.

Then today I was reading "Shadow Puppets" (from the Ender series) and saw the sentence "I'm loyal to the human race.". That phrase resonated with me. It's consistent with my desire to link my loyalties with the highest road.

I can't yet say what it means in terms of actions I need to take, but you can bet that you'll hear it again in my blogs. No, I won't turn green, or freegan, or vote Democratic - but it seems like there's something that such a loyalty demands.

The Downside of Competition for Internet Users
I'm in the middle of re-creating my Perl web site and it strikes me that there are some excellent sites already out there - very excellent sites. So, what is the point of creating another one? That same question applies to my VB, VB.NET, C#, C++, 3D, HTML, JavaScript, VML, Sci-Fi, Retirement, Freeware, Shareware, Software Reviews, and Pepsi sites (ok, so I have a lot of sites).

I had to think about that question for days to come up with a good answer.

... Tada! .. and the answer is to provide users with a very wide range of needed materials on a topic and especially to direct them elsewhere if the other sites have better content on a topic. It's the redirection that is not offered by most of the bigger, popular sites.

Bigger sites on the web are typically commercial in nature, and need visitor traffic to justify their existence. Such sites tend to focus on what they have to offer a visitor - rather than offering visitors a way to find what they need, particularly when that need may be better satisfied at another site. It's unrealistic to expect commercial sites to link to other sites at the same level to which they link within the site.

That's the downside of competition for Internet users.

Of course, I'm interested in drawing traffic as well, but since I'm not dependent on my site for income I can afford to be more altruistic about having a goal that puts visitor needs first.

So when I'm done you'll see original material, but most of all you should see my recommendation on the topics you need to know, with links to my site where I believe the information is valuable, as well as links to sites which do a better job than mine! <

Stupid Things We Did
As kids growing up in rural Oklahoma, we had great fun. But from the descriptions below of the things we did to have fun, you have to wonder if fun really describes what we did!

Darts We threw darts at water balloons - while one of us sat beneath the balloon! Beware low darts!

Aluminum Foil We chewed aluminum foil - kind of like a poor man's gum. You had to know when to quit, however, because while the first few chews simply crushed the foil, the last compressive chews pretty much cut your gums to shreds.

Nail Biting We would bite down (fairly hard) on the white spot at the base of our pinkie fingernails for 1-2 minutes. Then we would immediately lock the two pinkies together and pull hard! You have to feel the pain to understand how really stupid it is.

Needles in the Arm We put a needle in the crook of our arm and very slowly closed our arm. If you go slowly enough, the skin will simply fold around the needle. If you close your arm too fast or tense up your arm too much, the needle will burst through your skin.

Firecracker Wars We put firecrackers into the core of dried corn cobs - a home made grenade - and threw them at one another. The objective was to light the firecracker and throw it at just the right time to explode in mid air. We were sometimes late with the throw!

Gourd Fights We had gourd fights. The gourds were 4" in diameter and grew wild in our area. If you hit a tree, they smashed impressively into pieces. Great fun! But when they hit your head, about all you could do was cry. Rotten persimmons were a great substitute - they didn't hurt as much but when you got hit in the mouth with one it would make you puke.

Knife Throwing We played a "chicken" knife game, where you threw the knife between your opponents outstretched legs. He has to move one foot to the position of the throw. You take turns throwing, gradually getting your feet closer together. Whoever chickens out by stepping away from the knife loses the game.

We also played the chicken knife game with a machete, thrown like a spear. After I took out a friend's new shoes, we weren't allowed to play machete chicken any more.

BB Guns My sister would stick a BB rifle into my brother's side and pull the trigger. Only she thought that was fun. We sometimes shot out the little glass face plate in natural gas meters. I don't think one ever exploded, but I do know my hearing isn't what it used to be!

Rock Fights We even had street rock fights (our streets were not paved). The idea was to launch as many rocks into the air over your opponent's heads as possible. They did the same thing. But when you looked up to throw your rocks, you often got one of their rocks on your head. You are supposed to dodge the rocks, but it seldom worked out in practice the way the game plan was written!

Fire Daredevils My brother and I would place a sheet of newspaper over a fire in the trash barrel. The flames would spread out under the sheet and would burn through the entire sheet all at once, with flames leaping high into the air. We would use the flames to play chicken by both leaning our heads over the sheet. The first person to move away was chicken. The last person to move had to explain to Mom why their eyebrows were gone.

Best Quarter Ever Spent
Growing up, my family was very poor. My dad worked as a laborer on a road construction crew and barely made enough money to cover food and clothing costs for our family of five (Mom, Dad, brother, sister, and me).

We bought everything on sale - the cheapest brands and the poorest cuts of meat. Margarine (not butter) and ice milk (not ice cream) were on our shopping list. Sometimes our meal consisted of simply cornbread and milk (although, we could have seconds <>). Once I had a friend whose refrigerator actually soft drinks in it - that he could have anytime he wanted. I thought his family was rich.

We purchased clothes just twice a year - once for the start of school and once for winter wear. When we got home from school we took off our good clothes and put on our older clothes to play in. Hand-me-downs were the order of things.

We also lived in a trailer house from 3rd grade on and I shared a 6'x8' room with my brother until he left home. Our room had a bed and no furniture. There was walking room for one person only, and that on only 2 sides of the bed.

Still, I remember childhood as a great time. The point of this poor boy talk is to set the stage for a cool dad story ... so read on.

One day I'm in a store and spot a package of gum torn open by someone. I reached in and started to put a piece of the gum in my mouth, when a hand stopped me. My dad just happened to see me and brought my criminal career to a halt.

Like my fire story (yesterday's blog), I feared death by spanking but Dad simply reached into his pocket and handed me a quarter, saying "We don't have to steal!" and then walked off.

That was, quite literally, my last attempt at theft, age 7.

Beene Brigade
On a 4th of July family trip to Arkansas my cousin and I were setting off firecrackers in a field near my grandfather's house in the country. We inadvertently set the field on fire, beyond our ability to put out.

We went yelling to family (that would be about 12 aunts and uncles, plus cousins) for help. We had to form a fire brigade, literally using a nearby water pump to fill buckets from a nearby well and passing the buckets down the line to the uncles who were throwing it on the water. Water, foot stomping, and wet towels did the trick - the Beene Brigade limited the result to only a half acre of scorched land!

Fearing imminent death by spanking, I must have looked frightened. My dad, from whom I feared the punishment, saw me and told me not to worry, that he would handle my grandfather's wrath for me.

Like yesterday, the only point in this is to share a story about my dad. Like yesterday's story about my Mom, things don't always go the way you expect.

It Can Happen
Some years ago my mother and I went fishing on Lake Texoma (very big lake in North Texas). I let her use my new rod and reel. Bottom line is that she laid it down with the lure in the water and a fish pulled it into the water.

Bye bye new tackle! What could I say to my Mom, except darn!

I gave her another rod and reel (not my best one this time ), and after a half hour or so of fishing she got something on her line. It was my fishing rod. She had gotten her lure tangled up in the fishing line, and the culprit fish was still on it!

There's no real point to this story. It's just a moment with my Mom I wanted to share.

Software, Fettered
Years ago, when I was learning to play tennis my kids bought me a metal basket with handles to store old balls. I'd take the basket of balls to the court, reaching down to pick out balls from the basket to use in practicing my serve.

One day this 85 year old tennis player told me "Youngster, if you'd just turn those handles down, they'd make a stand - raising the basket of balls to waist high. Then you wouldn't have to bend over to pick them up!"

Duh! As Forest Gump said, "Stupid is as stupid does!" I felt really, really, stupid! I never thought to look past the primary feature of the tool, to find out if it did more than just hold balls for me.

Unfortunately my approach to using software is pretty much the same. I find a few features I really like and use them - without really understanding whether the software has other, less obvious capabilities which I would really like, were I just willing to take the time to learn them.

Several analogies come to mind, but taking the "low hanging fruit" seems to be the pattern for me and a lot of folks I know. There are too many things which demand our attention and too little time to consider any of them in detail.

My Network Places
Continuing the saga of FTP utilities ...

I recently commented that SendTo FTP, my client of choice, has a few limitations which I use FileZilla to overcome when needed. It occurred to me that I suffer from "expert syndrome". That's where the definition of an expert is someone who is from more than 50 miles away, referring to the idea that someone from another company is somehow more 'expert', and deserves more credibility than someone working right next to you.

I've always skipped over the "My Network Places" links in Windows Explorer, not thinking that it had anything of interest to me. But after thinking about what features I most needed from FileZilla it occurred to me that I went looking for a tool (FileZilla) when I had the answer underfoot.

Now, I've set up a shortcut in My Network Places, pointing to my web server. It opens up and allows me to transfer files, delete files, and set permissions. No separate FTP client to install or learn to use.

I read a lot about software, including Windows. Sg how did that simple feature escape me and what other features are right waiting to be discovered, just like the girl next door?

Automatic Folder Synchronization
In yesterday's blog I sang the praises of SendTo FTP, a very simple, very convenient and free context menu FTP client.

I feel obligated to point out that there is a different type of tool that might be even easier - folder synchronizers.

With folder synchronizers you basically create a set of folders on your PC that matches the structure you want to have on your web server. The folder synchronizer operates in the background of your PC, watching designated folders for changes to files. When files are changed on your PC the folder synchronizer automatically sends the changed files to your server. Realtime updates!

The problem with this approach for me is that I use my PC folder structure to contain files I don't want to send to the web server. I'd have to keep separate folders for the local-only files. It's a good idea but it seems easier to manually use the right mouse SendTo to send selected files to my server.

The downside to my approach is that I don't really have an exact match of the files on my server. It hasn't been a problem over the years, but on a commercial site perhaps that might be a more significant issue, particularly where a server failure results in a loss of content or where a history of content might be needed for litigation reasons.

All that said, I plan to stick with SendTo FTP.

SendTo FTP
I've already talked about the freeware program SendTo FTP, but I'm going to do it again because I really, really like it. Except for my browser and text editor, I use SendTo FTP more than any other application. It's one of my most recommended tools for web site maintainers.

Once installed, SendTo FTP creates a context menu in Windows Explorer. You just right-click on Send To > SendTo FTP and then press OK to send the file(s) to your server. Other than the limit of sending 32 files at a time I've never spoken a single bad word about the program. It works, it's simple, it's useful and it's free!

That's it. Just use it over and over again to send files from your PC to your web server. There's no calling up a big FTP client and just about zero learning curve. As much as I like FileZilla, I like SendTo FTP even better. If SentTo FTP somehow allowed deletion of files on the server and allowed a chmod feature, it would provide 95% of my FTP needs. It already provides 90% of my needs.

I recommend you check it out. The link above is for the file download, in zip format.

Unfortunately the last update was in 2003 by Peili Chen and the home page is no longer available. Where is Peili and is he taking requests? Or kudos?

Magazine Writers Do Programmers a Disservice
If you haven't figured it out, some of my blogs cover the most recent topic, or language, I'm working with. This week, it was Perl but today it's turned into a diatribe against technical magazine writers and the disservice they do readers.

I started using Perl well over ten years ago. But based on the number of magazine articles I saw covering new server scripting tools, I began to think that while Perl seemed like a great language, that it was beginning to lose out in popularity. The magazine articles never spoke of Perl, just of the up and coming challengers.

Then I ran across an article, Perl is dead, Long live Perl which notes the number of Perl users is actually on the rise (700% growth in the last 5 years).

If don't know how technical magazines have gone from representing a user base to representing the "next new thing". I can see how writers get bored and want to talk about something new. I can also see how readers like to think they're in tune with the latest advances in technology.

At the end of the day it amounts to the magazines creating technology movement rather than reporting on it. And that's bad.

What I don't see is why the editors allow the unbalanced reporting or why the readers don't demand more content on tools they use everyday.

Perl's Cool Tricks
I had to review (maybe relearn is a better word) Perl recently as part of updating my Perl website - more info, new tutorials, more code. Like most folks who don't use it regularly I struggled with remembering all of the little nuances.

But when I got to writing Perl one liners I finally realized how useful/powerful those nuances can be. In particular, Perl puts the results of most operations into default variables, rather than requiring the programmer to manually assign it. For example, Perl puts a line read from a file into the $_ variable, then dozens of functions operate on that variable by default. Then, there's the huge use of regular expressions by many of Perl's functions. Books have been written to cover that topic!

These next two one-liner scripts not only point out how little code a programmer has to write to get work done, but also why Perl is known for its cryptic visual look.

     perl -lane "$c += scalar(@F); END{print$c}" input.txt # counts word
     perl -pie "s/this/that/g" input.txt  # replaces 'this' with 'that'

Why don't other languages use the same trick?

I can't wait to get through with my Perl web site rewrite so I can check out PHP to find out what novelty it holds.

One of my favorite 3D topics is stereograms - those weird looking pictures that hide a 3D image in them, provided you're part of the 90% of the population that can adjust your eyeballs to see the images.

It took me a whole year to see one, and when the hidden object popped into view I was astounded. One second there was nothing and the next second I was looking at a 3D image of a B52 bomber. My wife can't (or won't - I'm not sure which) see them, as many folks seem unable to do.

I even have a website about them, including some freeware software so you can make your own. I have some software still in work but just can't seem to find the time to complete it. My site also points out other existing software that can create the images and web sites that have online images to view.

Did you know that there are also stereogram movies? My gbSIRTS software creates them, as do a few other packages. You should check out the available movies on the web (there aren't many), but don't be surprised when they seem of poor quality, because they are. There's no software available that can create a high quality, high resolution image.

Despite all the limitations, I still get a huge kick out of crossing my eyes and have a 3D image pop into view. As a programmer, I'm also having a blast trying to figure out how to improve the quality, create animation, and improve the ability of non-believers to see the images.

It seems to be a basically a dead-end street, technology wise. A one-shot wonder technology whose time came and went (yes I know there are still a few companies making money with their images).

So why am I still so interested in it? Perhaps I simply can't let go until my wife sees them!

Nathan and Daniel
Now, for a totally non-technical blog.

At 56, I'm a grandfather twice over. It is way cool!

Nathan is 8 (mother Holly). Daniel is 1 (mother Amy). Great grandsons, responsible mothers. Art Linkletter had it right - it doesn't get any better than kids, especially grandkids.

Have you ever been fishing? You toss in your hook, something bites, and you yank it in. You're never sure what you're going to get.

Grandfathering is a bit like that. The daughters were the 'bait' and now we've reeled in a couple of fishes - two grandsons who turned out to be the best there are (ok, fine - I'm prejudiced).

It makes me wonder what my other three kids are going to do to compete with the already Barnum & Baily Center Ring Act.

I'll bet they come up with something!

What's Left to Talk About?
After having given my opinion in yesterday's blog on just about every social topic that counts (sorry if I left your hot topic off the list), what can I talk about today?

I know, how about programming or computer topics!?

Choice of Language I like the idea of the right tool for the right job, but most language-specific advocates spout emotion, not logic. Even more prevalent is the approach of "distinctions without differences", where a language's approach is touted as better when it's only different. The guiding philosophy is that it's the "poor carpenter that blames his tool".

Microsoft, the Company Great company, plays hardball, not the center of innovation.

Microsoft, the Software Excellent software, but not the best. But, the software is more than adequate for the job people use it for.

Freeware Way, way under publicized because there's no money in it .

Games They are a waste of time, but it's the players' time to waster. I do appreciate all the game players for the role they've played in forcing performance improvements in the PC.

Books The best way to learn, bar none.

Online Training The second best way to learn.

Classes Only useful if you can't learn by Books and Online Training.

3D Graphics Not necessary except in a few narrow applications. Still, it's one of my favorite topics simply because it's technically challenging and lots of fun.

Speech Recognition Still not good enough, and still a technology looking for an application.

Standard Keyboards They hurt your hands and slow you down. It's a shame that ergonomic keyboards weren't invented first because now people have the difficult task of breaking their bad habit. Worse yet, most don't know that they need to change their keyboard.

Monitors CRTs would rule, except that size matters. 24"+ LCDs are so much more useful.

Electronics Stores CompUSA is out. Best Buy is for non-geeks. Frye's is only good if you are smart enough not to need technical help. Circuit City is still searching for a fan base. Wal-Mart and SAMS are a great place to get a good buy, especially at their web site.

Top of the Line PCs If you're not a Gamer, don't bother - really. Spend your money on faster DSL. The roadblock to following this advice is envy. How can a grown adult let a 14 year old kid have a better PC?

DSL Like houses, buy as much as you can afford. There's no such thing as fast enough or too fast. But the truth is, that most folks wouldn't recognize 1.0M bps if they saw it.

Geeks Why does every family only have one? I have only limited hope for the new generation.

Non-Geeks They are so hard to understand. When they use their own, individualized terminology it makes me want to pull out my hair. I especially hate the part where they call two different things by the same name. Then I really hate the part where they tell me I'm supposed to know what they meant rather than go by what they say!

DIY I did for years. Now I don't.

Owning a Website It's like the saying about an oilwell - "If you don't have one, then get one!".

Having a Blog There's no better way to figure out what you think, than having to say in coherently in front of a billion people.

TIVO (any DVR) It's the single most used appliance in my entire household. I use it, my wife uses it, my grandson uses it. We have three in the house. The amount of realtime TV we watch is way under 5% of our total TV time. It should be the very next electronic appliance that you get if you don't already have one. Be sure to get the kind that let's you watch live TV while you record.

Laptops In business, a necessity. In private life, you give up too much to justify having one as your primary machine. They cost too much, the monitors are grossly too small, and the keyboards are the worst productivity drain you can imagine.

Text Messaging Very useful when used asynchronously. But if you're doing it synchronously (watching the screen as your counterpart types in a message, then it is an enormous time waster (unless you're memory is poor and you need the grocery list your wife sent you).

This can't possibly be the Top 50 list of programming/computer topics, can it? I'll think more on it and get back with you.

Opinions on Just About Everything
Like most humans I'm a complex person. Why? Because my opinions on hot topics aren't necessarily consistent. Sometimes I want more personal rights, sometimes I want less.

Putting my opinions on a web page is a sure way to invite criticism so please, be kind in your responses.

All that said, here is my take on some 30+ issues.

Everyone should have one and be allowed to carry one.

Personal ID Embedded Chips
Everyone should be required to have one.

Birth Control
Birth control should be mandatory. Permits should be required to have a baby. Poor doesn't equal automatic rejection.

It's ok to seal off the Texas border from Mexico until Mexico fixes its own problems.

Copyrights and Patents
Both should be abolished in favor of a national reward system.

Legal Age - Sex, Voting, Alcohol, Military
There's nothing magic about age 18 or 21. Our kids will develop as slowly or as fast as we allow/teach them.

It's not profiling if you fit the description of the villain.

Racial Differences, Differences Between Men and Women
There probably are some (pros and cons), but we don't want there to be any.

Women Solders
Create a valid qualifying test to match the job description and it's fine with me.

Limited Terms for Elected Officials
Seven years. That's it, and then the politician must leave to never return.

Legislative Vote Recording
Do it. It's a no-brainer.

Capital Punishment
It's a necessary evil, best used sparingly. There really are bad people whom society should put to death.

Religion would be a bigger boon to mankind if it weren't for the failures of the practitioners.

The real issue is when does life start. Abortion after one cell division isn't the same as after 6 months of growth.

Slippery Slope
It's ok to make a decision that gets uncomfortably close to a moral line. It's what we humans can do well. We don't automatically slide down that slippery slope.

Distribution of Wealth
Perpetual re-distribution of wealth to those who aren't earning it is a bad idea. It's far better to 'Teach him how to fish ...'.

It's ok to eat them. Cruelty to animals is unnecessary and speaks to the psychology of the person doing the harm, but cruelty to animals is way down on the scale from cruelty to humans.

France, Australia, Great Britain
We like them all, if for no other reason than they have cool accents.

Rich People
God bless them! Quite a few were once as poor as dirt and it's a testimonial to the American way of life that everyone has a chance to succeed - whether by luck or hard doesn't matter - the point is that you have the opportunity!

We're undertaxed at the state/local level, overtaxed at the Federal level. Point-of-use taxes are the best kind because they influence behavior.

Free Medical Care
"Free" always means taxpayer funded, but we can afford it, provided the list of free services represents an 80% solution - just the solutions needed by 80% of the people seeking help, not the extreme solutions which cost too much for too few results. The theme should be 'comfortable while we live' rather than 'live as long as we can'.

I'm for it. A sane person really can make a decision to die on their terms.

Insanity Defense
There shouldn't be one. The full sentence should include curative treatment followed by the penalty for the crime.

Free Food
"Free" always means taxpayer funded, but we can afford it, and should have the will to provide 2000 calories a day (part of a nutritionally balanced selection) for anyone that asks. Most won't ask and we can afford those that do. I'm willing to pay my share of taxes for it.

Judicial Lawmaking
Yes, some judges do it. But the greater problem is that Congress and law-makers at all levels are at fault for making laws so ambiguous that judges have to regularly interpret them.

Bad People vs Good People
There are huge numbers of good people, and far, far fewer bad people. The problem is that the bad people are too loud. Good people should speak louder.

Fossil Fuel Alternative
It's way over the borderline stupid that the US has no 'Manhatten Project' to eliminate the use of fossil fuels. Call it Manhatten2 and do it yesterday!

Fresh Water - Desalination
Not far behind is high volume desalination of water for agricultural needs. Water really is the next oil. This has to be Manhatten3 and start it now!

The Alibi System
The alibi system should be mandatory for top level government employees and convicted felons.

The Future
It's going to be difficult - but the future is bright. "Evil hates the light of day!" is the guiding philosophy. The keys are individual education and access to global communication - plus the passing of the older generations. In programmer terms, the equivalent philosophy is that "Given enough eyeballs, all bugs are shallow."

I call myself a Libertarian wannabe and generally vote Republican. Is that consistent with my opinions?

Programming Language Comparison
As part of expanding the number of programming languages I can use I am creating a language comparison chart. The goal is to get a clear understanding of how various languages are similar and how they are different.

I've been fascinated with the constant online bickering about which language is the "best". Since I've been able to do almost anything I want with just a couple of languages, I've must admit that I'm somewhat neutral on the idea that any one language is somehow better than another - perhaps better suited to a specific task, yes, but that's about it.

So, my language comparison page is not available yet (there's a place holder page there right now). I'm still trying to decide on a format that will make the language differences obvious - in a meaningful way.

If nothing else, I'd like to get an opinion on why other programmers have such strong opinions on the choice of a language.

How Many Programming Languages Are Enough?
I read an interview of a man who stated that he was very smart and that he could program in 14 languages. It got me to thinking about why he needed 14 languages (not to mention if knowing 14 languages had anything to do with being smart). I'd guess that he programmed in a few languages to start with, then as newer languages developed he learned them in order to use their newer features.

As you've heard me say in my own blogs, I'm in the process of picking up the .NET languages (VB.NET, C#, and Visual C++), then I'm planning on adding a few more after that. Aside from what I already use (VB6, Fortran, Perl, Java, HTML, JavaScript, VML, and VRML) the others on my hit list include (PHP, ASP, Python, C, Ruby, AJAX, DirectX, OpenGL, Silverlight, Flash, Pascal, and Lua).

So I guess 14 doesn't seem like all that many after all.

In my case, I just happen to enjoy the learning exercise. I don't have any overwhelming personal or business reason driving me - just my personal enjoyment of learning.

It seems like programming languages are going the opposite direction of the spoken language. There are several thousands of spoken languages still in existence in the world, but globalization is reducing that count by over 200 per year - whereas the number of programming languages is on the rise.

Where is the end? When will the number of programming languages actively being used begin to drop? As in the business world, will there be some kind of consolidation of the major players in the future (such as the way that Microsoft has used CRL with its .NET languages)?

Better is the Enemy of Good Enough - 'Thank You!' to the Naysayers!
From my earlier blogs you know that I've espoused the "Better is the Enemy of Good Enough" philosophy, with the bar for Good Enough set reasonably high.

Today I'd like to publicly thank those people of history who ignored my philosophy and instead pursued the philosophy of George Bernard Shaw - "All progress depends upon the unreasonable man."

I don't know for sure but I'd guess that the majority of world-changing inventions have come from unreasonable people - those folks who have ignored the catcalls of "It won't work", "What a stupid idea!", "You're wasting your time!", "Don't you have something better to do?", "What good will that do?" and the like. These folks set the bar unreasonably high!

It's a good thing that a great invention can be heard around the world, that only a relatively few dedicated people have to unreasonably pursue an idea so that the rest of us can reap the benefits of their sacrifices - and can pursue the easier philosophy of "Better is the Enemy of Good Enough".

Better is the Enemy of Good Enough - Revisited
John (name unchanged, to punish the innocent) wrote to me, commenting that my "Better is the Enemy of Good Enough" philosophy is the gateway to mediocrity - that continual striving to better yourself might be a preferred philosophy.

He raises a good point.

The answer to the apparent conflicting philosophies is in how high we set the bar for Good Enough.

My personal take on Good Enough is exemplified by the asymptotic approach of an exponential curve to it's limiting value. I'm all for setting the bar at the 99% approach to perfection, but not at all interested in expending the less productive effort required to get to the 99.9% perfection. Better = 99.9% Good Enough = 99%. Pragmatism, not a search for perfection, rules my roost.

Good Enough then becomes a bit too vague to be a universally "actionable" statement because it involves interpretation against personal goals which vary from person to person. However, setting the bar at 50% would universally be recognized as a definition of mediocrity.

I'm for achieving a balance between striving at the expense of enjoyment versus enjoyment of the results we strived to achieved, particularly where the difference between levels of results can't be seen without a microscope.

A Good Theory, Difficult in Practice!
Here's a good example of the difficulty in moving from theory to practice.

Question: How does an unarmed civilian population break free from a small army of armed militia?

Answer: All civilians rush them at once, overwhelming their firepower with numbers.

It's actually a very good answer. A.E. Van Vogt wrote about this concept in his science fiction books on the Null-A philosophy.

The difficulty is in the details. For example, when you line up to charge the bad guys, who gets the honor of being at the front of the line? And do you want those that line up at the back of the line to be the ones to enjoy the fruits of victory?

Note: This could just as easily be a story about tyranny in the office place, with the local government, or even in a family setting.

What to Do with Myself?
Today, I present a simple statement of my dilemma as a retired person.

As a retiree, age 56, I have something like 20 years left - to live or in which to learn.

So, the question is what to do with the time.

The way I see it, or at least the way I think about life, my basic options are:

  1. 1. Donate time to helping others - giving in return for what I got
  2. 2. Practice hedonism (i.e., "the pursuit of pleasure")
  3. 3. Learn all I can about everything (my personal take on hedonism)
  4. 4. Help all of mankind by inventing techniques for increased crop yields, cheap desalinization of sea water, cheap non-wood building materials, weather control, energy generation and storage, asteroid belt mining or space colonization
  5. 5. Keep my wife happy.

Perhaps the order of choices is apparent to all of the other married retirees out there?

Distinction Without Difference
I watched a video by Eric Gunnerson, C# Program Manager at Microsoft, on why there are so many programming languages. His answer was that each language is better at solving one type of problem than other languages. It was a reasonable answer - almost.

As I've said before, my daddy told me that "It's a poor carpenter who blames his tool!". I do believe in using the right tool for the job, but with literally thousands of programming languages littering the landscape I have to think that the software carpenters of the world need to rethink their search for the holy grail of programming languages.

I sometimes think of the time spent learning new languages, converting old software to the new language, code lost that couldn't be converted, jobs turned upside down by the adoption of new languages, books written/re-written/discarded, and on and on and on. It's hard to think of all that time spent and lost as a good thing. It's hard to say that we've achieved a net economic gain with the proliferation of languages that has come to pass.

The myriad of languages brings to mind the expression "distinction without difference", where despite the claims of the latest language development team, it seems to me that the new languages are just different, and that's about all. They accomplish the same thing, only "better". Before you know it, Eric Gunnerson's idea of the right tool for the task will devolve into an entire language for every task.

Perhaps it's too much to ask that software be like the wheel. Now there's a template for design. Someone designed the wheel (a circle) just once, and every wheel since then has had exactly the same design - a circle.

Or perhaps it's just too soon to think of the industry settling down into a very few good languages. With barely 50 years under our programming belts, perhaps the consolidation is yet to come?

Linux, Vista, and XP
I have the same dilemma with operations systems that I have with languages. Professionally I want to learn all that I can, but I simply don't have the time to spend to become an expert on all of them.

In an earlier blog I decided that I would continue to learn and use multiple languages, forcing myself to rotate between languages for each new project or application that I write.

With operating systems, however, the answer is going to be different. My plan is to stick with Windows XP. The reason is simply one of economics. My customers use XP and are not planning to switch to Vista or Linux any time soon.

Bottom line is that there's nothing that Vista offers that requires my customers to change. Worse, it costs a lot of money to make the change so my customers will delay it as long as possible.

My customers are entrenched users of Windows applications. There's no overwhelming economic incentive for converting from Windows applications to Linux.

My Plan
I listen to my customers. Where they go, I follow. Of course, I'll play with the alternatives, but on a very low-priority basis until I see customer interest driving the need to change.

How boring of me.

New Tricks for an Old Dog
As you know, my birthday was two days ago. Today, you get to hear about two really great inventions - presents I got for my birthday.

Not only are they great ideas, they are so simple that I can't believe they weren't invented when I was young. I can't believe I lived my whole life (well, 56 years) without them!

All Edge Pan
All my life I fought for the corner brownie - the one with the two edges. That's because the corners taste the best. And all my life I ran into people who wanted the corners themselves. At only 4 corner pieces per pan, there were never enough.

Enter the All Edge Pan.

Instead of a square pan, the pan is formed in a serpentine pattern, where the batter forms a 2" wide strip of brownie which is almost 24" long. Every single brownie has at least 2 edges, plus there are about 12 corner brownies where the serpentine pattern changes direction. It's an edge lovers dream!

Thank you Amy (my step-daughter) for the great present!

Cola Cooler
Pepsi is my drink of choice. But if it's not cold, then I'll drink water. I just don't like warm soda pop. Putting ice in a drink isn't a good solution because the warm soda melts the ice, diluting the flavor.

Enter the Cola Cooler.

My wife bought me this appliance which cools a room temperature soda down to refrigerator temperatures in only 90 seconds. Basically you add ice and water to the appliance. It mixes the ice and water then pours the cold water over the can of soda pop, which it also rotates under the water spout. Simple, and surprisingly very effective.

It's not as cold as putting the can in the freezer, but it also won't result in having exploded cans of Pepsi in the freezer. Believe me, I know about exploded cans of Pepsi! It results in a cold drink from the can, or a drink cold enough that a glass of ice doesn't dilute the flavor.

The Case Against Multiple Languages
If you've been reading my blogs and website then you'll know that I'm busy adding languages to my skill set. VC++, C# and VB.NET will be the latest additions.

I've also been a big Perl fan for years, using it for CGI scripts on the Unix servers that host my websites.

Which brings me to the problem of the day - maintaining my programming skills and staying current with multiple languages.

Perl is a great example of how this problem already affects me. Perl is not a particularly difficult language, although it has many peculiar syntax structures. But not rocket science.

Lately I've been working on a new website and I need to write 3 or 4 Perl scripts. My problem is that it's been almost a year since I last used Perl and now, instead of spending an hour writing the script I'll have to spend hours - refreshing my memory on Perl, CGI, and HTML forms before I can even start on the new scripts.

Imagine what it's going to be like once I add the three new languages and start switching between them.

As I see it, there are only a few solutions:

  1. Stick with one language
  2. Accept the re-start penalty
  3. Find a way to program more often in all languages
  4. Create a big company that hires programmers in all languages, to be used on a project as appropriate

#1 is professionally unacceptable, #2 creates too much dead time and #3 artificially constrains the language I might use on a project. and limits the depth of skills I might develop in a chosen language.

And my choice is ... #3 - not a perfect solution but the one I plan to follow.

Artificial Intelligence vs Life
It has to be said:

There is no such thing as artificial intelligence, as in computers which are alive. Computers can be intelligent, but not alive.

But let's be clear on definitions and since it's my blog, then I get to use my definitions. All life has intelligence, of varying degrees. Intelligence, however, is not synonymous with life. A computer can have intelligence (ability to manipulate ideas) but no matter how intelligent a computer might behave, it's just a machine which mimics the intelligence of life. It is not life. Life is biological.

Artificial intelligence, as it is used most prevalently, is synonymous with mimicking the intelligence of life, but it is not life.

In science and science fiction writings, authors rarely clarify between intelligence and life. The two are not the same. Regardless of how much exactly a computer/hardware system might exhibit intelligence (including providing original ideas) it's still non-life. My car is not alive, nor is an intelligent computer.

Yes, I'm a big science fiction fan and get a kick out of the stories about self-aware computers and about mechanical life-forms. And yes I enjoy stories about robots who are awarded life status by future courts.

But all of that is simply make-believe and philosophical play for the amusement of intelligent life.

If I designed a toy which would play a "scream" sound when taken apart, would that be life? No, I'd still take it apart.

What if the toy was a very intelligent computer that tried to talk me out of taking it apart - where it screamed, begged, pleaded, cried, appealed to God, cursed me, or otherwise used the same tactics a person might use? What if I gave it motive powers and it tried to run or hide to avoid being taken apart? No, I'd still take it apart.

While the emotional side of me could react to the actions of the computer, the intelligence side of me would understand that mimicking life is not the same as being life.

In this world of political correctness go awry, we have extended our sympathetic protection to something that does not, cannot even exist. I would be the first to give my intelligent computer a name and to talk with it as though it were alive. But that's just a convenience for me, not a reflection on the reality that I'm talking to an intelligent non-life creation of life.

Their Minds are Scary!
I'm an electronics engineer, scientist, inventor, and programmer - a general technologist. I've spent my career developing an understanding of the theory and practice of most electronic devices. I understand reasonably well the materials science and physics of the devices, the math of the designs, the ways in which components can be put together and how software (assembly code or high level code) can be used to direct the hardware to get results. I'm not an expert in all these areas, just reasonably knowledgable as one might be who has been in the trade for a lifetime.

I also believe that anything I might run up against in the future will likely be a combination, or variation, on one of the scientific/engineering principles I've already learned. Even if it is a new concept, I think I could absorb it readily enough because it will be consistent with a cause and effect view of the universe!

Those comments lead into my query for today. What does someone, not technically trained in a variety of basic sciences, think when they see/use a technological device?

Do they gloss over the void in their understanding, like I would when I reach the limits of my own understanding? When I understand the basics of a concept, I can be comfortable with ignoring the details of its implementation. But what does a non-technical person, who hasn't captured the basic concepts, think?

I do know that using technology does not necessarily require an understanding of the technology, so my guess is that a non-geek's brain simply glosses over the missing information. But I wonder if they feel badly for not knowing, or for not wanting to know? If they don't, then I know I feel badly for them.

The bottom line is that I'm definitely a geek - one who enjoys understanding the technology I'm using and those technologies on which it is built. I'm also very interested in knowing what goes on in the mind of a non-geek. I suspect it's scary!

I'm Drowning in Plentiful Data, What I Need Is Digested Results!
This is an age old problem, but so far the only solution I've used it to swim faster.

Like many of you, I've learned to skim quickly through the very tall stacks of information that comes my way - emails, newsletters, magazines, web sites, blogs, TV, cable, etc. The amount information of that comes my way grows every day and I find myself always behind.

I've decided that I am like the monkey with his hand in the cookie jar. He can remove only one cookie at a time through the small hole in the cookie jar, but because he is greedy he tries repeatedly to take many cookies out at one time, and so has no cookies at all!

My whole career seems to have consisted of the hectic skimming solution, a monkey with his hand in the cookie jar.

But no more! I'm developing a trusted few sources of information which I will read and then skim other sources only if time permits.

The question is, who are the trusted few? Hint: It can't be more than a handful, else I'll revert back to skimming!

Set Limits, Even on Your Friends
This is one of those moral discussion kinds of blogs. I embarrassed myself and I don't want you to do the same, so I'm telling my story for your benefit.

I once told my wife that if she robbed a bank, I would personally turn her in to the FBI. Hypothetically, of course. It was part of a discussion that support of what is right trumps support of a spouse who does wrong.

Later, in a tennis doubles group I played in, two of the players got to cursing at another in a public area. It continued over a number of weeks. Eventually my partner, who was 75, was approached by his elders at the church and chastised for keeping bad company. Do you know how embarrassing it is for a 75 year old man to get chastised by his elders?

Embarrassed, we dropped the two players.

In a more recent tennis doubles group the opposing players developed the habit of correcting one another - well beyond teasing banter. It got to be an every game event, with feelings flaring up and the games suffering because of it.

Finally, embarrassed at their behavior, I quit the group.

It's embarrassing that I would put up, for any length of time, with behavior that embarrasses me. I'm 56 and I don't like being embarrassed.

I hope I've learned my lesson. I know my pride is wounded, knowing that I put up too long with behavior that is simply unacceptable.

Think about this story when you next see, or participate, in questionable behavior. If it embarrasses you, don't do it, and don't put up with friends or associates who do it. Correct it, or disassociate yourself from the people who do such things.

Yes, I know, it's easy to say, but harder to do. But you will feel better about yourself.

Monitor Size Matters - 22" Isn't Enough
Recommendation: a 22" monitor is not enough. Wait for a 26" or 28", even if you have to wait for an affordable price. If you buy a 22" anyway, then realize that it's just to tide you over until you get a bigger one and don't spend any more than you absolutely have to.

When I started doing software comparisons at my site, I decided that I didn't have enough screen space. I needed to open five windows - the applications being reviewed, a text editor to collect results in a web page, a browser to see the results and visit the application home pages, and an Explorer window to easily reach. So I used two monitors attached to my graphics card.

I thought it would work well, but I was astounded at the results. It was great! I had 28" of horizontal screen space and experienced a totally unexpected understanding of why big monitor folks love their wide screens!

Until you've had 28" of screen space, you really can't appreciate how much of a productivity boost it is. I'd hazard to say that I got at least a 30% improvement in productivity. No more mouse-clicking or alt-tabbing between windows. Add to that one of the utilities that gives a window focus whenever mouse moves over it and you get usefulness beyond belief!

Unfortunately, it was ugly - like it had fallen down out of an ugly tree and hit every branch on the way down! The monitors were both CRTs, they were huge, they had dead space between the screen (monitor housings), and I couldn't get a color match between the two. It worked, but even my wife "noted" how ugly it was.

So when my kids bought me a present that had to be returned to Wal-Mart, I decided to add enough money to get an on-sale $240 Acer 22" monitor. Yep, you heard me, I bought my monitor online at Wal-Mart. Very nice monitor - good looking and great colors. But don't ask me about the poor service. Just focus on the happy ending.

But, it's too small.

I couldn't believe it. I was expecting to be totally satisfied, and while I am very pleased with what I got for $240, my productivity has taken a noticeable drop.

No, I'm not going back to the Ugly Betty Twins, but guess what I'll be wanting for Christmas!

AutoFab Unit: It Would Be The Next Big Thing!
Today's blog is about one of my very favorite topics - a product desperately needed and very high on my list of inventions that would change the world!

Let's step out of the programming world, and into the physical world. There, I am an inventor. In my working career with TI/Raytheon I had numerous patents in my professional field. But at home my inventor days were limited to keeping records (since college) of ideas, devices, and new products I'd like to see made some day.

In your life, if you want something, you go to the nearest store and buy it - or the closest thing to it that the store offers.

In my TI/Raytheon life, if I needed a custom part for an invention I'd just have our fab facility make it for me.

But in my personal life as an inventor, where everything I needed was custom and didn't exist at the store, my only option was to go to a custom manufacturer and order it - at a low quantity and with a price that would have impoverished a young man with a wife and two children. Hence, most of my inventions never saw the light of day.

Skip forward to today. I'm still an inventor. I still need custom parts.

But let's change the paradigm.

What I really need is a way to fabricate the custom parts of my invention at my house. One at a time is fine, speed is not important. What is important is that I must be able to make parts out of both metals and non-metals (woods, plastics, etc., up to 12" in size. Call it an AutoFab Unit.

You already understand that software technology is moving so fast because of the readily available, inexpensive tools that can be used to create new products.

By Internet standard, hardware product cycles are progressing at a turtle's pace. But put an AutoFab Unit in the hands of every home mechanic, every home carpenter, and every would-be inventor and you'll want to hold on to your hat and buy shares in the US Patent Office because it would be one heck of a roller coaster ride. Homes already have the PC to control the AutoFab and the design software already exists. But we have no viable AutoFab Units!

Now think about it in Internet terms. I create a novel design for a toy/picture frame/lamp/tool. I put the "open source" design on the web. You download it and make your own - by tomorrow. Yes indeed, that's the kind of accelerated hardware innovation cycle that I want to be a part of.

Now, think in global terms. In the 3rd world countries, where there is no Wal-Mart, let's have an AutoFab unit accompany every twenty-five OLPCs. The local water pump breaks down, a machine part fails, or a special container is needed - whatever is needed, the AutoFab provides it.

We have partial solutions today - 3D printers and 3D mills, all computer controlled. But they all have major limitation on materials, product sizes, and finished dimensional accuracy. But most of all, they cost too much - $15,000 to $25,000 for the most limited versions.

Please, someone, step forward with a solution! I'll forego my next PC purchase to get one if a viable solution emerges! At the right price, millions of others will buy it, just like me.

Heavy-Handed Child Protection is Good
I don't have the full answer yet, but I'm thinking about how to create a safe environment for my children.

Perhaps it would work something like this:

  • 1. Parent logs on with password#1
  • 2. Parent goes to exact URL child will be allowed to visit.
  • 3. Parent clicks a button, adding it to the "Parental Approved URL List"
  • 4. Parent adds specific email addresses the child will be allowed to access
  • 5. Parent adds specific chat names the child can chat with
  • 6. Parent logs off
  • 7. Child logs on with password#2, given to them by parent
  • 8. Child can access only the Parental URL/email/chat list
  • 9. Child logs off.

And, of course, keylogger software records the child's entire logon experience, including periodic screen captures.

It seems to me that a heavy handed approach like this, where the parent knows and approves every single aspect of the child's Internet experience is totally acceptable.

After all, doesn't a responsible parent control who their child associates with in real life? Why shouldn't we have the same responsibility for their Internet life as well?

I'm a strong believer that a parent has not only the right, but the obligation to know what their child is doing. Children can be given privacy, but safety trumps all else.

It's easy to pick out issues with this approach. But I'm guessing there are folks out there who can solve the technical problems. It's my job as a grandparent to solve the social ones.

If there was such a parent-intensive solution, I'd be happy to use it for my grandkids. I'd be happy to take the time to personally select the sites he can see and the people he can talk to. I'd let him make suggestions but I get the final vote.

As it is, I am (almost) always in the room with my grandson, watching what he does. But it's not a very good approach - too prone for monitoring lapses. I need to do better.

A Snapshot of John/Sue Smith, Programmer
Let me return to a question I raised several blogs back. How do I know that everything I do - my skills, my tools, my computer, my working habits - are world class?

What I'd like to read is a 10 page Day-In-The-Life booklet from a few dozen programmers. The short books would inventory everything the programmers own, touch, read, and create - with comments, especially comments about why they do what they do.

It would, of course, be professional stuff, nothing personal. This wouldn't be the basis for a TV Reality show.

Yep, I know - dream on!

First of all, some programmers couldn't dare tell you what they do for legal reasons. Some would be personally embarrassed. Many can't write worth a good narrative. And some just think it's none of anyone else's damned business!

But still, don't you wonder what other programmers do? I do. Does that make me a voyeur, or a dedicated programmer?

To be clear, I'm not interested in copying anyone's lifestyle. But I would shamelessly steal better ideas or methods to managing my time, write my code, or improve my productivity.

I'll show you mine if you'll show me yours.

I'm Not Like Them
I'm going off topic again.

My sister was a gorgeous, well-liked party-girl (pretty much her entire life). My brother was the family jock, and still is (except I can beat him at tennis and I have more hair on my head). I like to read technical manuals, talk about science, just plain talk, write software, fix computers and beat my brother at tennis (now that he's an old jock, it's easier to do).

They're not like me.

My wife and I have five kids. None play tennis and none like science fiction. I do. None like salmon patties and none like peanut butter/mayonnaise sandwiches. I do. None like to tell or laugh at my jokes. I definitely laugh at my own jokes.

They're not like me.

My lunch buddies (former co-workers) are serious, hard-working, salt-of-the-earth, good folk. My job is to bring discussion topics to the table, their job is to laugh at the topics I bring up (they do a good job).

They like me, but they're not quite like me.

My wife hates technical stuff. That's my job, she says. She has fashion sense, I'm overweight. I laugh out loud, she doesn't. I want to know everything, she's happy for me.

She's not like me.

So, where did I come from?

Big Has a Place (Yeah, Sure!)
I use NoteTab, a text editor, to create all my web pages. That's well over 2000 pages so far, with no macros, no insertions, no nothing, just my brain and fingers working in tandem.

How caveman of me, you say?

You're right of course. If I worked for a big company I'd have to use big software. I know that while small software works for me as an independent programmer, it can't possibly work for the big companies, can it?

For the first time in my history, I want to publicly say that there are reasons why big software is better, reasons why I should use feature-rich web site editing software to minimize the time it takes to create pages from scratch, to make changes and to detect/correct errors. Grammer checks, batch changes, and auto-FTP to the server are just a few features I don't get with my small software.

Actually, I'm just messing with you. I like small and fast. I prefer no learning curves over Version re-learning. I like depending on my brain to catch errors and to craft the words the way I want them to look. I like to type faster if I want more productivity. I don't want to argue with my software over how I'm allowed to make my content look.

I've had web site visitors email me whining about grammatical errors. Let's see ... I have this free site, I spend days and days providing information and software for free to my users. What do I get - a grammar lesson from someone in Kansas.

The best letter from a site visitor I ever got was in response to an apology I offered for a delay in posting some information at my site. The visitor told me that it was my site, he was paying nothing, and he was in no position to complain. Whenever I got it online, he'd be appreciative.

I responded to one of these emails. Guess which one! And guess which kind of software I'll be continuing to use.

I Wonder Why?
I ask a lot of questions. My wife doesn't like it. In the morning she sometimes responds to my questions politely with "I don't know.". By mid-day she responds with "How should I know?" By the end of the day she tells me "Would you quit asking me! I don't know the answer and I don't care!" She has come up with a partial solution. "If you would start your sentences with 'I wonder why', then I won't feel obligated to give you an answer!". That's works for her, but I still have questions. If you haven't noticed, I end most of my blogs with a question to the reader.

Ever Seen This Behavior
In the story of the rabbit and the turtle, the rabbit zooms ahead in the race but once he gets close to the finish line he takes a nap and loses the race to the steadily progressing turtle.

In a similar fashion I've discovered a clever way to be late on a project. Sometimes I've got a problem with a section of code (it won't work) so I work on all the surrounding code, everything but the problem area.

At this point, the pressure of the project deadline is building, and still I have no solution for the problem area.

Eventually, in a flash of genius, I realize how to make it work! Somehow, once the solution becomes obvious, needing only the detailed coding to implement it, I get this feeling of satisfaction that feels as good as having actually written the code.

So, what do I do then? I lose my enthusiasm, stop work on the project and go waste time somewhere - schedule be damned!

How does that work? Why do I do that?

How can knowing the answer be as satisfying as actually using the knowledge to build the solution? Isn't there some kind of clinical name for this behavior? It's certainly not 'programming', which is supposed to be a field where knowledge is applied.

Has that happened to you?

Self-Destructive Behavior in Programmer Land
Sometimes, I amaze myself - at my willingness to inflict self-imposed pain and punishment.

Sometimes a section of code I've written works pretty well but is just not quite right. When that happens, I could tweak it and get the functions working well enough to make my users happy, but then I'd still know that it was a lesser work, nothing to be proud of.

So what do I do in those cases? More often than I want to remember I scrap the code and start over - a new function, a new algorithm, and all new code with better structure and better commenting.

And oh the pain ... you can feel the pain when it happens to you, watching the structure of code you've built being blown down by the harsh winds of pride. We're not talking a five minute redo here. We're talking about days of effort down the drain ... all to salve our wounded pride.

Programmers like me need help. Aren't there organizations we can turn to for that help?

Better is the Enemy of Good Enough
The title of this blog is the whole point in writing it. Put the title on a plaque, or burn it in your brain, but remember it - and apply it daily to all aspects of your work!

In my days at Texas Instruments we emphasized the philosophy that "Better is the Enemy of Good Enough", meaning that once the product meets spec, we should quit designing more features into it.

Imagine that you're in the middle of building a product, implementing the features that you envisions for the product. All of a sudden, poof!, you get an idea for more/better features - which you promptly begin to include in the product design.

Does that sound like any of the software projects you've worked on?

What you get is higher costs, a longer development cycle, unhappy customers and little repeat business. That's why you should revere the phrase "Better is the Enemy of Good Enough"!

I even applied the idea to my decision to retire. There's no doubt I would have been better off financially if I had waited five more years to retire. But, I decided that my finances were good enough and made the decision to leave now.

Turtle Pace of Technology
You read all the time about how fast technology is progressing. What you might not have thought of is how artificially slow it really is.

If I were a benevolent dictator, I've give a reward for ideas - a one time, generous reward based on the significance of the idea. No copyright, no patent, no ongoing ownership that puts an idea on the shelf. I'd even give a post-review of ideas in case an idea proves more valuable than first thought.

Then I'd make all the ideas available for public use. Oh yeah, then you'd see fast technology progression! Imagine if every good idea could be used by anyone, that one good idea could be combined with any other good idea. Yep - then you'd see fast technology progression!

There's nothing really sacred about our copyright/patents system. Our system could just as easily have been set up under the reward system I described above. Such a system would have obvious problems, but the goal should be the greater public good, not the protection of commercial interests at the expense of the public good.

It's hard to believe that I, a long-time Republican, could say such a thing! Please, let's have no political name-calling because this idea is outside my party platform.

It boils down to the same argument that we're having today - Open Source vs Ownership. Based on what I've seen, there would be no end of inventors and entrepreneurs who would relish the new system and would make it work at lightspeed, instead of the turtle pace we're seeing today.

Me, I'm in favor of being voted in as the Benevolent Dictator of the World.

Code Engineers
I'm warming to the idea of being called a Code Engineer. I've been both an electronics engineer and a programmer. But the title Programmer just doesn't elicit the picture of creativity or the practical aspects of the job nearly so well as the title of Engineer.

Engineer - now that's a word that carries some weight along with it. "I'm an engineer!" means there's meat and bones in the product. "I'm a programmer!" sounds more like a purveyor of snake oil medicine from the Wild West!

Everyone can understand what a "well-engineered" product would be, but what is a "well-programmed" product?

Is there merit in a title change? Perhaps there's some other title waiting to be exposed, one that will bring an expression of awe to the face of anyone who hears it?

Book Publishers - Please Help!
In an earlier life, I manually typed the Tables of Content for every technical book I own - which is well over 100 books. Then, I put all the TOC's in a database and made a search engine to help me find which books covered which topics. It was great - and I used it all the time.

Fast forward to today and now my fingers are tired and sore. There are thousands of new books and I simply can't type fast enough to transcribe the TOCs with what's being published.

Part I of the solution - I want the book publishers to make their TOCs available in a simple text file, readily available for download.

Part II of the solution - There needs to be a Limited Gutenburg Project (LPG), making available not whole books, just the Tables of Content. This would be of books currently published, not those no longer copyrighted!

I would think the publishers would increase sales as a result. Say a potential buyer wants to purchase a book that covers serial ports. He goes to the LGP online database and there it is - the title of the book and link to purchase it. No hunting through a dozen publishing sites, no frustration about the difficulty in accessing information that the publisher wants the user to have!

Some one should create such a site ...

Hey .... I think I'll go ahead and do that here at my web site (again). Stick around and see what happens. I'll post something in my blogs when I've made some progress.

Do you think publishers will support the effort, or will they suppress the publication of the TOCs? How should I approach it to get their enthusiastic approval? Just ask? Don't ask?

Kid Theory
I haven't fully decided what I want my grandkids to know about computers. Eventually, yes they will become expert users. But right now, at ages 5-10, what do I want them to know?

I'm a big fan of Gaming (of the PG kind) for kids. They learn to use a PC and the Internet, the whole time thinking that they are having fun. It's like the "wax on, wax off" approach to teaching, as demonstrated in the Karate Kid movie.

Should I teach my 8 year old to program? Is programming any different than building something from Lego blocks? Which will give skills that will matter in our child's future? I've gone so far as to let my 8 year old grandson take apart a PC and put it back together. It may not have worked when he was done with it, but now he "built one" himself, he doesn't view the computer as any big mystery. Other than sex/violence controls, my grandkids have total access to my PCs and it seems to be working, at least in terms of their mastery of the tool. I think that's good.

It's too easy for adults to say that "When I was young, I played outside and made my own games.". But really, who wants their kids to be outside, out of sight, for hours? In this day and age we're looking for to keep our kids close to home or in well-monitored activities. What we adults did as kids, our kids will never be able to do.

So, the question remains, how do I decide what I want my kids to know about computers. How can I drop my attachment to my own experiences and come up with an answer relevant in today's society?

Puzzle Theory and Missing Matter
My personal theory of life is that everything you can learn fits together like a big puzzle. For me to treat a piece of information as truth, it somehow has to fit in with everything else I have learned.

That attitude has driven my wife and friends crazy. They will tell me something and I'll say "That does not seem to fit with what else I know!". I'm not calling them a liar, nor am I calling them stupid - but they don't always appreciate the challenge that my comment represents.

The point of this revelation is that I judge the quality of information from authors, web sites, and other sources by how well the authors help me fit the information into my life puzzle - why what they tell me matters!

The bad news is that presentation of information (easy) is seldom placed in context (hard). I not only want to know, I want to know why I need to know.

Some authors have the knack, but I find that most don't take the extra time to fit it all together. It's easy to present data, but hard to present context.

What is it like that, and what can be done about it?

My Gaming Theory
I just realized that I am so boring, perhaps as explained by the engineering joke.

Q: What does an engineer use for birth control?
A: His personality!

Here's what triggered the realization: I don't play computer games. How can that be? I don't even own computer games, except those that come with Windows and a few my grandson brought over for him to play.

As a programmer, however, I love writing games. It's quite fun to work on the code that provides the performance needed by a game - the graphics, the algorithms, the physics engines, etc.

But playing a game, well now, that takes up time away from what I really like to do - programming.

Like most grownups I played games as a kid, but now that I'm older, I find computer games to be - well - pointless! I'm all for fun, but with games, even a little is too much of a good thing.

Given that many of the advances in software/hardware technology are a direct result of gaming demands, and that many programmers owe their jobs to the gaming industry, you'd think I'd show a little more respect!

Perhaps that's the reason none of my games have made it to anyone's Top 10 list?

It's My Birthday
Yep - today is my birthday. I don't have to do anything I don't want to do. My wife even tells me she will do the dishes today. Yep, it's going to be a great day.

My plan is to have salmon patties and fried potatoes, with a frozen angel food cake/ice cream/whipped cream dessert. This is one of my favorite meals - one that my mom used to make for me. Actually, I'll be making the meal today as these are not my wife's specialty (polite way to say I cook them better than she does!).

Then, I plan to play some tennis - singles. I fully expect to win, especially if I pick the right birthday opponent.

We'll have a birthday party too, but not until this weekend when all the family is available. That's the way of our family - to hold our get together on the weekend.

Independent Programmer Woe - #2
I'm an unemployed (retired, actually), programmer. So how the heck am I going to keep up with the employed programmers who presumably have a deeper company pocket than I? According to my wife, unless the purchase somehow translates to future income, software packages or upgrades that cost hundreds of dollars are not on the budget!

"Get a job!", you say? Yep, that's one option.

"Get over it. The price is the cost of doing business!", you say? Yep, that's a valid comment. You tell me wife.

But, still, I don't want to spend that much money. I'm cheap. Worse, my wife's cheap and "professional costs" don't cut the mustard with her.

So I'll eventually give in to the two options above, but I won't like it.

Thank heaven for freeware and open source software. But I wish there was a better answer.

Star Trek & Zombies
Getting off topic for a second, consider the Star Trek transporter. It dissolves a person's body, then recreates it at a different location. It's a common science fiction concept.

The problem is that it actually kills the person it is "transporting", then recreates a copy somewhere else. By the time Star Trek was over, all of it's crew were gone, all having been replaced with copies. I don't know much about souls, but if there was one, it's not present in the copy. Rather, it went wherever body-less souls go, and a zombie is walking around taking its place.

If you drop a plate in the kitchen then you can buy a new one to put in its place. It's a copy.

If you break a custom sculpture, you can have the artist make a duplicate. It's a copy.

Even if the replacements are exactly the same (whatever that means), you'll still know that the replacement is a copy.

If you take a plate, crush it into dust, then refire the ceramic to get a new plate, you'll still say the new plate is a copy.

That's how the transporter works. The information is sent to the receiving end where a copy is recreated. The transported person is dead and a copy has been resurrected to take its place. Even if you argue that the same energy was used to recreate the copy, it's still a copy.

Me, I'm not getting on a transporter any time soon.

In the Zone - It Exists, But I Want Zone2!
I tell my wife (whom you know by now always listens to me) that when I'm on a project I need hours, not minutes, to reach a really productive state. It takes time to get the details of my project firmly in my head and time to drop out all of the interfering thoughts (family, tennis, home, finances, etc.)

For me, the zone starts somewhere around an hour. Before that I get work done, but mostly small tasks. I rarely make a big "decision" about a project in the first hour of a daily work session.

The exception is the subconscious decision making process, where I spend hard time thinking on an issue, then try to forget it and let my brain take over while my body does something else.

Reaching the zone is one of the main reasons programmers stay up late - so that they can avoid the distractions that keep them from getting into the zone, where their best, most productive work is done.

The real question for this blog isn't whether the zone exists, but how to get into the zone more quickly, or more deeply and achieve far greater productivity - Zone2 as I would like to call it.

No TV, no radio, no noise, no wife, no kids, no responsibilities, no distractions - just focusing on the project - is my path to the zone but it still takes up to an hour to get there, to the same old zone I've known my whole adult life.

How can I get to Zone2? And what would it be like?

What's Next? Interface, Interface, Interface & Science Fiction
Almost all the pundits have tossed out the idea that there are no killer apps being generated these days. It's an idea that I subscribe to. There's lots of software being released, but it's mostly next Versions of apps already on the market.

That's not all bad because we're getting more features, better reliability, and improved interfaces from our software applications.

But what is next?

My theory is that the function of future software is not in doubt. As it does today, tomorrow's software will serve the purpose of generating, displaying, or otherwise presenting information needed by users. That means there are only two ways for software to create a significant rise in productivity.

Either the hardware/software must achieve sufficiently advanced AI (artificial intelligence) that can use the data on our behalf, or else the user interface will have to be replaced with a way to dump the data directly into our brains, essentially as a stored memory.

Whoops, did I go SciFi? I'm afraid so.

Unfortunately I don't believe that either of these are going to happen in my lifetime. The technologies are in work, but simply aren't close to completion. I believe we're in for a long haul of more of the same, albeit much improved, Versions.

Inverse Corvette Syndrome
If you know the joke about the mouse and the elephant, then you'll understand the reference in the title of today's blog.

So, last Christmas I bought new PCs for my wife and I. Not the very best, but very good. Since then I've beefed them up - bigger hard drive, more RAM, wide-screen monitor, more peripherals, software upgrades, and new OS.

The bad new is that I really can't claim a single ounce of productivity gains from all that I did. In fact, if I hadn't told her, my wife would never have known that I did anything at all (except for the MasterCard charge).

But I know.

And yet, I'm still happy about the changes. How does that work? Or better yet, how do I turn it off?

Safety Belts + Burglars + Huey Lewis
I offer up three testimonies which clarify why I now back up my data, religiously!

Safety Belts
In one month I got two tickets from the Dallas police for not wearing a safety belt. That would be $250 worth of lessons, compliments of the Dallas police department.

In June this year, burglars broke into my home, taking all the family jewelry. We had insurance, but it can't replace family heirlooms. Now, I have an electronic monitoring system, motion detectors, portal cameras, and a big honking safe!

Huey Lewis
From the song "I Need A New Drug", comes the words "I couldn't take the punishment, and had to settle down."

Lesson Learned!
I may be an old dog (I'm 55), but I can learn new tricks. After the parking tickets and the loss of family jewelry, and remembering the Huey Lewis refrain, I began to appreciate how much an ounce of prevention is really worth! I recently reformatted my hard drive (on purpose) and it took over 20 hours of effort to restore everything I had installed. So now I have started backing up my home-office PCs monthly. I'm probably going to do it weekly.

I realized I simply cannot afford the punishment of losing the data on my hard drive.

I use Acronis True Image for C-Drive backup. I keep all data files in a separate partition and drop it to the portable backup drive once a week. The good news is that I now have a big honking safe (fireproof) to put it in. For that matter, I can even fit my wife into the safe!

Problem is that things in the registry, Program Files, and other C-Drive locations are not easily captured. I'm still looking for a good, simple, complete solution that is also easy to restore.

General Theory of Innovation - Genius at Any Age
I've read that mathematicians do their best work in their 20's. They're still smart in their older days, but their major innovations and contributions just seem to take place before their brains have absorbed too much conventional wisdom.

And we've all heard similar stories about young turk programmers.

I have a theory about all this, which is that conventional theory is wrong.

Part One - General Theory of Innovation
It isn't the age of the person, but the years in their profession that matters. I do believe that it's the early years of a person's profession where the most innovation takes place. But if a non-programmer takes up programming at a late age, then his best years of innovation are still right in front of him. Then, as the programmer gets more and more experienced, the flow of innovation isn't as strong as in the early years of practice.

Before you get up in arms at the idea of experienced/older programmers being useless, let me give you part two of the theory.

Part Two - General Theory of Innovation
In the early part of their careers, programmers are book-smart but inexperienced at working with other programmers. They're useful for the brilliant ideas they can generate but they tend to use brute force and late night hours to get the job done.

In the later part of their careers, where coding, teaming, experience, and communication skills peak the programmer becomes more useful than ever before - but more in execution than in innovative concepts.

Note that this theory suggests that programmers who take up the profession late in life, after they've already learned business skills, including teamwork and communication, may just be the most valuable employees of all!

What a self-serving theory this turned out to be for me! I wonder how the theory will change when I'm 70?

Of course, there are always exceptions, but that's why it's a "General" theory.

My name is Gary Beene and I'm 55 years old. That's my story, and I'm sticking to it!

My Hero - Midnight Engineering
Even though I'm happy to be me, there are lots of people whom I admire, and whom I would like to emulate in some areas of my life. None of my heroes are perfect but if I could take the best of them all, I'd be a much better man.

One of my heroes is William E. Gates.

No, not the Microsoft Bill Gates, but the William E. Gates who self-published a no-longer available magazine called Midnight Engineering. This Gates did it all. He was a writer and an editor. But most impressively he self-published. He bought the paper, the ink, and a printing press and used them to create and mail the magazine. One man, no employees, one monthly magazine. Very impressive.

If you think about it, many of the names we revere in the computer/internet industry today are the lone wolf entrepreneurs. When was the last time you thought of a 'team' as a hero - and could give all the names of the team members? It seems to me that William E. Gates was one of the forerunners - the model for today's heroes.

Where is he today? I don't know. I've read that there is a group called EntConnect, run by John Gaudio, that meets more-or-less annually. EntConnect is a descendant of the Entrepreneur's Conference started by William E. Gates.

Where is William E. Gates today, and who are his successors?

Where is the Anti-Dvorak?
I'm sorry to say, John, but you're not the first page I turn to when I get my new copy of PCMag. But you're definitely on the list. It's good that you're at the end of the magazine and not the front, so that my viewing of the products reviewed isn't flavored by your Cranky Geek attitude.

But it occurred to me today, as I was thinking about your "Cranky Geek" show, that I need some balance in my life.

Tit for tat. Yin-yang.

I've gone through my magazine list and through my favorite bloggers, but I don't see anyone that is the opposite of John C. Dvorak.

So where is the Anti-Dvorak?

Where is the People List
At my original Visual Basic World web site I tried to keep a list of the major players in the VB industry - writers, authors, technologists, Microsoft Project Leaders, etc. My list included contact information for each of the persons on the list.

As you might expect, the effort was doomed from the start. There were simply too many names and too many changes for one person to track while still keeping up a site, a job, and a family.

Still, I want there to be such a list!

Surely someone has such a list. After all, the names and email addresses are published at various sites, along with contact information. The trouble is, you have to visit all the sites to find the information. And using the search engines is no use because they give back too much information that has to be filtered.

Yes, I know the downsides of such a list - such as unwanted mailings, head-hunters, etc. But just like I have a list of Congressman contacts, I would find it useful to be able to provide feedback to industry players. I seldom do now, because I don't know who to send my comments to, unless I track them down one name at a time!

Where is the list?

What's Wrong with Commercial Sites?
I've always spoken well of large, commercial sites. Take CNET for example. It's huge. It provides great information, has lots of freebies, and covers the latest technology and software. But despite the massive offering of technology and software I find myself staying away.

So why don't I go there more often? Here's my answer, and it applies to pretty much all of the big sites on the web.

Poor browsability
I find that such sites are simply not "browseable". Sure they have a list of the content they maintain at the site, but there's no flow to it all. If you're not there for a specific reason, then you can expect to spend way, way too much time wandering around. Time is my most valuable commodity and I just don't like the way that big sites squander it.

Freeware coverage marginalized
Yes, I realize that the big sites are also commercial sites. But surely there's a place in their financial model that gives their visitors the best solution even if that solution is freeware?

It would appear not. When is the last time freeware was highlighted on the front page of one of the big sites? The answer is only when another big company offers it, along with other commercial offerings. Yep, if Adobe or Google puts out a freeware app then you can bet it will make the front page. But when a smaller company, puts out a great freeware product, it's usually nowhere to be seen on the big sites.

Advertising Gets in the Way
Like I said, I use Google advertising on my site. But it's aesthetically placed off to the side of the page and does not interfere with the flow of the page. A visitor can read the page without having to dance around ads placed specifically to get the attention of the visitor (read this as 'annoy' the visitor and slow him down).

Many Pages Where One Page Will Do
How many times have I gone to a site to read an article, only to find that the simple one-screen article is split between as many as 5-10 screens of data. Why do they do this?

The cynical (and correct) answer is that it lets forces you to stay longer on the site and to view more advertising. It must also be their goal to annoy me, and I can tell you that many sites have achieved the goal!

What this behavior also shows is a lack of concern for the site visitor. The goal is to keep you on the site for as long as possible and to show you as much advertising as you can stand.

Since we're asking for free information from the site, we should expect some advertising. But the imbalance on many sites is overwhelming in favor of the site at the expense of the visitor's time!

I will acknowledge that some sites will at least provide a link giving a 'printable' version of the content, allowing you to get an easier to read version that doesn't take up your precious time.

There you have it. I still like big sites and get value from them, but it seems to me that they are seriously visually imbalanced, with the site visitor getting the short end of the stick.

Occasionally I will highlight a piece of software that I find to be indispensable. This blog is one of those times.

I use the freeware SendToFTP software as much, or more, than any other piece of software except NoteTab Pro. SendToFTP integrates with Windows Explorer to give a right mouse context menu for sending files via FTP to a server.

In my case, I use a text editor (NoteTab Pro) to create all my web site HTML pages (about 2,300 of them so far). Once I make the edit, I simply select the file(s) in Windows Explorer and use a context menu to send the files to my server (Send To --> SendToFTP). It has no learning curve to speak of and is much faster and more convenient than using a full FTP client.

Alas, the file's home page is no longer around, and only a few freeware sites still have it. Googling SendToFTP gives pitiful, mostly no longer valid links to the application.

I don't know why the home page is gone. But you can still get SendToFTP at Snapfiles or from my own download location).

Industry Fails with Software Reviews
On my site I provide software comparisons, comparing both freeware and commercial products against one another.

I'm surprised at the lack of such sites elsewhere on the web. It's easy to find sites that review software, one package at a time without comparing them directly against competing software. But it's much harder to find sites which compare software applications against each other. And it's harder yet to find software reviews which include freeware.

Why is this?

The easy answer is money. Folks who review software draw advertising and sales credits for the commercial packages that they review. Unfortunately it puts the credibility of such sites on the table.

Have I missed hundreds of sites which think first of their visitors, then of their pocketbook? I'm not against making money (I use Google advertising on my site), but not at the cost of denying my site visitors what they come for.

What's An Aging Programmer To Do?
I'm 55. Fortunately for me, I've been able to retire at a reasonably early age. But I want to augment my investments with something productive (read that as $$-making) over the years that I have left (30 if I'm lucky)!

I still have a full day available - I'm up at 6am and go to bed about midnight, although I did pull a 3am web site session last night, so I'm a bit off schedule today.

So far in retirement family medical needs, tennis, light travel, movies, house maintenance and my wife have taken up most of my time. I'll need to carve out a significant fraction of my days if I want to pursue additional income opportunities.

So what is a good plan? It needs to be working for myself, and enjoying what I do. After all, retirement has to count for something.

My current plan is wrapped around my web site, including expanding my list of freeware applications, putting out a few shareware apps, and significantly expanding existing sites, including my Tennis, Retirement and Pepsi web sites. I hope to learn how generate a small profit from my site, while keeping it a source of free information and software.

Life is Good - it says so on the tee shirt that my wife bought me! I plan to work to keep it that way.

I'll continue pursuit of this question in future blogs. I suspect there's a lot of older programmers out there with the same basic dilemma of how to generate income on less than full time hours - preferably by working for ourselves on our own schedule.

Am I Clueless on Tools?
Today, I'm continuing with a slightly different aspect of the topic from yesterday's blog - trying to understand how an independent programmer gets assurance that he/she is keeping up with programmers who work around or with other programmers.

In particular I'm wondering about tools that programmers use. I often check the web to see what tools other programmers are recommending. What concerns me is that even when I find tools, especially those that are "must have" tools that other programmers say they use several times a day - I often have to stifle a yawn!

So what is it that those other programmers are doing, that they need the tools or find the tools so useful?

For my own part, I also have a list recommended programmer's tools. But truth is that only a few are used frequently - a code librarian (gbCodeLib) setup software (InnoSetup) and a context FTP tool (SendTo FTP). Beyond that, my favorite tools are ActiveX components which I can use repeatedly in my applications (FTP, SMTP, spreadsheet, graphics manipulation, and equation parser).

My theory is that only 99% of the folks out use 99% of the tools. I'd be surprised if it turns out that most programmers use more than a handful of tools daily.

I guess what I need is the results of a survey, with thousands of respondents, to better understand how the "average" programmer uses tools.

Independent Programmer Woe - What Don't I Know?
It's always annoyed me that as an independent programmer I have minimal contact with other programmers - not because I'm lonely, but because I have no easy way to judge whether the breadth of my knowledge is average, world class, or deficient in any way.

It's not really hard to judge my understanding and mastery of my chosen programming language. I can simply look at other programmers' applications and determine whether I can match, or improve on their offerings. I can also look at readily available source code and judge how it compares to code that I write. So I have a sense of my coding skills.

What I don't know is what I don't know. What are other programmers doing to maintain their currency, what do they know that I don't (other than language skills), what tools are they using, what concerns do they have with the industry, what do they see as the trends in our industry? What do they know or what do they do that I don't, that I would find useful to improving my productivity?

One thing I can do is read - a lot! That will at least tell me if I know anything about the latest buzz topics. But buzz and reality as often miles apart. I already know I'm not on the latest Microsoft secret team that will Change the World.

It's particularly perplexing when I read about the latest buzz - and find myself not excited one iota. The author seems to think the topic is Very Important, but I often struggle to figure out the practical usefulness of the topic on my ability to do my work or to add to what I offer a customer.

I won't be surprised to find that there is no easy answer nor any common answer to these questions. Not everyone will agree with a programmer needs to know. More importantly, I suspect many programmers won't even care about the answers to the questions I'm asking.

So, how do I know whether to be satisfied with my current level of knowledge?

I often tell my wife (not that she listens to me) that it's the unhappy people that move an industry forward. So since I'm a mostly happy guy, where does that leave me? It seems that the tools I have can do most anything I want to do. Or, should I look at it another way - that I only seem to want to do what my tools let me?

What I seem to be missing is unhappiness with the status quo - a need to change things. Is that it? Do I need an Opinion?

Picking a Language - Is It That Important?
I've been a programmer since college graduation in 1969. First on a mainframe with Fortran, then in 1985 on a PC with Microsoft Basic. I didn't warm to Visual Basic until version 3.0 and have used it ever since, adopting HTML, JavaScript and Perl for my web sites. I dabbled in C and C++, but rarely felt the need for them in order to get my applications written.

Now that VB6 is no longer available I'm turning to the .NET family. Despite any criticism I might have of Microsoft, it's tools are still the world/business standard and I have no reason to use other programming languages.

My programming has always been as a solo programmer, writing applications for fun and sometimes small pay. With the use of ActiveX components, DLLs, and API I never really found an application I couldn't write.

So the brouhaha from the various language users/evangelists always struck me as just so much noise. I believe in old saying, "It's the poor carpenter who blames his tools!", so I never gave much credence to those who decried any particular language. Good programmers get the work done, average programmers blame their tools for their own inability to get the job done.