Just because someone fancies him/herself a competent programmer does not make it so!

While updating an application we inherited recently, Jeremy (one of our programmers) emailed me this example.  (This happens to be Visual FoxPro code, but we often encounter similar programming in Visual Basic, C++, and PHP code we inherit…)

This is really a circuitous way of performing a simple function.

This is really a circuitous way of performing a simple function.

“OK, Dave,” you’re probably saying–what’s so bad about it?  Well, a few observations come to mind:

1) Even with the comment above this code block, it’s difficult to understand what in the world the programmer was attempting to do.  There are much better ways to strip embedded spaces from fields.

2) The code uses single-letter variable names.  Suppose the program bombs, returning an error  message such as:  “Variable N not found.”  Guess how many times the letter ‘N’ occurs in this program?  How long will it take to find the specific ‘N’ being referenced?   Better:  use Hungarian notation.  For example:  lnX = AT(‘ ‘, … etc).   It’ll be a whole lot easier finding lnX in the code than trying to locate the specific instance of ‘N’ that caused the error.

3)  This code will write and rewrite strings to the database up to 20 times per record–when a single write per record would suffice.

4) This logic, spanning nine lines of code, creates a nested looping structure.  Nine lines will be much more difficult to maintain (and debug) than what’s needed.

So, how would we recommend changing the coding above?  How about a single line of code: 

UPDATE <table> SET ponumb=STRTRAN(ponumb,’ ‘) WHERE AT(‘ ‘,ALLTRIM(ponumb)) > 0

An added bonus:  this logic will only write to the database when a PO number actually contains embedded spaces.  The fewer times our code updates the database, the better.

Positive Feedback

Yesterday, a visitor to our website named Adam downloaded a copy of Contact! — our free contact manager software. But recent updates we made had introduced a problem with the installer.  This was the kind of problem that that wasn’t easily uncovered during beta testing.

When Adam called it to our attention, we updated the logic to address his issue.

I thought I’d share his response …

Subject:RE: Email verification for Contact
Date:2015-11-24 16:50
Hiya Dave 

The new download has resolved the issue.
Thank you very much for your prompt response and resolution of my issue with
your software.
It's nice to find a company that is prepared to take the time to resolve an
issue with their product instead of just ignoring the request. Even more so
when you consider the fact that your product is a free one.
Hats off to you Sir.

Kind Regards
Ajay (Adam)

To RoboDial, or Not?

Which of the following phone calls would you tolerate? And which might you even welcome?

  1. Your family has gathered at the table for dinner when the phone rings. It’s a recording. The nice lady on the other end has an “important message for you about your credit card account”. She doesn’t identify your specific card or mention your bank’s name. You hang up immediately.
  2. A political candidate robodials your cell phone, asking for your support in the upcoming election.
  3. Your dentist’s autodialer calls, reminding you of an appointment you had forgotten to enter into your calendar.

Welcome to the brave new world of Robodial! Like it or not, autodialer software has become part of our culture–even if accepted grudgingly. How does it work? You simply import a list of phone numbers, record an outgoing message, and launch the software. The autodialer dials each number on your list, plays the appropriate recording, and logs the result of each call. Most autodialers offer the ability to respond. For example, ‘Press 1 to talk with a human, or 2 to leave a message.’

While any technology can be abused, autodialers can serve a useful purpose. Resourceful business owners may want to explore this capability as a part of their overall marketing and customer retention strategy.

Let’s look at the potential advantages from a business owner’s perspective. Would autodialing be an acceptable means of contacting your customers in any of these situations?

  • Your shop phone is ringing off the hook with calls from customers, asking for their order status. Contacting them proactively makes more sense, but your staff is already swamped, and you can’t afford to hire another employee just to make phone calls.
  • Your organization needs to contact all its members about a weather-related cancellation.
  • You wish you could call each of your clients personally to remind them of upcoming appointments, but simply don’t have the time or resources.
  • Your mortgage loan customers ask you to contact them immediately when rates dip, so they can lock their loan at the lower rate.
  • Business has slowed for your company. You decide to reach out and remind past customers of all the services your company offers.

Compare how much time it would take for someone at your office to make thousands of calls—when an autodialer could do the work with minimal effort.

Being on the receiving end of an unexpected robocall can be very annoying. And the last thing you want to do is irritate your customers. But there are measures you can take to avoid incurring their wrath.

For example, you could offer autodialing to customers as an opt-in service, letting them decide whether to receive automated phone calls. And, be sure to cross-reference your list of phone numbers with the national Do Not Call registry, so you don’t dial the number of anyone on the list.

Given a choice, most folks would prefer talking with a real person rather than listening to a recorded message. But when used judiciously, an autodialer can be a powerful tool to stay in touch with your customers and prospects.
If you’d like more information, please give me a call.

What’s YOUR programming philosophy?

