Category Archives: Custom Software Development

Why You Need an E-mail Strategy.

Now more than ever, it’s critical to leverage this medium to your advantage.

Develop an E-mail strategy that circles the globeRemember the day you received your first e-mail?

I can’t.   It almost seems that e-mail has always been there—even though it showed up only recently.   Only two decades ago, most folks considered something like e-mail to be cutting-edge technology.

Today, we couldn’t function efficiently without it.   E-mail has changed business communication more than any other technology.  E-mail allows us to communicate with whole groups of people simultaneously.  And, it automatically builds an audit trail when working on important projects.

E-mail is here to stay.  But do we regard it more as a blessing, or a burden?  The same tool that can speed communication can also reduce productivity.  So we need to develop an e-mail strategy that leverages e-mail’s power, without bogging us down.

An E-mail Strategy will Help Control Costs

Here are three  techniques you can adopt to minimize the cost of corporate e-mail:

1Control your e-mail software—don’t let it control you!
 Have you ever noticed that you get more work done when your e-mail application isn’t running?  When Outlook is running on my PC, each new email can be a serious distraction.  Leaving your email running can turn your day into a series of constant interruptions.

So, rather than leaving e-mail running all day, set definite times to manage your e-mail.  Before firing up Outlook or Eudora in the morning, jot down the tasks you want to focus on first.  Why?  Because we have a tendency to let e-mail manage our time, instead of the other way around.  On my most productive days, I’ve found it useful to open up Outlook only once during mid-morning, and then again toward the end of the day.  I’m still able to communicate with people, and if someone wants an immediate response, there’s always the telephone.

A different approach might work better for you.   But it’s important that you have a plan and a strategy so that you’re in control of your schedule.

2Declare war on SPAM.
 Unsolicited Bulk E-Mail, AKA SPAMSPAM is unsolicited bulk e-mail—commercial messages sent in bulk from people you don’t know.  Call it what you will, spam is a colossal waste of company time.  Think of it:  if each of your employees and coworkers spends only five minutes per day reviewing and deleting junk e-mail messages, how many hours will your business lose over the course of a year?  A business with only four employees would lose a minimum of 21 hours worth of productivity!  So killing spam should be a key part of your overall e-mail strategy.

PC-based spam blockers built into email apps are helpful.  But a better approach is to install spam blocking software on your e-mail server.  This prevents most spam from ever arriving in your inbox.  What’s more, it reduces traffic on your network.  So everybody wins—except the spammers.  These server-based spam blockers come in several flavors:

    1. Context-based blockers.  SpamAssassin, for example, reads every e-mail word-for-word, searching for word patterns that identify them as garbage.  You can tweak its sensitivity by monitoring messages it flags as spam.  Once you’re comfortable with its accuracy, you can instruct SpamAssassin to automatically delete the offending e-mails.
    2. Sender-aware blockers.  These focus on where the e-mails came from.  For example, offers up-to-date blacklists which your e-mail server can use to identify junk mail:  E-mails arriving from senders on the blacklist, are automatically deleted.  But e-mails from people you’ve flagged as trustworthy (ie., whitelisted) are routed to your inbox.
    3. Identity-restricting blockers.  These spam blockers send “who are you?” e-mails to unknown senders, requiring them to register before any of their e-mails get delivered.  And they give you the ability to decide whether you want to continue receiving e-mails from the sender.

No spam filters are foolproof, but they’re worth the effort and expense.  Consider this:  if you can cut that 5-minute-per-day spam volume in half, you’ll save your company hours of productive time per employee each year.  ($600 per year for an average small business with a staff of four.)  

3Should your e-mail strategy include housing your own e-mail server?
  E-mail is faster than snail-mailAlthough setting up an in-house mail server can be challenging, the investment can pay for itself many times over.  And it doesn’t have to be expensive.  Of course, the big-name vendors would love to sell you their solutions.  But you can install open source solutions on much more modest equipment–for a lot less money.   Depending on your company’s size, bringing your e-mail server in-house can reduce your costs significantly.

Consider some of the advantages of hosting your own e-mail server:

  • You—not the hosting company—control naming conventions for your e-mail accounts.
  • There are no limits on the number of accounts you can set up.  You can create public and private e-mail addresses for each employee.  You’re free to set up separate accounts for each department.  Or, you can set up group mailboxes that can be monitored by multiple recipients.
  • There aren’t any space quotas (unless you decide to set them).
  • Create custom mailing lists to reach different groups of customers, vendors and employees by sending e-mails to a single address.  You’ll save time by not having to collect, copy and paste e-mail addresses into outbound e-mails.
  • Access your e-mail from anywhere—using built-in web enabled software.
  • You can tweak and fine-tune your spam control settings.
  • Greater privacy for mail hosted on your own server versus free-mail servers.  When you own your mail server, you own the e-mail content on that server.
  • Since you own the e-mail server, you won’t be forking out monthly fees for every mailbox, mailing list and account you set up.

