Sundial Services
Professional Software Engineering Consultants Since 1992

Professional Services

Our professional services are engineered with just one client in mind: you. We are neither a "job shop" nor a temporary employment agency. We have no vested interest in the outcome of any professional recommendation that we provide.

Present-State Assessments (PSA's):

Generally our first and most-important task is to objectively assess the present state of your situation. "What is" the software that you use? "How does" that report get its numbers? "How does" this application align with your company's proper future direction, and what is now being done to "keep it afloat?"

We assess the present state in light of the present state of the technology infrastructure that runs it: software versions, operating systems, applications and their "sunset" plans. Software applications usually can't simply "be moved without change" to a new environment, because backward compatibility is often not maintained. Instead, crucial features upon which your existing software depends may have been "deprecated." Or, the vendor may have gone out of business entirely.

Software Rehabilitation & Repurposing:

Software systems are usually extremely tied to the particular environment in which they were first made. Sometimes, these environments are abandoned: MS-DOS®, 16-bit Windows® software, and, very soon, 32-bit. Sometimes, they change very considerably from one release to the next. (For example, "PHP-7" bears very little resemblance to "PHP-5" or "PHP-4" because so many features were arbitrarily "deprecated" by the vendor.) Existing software may also retain security vulnerabilities – such as PHP's infamous "register globals" feature – and have been written in such a way that those flaws are intrinsic to their present design.

Most applications of recent vintage make very heavy use of third-party software packages that are distributed with the language itself: PHP's "PEAR" library, Perl's "CPAN," Python's "PIP," Ruby's "Gems," and so on. Some of these consist of many megabytes of source code. And, like the languages themselves, they can be "deprecated," or abandoned, or changed in ways that are not backward compatible. They can have security vulnerabilities, sometimes very serious ones. In some cases these represent the fundamental software layer, "your application" having been constructed essentially as a customization. The techniques that were used to construct "your application" might no longer be in vogue.

Furthermore, it is likely that "your application" uses more than one technique, all at the same time. When new features are added, they're often added using "newer" techniques, but without removing or touching the old code. A software application begins to look like a tree that was constructed entirely by grafting.

You can see from this description that "what should we do about this now?" does not have a cut-and-dry answer: "it depends." To find the answers that you seek and to give you the best possible advice, we deeply examine the materials that comprise the existing software installation, determining both "where you actually stand now" and "where we think you should now be." Yet it isn't a case of "let's throw out the baby with the bath water." You can almost never afford to "start over," nor should you try. Instead, we will present several alternatives to you, and help you to choose.