We met with a prospective client recently, who asked me, “What is your programming philosophy–do you prefer Waterfall or Agile?”

If you’re unfamiliar with the terms, here’s a brief overview:

Waterfall Software Development

The waterfall approach to software development breaks the overall project into several distinct phases:


For Waterfall to work, developers can move on to the next phase only when its preceding phase has been completed and reviewed. We can’t swim upstream, and there are no fish ladders available.

The Waterfall Challenge.
The biggest problem with this approach is that clients seldom have a firm grasp on exactly what their requirements are. If requirements are unclear, the project will never get past the requirements-gathering phase.

But if a client insists on moving forward without completing each phase, software developers will likely end up throwing portions of the code away, as the project scope changes later on.

Agile Software Development

Several years ago, to address the limitations of the Waterfall approach, a group of seventeen software developers met to discuss alternatives. They published the following Manifesto for Agile Software Development:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions    over    Processes and tools

Working software    over    Comprehensive documentation

Customer collaboration    over    Contract negotiation

Responding to change    over    Following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Kent Beck   James Grenning   Robert C. Martin
Mike Beedle   Jim Highsmith   Steve Mellor
Arie van Bennekum   Andrew Hun   Ken Schwaber
Alistair Cockburn   Ron Jeffries   Jeff Sutherland
Ward Cunningham   Jon Kern   Dave Thomas
Martin Fowler   Brian Marick

© 2001, the above authors. This declaration may be freely copied in any form, but only in its entirety through this notice.

Agile software development offers an appealing alternative to Waterfall. Rather than scoping out a massive project and trying to address every possible detail, it breaks development down into bite-size chunks. As each new chunk is finished and tested, it moves into production immediately. This approach is known for its ability to deliver working software to customers faster. Then, as end users begin working with the new features, they often provide valuable feedback to drive future development.

Some of the best software we’ve written was developed using the Agile approach; we met with our customer to identify an overall goal, then wrote self-contained modules which performed specific functions fairly quickly.

The Agile Challenge.
But there’s a potential tradeoff. Developing software without an overall project design is akin to building a house without a blueprint. Unless project stakeholders pay close attention to the overall project evolution, the final result can end up looking like the cobbled-together effort that was used to put it together.

Oh, and then there’s one other small (almost trivial) issue: cost. Agile tends to be a pay-as-you-go approach. As a result, Agile projects can end up costing considerably more than anticipated.

Don’t get me wrong–if your company’s goal is quality software written quickly, then Agile makes a lot of sense. Just realize that if you’re working within a fixed budget, you may end up with less functionality than you envisioned. I.e., you may run out of budgeted funds before the evolving goals for your project all come to fruition.

You’ve probably noticed that I haven’t really answered the question. Why? Because I won’t be writing the check for your software project. More important than asking, “What’s I/O Technologies’ development philosophy?” is the question, “What is YOUR development philosophy?” If you need software quickly and don’t have all the details fleshed out, then Agile is the way to go. On the other hand, if you are faced with a fixed, not-to-exceed budget and can put together a well-defined project specification, then let the water fall!

A Security Vulnerability We Encounter Way Too Often

There were no locks on the house where I grew up in rural Wisconsin in the 70’s. And we never gave it a second thought—we knew all our neighbors. Crime was simply unheard of.

Can you imagine living without locks on your house or office today? I’ll bet you lock your doors even if you live in a relatively “safe” neighborhood. It just makes sense to take simple precautions.

That’s why my programmers and I are often surprised when clients and prospective clients don’t seem to share the same level of concern for security when it comes to their local area network.

If your small office/home office connects to the internet, it’s sitting right smack dab in the middle of a dangerous neighborhood.  Oftentimes, the only thing that stands between your computers and the criminal element is a piece of hardware called a Diagram of firewallfirewall.   In theory, your firewall is supposed to allow you to surf the internet, while keeping the bad guys at bay.

So you might be thinking, “As long as I have a firewall in place, I’m protected—right, Dave?” Maybe—But here’s a problem we see more often than you’d expect: when firewalls come from the factory, they’re preprogrammed with a default login and password—typically ‘Admin’ and ‘Password’ or something similar. If no one ever changes the login/password, there’s a good chance that your network is vulnerable. The bad guys have tools that can crack simple passwords in no time.

This is so important that I want to say it again: If nobody changes the password on a firewall that allows for remote management, you might as well paint a sign in big red letters, “COME ON IN—THE DOOR’S OPEN.” Once hackers get past your firewall, there’s not much to prevent them from rummaging through your files, taking copies of your sensitive data, trashing your website, or worse.

If you don’t know how to change the password on your firewall, please find someone who can. Since our business focuses on writing software, we don’t typically do this type of work. But we know several reputable companies who do. If you need help securing your network, let me know and we can put you in touch with professionals who know their stuff.

FERC Report Format Change