Some might hesitate to host their own e-mail server for fear of the maintenance that will be required.  But after installation, e-mail servers sit there quietly, doing their job day in and day out with very little maintenance.  We’ve left ours running for months without ever touching or rebooting it.

Use e-mail to promote your business.

1Carefully consider the address you choose to identify yourself.
 If you’re serious about growing your business, why not leverage your e-mail address as a marketing tool?  It can become a valuable means of telling folks what your company can do for them.   Your choice of an e-mail address is at least as important as your choice of phone numbers or domain names.

Compare the following samples.  What impression does each give you about the recipient and the company s/he works for?

Examples of e-mail addresses

What message does your e-mail address convey about you and your company?

While we’re at it, let’s consider the wisdom of using free-mail as your primary e-mail account.  The term “Free-mail” describes e-mail accounts you don’t have to pay for.  Services such as Hotmail, Gmail, and Yahoo! are just a few of the services which offer them.  Mailbox sizes are generous.  And many have built-in spam reduction.

So why wouldn’t everyone sign up?  Well, consider the cost.  Yes, there are costs associated with using free-mail.  Because no matter how creative you are, a free-mail address doesn’t carry the same marketing weight as one that’s linked to your web domain.  In fact, some spam blockers treat free-mail as spam.  So you run the risk of people never receiving your important messages.  

2Dress up your Signature
 Every e-mail program lets you insert a pre-defined block of text and graphics at the end of your e-mails.  Some folks prefer to simply use their initials or “Sincerely yours.”  They’d be better off using a well-crafted signature.   Why not take advantage of this capability, and promote your business with every e-mail you send?

With a little effort, you can change your e-mail signature frequently to advertise special offers and invite customers to upcoming events.   Often you can include your company’s logo.  You can even insert hyperlinks that drive traffic back to your company’s web page.

3Use e-mail to keep in touch with customers and prospects
 Research proves that the more you stay in contact with your customers and prospects, the greater your sales.   Your e-mail strategy should include a schedule for reaching out to them.   There is a place for newsletters  filled with news your customers and prospects can use.

Word to the wise:  Whenever you launch an e-mail campaign, please be sure to make it easy for folks to unsubscribe.   And whenever you receive such a request, please be sure to honor it promptly!

Considering how widely accepted e-mail has become, it’s easy to take it for granted.  But successful business people will recognize its importance as a communication vehicle.  And they’ll craft an e-mail strategy to make e-mail work for them, and not against them.

What is a Design Specification?

In order for us, or anyone else to provide you with an accurate proposal, your company would benefit greatly by having a detailed design specification drawn up, using this document as your reference point and benchmark.

A design specification is a document which describes what a completed application will look like. It sets forth the required characteristics to be considered for awarding a programming contract-including sufficient detail to show how the application is to be created.

A completed software design specification should do all of the following:

  • It should be able to adequately serve as overview for programmers, giving them enough information and understanding about a project so they can get up to speed quickly, and won’t feel overwhelmed when asked to create or modify source code.
  • It should serve as the blueprint that designers and programmers use to benchmark whether they’re designing the application in keeping with the original intentions of the design team.
  • It needs to be as detailed as possible, but must not impose such a burden on the programmers and implementers that it becomes overly difficult to create or maintain.


Using a design specification will ensure that:

  • Your company’s expectations are documented, and agreed to by all decision-makers within the organization
  • All major design issues are unearthed and addressed
  • Your time and effort isn’t wasted by repeatedly explaining project requirements to multiple developers
  • Priorities and timelines for all the desired features and components can be established
  • Objective cost/benefit analysis can be performed
  • Resulting proposal(s) can be compared against a single standard
  • Your company’s expectations will be met by the developer who ultimately develops your new system

Another advantage of using a design specification is that you can use it to compare quotes from multiple vendors against a single standard. It protects you from having to compare quotes on an apples-to-oranges basis.

Seven-Step Method

