When Not To Program (Email Address Validation)

Have you ever been denied a purchase because your email address, that you use successfully for many other purchases, was deemed “invalid” by some 3rd party site handling purchases for a software company?

Enter the commonly-used regular expression, as found all over the Internet, to validate email addresses:

^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$

This regular expression allows any number of letters, numbers, dashes, or underscores before the “@”. But, that’s it.

So an email address like this:

mail—–i_____l_D@somedomain.com

is valid.

But what about special characters?

This is exactly the problem our reader encountered. The real problem (failure) encountered was not just a too simplistic regular expression, but the fact the email address didn’t need to be validated at all.

Imagine this workflow:

1. The user goes to a site to buy a neat software product upgrade.

2. He chooses to pay with PayPal.

3. He goes to the PayPal site, logs in, using his PayPal email with the special character(s) in his email address.

4. He is then redirected, after PayPal validates his credentials, back to the third-party payment site to complete the software purchase.

5.  But, the third party payment site, for whatever reason, chooses to validate his PayPal email address. Then, due to the simplistic regular expression they used, like the one above, they deny him the purchase with: “Email address is invalid.”

To add insult to injury beyond (1) faulty incorrect use-case analysis and the (2) wrong (too simplistic) regular repression, the email address is read only so the user has no way to complete the sale!

One of our favorite user interaction books: “The Inmates are running the asylum”, by Alan Cooper, describes these kinds of ridiculous user technology interactions.

The problem here, completely missed by the programmers at the payment site, was that the PayPal email address should not have been validated in the first place. If it’s good enough for PayPal, it’s already valid.

Apparently, no code reviews ever caught this problem either.

However, even with the incorrect use-case analysis by the third party payment vendor, they should have probably consulted even the most basic of resources for a more general regular expression to cover most, if not all, email addresses:

https://en.wikipedia.org/wiki/E-mail_address

This article discusses, among its many considerations, possible special characters in the ‘local part’ of the email address.

Thus, the following regular expression, though still unnecessary given the use-case and user workflow, would have worked and completed the sale (the user’s goal, after all):

