Office: 270.245.1188 Emergency: 270.752.0059
Site Contents

C O M P A N Y

Overview
Advantages / Blade's Edge
Personnel
Contracts & Rates
Contact


S E R V I C E S

Software Engineering
Systems Analysis
Networking & Security
Repairs & Upgrades
Training & Support


P O R T F O L I O

Overview
Landmark Projects
Government Projects
Non-Profit Projects
Development Tools
Scientific & Technical Projects
Support & Business Tools
Consumer Products
Portfolio: Support and Business Projects
 
Jump To:  Overview |  Positive ID |  PowerKey |  Stay Current |  Turnstile / Bread & Butter
 
 

Some of the most valuable software is created "for internal use only." Nearly every department in every company depends on software for daily business operations, so what a developer may consider an incidental problem may be a peace-robbing, ever-looming spectre to the people that actually have to use what we create. We never forget that.

Conversely, give someone software that solves a daily problem, or fix a bug that's driven them nuts for months on end, or link databases or applications that couldn't talk to one-another before, and you've got a friend for life. Give an employer an unexpected way to save money or increase revenue or simply make employees' lives a little easier, and you've made a loyal client that'll you'll have to work very hard to lose.

Best of all, though, are the times we've been on a client's site, observed problems we weren't called in to solve, and simply fixed them. If you haven't already, you can read about one of those experiences here. Read about some of our other successful business software below.

 
 
Positive ID
 
Jump To:  Overview |  Positive ID |  PowerKey |  Stay Current |  Turnstile / Bread & Butter
 

I N T R O D U C T I O N

Anyone that's ever worked in VB for more than fifteen minutes or so bristles at the mention of DLL Hell. Although a regular annoyance that's most every Windows developer has had to learn to deal with, for Visual Basic practitioners, it's a demon-spawned plague.

Not only does VB DLL Hell cause all manner of failure when users attempt simple application upgrades, but it often sends developers running in circles when upgrading their own programming components, particularly when multiple applications absolutely must use different versions of the same product. In VB, DLL Hell is actually DLL/TLB/OCX/VBX Hell. While not the exact center of Hell, it's akin to the third ring of the seventh circle, where we are compelled to take up arms against God (Microsoft) and nature (Windows).

Whereas engineering and support often disagree at the most fundamental level about what constitutes a problem, where DLL Hell is concerned, we are a unified people. DLL Hell eats our time, saps our strength, and demands our tears. Positive ID was a paladin summoned to stand against this unholy creature.


D E V E L O P M E N T

Positive ID was created with two use-cases in mind:

  1. Resolving Failed Installations: Primarily, Positive Id was intended to help support see which of a user's files differ (and how they differ) from those that one of our applications requires.

    Once an installer was sent to support, Positive Id would enumerate the dozens or hundreds of source files it contained; examine their version numbers, creation dates, and modification dates; and calculate their CRCs. This information was archived in a Project Id project file (.pip), which would be sent along with the application to any user who was having trouble installing or running one of our programs.

    Positive Id would then compare the user's files to the information in the .pip and create a report that would be automagically sent back to us. Support would then know exactly which files were at fault, and could even use Positive Id to unregister an outdated file and update and register the correct version. All of this saved many hours of time each week we remained in business, along with support representative burnout and extreme customer frustration.

    To further assist support, two other Blade products were integrated into Positive Id: Nouveaux (an advanced system information tool and resource monitor), and TaskMaster (an advanced task manager).

  2. Resolving Development Environment Issues: Positive Id could also be used to take system snaphots, and compare them to the current system state at a later time, as well as to compare .pip files from different installation versions to see what components had been updated between releases. (Trust us — it was never possible to be certain what had been updated, either by a rogue developer or by some other application's installer.) Any differences could be "rolled-back" by Positive Id as long as the original installer was available or the "embed source files" option was checked during Positive Id project-creation.

Positive Id could analyze an impressive array of project and dependency files, including those generated by InstallShield Express (.iwz), InstallShield Professional (*.isp), VISE (*.vis), Visual Basic, (*.dep), and Wise (*.wis).


R E S U L T S   A N D   P O S T - M O R T E M

From Blade Technologies proprietor Jason Purcell:

Though change came more slowly than promised, the need for Positive Id began to evaporate with the initial release of the .NET framework in 2002. Still, I'm extremely proud of this tool, as I'm fairly confident it was the most advanced of its kind. In fact, I like to tell myself that Bill Gates had Positive Id's "rollback" feature in mind when Microsoft was designing Windows' system restore point functionality years later. ;-)