The procedure we follow when writing a system design specification includes these steps:

  1. Preliminary investigation – thorough review of all documentation and other materials provided by client
  2. Conduct interviews of key personnel as identified by management.
  3. Define project scope and constraints
  4. Create comprehensive system specification document
  5. Present results and recommendations to management
  6. Adjust specification per management feedback
  7. Deliver final specification document to management

The Next Step

After these steps are performed, we then go on to provide a detailed proposal based on the final specification. Of course, your company would be free to use the final specification to solicit proposals from as many developers as desired.

Your Investment

I/O Technologies can offer this service separate from any programming effort for a flat fee. Again, this will not produce any software, but will be useful whether you choose I/O Technologies, Inc. for the development effort or contract with another vendor.

Design Credit

Should you contract with I/O Technologies, Inc. to develop your application within 30 days from receipt of the final design specification, we will issue a design credit equal to 15% of the cost of the initial design specification work toward the cost of actual application development.

Eating the Software Elephant–One Byte at a Time.

You’ve probably heard the question, “How do you eat an elephant?”  And the typical answer:  “one bite at a time.”

What does this have to do with software development?   Actually, it’s a great analogy.   Because over the years, we’ve met many business owners who run their companies on really old code.   (Some might even call the software ancient, by today’s standards.)  In fact, we often find programs written back in the 1980’s, still hard at work today.  But even when better solutions have evolved, some companies still hang on to the legacy system for as long as possible.

Managers have their reasons to sit tight

But why would business owners entrust their core business processes to old software, when so many improvements and innovations have become available?  They do so for several reasons.  And we hear these most often:

  • “Our custom software has been a wonderful asset for many years. It’s tailored to the way our company does business.  And it has run well for a long time.   Why fix something that ain’t broke?”
  • “Our software application is huge.  It has many modules and contains hundreds of thousands of lines of code. So, migrating to newer software would be a colossal challenge.”
  • “Our people are very comfortable with the existing software.  Training them on a new system would take time.   And change always upsets the normal flow in our office.”

Migrating to a newer software platform can present real challenges.  It often involves a review of how the current software meshes with today’s business operations, and how it could be improved.  So it’s not surprising when companies hesitate–even when yesterday’s software no longer meets today’s demands.

But folks, this doesn’t have to be an all-or-nothing proposition.

What’s a good manager to do?

Software Development Life Cycle

Let’s rephrase the first question slightly:  how do you migrate a huge software application?   In my opinion, the best answer is:  one byte at a time.

Yes, you could tackle a migration project all at once.  But migrating smaller, manageable byte-sized chunks often makes more sense.  And there are several reasons you might go this route:

  • Rolling out incremental changes allows you to see results more quickly.  And smaller updates won’t upset your business operations nearly as much as larger ones could.
  • Small updates will introduce change to your employees at a slower pace.  As a result, they’ll have time to get comfortable with the change.  And hopefully, they’ll recognize the benefits as well.
  • When you migrate gradually, you’ll spread the cost over a longer period of time.
  • Taking smaller steps gives you a chance to evaluate a software developer.  It lets you see how well they understand your needs.  Plus, you’ll find out how well they implement your programming specifications right away–rather than months later.

Because we all have lives outside the workplace, it’s understandable why some might postpone adding yet another project to our busy schedule.    But hardware and operating systems continue to evolve.  And the day will come when 30-year-old software won’t support your core business applications any longer.   So it’s wise to start planning now, rather than waiting until you have fewer options.

Not ready for any changes just yet?

What if you’re not ready to begin the process today?  At the very least, you might want to find programmers who can support your application in its current state.  Not only will you have someone to call if anything goes wrong.  They’ll also be more knowledgeable about your business processes when migration time finally arrives.

If you’d like help evaluating how best to migrate your software application, give us a call.

Beware this email hoax

This morning’s e-mail included an “Urgent Server Warning!” message from

Looks pretty serious, doesn’t it?

But I can tell you with 100% certainty that this is a complete and utter hoax.

How can I be sure?  Well, I’m the administrator for’s mail server.  So I’m the only one who can disable or remove email accounts from our domain.

No, the goal of whoever sent this email was to lure gullible recipients into clicking the hyperlink–which would launch a web browser and drag you onto their site.   The page you land on would probably attempt to sell you something, steal information off your computer, implant a virus, or worse.

(I won’t repeat the full hyperlink here, but the site starts with  ‘cinematic’ and ends with ‘’)

The moral of the story:  it’s highly unlikely that your email server administrator would ever send an email like this.  After you hover over the hyperlink, if you don’t recognize the site, don’t click the hyperlink!  Just delete the email and carry on.




