When Code and Law Collide

  • Post author:
  • Post category:
    regulation

A recent filing in a TCPA case uses source code to back up claims made by the plaintiff. The filing is interesting because it shows how hard it is to stitch together a logical narrative across the legal and software fields. 

You don’t need to know anything about TCPA to understand what follows, but some context will help. Having given dozens of hours of depositions as an expert in several TCPA cases, I am aware that the law has many nuances. The lawyers, I hope, will excuse the oversimplification.

The TCPA deals with the sending and receiving of marketing calls and texts in the US. One of the requirements to be liable under the law for unwanted messages is to use an Automated Telephone Dialing System (ATDS). One of the requirements for a software to be an ATDS is to have a random and (or) sequential number generator to store and (or) dial those numbers. 

Why it matters 

Typically, systems under litigation are complex. Rarely is a small snippet of code the smoking gun or the puzzle’s missing piece. When it is, the case may find itself at the Supreme Court.

People litigate because there is a difference of opinion on facts or the law that governs those facts. There is a sense of comfort when citing source code because only what the computer executes counts. However, as you’ll see in this case, it’s easy to miss the context, the code’s operating environment, thereby torpedoing your entire argument. 

State of play

For the plaintiff to win, they have to prove that the defendant is using a random and (or) sequential number generator. In this filing (27 pages making multiple arguments), the plaintiff claims that the defendant’s software meets the criteria because of the use of the “++” operator. 

Here’s the problem with that argument.

Aptly named the increment operator, the ++ Operator is shorthand for increasing a value by one. It also has a sibling, the decrement operator “–,” which does the opposite. 

If your computer could understand natural language, you could say something like:

"Please take the current value of A, increase it by 1, and store the new value by replacing the old value of A"

It is the same as saying:

"A = A + 1;"

or as a shorthand convenience to the programmer:

"A++;"

The brief is correct in that the source code has generated a sequential value and replaced the old value. The new value of A is indeed sequentially higher than before. But is the argument complete?

Not Quite

The increment and decrement operators are basic programming concepts that anyone learning Java (or a similar language) knows. They are typically used to build counters to track the number of times a computational operation is processed. Conceptually, such unary operators have been around since 1969! 

If the plaintiff’s argument were correct, every program that uses the “++” or the “–” operator is a random and (or) sequential number generator. It would not matter if it were a 9th grader writing their Hello World program or an expert building Fourier transform software. 

When the interpretation is so liberal that everything in the programming universe violates the law, either the interpretation is wrong or the law is obsolete. 

Be smart

Regardless of which side you’re on, be careful when citing source code. There is false certainty that comes when you use source code to bolster your argument. Source code is formal, and there’s only one way to interpret it–the computer’s. But most software is operating in complex environments, and it’s tough to make broad generalizations based on cherry-picked lines of code. 

In this case, unless the plaintiff can prove that the source code enables the software to generate sequential phone numbers, the argument is nonsensical.

The bottom line

There are several other gaps in the plaintiff’s argument, but the bottom line is to be mindful when citing source code. Ensure the legal statement and the source code are swimming at the same level. Not doing so will create a logic mismatch that will be easy to dissect and destroy. Instead of your statements clicking like lego blocks, they collide, creating a logical mess that the other side will gladly showcase.