Whatever the case, Positive Id certainly provided immense value to Hawkins Research developers and waves of support personnel; and that, after all, was the point.

[Click Image to Enlarge]







One Incarnation of DLL Hell
 
 
PowerKey
 
Jump To:  Overview |  Positive ID |  PowerKey |   Stay Current |  Turnstile / Bread & Butter
 

I N T R O D U C T I O N

From Blade Technologies proprietor Jason Purcell:

As the end of PowerClaim's initial development cycle was beginning to come into view, I researched what were then known as copy-protection systems (later called "software licensing systems") and selected what appeared to clearly be the most secure. It shipped with an inflexible, bare-bones code-base that was claimed to work for "the vast majority" of products, but of course, I was happy to have the excuse to extend it to its limits.

After writing the front-facing portion and obfuscating as much of it as I reasonably could, I turned my attention to the back-end. Originally, this was to be nothing more than a key-generation program, but quickly grew into a full-blown license-management system.


D E V E L O P M E N T

PowerKey was able to decrypt site codes so that the user's local date was visible to support representatives, which allowed them to ensure it was set correctly before issuing the license. (These were the days before an OS synced it's clock/calendar with Internet servers.) This both prevented honest disputes that might otherwise later occur and thwarted would-be thieves' first and most fundamental tactic of the day. Deauthorization confirmation codes could be similarly decrypted to confirm site date/time and number of license-days remaining.

Licenses could be generated for any number of days, of course, and existing licenses could be extended securely without forcing the customer to read another lengthy site code over the phone. If the customer set the date outside a 48-hour window post-authorization, the software would be disabled until a PowerKey-generated date-restoration code was entered, identifying most of the small-time theft-attempts. PowerKey e-mailed authorization, deauthorization, and date-restoration codes to the user using native functionality to avoid the use of external e-mail clients.

PowerKey was also the company's first CRM system, with a networked back-end database that stored all the customary company/user information and tied it to the various licensing activities, which were comprehensively logged. By reviewing these logs when a customer called for assistance, support representatives had yet another way to discern whether they were dealing with a deceptive user.

As draconian as all this may sound, at the time, PowerClaim generated the company's sole revenue stream, and its single-copy price was $800: Thus some users were amply motivated to cheat; and we equally motivated to stop them. In fact, PowerKey itself required licensing, for which I built another tiny app that only I and one other developer controlled. "Licensing the licensing program" was to prevent any employee (or ex-employee) from selling discounted keys to our users.


R E S U L T S   A N D   P O S T - M O R T E M

During my tenure, no known defects were ever found in any part of our licensing system. Since PowerClaim still implements my front-facing protection system to this day, I can only assume that PowerKey — or at least the critical security-related portions of it — remains in service, as well.

While doing some employer-sanctioned side-work for another software company four years later, I discovered its software used the same underlying protection system I had chosen for PowerClaim. When I mentioned the coincidence, management shared that they'd been wanting to rework their company's implementation to take advantage of more of the platform's capabilities. A couple of conversations and a few days later, and I'd adapted PowerKey to this client's business operations. They continued to use the system until scrapping their entire code base in favor of a complete .NET rewrite.


Sorry, no screenshots:
This security product
is still in service
 
 
Stay Current
 
Jump To:  Overview |  Positive ID |  PowerKey |  Stay Current |  Turnstile / Bread & Butter

I N T R O D U C T I O N

Stay Current is a both an application component and a stand-alone application-updating system. It was designed to give the user complete control over the update process. To that end, each application component includes a description, old and new version numbers, and an exact file size, and individual components can be selected/deselected for download. Download progress is displayed in terms of absolute size, percentage of total, and estimated time remaining.