Update to Prepaid Invoice Synopsis Reporting

No doubt, you’re familiar with the Prepaid Invoice Synopsis reports you may receive in your e-mail. These reports document how many hours you started with, and then list all work performed, along with a running balance of hours remaining. In the past, we e-mailed them once per week–on Fridays.

But there was a potential problem in this connection. What if your block of hours was exhausted early in the week? We do our best to monitor every balance, and contact you when hours are running low. But now the process has been enhanced to help keep you better informed every step of the way.

Effective tomorrow, January 11, 2018, you should receive a Prepaid Invoice Synopsis any time one of the following occurs:

  • One of our programmers logged time to your prepaid block of hours the previous day.
  • You authorized a new prepaid invoice, creating a new block of hours.
  • It’s a Friday (in other words, you’ll still get a copy of the report at least once per week.)

Since this is a new process, we may need to iron out a few kinks along the way. If you have any comments or questions, please feel free to contact me. My direct number is 414-847-9481.

And if there’s anything else we can do to improve our level of service, I’d love to hear from you!

Thinking of a software update? Let us write the specs.

Writing Software SpecificationsFor many of our customers, writing software specifications can be a huge challenge.   Where can you find time to pull together all the details for even a simple software enhancement?  How can you document exactly what you have in mind?  Assembling screen shots, drawings and written instructions can become a massive hurdle for business owners and managers.  As a result, many great ideas never see the light of day.

So, recently we’ve installed new remote connectivity software.  It enables us to join you in an online meeting, record the audio and video, then write up specifications on your behalf.  Once you’ve had a chance to review, tweak and/or approve the document, we’ll give you an estimate.

How much does this service cost?  For now, we’re offering it free of charge on small- to medium-size projects (involving one or two screens/reports).  My rationale:  if this process helps clarify the scope and streamline the programming process, then our time will be well spent.  (I reserve the right to revisit this, depending on how future projects turn out.)

Have a project you’d like to test drive using this new approach?  Please contact us to schedule a meeting online.

The Perils of a Neglected Schedule

And One Possible Remedy

Has this ever happened to you?

You arrive at your office an hour early–determined to get in front of the demands of your job.  You check today’s schedule and make a mental note: “don’t forget to attend that important meeting at 2pm!”

Then, as more employees arrive, the pace at your office grows more hectic. A coworker drops by, asking for help with a project she’s working on. A lengthy phone call temporarily derails your train of thought.

And the morning races past.

You work through the lunch hour-so engrossed in the flurry of activity that you lose track of time. At 1:30pm, you’re summoned to help put out another fire.

Finally, it’s time to leave for your 2pm meeting. But you’re so caught up in the urgency of the immediate that it has slipped your mind entirely. You miss the meeting.

The Trouble with a Neglected Schedule

Maybe your life is so well-organized that this never happens to you. Mine sure isn’t.

In fact, this very scenario has played out in my professional life more often than I’d care to admit. Oh, I’ve read several time-management books-and vowed to implement every suggestion they offer. But then, another urgent crisis drowns out the ticking of my schedule clock, and I fall short on my commitments once again.

The problem isn’t with my schedule. It clearly identifies every meeting, every appointment, and every upcoming conference call. The problem is that often I neglect my schedule. I don’t give it the attention it deserves.  But what to do about schedule neglect?

Many time-management books advise you to shut down your e-mail program, so that inbound messages don’t distract you. Thus far, I haven’t figured out how to close Outlook and still see appointment reminders. Even when Outlook is open, that reminder dialog appears to play hide-and-seek, ducking behind other windows.

If only my schedule were able to call out to me, “Dave, come back! Look at me! You’ve got some important items on your docket!” If it could do this, I would have a better grasp of where I’m at, and where I need to be next.

One Solution

That’s why recently, I decided to devise a way for my schedule to seek me out. Several minutes before each meeting, my schedule actually calls me on the phone, giving a verbal reminder of each appointment. I won’t bore you with the programming details. But here’s a brief explanation of how it works (after the software has been configured to work with your schedule).

The process is simple. Just open your e-mail program, and create a typical appointment:

After setting the date and time, set a reminder as you normally would.

There’s just one difference: in the textbox below, type the word Cue: followed by 1 or 2. This cues the phone system to dial either your primary or secondary number (eg, office phone/cell phone).

With the new logic in place, my phone delivers a recorded message at just the right time: “This is a friendly reminder that you have an appointment 5 minutes from now.” And out from the fog, back to reality I come.