^([a-zA-Z0-9_\-\.!#$%&’*+-/=?^]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$

——–

Conclusion:

The difference between a programmer and a computer scientist, sometimes, is that the programmer will just “code”, where the computer scientist will just “think” (first).

In today’s world of “how fast can you create this functionality?”, thinking is sometimes a scarce commodity for anyone. Yet, for successful Web sites,  thinking about “user goals” is key. User goal analysis is beyond the scope of this article, but it’s a fascinating topic.

Here, the user goal was to: COMPLETE THE SALE for me.

Sadly, the user goal failed (wasn’t correctly considered) for our reader who, even after notifying the software company involved after being denied the purchase (nothing happened to fix the problem!), decided to stick with his old version of the software.

And, the software vendor LOST A SALE for a completely unnecessary reason: for slopping coding when no coding was necessary and when no coding would have been better.

Enjoy!!!

—-

Please read our disclaimer available from our home page

“It was a Sophisticated Hack”

You may have read this headline about the “very sophisticated hack” in a letter sent to you when a company or other data collector gets caught with lax security that they only then, after the (latest) hack, start to patch.

Thus, by all outward appearances, most companies seem to be reactionary: – IF a data breach occurs – THEN, a company take some kind of action. Then, the company often makes the data breach “sound” like there was absolutely nothing they could have done about it — had they *been* proactive in the first place, of course.

Getting your personal data takes at least two steps:

1. Breaching a company’s server and firewall safeguards — Most of the efforts to keep your data safe are usually here.

2. Accessing and then downloading data — Encryption needed to protect data if server breached.

You are probably now wondering if companies encrypt (scramble) your most personal data, like health data, on their servers.  We can’t know for sure, but it appears that in most cases, based on all the disclosures from the companies themselves, they don’t.

What we do know is that break-ins and theft of your personal data is happening at higher and higher rates. Companies are not accountable to us and seem to suffer no penalties for what we, as customers and citizens, must go through to deal with personal data being compromised.  

A rare exception is that Target has proposed a settlement from the 2013 hack for up to $10,000 for each customer for damages.  From the Target hack, hackers stole information from 40 Million credit cards. (This settlement is pending approval at this time.)

The evidence that our data was not secured (encrypted) on a company’s server comes when we’re warned, via a “it was a sophisticated hack” letter from the company to us that … “hackers have obtained personal information”.  If the hackers have obtained information, then it was not encrypted or the letter would indicate this fact and we could breathe a small sigh of relief.  Furthermore, this one letter is usually the last thing we hear from the company since the hackers are rarely, if ever, caught.  

It’s interesting that most of us use encryption every day without usually even thinking about it. We encrypt our hard drives, we encrypt our iPhones (standard in iOS 8 with password) or other devices, we encrypt our credit card purchases over the Internet, etc.

Although you might feel secure with the little lock icon on your browser, it is not enough to use HTTPS to secure your Internet traffic during transit if your data is then stored unencrypted on an insecure server. This HTTPS-only expectation is like taking a armored truck (in this example, the secure HTTPS “transit” piece) with cash to a (non-secured) table at a restaurant (in this example, the possibly insecure server where your data lives) and leaving the cash there (and hoping the cash would still be there the next day).

————

While no company can promise total protection and security of online data, at Hurricane, our private clouds are encrypted using AES 256 bit encryption. To connect to your cloud data, you must additionally use HTTPS.  Thus, your cloud data is strongly encrypted on the server itself and in transit.

Furthermore, we use industry Enterprise Linux with advanced firewall filtering for your additional security and piece of mind.

Please contact us for more information on setting up a private cloud for you with your domain account already hosted by us.

——–

Please read our disclaimer available from our home page

Smart Marketing 101

Smart Marketing, 101

Personalized or data-driven marketing to your customers, “smart marketing”, is something few, if any companies actually do. Most companies still just send the “blast-a-gram” to everybody with zero personalization or forethought. These types of marketing “messages” typically get thrown into the trash without the recipient (home owner, or other recipient) even glancing at the (wasted) mailing.

By following a few simple steps, you can improve your odds of getting a positive customer marketing response. And, at the same time, not waste time and money trying to sell your services to people who don’t want them or perhaps couldn’t even use them. There are no guarantees in marketing, of course, smart marketing or otherwise, but with some filtering, you can weed out the least likely to use your product or services.

Below is a simple example of how just using simple customer data and a database could save you lots of money — even on the first mailing. The amount of money saved on this first example could buy database software for several employees!

This example assumes you have a database (of some type), a label printer, and a way to print labels for a 5×7 mailer.

————

Let’s say you’ve been in business for 10 or 20 years and you have 1,000 customers. Now, some of these customers may have only used your service once, moved away, don’t use the particular service your marketing flier covers, or are the best customers ever. But, how do you know?  You could go through each of the 1,000 customers one at a time by paper, but this exercise would take days if not weeks every time.  

We need a better way: a real computer database of our customers — which is usually very easy to set up.

Now, using “traditional” (non-smart) marketing, if you had just ordered 2,000 5×7 color mailers, which for our example, cost $2.00 apiece after postage, you would spend $2,000 to send a mailer to each of the 1,000 customers in your database.

Is this “smart” marketing? Nope. Just because you used a cool computer to print out the 1,000 labels on a cool new label printer could mean you’re wasting money faster using technology.  Instead, doing an even relatively shallow analysis on your customer data could narrow this list extensively (save your marketing dollars) and improve your odds of getting a response.

For this example, to narrow the list, let’s just assume we apply a “filter” to our database to our data so we only include “active customers” for the mailing who:

1. Have done business with us in the last three years.
2. Have done at least $500 business with us.
3. Actually use our product or service in the mailer.

Now, after applying this simple filter to our customer data, instead of all 1,000 customers, we now have 250 that meet the selection criteria, the “filter”, above.

So, using our simple filter, we’ve…

1. Saved $1,500 from the mailing cost (we already paid for the fliers, but we can still use the unsent ones later) and
2. We are sending fliers to “active customers” who have the product or service we’re promoting.

And, because this filter is part our our database, we can use it over and over. Note too that since part of the filter above is “date-based”, the rule/filter will potentially show you different customers on each filtered list over time. That’s cool since you don’t need to do additional work to show the current list each time you run the marketing report, label printing, or whatever.

Note that this example’s definition of what an “active customer” is a “business rule” and it’s never guaranteed to be correct.  Each business would need to define and test out their own business rules and modify as necessary. Hurricane could help you define business rules for your business.

The idea with a business rule is to define rules which describe aspects of your business that you can use in the database software for decisions. For example, what does it mean to be an active customer?  Or, another business rule might define “what is a problem vendor”?. Perhaps you track issues with delivery, quality control, or other metrics. This rule might be as easy as how many times you need to have issues with a vendor before you need to take corrective action.

In this example, we didn’t discuss if you had a customer’s email address and you used that instead of snail-mail in your marketing to save even more money. For example, your database software could “loop through” all the selected filtered customers. Then, if a customer record had an email address, and that customer was OK with marketing emails (you track that contact preference too), you email the marketing information to that customer instead of printing a label and snail-mailing an expensive flier. Or perhaps you do both: print a mailer and email. A nice flier in the mail, personalized in some way for a customer, might have a better impact than an email message. That’s another possible business rule — Always print a mailer and email if possible.

Finally, to further personalize your mailer, perhaps you use a larger label so you can include the name or brand of product the customer has.

—-

How do you get started with smart marketing? Some questions for thought below.

1. Do you use customer data?
2. How do you use it?  Database? Excel?
3. Can you search it?
4. Do you support your customers using that information when they call you?
5. Can you take your database software “with you” to the customer site?
6. How do you enter new information and keep your database up to date?
7. Do you personalize your customer marketing?
8. Do you track marketing responses?
9. Do you track each date a customer event occurred?
10. Do you know what types of products you offer each customer uses?
11. Do you collect email addresses for customers and also track which customers are OK with email marketing contacts?

Many companies can’t answer at least some of these basic questions.

At Hurricane, we can help you set up a customer database, import existing data, and get you started with smart marketing.  We can help you set up your own database in your office or in the cloud. We can also get your database system mobile and connected to your home office. You can start with a small system and grow that system as your needs grow.

Many companies will try to sell you you an expensive “CRM” system to market to your customers. However, for many small- to medium-sized businesses (< 250 employees), a CRM system could be much more than you need, is expansive, may require lots of other “supporting” software, and often, is difficult to learn and use.

We can start you on an inexpensive database platform and even teach you how to use it if you want to maintain it. If and when your needs grow beyond that initial database, we could transition your data to another database.

Let’s get started!

Please contact us today for more information!!!

——–

Please read our disclaimer available from our home page

Are You Using Lazy Software?

Have you ever gotten a dialog message similar to the one below when trying to use a program?

If so, what is the point of this dialog?

Basically, this dialog, the program, is telling you that:

(1) it has a serious internal bug or has found an actual file system problem that it is not handling at all
(2) it has given up
(3) it has dumped the problem in your lap
(4) it wants you to click “OK” — that it’s … “OK” (it’s NOT OK)

Unhelpful dialogs like these are often from lazy programming, poor technical reviews, or other problems. These programs, instead of focusing on “user goals”, only follow their internal structure – making that implementation painfully aware and exposed to you, the user.

What was the user’s goal in this case, anyway? Clearly, the user just wanted to check the activity log and the program should do everything it can to make that possible. Elegantly-designed programs do not give you these types of ridiculous error dialogs.

Instead, a well written program would instead possibly:

(1)  fix the problem in code automatically so you would never see the dialog in the first place, OR
(2)  fix the problem in code and possibly warn you that the program created, in this case, a new “activity log”, OR
(3)  if all attempts failed, some suggestions, in the dialog about what you might need to try, OR
(4)  other stuff….

Since creating a new file, as with the case above, is so utterly simple for an application program, why wouldn’t the program do it? Good question!

Trying to figure out the problem yourself could be tricky since other programs, all sharing the same log folder as in this case, might correctly re-create the log file if it’s not found leaving you with too many variables to know for sure what’s happening (again, not that you should be the one trying to figure out why the program isn’t working correctly).

In Java, for example, creating a new file, assuming paths are correct, etc., is as simple as this:

    // if the log file is not found, for some reason…
    File logFile = new File(“logs/error.log”);
    logFile.createNewFile();

Internally, (sadly) the program in question most likely caught the error but rather than the program dealing with it, it just dumped the problem in your lap. Programs with dialogs like the ones above may have not gotten much, if any, review by technical management. In many cases, management isn’t technical to begin with and is focusing on “shipping software on time”,  or other non software quality goals, which can make oversights like these more likely.

——

Using a well-written program is a joy. Seeing the internal implementation bleed out of the program with unhelpful dialogs isn’t (a joy).

So, if you get a dialog like the above just remember that it was up to the program (the programmer) to do the work and make every attempt to fix any runtime issue found. Is that unhelpful dialog a sign it’s time to ditch the program and find a better one.

Good question.

Enjoy!

——–

Please read our disclaimer available from our home page

We Have The Technology — Telework Now!

It’s fascinating watching the endless, and worsening daily traffic backups on the local news, which begs the question —why don’t more people telecommute – at least a day or two a week? Why isn’t there a national telecommuting initiative?

And, with the Coronovirus of 2020, a teleworking society is even more crucial.

Although telecommuting isn’t for every job, there are so many jobs where telecommuting can work (also called “teleworking”), telecommuting could make a huge difference not only in traffic congestion, but in other areas as well.

Below is a brief list with both the benefits and the challenges that exist.

Telecommuting Benefits:

  • Reduced traffic – with coordinated effort, virtually eliminate severe traffic tie-ups
  • Reduced need for a car in the first place
  • Reduced gas and other car expenses
  • Reduced environmental damage from car exhaust
  • Higher productivity – instead of sitting in traffic for hours a day, employees can be doing productive work
  • Smaller office spaces needed (money savings for company)
  • Employees are more awake since they don’t have to up early to “beat the traffic” (and for some still being exhausted after getting home late from traffic the previous workday)
  • Reduced daycare cost for kids
  • Be at home for sick family, pets, other needs
  • Reduced distractions (talking coworkers, unproductive meetings, and such)
  • Empowerment – feeling valued by the company
  • No need to endlessly build new or wider roads for ever-worsening traffic (hint: traffic is winning)
  • Happier and healthier employees

Telecommuting Challenges

  • Some don’t want to do it
    • There will be employees who want to work in an office. Management needs to therefore have a “plan” so folks who are able to telecommute share in telecommuting.
  • Some can’t do it
    • Some employees aren’t able to focus or be productive without an office environment. Some exceptions must be made in these circumstances as these employees might be less productive telecommuting.
  • Some jobs aren’t right for it
    • Service jobs require on-site, for example.
  • Management by attendance mindset
    • Need for metrics
      • Managers need to measure productivity. Sometimes, managers use management by attendance. Simply stated, this attendance method means that …If you’re at work, you MUST be doing something. Seriously?

Not to create a false equivalency in the benefits and challenges section above, the argument for telecommuting, at least part time, far outstrips the arguments against.

Conclusion

The technology for a telecommuting workforce is here today (and has been for 20 years or more) so why are we still sitting in cars, in traffic, hours each day? By working offsite, for those jobs (many of them), which allow it, we could reduce our carbon footprint, be more productive, and happier. And, companies who embrace telecommuting could enjoy greater profitability with more productive (and better rested) employees.

There is more hope than in years past for teleworking. So, as workers have worked remotely during the Coronovirus pandemic, many, if not most, managers, have realized that remote work isn’t so bad after all.

Let’s get with it!

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Please read our disclaimer available from our home page

Absolute vs. Relative Values

Absolute vs. Relative Values (Don’t be fooled)
————————————————————————————————————
It’s amazing just how misleading some claims being made are. OK, it’s advertising, but seriously?

When an ad claims that their product “improves ‘x’ by 50%”, does that mean it improves ‘x’ (or whatever ‘x’ is) by 50% relatively or absolutely, and what’s the difference?

Example 1 (using fictitious lightening data):

Say, the absolute risk of being struck by lightening is 0.00001% or 1 in 1,000,000 (made up number for illustration).

Then, let’s say the absolute risk of being struck by lightning while holding an umbrella under a tree in a thunderstorm is 0.00003%. So, in absolute risk terms, we’ve only increased our risk by 0.00002% or about 1 chance in 333,333. Not that much in absolute (real) terms, right?

What an advertisement might do to make their product more compelling would be to focus on the relative risk instead of the absolute risk (or benefit). That is, focus on the risk increase itself “relative to” the initial absolute risk of 0.000002.

Mathematically, that “relative” risk just a percent difference, or:

((Risk2-Risk1)/Risk1)*100

(0.0.00003 – 0.00001)/0.00001)*100 = 200%.

WOW. Looking at only the relative risk, it’s now a 200% (relative) increased risk!
(or 200% “benefit”, depending on how they’re pitching the number.)

To summarize, our new (fictitious) absolute risk of being struck by lightening by holding an umbrella under a tree during a thunderstorm is: 0.00003% or about 1 in 333,333.

Our relative risk is 200% higher to not having an umbrella and not standing under a tree in a thunderstorm. That (fictitious) risk was 1 in 1,000,000.

So the next time you hear that something is x% more or x% greater than something, ask yourself x% of “what”?  Since this % increase is often a relative and not absolute difference, that part is left out.

Below is a graph split into two sections (separated by the horizontal red line). The top portion has the relative risk pairs and the bottom portion (below the red line) is the absolute risk pairs. Note that the risk pairs below the red line are indistinguishable at even a tiny 2% scale.

The actual data for this graph are:
——————————————————————————
x-axis (vert)        y-axis (horizontal)
——————————————————————————
1                0.000001
2                0.000003
3                1
4                2

Caveat Emptor
——–

Please read our disclaimer available from our home page

The Potential High Cost of Rapid Development Software

Most software developers work under tight deadlines so finding software that makes their jobs easier or helps getting the job done more quickly is always a good thing, right?

Well, maybe not.

Consider the case when the company that makes your cool Rapid Application Development (RAD) software tool decides to do something “it” considers important, but you don’t see the benefit for you or for your organization at all.

For example, maybe the company decides it’s time to jump onto the “Forced Subscription Model” (as opposed to the “perpetual license”, which has long been the norm). Maybe the company never tells you anything about future direction leading to more uncertainty.

Then, after multiple software versions, you find that company won’t support the current product version the instant the new product version ships. And, to make matters worse, that product may not function properly when there’s a new version of the OS. And, of course, the company’s only suggestion at this point is to “upgrade”. Yeah, right.

And you have work to do, but now the software isn’t working!

Assuming only constant costs increases, when costs go up, the money for those costs needs to come from somewhere. Either you eat those costs or you pass them along to your customers.

Say you decide to stick with the current version, but that version all of a sudden has bugs with a new OS release. You don’t want to upgrade since could mean you have to sign up for a new subscription model. But, best case, if the fixes are only in the new product, you’d at least have to upgrade for “bug fixes”.  

How do companies get away with this behavior? (Hint: a basically good product in a niche market with little or no competition.) Look at ever-increasing cable company prices for another example.

In any case, you now decide it’s time to look for alternatives, but because you picked this unique (read: Proprietary) product, there really aren’t any readily available alternatives like one that could read your files natively and let you keep working.

You lack, for example, an alternative like OpenOffice, LibreOffice, or any of the other MS-compatible office suites if you wanted to, say, ditch MS Office.  Or, say you use a Java IDE and the company starts to charge money for a subscription model. Now, in this software space, you have other alternatives, some free, so you can leave quickly if you want. Yes, you may lose some productivity, but you can keep working. It’s interesting to note that the Java IDEs that charge yearly fees don’t charge that much. Hmmm, maybe we’re on to something.

But without these alternatives available, you may be stuck for the time being.

It’s unlikely that anyone considers a vendor “lock-in” issue when they get that fancy software that lets them “be more productive” right away. And of course it’s always possible that you’ll still be able to stick with that company too, despite the lock-in, even if you can pass along the costs.

But what about future cost increases and uncertainty in general.

Thus, it’s a good idea to consider the cost of proprietary solutions up front as they’re not always the cost saver, due to productivity increases found, as hoped or even promised.

If the software you’re using was database software, as one example, a possible solution would be to come up with a migration plan to move to another vendor. That plan’s costs would need to be carefully considered up front and for the long term.

So, carefully consider that RAD software up front and possible migration alternatives to handle various (not only the ones mentioned here) scenarios!

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Please read our disclaimer available from our home page

Are Community Colleges Pricing Themselves Out of the Market?

Not too long ago, a community college might charge up to $100 for all the classes you might want to take after the “full load” of classes. Today, a single 3 credit class can cost over $500!  Then, you have to buy books, parking, and possibly pay other fees previously not charged.

Various studies have shown that college tuition increases have outpaced other costs of living such as housing.

Without examining the causes of constant tuition increases, what are some of the effects these increases have?

1.  Huge debt loads for students
2.  Deciding if college is even worth it
3.  Only taking classes that are absolutely required
4.  Community colleges not offering some interesting classes (side effect of 3)
5.  Difficult without a community college financial commitment to find instructors who can teach specialized classes for working professionals
 
Thus, unlike in the past where you could count on a community college to offer a class that could be helpful to you as a working professional, nowadays the offerings are much more vanilla. Given the huge cost of a single class, professionals have better options that take less time:

1. A one-week class for a given software product or framework
    (Expensive, but focused, and fast. Exactly the content you need.)
2. Harvard, MIT, and others have plenty of FREE online courses
3. A yearly subscription to Lynda.com or similar
    (Huge course offerings.  No instructor support.  Some plans include sample files.)
4. You-Tube Videos
    (Free)
5. Tutorials
6. User groups

So, why spend $500+ for a single community college class, assuming there even was a course that could help you improve your professional skills, when there are plentiful cheaper options that are more focused, have less hassle, and have more user interaction?

Several reasons to opt for the community college approach include the slower and methodical pace, evaluated assignments, and instructor feedback. The college environment is compelling for many students — especially those changing fields. Yet, this option is moot if the classes simply don’t exist for the working professional

Thus, except for being a better deal relative to four-year colleges for “required” courses, community colleges are indeed pricing themselves out of the market for working professionals looking to improve their skills. This market exclusion is from either by not having the financial commitment to hire specialized instructors for those classes or by continually raising prices on the vanilla classes that might help career changers.

Some people are thus now rethinking the value of college, in general, for reasons stated here and for other reasons.

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Please read our disclaimer available from our home page

Using a Database: How To Get Rid of Junk (Snail-) Mail

One of the questions we often get in our intro to databases (conceptual intro) course is…in what kinds of real world problems could we use a database? One answer is consider using a database to help track a lot of data or complicated data, or both.

We wrote a recent blog on stopping junk mail so we won’t duplicate that, but instead expand on it to explain how you might use a database to track contacting companies to opt out of mailings and other activities.

Although in our intro to databases class we go through several case studies explaining different types of applications for which students could use databases, this blog posting discusses an applicable example. As with blog postings, we won’t go into any implementation details (see our Programming Tips for coding!), but rather just pose certain questions. This blog is by no means assumed to be the best way or only way to stop junk mail; it’s just one idea.

The basic idea is to model the opt out workflow that captures the data and automates as much of the letter writing, label printing, reporting, and other activities.

Getting started…

So how exactly would you stop all junk mail? What would the database need to look like (table structure)? What types of responses from companies would you need to track? How long does it take to stop all junk mail?

All good questions.

Considering the OPT OUT portion of the database:

To set up a database, first consider that you need to capture the company information but also each response you get from the company. Should you have a separate address table? (Probably) In database terminology when you have a single table possibly related to multiple items in another table, this is a “one to (possibly) zero or many” relationship. In our intro to database course we talk about different types of relationships that you would model in most databases. We also discuss the cardinalities with these relationships (1:M, 1:1, M:M, M:1).

Document Your Assumptions for the System Up Front:

One initial “getting started” activity is to write down all your assumptions and then examine them later for refinement. It’s nearly impossible to get it all right the first time since what happens in the real world will sometimes defy logic. Your assumptions could be perfectly reasonable, yet the real world may challenge them.

One assumption you might reasonably make would be that you could just call the company one time and they’ll stop sending you junk mail, but this is rarely the case. Sadly, often, it will take two, three, four, or more attempts to get the company to stop sending you junk. Your contact attempt may include letters, phone calls, and in the worst case even submit a USPS prohibitory order so the USPS will contact that company on your behalf. Do you see this might be a “one to many” relationship somewhere in our database?

Determine if Your Application Is a “Workflow”.

Since all of these activities involve workflow (do step 1, then step 2, …) you want to have the the database’s data entry, and other activities, fit that model.

With a prohibitory order, for example, you can automate much of the data entry using the data you already entered on the OPT OUT form. You already have, for example, the company information from the OPT OUT form so you could copy it (or just “link it”, referentially, depending on your design). Also, since at least two prohibitory order dates depend on the date the order goes into effect, then the database should calculate these two dates automatically after you enter the initial date.

Create a workflow diagram

The diagram below is a (early, draft) starting point to model what we want using a workflow approach. Once you diagram the system, it’s easier to spot workflow problems or other things in the database that might still need attention. You’ll more easily see that the diagram may be missing some decisions or flows. Or, possibly the flows that are there need refinement. Don’t focus on trying to get everything perfect in version 1, but rather get the basic flows as close as possible to how you envision they would actually work.

Note that the diagram below uses a UML “State Diagram”, which is useful for modeling workflow models.

Automate Letter Writing

Your database could also have multiple form letters you pick when you write a company to “OPT OUT” of receiving junk mail from them. You could modify the form letter for each company, if needed. You could automate printing a label for the envelope, too. The database could then save each letter you sent into the multiple contacts (as many as needed) for that company. You could even track postage.

Reports

You’ll also probably want a report showing you which orders are still in effect on the date you run that report. Another key use for a database: reporting.

Graphs:

Maybe you want a graph showing the worst junk offenders or possibly junk mail by type of mailing. How about a report showing the list of companies and the number of contacts for each company ordered by date? Your database may offer graphics or you may need a plug-in for your existing database.

Scanned Images

You’ll have to decide how much to scan and keep as part of the database. In this actual working example database, we captured the prohibitory order application, and the USPS prohibitory order received as searchable PDFs. Back in the OPT OUT form, we had the ability to capture an image in any of the possibly many interactions with a particular company (remember that the company table is related to one or possibly many contact actions. You could conceivably have zero actions if you chose to enter a company in by itself with no junk mail from them.)

Surprises along the way.

One of the things you will probably notice, once you start calling and writing companies to stop sending you junk mail, is that many companies are not really in charge of their data. Either they “farm out junk mail sending” to some third party or they don’t have sophisticated database folks you can talk to on their toll free number(s). If the company farms out their junk mail sending to a third party, you may never be able to get the message to the right person. It’s also possible since these companies like to send junk mail, that their hearts are not in stopping it just because you called or wrote them.

USPS Prohibitory Order – When they just refuse to stop sending junk

Fortunately, the supreme court decided in the ‘70s that you can stop any mail you do not wish to receive. Simply fill out PS-1500 and send it to the USPS (note the instructions). As described above, the workflow would capture all that information as well.

Conclusion:

We’ve covered a lot. Specifically, in our database, we are:

  1. Enforcing a workflow
  2. Automating date calculations
  3. Reporting so we know how we’re doing
  4. Graphing for getting the big picture quickly
  5. Supplying canned form letters
  6. Automating other activities including data validation
  7. Fixing user entry errors: if they enter “ca” for California, automatically change this to “CA”. Use Title Case fixes in other case, all automated!
  8. Tracking stamp costs in OPT OUT and Prohibitory Order forms
  9. Doing basic accounting for stamp payments
  10. Tracking the average time between junk mail for both new junk mail and junk mail actions with existing companies. This display uses a nice bar graph on our OPT OUT form.
  11. Tracking the average time it takes USPS to process a prohibitory order after we send it (about a month!)
  12. Printing labels if desired
  13. (More!)

Here is the nice graph that we show for 10 above:

————-

It’s probably clear that trying to do all these activities with complicated data, without a database, would be difficult if not impossible.

Even with automation, expect stopping junk mail to be, probably, a six month effort. (Companies don’t always make this easy.)

The database makes tracking and reporting straightforward, but for even low to moderate junk mail (a few pieces a day), stopping junk mail will take serious dedicated effort.

Finally, getting a “perfect” database application to model the real world is quite difficult. Consider all the bug fixes and updates for every piece of software you use. No other company, anywhere, can get any of their software defect free either. Perfect software does not exist so expect your database application to be a work in progress as you make it better and better over time.

Enjoy!

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Please read our disclaimer available from our home page

Ask Your Wallet if Forced Software Subscriptions Are Right For You.

Introduction:

 
Many computer users are too young to remember mainframes typified by large cooled rooms with raised floors, dumb terminals. and the data center overlords who “granted” you access to data, memory, and applications. Control was the key. And the computer overlords had it.

Fast forward to today.

You may have noticed that more and more software companies are going to the “Forced Subscription” (aka “Take It Or Leave It” — pay monthly) model often with their proprietary and required cloud access. This forced approach is similar in many ways to the mainframe model. And, perhaps unsurprisingly, this forced software model yields the best cash flow for the company. Shocking!

Control? As with mainframes (or other centralized control): you lose it.

This new forced subscription model, simply put, means you pay regularly – whether you use the software or not — or, usually, your software stops working. While this model is great for the company with regular cash flow (or else!), the model may not match how you use the software or want to pay for it.

Whether this software model bothers you is largely personal, but your choice to not pay until you are ready for a new version is currently being eroded with forced subscription software models. Also, as stated, loss of control of your data can go hand in hand with this subscription model, especially if the company forces their cloud solution on you.

The Case for Software Subscriptions

The case for software subscriptions includes always having the most up to date software, often not needing to configure, install, or maintain subscription software. No licenses to keep track of. For teams of people, a subscription often means making one regular payment for working software for the team. Whether these subscriptions should be forced on you as the only option available is the key point here.

The Case Against Software Subscriptions

The case against Forced Subscription software is compelling.

Number one among the various reasons against forced software subscriptions is that forced software subscriptions are, well, forced. Take it or leave it.

If the company then also forces their cloud “solution” on you to use their software, do you want these companies to have access to and even control your data? You should read the fine print in your Terms and Conditions before simply clicking “Accept”.

Moreover, do you want the drip…drip…drip of your money now regularly going to a third party for software you can, or used to, just update (and then pay for) when you wanted to?

Other Questions…

  1. Who at the software company has access to your “Cloud” data (aka, simply your data they store on their servers) Programmers? Admins? Others?
  2. What happens if you stop paying (credit card expires, for example)? Is your data access terminated, your data deleted, or what exactly? How soon is the data deleted if deleted?
  3. What happens if your data is lost by the company?
  4. Does the company have and guarantee backups?
  5. Is your data encrypted on a cloud (Internet) servers?
  6. Where exactly is your data stored?
  7. How private is your data?
  8. Do you need this software up to date all the time as a subscription might offer?
  9. What happens when the company is hacked? Security in general?
  10. Do you have control do permanently delete your account and your data?
  11. Once you’re roped into Forced Subscriptions, will companies try as hard to come out with new exciting software?
  12. Why pay a monthly free for software you might rarely use?

Unexpected Consequences—Where Did My Data Go?

The costs of forced software subscriptions can add up, both financially, and from unexpected consequences.

One of our readers had an issue, for example, with a well-known company she used for email. She paid a monthly fee for that email service and had used this company for over twenty years. Yet, one month, her credit card expired. And, in just 6 hours, before she could update her credit card information, the company had deleted all her server email going back 20 years! Multiple calls to the company, letters to the president, and other attempts went nowhere. Her email data was gone. Period.

We’ve Got You!

When using software that needs “The Cloud” (aka “a hard drive somewhere on the Internet” others control) to run, companies could use this dependency to implicitly force a software subscription model on you. Consider when, at some point, cloud access itself ceases to be free, or becomes more expensive over time (as you become more dependent on it), etc.

A Ray of Sunshine — Lots of Software Options

Fortunately, there are many companies that don’t force a software subscription model on you. Instead of Office 365 (subscription), consider OpenOffice or LibreOffice. Both these MS Office alternatives are free for personal and for commercial use. Instead of TextExpander (previously recommended, but now recently changed model to forced subscription and forced, currently un-encrypted, cloud storage of your data), consider aText (one time $4.95 fee). Programmers can use the free “Eclipse” instead of now-subscription IDE offerings. With IDEs as well as other software, there may be tradeoff between cost and productivity that you should consider.

Let Companies Know How You Feel:

Companies are really thinking about jumping on the bandwagon and moving to this model. When you contact companies with questions for support or other contacts, let them know how you feel about forced subscription models.

Conclusion

Harkening back to the mainframe computer days, “The Cloud” and Forced Subscription models put the control with a third party, not with you. And of course, that’s the point: keep you paying … or else (software stops working, data gone, …) While you may get convenience or slightly more up to date software, you are also giving up control and are now paying regularly just to use your software.

Forced software subscriptions are becoming more common, but many choices for avoiding forced software subscription exist and should continue to exist. Unless forced software subscriptions are right for you (they’re not bad in all cases), look around for alternatives and take back (or keep) control of your software!

Enjoy!

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Please read our disclaimer available from our home page