The Federal Energy Regulatory Commission announced on April 16 that Electric utilities will need to begin filing FERC reports using XML instead of the current Visual Foxpro format, since Microsoft no longer supports VFP. This affects Form 1, Form 1F, Form 3Q and Form 714.

If your electric utility needs help making the switch to the new XML format, please contact us.

Source: http://www.rtoinsider.com/ferc-briefs-041615/

Too often, companies compose flowery, verbose, meaningless mission statements along these lines:

Our mission is to provide outstanding customer service, great careers and professional satisfaction for our people, and to realize financial profitability so we can continue to grow, blah, blah blah.

In an attempt to capture the essence of what I/O Technologies Inc is all about, we sat down recently and nailed down a mission statement of our own:

We're obsessed with writing ingenious software that decreases complexity and increases productivity.

Our Mission and Obsession

We’d welcome your honest feedback. Does this reflect your impression of what we’re all about?

Please Join Us for Our Open House on Oct 28

Oct. 20, 2014

I/O Technologies Relocates to Accommodate Continued Business Growth, New Staff

Software firm’s move coincides with its 20th anniversary

CONTACT: Jeanie Martin, I/O Technologies, (262) 437-3239, jmartin@iotechno.com

Germantown, Wis. – I/O Technologies, southeastern Wisconsin’s premier source for custom software and software support solutions, has moved to a new, larger office to accommodate its burgeoning business and growing staff.

The tailored software company’s new address is N116-W15830 Main St., Suite 101, Germantown, Wis., 53022. The office is marked by a shiny new sign in the front window.

I/O Technologies didn’t move far – its previous office was on Fond du Lac Avenue in Germantown – but the shift to a more spacious headquarters reflects steady growth in customer orders and production needs. Its software development staff has grown by 33 percent in 2014. Additional hiring is expected soon, said Jeanie Martin, President of I/O Technologies.

“No one likes the work of moving, but we’re doing so with a smile because our company’s growth is driving the need the additional space,” she said. “We thank our great customers who rely on us for custom software solutions, and our business partners who have been with us every step of the way.”

The move coincides with the 20th anniversary of the 1994 founding of I/O Technologies. The company provides tailored software that simplifies day-to-day business activities, and gathers, transfers and reports key business information. All lead to better decisions and lower operating costs.

The Germantown and Brookfield chambers of commerce will hold a joint ribbon-cutting Oct. 28 at 11 a.m. to celebrate I/O Technologies’ new headquarters. The company belongs to both chambers.

I/O Technologies has built a solid reputation for creating custom software solutions that provide a reliable alternative to off-the-shelf packages that might – or might not – perform as needed. Every product has a 100 percent risk-free, money-back guarantee. More information is available at www.iotechno.com, or by calling (262) 437-3239.

Used Phone System Available

Voice Over IP phone system
We recently upgraded the phone system in our office, swapping out hardware and adding more lines. So now we’re looking to place our previous PBX in a good home.
This Voice-Over-IP system is fully functional and would be great for a small office setting. The PBX has a number of cool functions, including:

  • Built-in voicemail with optional email notification
  • Browser-based speed dial, including the ability to click any hypertext number and have the system dial it for you.
  • Browser-based call history log
  • Conference calling
  • Blacklist capability
  • Customizable automated attendant

As configured, this PBX system can support up to 4 inbound analog phone lines. It can then share those lines amongst many internal phone extensions. Right now we have up to 7 desk phones available (see photos) but more could be added fairly easily.
When it was brand new, this phone system originally cost over $1000 for the PBX components, plus $159 for each desk phone.
We’ll install the PBX in your office, and customize the automated attended script, for just $350. The phone sets cost $35 each. Depending on your computer network, we might be able to use existing network wiring. If more wiring is needed, we can discuss.
You might be asking, “So is this an introductory teaser deal, where we’ll have to sign a contract and make ongoing payments?” Nope. The system is a few years old, and definitely upgradable—if you want to do that sometime down the road, we can help. But we’re not looking to rope anybody into a commitment they’re not happy with.
This offer includes travel to/from your office within the Metro-Milwaukee area. (I’d need to charge for travel to locations farther out.)

We’re Moving!

Relocation Notification


Starting next week Monday (August 25), we’ll be supporting your custom software applications from a new office building.

We hope to make the transition as seamless as possible. But moving an IT-related company includes a number of challenges related to internet connectivity, hosted web sites and phone systems. When you factor in the physical relocation of furniture, computers, servers and office equipment, it can be a real challenge to make sure everything goes well. So please bear with us during this upcoming transition.

Here’s our new mailing address:

N116W15830 MAIN ST  STE 101
GERMANTOWN WI 53022-2603

All the rest of our contact info will remain the same …



262-437-3239 or 800-993-9028

But no matter where we are, please know that we’ll continue to work our level best to meet you where you are.