So here’s my question for you: Would you find this useful at your office? Do you think people might even be willing to pay for a service like this? For me, a reminder service that ties directly into my schedule is a priceless asset.

To paraphrase JFK, “Ask not how often you should check your schedule. Ask how often your schedule should check in with you.”

I’d welcome your feedback.


RFID for Dummies–a Simple Explanation

What is RFID?

RFID stands for Radio Frequency IDentification.  You’ve probably heard about it before.  One Wisconsin company recently made headlines when it announced plans to embed RFID devices under the skin of its employees.   But what exactly does that mean?  And how does it work?  In short, it’s a technology that’s useful for keeping track of persons, pets and things.RFID for Dummies snapshot of RFID tags

How does it work?  Here’s a simplified analogy:  Suppose you fill several beer (or soda) bottles with differing levels of water.  When you blow across the mouth of the bottles, each one makes a unique sound, depending on how much water it contains.

RFID works in much the same way.  Think of an RFID device as one of the bottles.  But we don’t blow on it to generate sound waves.  Instead, we use an RFID reader which “blows” an electronic signal across the device.  Just as each bottle makes a unique sound, each RFID chip responds with a unique radio wave signature.  Store these signatures in a database, and voila!  You’ve got a system that can track millions of items.

RFID devices come in a huge array of shapes and sizes.  Tiny grain-sized units that can be injected under the skin of your favorite pet.  Larger devices may come equipped with batteries (AKA Active tags)–enabling them to generate much stronger signals.  (Active tags can be very useful for tracking tools, rental equipment, and so forth.)

The Benefits

You might ask, “Why not just use barcodes?”  Oftentimes you can.   But realize that you’ll need a clear line of sight to bounce a laser beam off each barcode.  If you need to scan a box of parts, you’ll have to open the box and manually scan each barcode.

Here’s where RFID offers a big advantage. With the right scanner and software, you can scan multiple RFID tags simultaneously.  This allows you to collect data faster–without opening or disturbing the outer packaging.

Another advantage of RFID tags: durability.  Barcodes are usually printed on paper and can easily tear or smudge.  On the other hand, most RFID tags are embedded inside a plastic housing. This makes them impervious to moisture and moderate heat. In fact, many uniform and cleaning companies sew RFID tags into the hem of uniforms.  This helps to track items through hundreds of wash and dry cycles.

Here at I/O Technologies Inc., we utilize RFID badges and readers in our FastPunch! timeclock software.  FastPunch! allows employees to clock in and out by simply waving an RFID badge in front of a reader.

If you’re contemplating a project that involves tracking inventory, tools, vehicles, or people, RFID makes a lot of sense.   Contact us to discuss the pros and cons of RFID, and how you might opt to incorporate it in your next project.

Migrating Your Legacy Software

Eight Key Questions to Explore

Over the years, you’ve built a highly-successful business around a custom software application.  Early on, it was a wonderful asset.  But all the while it helped to drive your company’s growth engine, the software remained the same.

Fast-forward a decade or two, and the software is really showing its age.  While it used to run lightning-fast, today it bogs down under the increasing load of database bloat and more users than anyone could foresee.  Perhaps your IT department has begun e-mailing you dire reminders:  They can’t find compatible hardware any more.

There’s a second, related issue:  Typical software applications comprise thousands—if not hundreds of thousands—of lines of code.  Finding programmers who can (or are willing to) support your software may become a serious challenge.  (We know of several business owners facing this situation.)

What’s a pragmatic decision maker to do?  One option:  Nothing.  After all, the software still runs.  Never mind the occasional glitch now and then.  If, on occasion, you lose half a day’s worth of data because your IT staff has to restore from backup, well that’s just a cost of doing business, right?

Perhaps your exit strategy includes letting a future manager deal with the issue.  So, for now, you cross your fingers and pray that the momentum of the status quo will propel your business forward, until aging software is no longer your concern.

But what if you worry about your legacy software?  What if it keeps you awake at night?  How will you ever carve out enough hours to manage a software development project, without neglecting your core business?  How can you capitalize upon what you’ve already built, while taking advantage of everything that modern software languages offer?  And what other questions should you be asking—questions you may not even realize should be taken into consideration?

Migrating to newer software can be a daunting proposition.  Short of writing a textbook, it’s not practical to cover every possible decision that business owners must weigh.  But here are several key questions you may want to contemplate…

1)  Will the project require new hardware?

