Soon after I discovered the Spiral algorithm in New York, I shared my findings with my friend, Alex. Alex has a background in software development. After I described what I found, he said, “how did you even see this? I mean, no one is going to find something like this.” Election fraud researcher Jeff O’Donnell (Lone Raccoon) said something similar when I contacted him about the New York algorithms. He has said it many times since, including in a conversation within the last week or so.
I spoke with True the Vote’s Gregg Phillip’s about my findings by phone last May or June. He didn’t understand how I spotted the algorithm. My impression from him was that it was so unlikely that the fact I had found it was the most suspicious part of the conversation. I later met with him in person for a few hours to go over the details. Again, he was mystified how I’d manged to isolate what he felt was an extremely well-hidden algorithm. From his point of view, the people who designed the algorithm had every reason to expect it would never be found.
These reactions are typical of what I hear from software developers and others with experience dealing with databases, data obfuscation, even military intelligence. I spoke with one such person yesterday. I wanted to ask why he thought the algorithm makers would use the specific algorithm they used.
From what I’ve seen in my research, the algorithm, though complex to me, is simple compared to algorithms designed to be unbreakable. Not only that, but there are many “unbreakable” algorithms that come with normal devkits for software developers. There is no need to make a custom algorithm if all you want to do is obfuscate some serial numbers. There are plenty of off-the-shelf tools available for free.
The Spiral algorithm is not a “one way” cipher. It is deterministic. A deterministic algorithm is predictable and reversible. This type of algorithm is appropriate when you want to conceal something to be retrieved later. I had an idea why a simple algorithm would be used, but didn’t want to say what it was. I wanted my expert to say it first.
My theory was that it had to be simple because it was built into publicly available data that couldn’t be altered. Therefore, the algorithm makers had limited raw material to work with, combined with the fact they couldn’t reveal the presence of an algorithm in the end product. The fact that extra data was built into voter ID numbers had to be hidden, like invisible ink used to write a message in the background of an innocuous form letter. However, they only had so much space available on the letter, and could only use a certain type of invisible ink.
Before I had fully explained what I was going for, the expert said something like, “it is definitely a simpler algorithm than would normally be used for encrypting data, but you shouldn’t let that make you think that this is any less remarkable. What you did was find steganographically hidden attributes in the wild. I would argue that is much harder to do than solving even much more complicated algorithms.”
“The reason it is more difficult to find hidden data than to solve scrambled data is that in a normal situation, everyone knows there is something to solve. If you send an encoded message to someone, it looks like a coded message, even if its meaning isn’t apparent. There are people who love solving that kind of problem. This is why security protocols have to be upgraded all the time. No matter how complex the technique, someone will figure it out. In your case, you found something that wasn’t supposed to be there. No one could have known there was anything to solve. That is the hard part, and that is why steganography is such a powerful tool to obfuscate data.”
When I spoke with Jeff last week, he brought up the subject again, in the form of a question, “why do you think you were able to see this?” My answer, and the answer I intend to provide here, is that my computer graphics background had something to do with it. I don’t think it is the full answer, so I’ll try to fill in the gaps as I go.
First off, like many kids, I have always enjoyed puzzles. Particularly visual ones. However, I can’t claim to have always solved them using normal mental aptitude for such things. For instance, I once bought the Rubik’s flat puzzle. I fooled with it for a few hours and came no closer to solving it than when I started. I was frustrated. Then the phone rang. As I went to the phone, I thought, “I’m not even going to try and solve this thing. I’m going to talk to whoever is calling me and flip the sections of the puzzle without looking. If it doesn’t solve itself, I give up.”
I don’t remember who called, but it was a short conversation, about two minutes. As we talked, my hands continued to manipulate the puzzle, but I didn’t look. When the call was done, I looked down. The puzzle was solved. I haven’t touched it since. I have no idea how that worked, but it did.
I’ve had other intuitive moments like that. Quite a lot of them actually. So many, that I have been interviewed one or two dozen times on radio, TV, and podcasts just to talk about that kind of thing. I mentioned earlier in this SubStack how two dreams helped me refine my understanding of the Spiral algorithm. That isn’t unusual for me. It is less usual these days, because sitting in front of a computer all day seriously interferes with my dreams, but it does happen. Some day I’ll describe my dream about winning lottery numbers (I didn’t win, but the dream was correct).
The point of mentioning the foregoing is that we don’t always know how we do things. Sometimes they just get done and we are left to wonder, “what happened?” This is true even on the most mundane levels. If someone asks you, “Why did you like that movie?” most people feel prompted to justify their appreciation for the film. The same is true if they don’t like it. The bottom line, however, is that they either liked it or they didn’t. Once that fact is determined, anything a person might say is created after the position is taken, as a way to justify the position. In my case, I can say that my enjoyment of any movie often has to do with factors external to the film. Not always, but often.
For instance, if you’d asked me why I didn’t like Ant-Man when I first saw it, I would have said something like, “It had slow pacing, the jokes were obvious and not that funny, the photography was too clean, like a TV show, and there were some rude moments that offended me.” I may have actually said something like that at the time to my colleagues. If someone asked me why I loved Ant-Man the second time I saw it, I would have said, “It was hilarious. The photography was awesome. The pacing was rapidfire, the characters were interesting and likable, and the quantum realm sequence at the end was visionary.”
Same film, two totally different responses. Why? The difference between the two viewings is that the first time I went by myself to a matinee showing in a nearly deserted theater. The second time I went with my wife in a well-attended showing. Sitting beside her, I could sense her enjoyment of the film, enabling me to see it, at least somewhat, through her eyes. Today, I list it as one of my favorite movies, though initially, I didn’t care for it. My point here is that when people are asked to explain things, it is difficult to do because sometimes we don’t know why we did what we did, or how it was accomplished.
Here’s one that pretty much defies explanation, so I’m not going to try. I’ll just write out what happened and let you wonder how it happened, or how “I” did it. In 1990, I owned a traditional copier, the kind that uses toner to transfer an image to paper. One morning in March, I was making a copy when I had a paper jam. I reached into the paper slot to pull out the jammed sheet. When I pulled, I ripped the page from one side to the other. I had freed most of the page, but the fragment remaining was still causing a paper jam. To get it, I had to shove my hand deep into the guts of the machine.
When I did, it felt like I had plunged my hand into ice cream. I felt around for the paper I still had to retrieve, and wondered why my copier was so icy cold. Then it hit me, it wasn’t icy cold, it was burning hot. It was so hot that my nerve endings had scrambled the message and made me think I was experiencing cold. I had by then found the fragment, so I grabbed it, though that meant applying more pressure to whatever was causing the heat. I pulled out my hand, along with the ripped paper, thus clearing the paper jam.
The large pad below my thumb on the palm side of my right hand was now in pain. A lot of pain. A blister formed quickly. My skin bubbled up as if inflated by a bicycle pump. the entire region, about three to four inches across, was red. I called out to my wife, who was working on an illustration assignment in the other room. She said to put ice on it. We didn’t have any ice, but we did have frozen blueberries. I tried it, but the swelling kept growing. I then put it under the kitchen faucet and ran cold water over it. That didn’t do anything either.
So here, I was out of options. I didn’t know what to do. So I said these words aloud, “if there is anything to this prayer business, please God heal my hand now.” At the moment the last syllable left my mouth, the swelling started decreasing. Within seconds, it was gone. My hand looked normal. It wasn’t red, there was no pain. Ten seconds. That’s all it took. I later looked up a few things to understand better what happened.
I had a second degree burn on the basis that my top layer of skin had separated from from the next layer below. That means that the blistered skin was dead and should have sloughed off as new skin grew underneath. That process normally takes several weeks. My blister looked like the steam iron burn on this page. I burned it on the toner fuser of the copier, which can get as hot as 420 degrees farenheit. It was probably cooler than that when I grabbed it, because it had been a few seconds since I’d used the copier, and my hand would have had the effect of cooling it somewhat on its own.
Now we’ll look at the “normal” explanation, but please keep the above items in mind. My perspective on this is that all things can be explained, but it is hard to know what the right explanation is.
I started this by saying that I like puzzles. As a kid, that was certainly true. As an adult, I retained an interest, but no longer had a fascination for it. I was a good math student, usually first or second in my class, but I left high school when I was fourteen to start college. In college, I studied art and art history. I did not take math classes. This means that although I had been a good math student, the level of math I studied stopped in tenth grade. Geometry was the highest level I attained. No calculus, trigonometry, modulo, or any other kind of math.
I liked Geometry enough that I worked out a deal with my teacher. Instead of memorizing proofs and theorems, I asked to work out problems from scratch by myself, and then write the proofs based on my analysis of the problem. Instead of being graded on my ability to memorize the answers in the textbook, I asked for credit if my proofs were solid, and a fail if they weren’t. She agreed to my terms, and I did well in the class. That is, until my teacher had a heart attack and was replaced by a Czeckoslovakian physical education teacher. He didn’t know math very well, so we had to memorize the material. I was terrible at that, and got low grades from him.
Many years later, I became a 3D artist for Epic Games. I was one of their first employees. 3D art, it turns out, is all about geometry. That is, making 3D models is all about geometry. I loved this fact and used it to my advantage as I learned the tools needed to excel at the craft. A little later, I found myself working on some big budget films, like Space Jam and Spider-Man.
As my career developed, I became an expert at a task called “UV editing". UV editing, particularly in the early days of computer graphics, was a nightmare for anyone who had to do it. The term “UV” means “texture coordinate” in the same way that “X,Y,Z” are the axes of a coordinate system. X,Y,Z coordinates are usually “world coordinates” and UVs are “texture coordinates” that are local to a 3D object. World coordinates can be used to position a building on a street, but texture coordinates to put a tattoo on the arm of a character. If you used world coordinates to do the same thing, the tattoo wouldn’t move with the arm when it moved.
The people I knew in games and film hated dealing with texture coordinates. Most weren’t very good at it. At best, most were simply adequate. They could get the coordinates arranged well enough to do the job, but only if you didn’t look too closely. I was good enough at it that when I worked at Rhythm and Hues, I was asked to write a manual on editing texture coordinates for the studio. After I turned it in, one of their artists came up to talk with me about it. He said that when it came to texture coordinates, I was like Leonardo DaVinci. “Your UVs are beautiful.” This is roughly like saying to an auto mechanic, “your rebuilt carburetor is the Mona Lisa of carburetors.” An exaggeration, but well-meaning.
So, what is editing UVs like? It involves (in a bad case) looking at a huge mess of tangled vertices connected by overlapping edges (Figure 2), and figuring out which parts belong together. I had a better example of this from a model I worked on for the movie X-Men 2, but I don’t know where it is. The examples below are much simpler than the kind I frequently had to deal with.
The most complicated was a cathedral exterior for the movie Daredevil. It had millions of polygons, every one of which had to be individually found, organized, grouped, reprojected, and many more steps before it was done. The simplest way to put it is that I had to find which vertices (points) were connected to each other, use that to figure out which faces (polygons) were adjacent, then work out where natural seams belonged to eliminate distortion, then either create new seams or eliminate existing ones. After that, I had to make new projections to ensure all the polygons were the right scale and undistorted.
The act of looking at hundreds of thousands of overlapping polygons to find the ones that were related to each other felt very similar to looking at columns of voter ID numbers in an attempt to determine if there were two or more groups of numbers among them. As with polygons, I was looking for relationships that went beyond the simple fact they were all base-10 decimal numbers. If any of them could be differentiated, I could pull those out, just as I sorted polygons in texture space, and then restore whatever order had existed before the numbers were all put together in a big pile of what looked like randomness.
My official answer to the question, “how did you find the algorithm?” is that my background editing UVs prepared me for the task of differentiating unrelated items, recognizing related items, and organizing them into logical and meaningful categories. My unofficial answer is that there was more to it than that.
PS, with 100 posts in my archive, I have met and surpassed my target of one post a week. Instead, I am closer to three posts a week. This, I hope inspires some of you to take the plunge and subscribe. That way, you can see the posts as they are made, instead of having to search through the increasingly large stack of them I am making.
Post #100! In answer to a question that has been asked more than once
Congratulations on 100! and all while producing so much work product on the voter registration database. You, from the beginning, started in the right place. A builder has to start with the foundation. Most of us started "on the roof" with election results which led to people thinking they could clean up voter rolls and tweek laws to solve many problems as we continued to be robbed blind. We had no foundation. The minute I heard about your work, I knew you were "the key that would unlock the door" for us. Your writing is an added blessing. Thank you! You are opening our eyes to the fact that the bad guys are still not in our field of vision. We need to prepare to face the bad guys.
As a left-brained electrical engineer and a NON-graphics designer, your story and the way you tell it, makes it almost simple to understand. It seems that a melting pot of skills is required to crack the puzzle of these algorithms. I also think God has had a hand in discovering this evil.