The Evils That Oppress Our Apps

| 1 Comment

In a perfect world, we would create applications that run with limitless speed, are completely open, and gets the job done exactly right the first time, each and every time. Well, this is obviously a fairy tale, because we live in a world full of evils that aim to oppress our apps. I’ll attempt to describe some of those evils, including their main sadistic traits, and also attempt to describe some of the weapons you can give to your apps to help combat these evils.

Evil #1 – The Blob

It’s MO (modus operandi):

The Blob aims to bring our apps to an unusable crawl. You can find it lurking in many places – nestled in between the gaps and interfaces in our code; stuck to the walls and floors of our servers; and especially oozing all over the information super-highway, causing traffic jams at the most inconvenient times. It’s a viral beast, that hitches rides on our apps (especially the unarmed, defenseless ones), and leaks a little bit of itself behind as our apps travel to/from its poor users, who just want to get stuff done.

Weapons to fight The Blob:
  • A Strong Framework For Your App – Put some up-front effort into the design your application that makes use of proven design patterns. Take advantage of those who have fought The Blob before, and have incorporated those lessons learned in their frameworks and designs.
  • Caching – Store and manage replicas (in whole or in parts) of your application data, close enough to your users to gain the most efficiency, but far enough away to benefit from shared access among users. The less distance the users have to travel to get data – the less opportunity The Blob has to get in the way.
  • Performance Testing – Don’t short-change testing of your application for performance inefficiencies before release. Best to find the unnecessary gaps and crevices in your apps where The Blob may hide, and refactor them away.
  • System Maintenance – Keep your servers, workstations, and other hardware and system software up to date with latest (or near latest) fixes and versions. Also, ensure that your hardware is packing enough power to match the needs of your app. The Blob loves slow, deprecated and overworked equipment, so don’t indulge it.

Evil #2 – The Trickster

It’s MO:

The Trickster is a deceptive villain indeed. It will stoop to any level to gain access to your application information, in order to use it for its own malicious purposes. The Trickster’s bag of tricks include identity theft, mis-direction, denial-of-service (blocking out the good guys), using your app as its own weapon, and many of gimmicks. Its goals range from being an annoyance to downright destruction, with profit and notoriety somewhere in between.

Weapons to fight The Trickster:
  • A Strong Framework For Your App – This same weapon used against The Blob, can prove to be valuable against The Trickster as well. A strong framework narrows the places in which the The Trickster can play, bringing it into the light and exposed for better detection.
  • Adherence to Security Standards/Practices – There are a plethora of standards, practices and guidelines that can be followed to help ensure a secure application. There is no 100% guarantee against a security attack (other than not building the app), but your security efforts should match your application needs for secure operation. In defining, designing, building, testing and deploying your application, keep mind that The Trickster is always lurking, so always be on the defensive.
  • Secure Data At The Source – Protect your application’s data as close to the source as possible, while still maintaining the level of functionality required. This includes minimizing the data retrieved by your app to what is really needed a particular point in time. The less opportunity that The Trickster has to hijack your data in transit, the better. Unfortunately, some of the weapons (like this one) that work well against The Trickster tend to benefit The Blob – so you’ll need to clearly understand your priorities in the overall war against these villains.
  • Defined API and Unit Testing – Clearly define the API (input and output – including exceptions/errors) for each of the sub-components in your application. Verify each sub-component with Unit Tests to ensure your app supports what is needs to support/enable and nothing else. Check out my post on this topic – How the API and the Unit Test Can Save the Software Industry. The Trickster loves to take advantage of loosely defined/implemented interactions between components in your app – well defined APIs help to enforce the rules for all, including the Trickster.

Evil #3 – The Garbler

It’s MO:

The Garbler is a master of confusion. You never know it’s there, until it’s too late to do anything about removing it. The Garbler inserts itself between you (the application implementer) and those responsible for providing requirements for your app – and proceeds to mangle and confuse the communication in-between. It sometimes even makes it way between peer developers. The Garbler’s main objective is to disrupt communication enough that the application turns out to be completely different from what was required/intended, sometimes forcing the creation of utter garbage that is full of bugs.

Weapons to fight The Garbler:
  • An SDLC Process – By far the best way to fend off The Garbler is to follow a Software Development Life Cycle (SDLC) process. Doing so will greatly help to solidify and standardize the communication between roles on any software project, as well as help ensure that the proper steps are taken (and deliverables produced) that moves the application forward towards a quality product. With an SDLC in place The Garbler has little opportunity to inflict confusion into the process.
  • Completed Functional and Acceptance Testing – As an important safety net, functional and user acceptance testing provides key opportunities for the effect of The Garbler to be corrected and cleaned-up. Testing should happen often and should not be considered as an optional step. The Garbler is probably the oldest and most experienced of the evils, and it is quite persistent – so take advantage of all opportunities to prevent it from doing its dirty work. It’s unlikely that you can completely stop it, but every attempt should be made to minimize its effect.



It is important to know your enemy – these evils sure do know your application. There are other villains out there, but these three are probably the most notorious. With the weapons mentioned, you can arm your app for battle.

Now go forth and fight the good fight!

One Comment

Leave a Reply

Required fields are marked *.

*