A handful of our customers are still using outdated operating systems.  Not because they want to, but because they must.  Their software simply won’t run on newer hardware.  Considering that Windows XP, Vista, and Windows 7 have all reached their end of mainstream support[i] dates, now might be a great opportunity to migrate to new hardware as well.  Do you plan to update your workstations in conjunction with your software upgrade?  Will a server upgrade be required?

As you develop a budget for new software, you’ll also want to include the cost of new hardware into your projections.

2)  On which platform(s) will the new software be developed?

The three most likely candidates are:

  1. Desktop (applications running on your PC or laptop—the ones you launch by double-clicking a shortcut)
  2. Browser-based (i.e., web sites you access via Internet Explorer, Chrome, Mozilla Firefox, etc)
  3. Native applications (i.e., smart phone apps written for IPhone and Android)
  4. A combination of all three

Each platform offers both advantages and unique programming challenges.  The following matrix spells out the relative strengths and weaknesses of each.

FactorDesktopBrowser-basedNative (Smart Phone)
User ExperienceDesktop applications utilize a wide variety of robust, user-friendly controls which make pointing and clicking a snap.

This environment is familiar territory for most end users, meaning that time spent on user training will often be minimal.

Web-based apps are designed to run on most browsers.  They usually can’t access an individual device’s capabilities.  Thus, they must be hardware-agnostic.  Beyond standard browser controls (check boxes, buttons and the like), web apps require extra coding to incorporate specialized controls and functionality.The main benefit that native apps offer over web apps is that they are fully compatible with the device’s native features, such as GPS, camera, phone, and accelerometer.  They give you access to a device’s hardware and software, allowing you to incorporate photos on the fly, access GPS information, and communicate via phone or text—all directly from your custom app.
PerformanceProperly configured, a well-written desktop application will run quickly.  Users won’t experience the slower connection speeds they might occasionally encounter on other platforms.

Smart developers will configure the application to download the majority of application content onto the local PC, meaning that the only network traffic will be data as it’s read from and saved back to the database.

Web applications require a reliable internet connection.  If your connection is slow, they may creep along much more slowly than their desktop counterparts.

This will be especially noticeable on mobile devices, because images and animations take time to download.  Graphic-intensive web applications may also consume considerable bandwidth and battery reserves.

Native apps tend to be faster and more responsive.  After a native app has been installed, most of the graphics and code that run the app are already stored on the device.  Thus, the time and bandwidth required to access content on the server will be lower than a similar browser-based application.  As a result, native apps are often much faster, and provide a better user experience.

They can also be configured to automatically sync data stored locally on the phone with a web-based server when the device isn’t in use.

SecurityMost often, your application data is stored within your Local Area Network (LAN) or secure cloud-based storage.

Provided that your IT staff has configured your firewall and VPN properly, hacking into the database will be considerably more difficult than other platforms.

Any time your company allows access to content over the internet, it becomes slightly easier to exploit the connection to your database, and thus easier to compromise your data.  At a minimum, you’ll want to insist on using Secure Sockets Layer (SSL) encryption.

For added security, if IP addresses of end users are static, you may want to have your IT department restrict access for all unknown IP address.

Think of how much sensitive data lives on your phone (contacts, e-mail addresses, phone numbers, etc.).  Mobile devices often connect to the internet through untrusted WiFi connections, which malicious eavesdroppers can readily exploit.  If one of your users loses his phone or sells it on eBay without resetting to factory defaults, it’s possible that your corporate resources could be compromised—especially if users select the option to “Remember My Password”.

These risks can be mitigated somewhat, by implementing a strict security policy and deploying logic on the server to prevent device spoofing.

ExtensibilityVirtually all device manufacturers provide drivers for their peripheral devices.  This makes it relatively easy to integrate desktop applications with printers, cameras, scanners, RFID readers and the like.In earlier days, browser extensions and plug-ins (such as ActiveX objects) unwittingly opened the door for security breaches.  As a result, most web browsers no longer grant access to computer resources, such as file systems or peripheral devices (at least, not by default).

If your company wants to develop a web application that interacts with users’ hardware—or automatically creates, prints, e-mails and/or saves files, please give serious consideration to either a desktop or native app instead.

Many smart phone manufacturers provide hardware ports to allow for interaction with external devices.  One would think it should be easy for programmers to write code to communicate with accessories.  But this is not always true.  The device manufacturer must provide a set of driver files conforming to the type of smart phone(s) you plan to use.

The bottom line:  if you need to link an external sensor or other device to your native app, make sure that the manufacturer provides compatible drivers.  Please don’t assume that your programmers will figure out how to make it all work.