D E V E L O P M E N T

Stay Current works with any application via any RESUME-enabled FTP server.

To use it, the application developer creates a simple ASCII file named "!Registry.txt," detailing each "current" component version. Component descriptions can be provided in either plain text or RTF format. This file is uploaded to a developer-controlled FTP server. At launch, Stay Current retrieves this file and compares the host version with the current version information to determine whether the host system is out-of-date.

The user can select any component to see its description, checks the components he wishes to update, and clicks the "Download" button. After download, Stay Current performs any required direct-copies, unregisters and registers .dll, .tlb, .ocx, and .vbx files, and launches installers, per the directives in the !Registry.txt file.

Stay Current can be added to a project via a .DLL reference, or run as a stand-alone program. In the former case, the application may need to be shut down to complete the update, as specified in the !Registry.txt file. A utility is included to encrypt the !Registry.txt file, if the developer so chooses.


R E S U L T S   A N D   P O S T - M O R T E M

From Blade Technologies proprietor Jason Purcell:

At a time when dial-up was the only Internet access option for literally 99.9% of the country, having the ability to update an application piecemeal — and to do so reliably — was more valuable than most people can imagine today. Stay Current dramatically cut production and mailing costs, as we'd previously been sending out CDs to all our customers whenever we released either a major or critical update. It cut support costs by automatically prompting the user to update as soon as a new release went live, providing instant access to bug fixes, improved usability, and additional features.

Stay Current was more advanced than application updaters at the time, and — in my opinion — still as elegant and friendly as today's best methods. This is one I might gold-plate and market at a nominal price.

[Click Image to Enlarge]

 
 
Turnstile / Bread & Butter
 
Jump To:  Overview |  Positive ID |  PowerKey |  Stay Current |  Turnstile / Bread & Butter

I N T R O D U C T I O N

From Blade Technologies proprietor Jason Purcell:

Turnstile was the engine behind a late '90s company intranet site. It was a database-linked common gateway interface (CGI) application that included a virtual timecard system, scheduler, instant messager, company newsfeed and document areas, and more.

Bread & Butter was an earlier application written for the same company. It was a product/job cost-estimation system for sales personnel, and was relied on for years both in the showroom and on employee desktops. After the other major Turnstile functions were complete, Bread & Butter was converted to HTML/CGI and folded into Turnstile.


D E V E L O P M E N T

While devouring programming magazines and web sites (as every coder worth anything regularly does), I ran across a story on what was then the rising tide of CGI applications. Near the end, the author was expounding on the suitability of various platforms to this task, and remarked to the effect of "a meaningful CGI application probably can't be created in Visual Basic." Now, as a developer forced to work in Visual Basic who'd already accomplished plenty that the language's designers never intended, this got me juiced-up.

As I started assembling the pieces to create a CGI framework, however, the first potential uses for a dynamic company intranet became my primary motivation. As time churned, the possibilities only multiplied: This app could bring the entire company together; help us function more as a symbiotic organism and less as competing divisions.

Features big and small exploded from by mind far faster than I could implement them: A company calendar, employee birthday reminders (because if I had to suffer through a semi-awkward party on my birthday, so would everyone else), a meeting invitation system &mdash one after another, I banged out group-functions. Not all of these were fleshed-out: At times I was just throwing stuff against the wall to see what stuck; what did, I extended and refined.


R E S U L T S    A N D     P O S T - M O R T E M

Turnstile had absolutely no impact outside the company for which it was written, yet reflecting on it brings a wash of warm feelings. It began as a foray into unfamiliar waters intended only to satisfy my own curiosity and do something a faceless code-snob said I couldn't. When the smoke had cleared, it had become an important part of daily business operations (at least for a time).

It wasn't particularly well-architected — I blush at my use of so much hard-coded HTML — but it worked, was easy on the eyes, and best of all, was coded entirely in VB!

[Click Image to Enlarge]

 
[Back to Top]