Program- ming ComplexityOf the three platforms, desktop apps are usually the fastest to develop and deploy.

Desktop applications are programmer-friendly.  Many programmers learned how to program in this environment, and are very comfortable developing applications for the desktop.  Sometimes it’s simply a matter of dragging and dropping the desired controls on a form, eliminating the need for writing additional code.

As a result, the overall cost of a desktop application will likely be lower.

Today, web applications frequently utilize what’s known as the MVC (Model-View-Controller) design pattern.  This approach allows for efficient code reuse and simultaneous development by multiple programmers.  But it takes time to configure properly.

In fact, web applications almost always require more time to set up, configure and test than a desktop app.  Consequently, the cost for web applications is often higher than a similar application designed for the desktop.

One of the greatest challenges in developing smart phone apps is that we must develop a separate code base for each platform.  Each mobile vendor provides its own Software Development Kit and user controls, which must be used to develop apps for that device.

Thus, if your company wants to deploy an iPhone app, programmers will develop and upload an iOS app to Apple’s App Store.  Need an Android version of the same app?  Programmers will write a separate set of code for Android, and then deploy it to the Android app store.  As a result, native apps are often the most costly of the platforms.

However, native apps usually run faster on smart phones and are better equipped to harness the capabilities of the hardware on which they’re installed.

Installation and accessDesktop applications are usually installed on your company’s local area network (LAN).  If users must access the application from outside your office, they’ll need to use connectivity software (Remote Desktop, for example) to gain access.  This isn’t necessarily a bad thing—especially if security is a concern.

Installing a desktop application on a new PC can be a very simple process, provided that the developer configures the necessary tools for doing so.


Since most of the code associated with a browser-based app runs on the web server, no installation is required.  Just navigate to the site and you automatically have access to the latest content.

Web applications rely on consistent internet connectivity and speed. The lack of either can cause significant issues.  This is especially noticeable when running web apps on smart phones.  Users may have to wait for the browser to download all the content.  If your application incorporates numerous photos or graphic images, you may want to consider developing a native app instead.

In addition, web applications require extra effort on the part of end users.  They must remember your specific web address (or find it on a search engine).  If users fail to bookmark your site, they’ll need to repeat the entire process any time they want to connect with your business.

Mobile apps are usually distributed via App Stores.  When users install a native app, they will only have to remember the loading instructions long enough to download it.  From that point on, your products and services will be just one click away whenever they use their smart phone.

Native apps usually run faster than web-based apps.  Once installed, they don’t have to continue downloading the same resource-intensive files over and over. Thus, they often use significantly less bandwidth.

UpdatesDesktop applications can be configured to automatically update to the latest available version with little or no user intervention.

But not all desktop applications function this way.   If you opt for a desktop application, be sure to ask your programming team how they plan to deploy future updates.

Since most of the code runs on the web server, updates to web applications download automatically whenever you navigate to a new page.

End-users do not have to bother with installing updates because they’re managed by the web server administrator.

Native apps user may need to download and install updates periodically.  In some cases, users may be prompted to completely uninstall the previous version prior to installing a later version—but nowadays, this is rare.

In the world of custom software applications, one platform definitely doesn’t fit all needs.  In fact, your ideal solution may involve a customized mix of platforms and programming languages.

3)  Which programming language(s)?

Beware the programmer who insists that his language of choice is the absolute best—and there’s no room for debate.  As technology advances, programming languages continue to evolve.  Some fully embrace newer hardware architecture and software development patterns.  Others are headed for retirement.

For example, Visual FoxPro (VFP) is a wonderful, robust programming language.  We still support over a hundred custom applications written in it.  But its vendor discontinued support a few years ago.  Today, we wouldn’t suggest migrating even an ancient 16-bit application to VFP.  Instead, we would likely recommend C#, PHP or ASP.NET.  Why?  The chief reason:  programmer availability.  At some point in the future, you may decide to entrust your software development to a different programming company.  That will be a serious challenge if you can’t find anyone who speaks the language.

So, rather than letting an obscure language bind your company to a programmer for decade(s), you’ll want to opt for a programming language that’s widely supported.  Spending a little time on this question up front will help ensure you aren’t saddled with a decision you’ll regret for years to come.

Here’s a useful site to visit when considering software developers and the language(s) they’re proposing:  The TIOBE Index compiles a monthly list of programming languages based on popularity and the number of lines of code written.  If you can’t find the programmer’s proposed programming language in the top 50, you might want to consider finding a different programmer.  Speaking of programmers…

4)  Which programmer(s)?

One thing I’ve learned over decades of hiring (and firing) programmers:  just because someone enjoys tinkering with code doesn’t mean s/he’s qualified to tackle your project.

You’ll want to dig deeper—looking beyond flashy marketing handouts and web sites—to carefully examine the competency level of the programmer/team you hire.
How?  Here are a few suggestions:

  • Ask for references. Then, follow up with each reference, verifying that software users are truly happy with both the quantity and quality of code written.
  • Schedule a screen-sharing session to review examples of applications the programmers have developed which are similar to yours.
  • Ask whether the coding will be outsourced, or performed in-house.
  • Find out whether programmer(s) will be available to communicate with you in real time, or whether time zone differences will necessitate more staggered communications.
  • Ask what steps the programmers take to avoid SQL injection (they should surely understand your question—even if you don’t).
  • Finally, be sure to verify who will own the source code[ii] once the project is complete.

5) Which database?

According to a recent DB-Engines[iii] survey, the five most popular database engines are:

  • Oracle
  • MySQL
  • Microsoft SQL Server
  • PostgreSQL
  • MongoDB

Each has inherent advantages and disadvantages in terms of cost, speed and support.  Your company may already have settled on a standard.  If so, you have one less thing to worry about.  If not, ask your developer for recommendations, and reasons for those recommendations.  Be sure to consider the total cost of ownership.  Database costs fall into two expense categories: capital and operational.  The cost of database licenses, and installing and configuring the database can vary widely.  Opting for an open-source database may save money initially.  But lack of support (and therefore, higher maintenance costs) might offset any benefits you gain up front.

6)  Should we migrate our data?

Migrating existing data to your new application will ensure that users can find historical data for orders, invoices and inventory without requiring them to launch the old application.  It’s usually the best approach.

Data migration can also burn up a lot of programming hours—and dollars.  Why?  Because frequently, older tables aren’t structured very well—the former application may have deliberately duplicated data across multiple tables.  But subsequent updates to some of the tables—without updating the duplicate records in their counterparts—can leave us scratching our heads and asking, “which data should we migrate?”

Secondly, earlier developers often used a combination of fields to ensure uniqueness.  They just assumed that every record will be unique because of its content.  After all, how many John Smiths could possibly have the same birthdate?  Too often, these assumptions were wrong.  When a database is designed poorly in the beginning, migrating to a more logical structure can be a real challenge.

Because of these issues, and the extra programming time required, some customers prefer to ‘Drain the Swamp’.  In other words, keep using the old application until outstanding invoices are paid, purchase orders have been received, and so on.   But once a cut over date has arrived, all transactions will flow through your new application.

7)  Will the new application talk to other software?

Today more than ever:  no software is an island.  To prevent re-keying the same data into multiple applications, software developers build electronic bridges to seamlessly pass data back and forth.

Most software applications we write communicate with multiple systems, interfacing with one or more of the following:

  • Accounting software
  • Scheduling systems
  • Time clocks
  • Payroll services
  • Real-time inventory management
  • CRM systems
  • Payment processing services
  • Phone systems / billing software
  • Web services (API’s)
  • Web site scrapes
  • File imports, including CSV, Excel, XML, JSON, SDF
  • E-mail
  • SMS
  • Document scanners
  • RFID / Barcode Scanners
  • Document generation, archiving and transmission structures

Software interfaces can be quick and easy to write.  They can also be extremely complex.  The more you identify and document your integration needs up front, the more complete road map you’ll have.  And the less likelihood of future sticker shock.

8)  Should we migrate everything all at once?

Whenever possible, we recommend migrating your application in phases.  If your legacy application spans several modules that run independently of each other, it would be wise to divide and conquer—migrating modules one-by-one.

This will give you the chance to assess your progress, and course-correct along the way.  It also gives you more budgeting flexibility—possibly allowing your company to stretch expenses over a longer time frame, as each new phase comes online.

The Upshot …

Migrating a legacy software application is not for the faint of heart!  We’ve explored several of the weightier questions you’ll want to consider.  No doubt, you’ll identify many more as you move forward.

How you arrive at the answers to your questions will depend on your company’s specific needs, your budget, and time frame.

We wish you all the best.

[i] Microsoft Corp. Windows lifecycle fact sheet Accessed July, 2017.

[ii]I/O Technologies, Inc.  Who Owns Your Source Code?  Accessed July 2017.

[iii] “DB-Engines.” The Most Popular Database Management Systems, July 2017. Accessed July 2017.