Voting Software and Structured Text

Hello World!

This week I’ve interviewed for a hyperloop lead position, worked with an abomination of an IDE, and learned some secrets about the voting machines in Yolo county that I’m leaking to the internet! Okay, I’m not going to actually leak the information, I’ll just post some funny and terrifying quotes from the meeting with the important bits taken out. My D&D character was also badly humiliated, which was fun.

So formal it has a zipper!

I’m hoping to lead a section of the hyperloop team next year, so I interviewed for a position this Saturday. It was a programming interview, so I wore my formal hoodie.

Right before my interview I went to the meeting for the OneLoop controls team, which was led by an undergraduate and a masters student. These meetings are typically a lot of fun, since if you get enough nerds in one room, interesting stuff tends to happen. Also the middle name of one of the team leads is Khan, which is fun for all the Trekies in the club. Anyways the meetings are extremely informal, and the team leads are very smart and willing to show everybody what is going on which is nice.

I left the meeting early and headed out to the room where the interview was going to be, but after waiting 10 minutes nobody showed up. I was a bit worried because while I was good friends with the team leads, I didn’t know who was going to be interviewing me, and I didn’t want to screw up. So I emailed the hyperloop team and asked what was going on. It turned out I was in the wrong room! So I ran down to where it was supposed to be, and was definitely very worried at that point. Turns out, the two people interviewing me were the same two people who had been leading the controls team! KHAAAAAN!!!!!!!

Related to hyperloop, the IDE we’re using is one of the most counter-intuitive abominations I have ever used in my life, and I’ve used some counter-intuitive abominations! Unfortunately I don’t really have a choice, because it’s the only thing that can run Structured Text. Structured Text is a programming language that is designed for factory automation. We’re using it on the Hyperloop pod to control the breaks, controls, and really most of the device. A bit of an odd decision in my opinion, but I’m not one of the leads so maybe they know something I don’t.

Basically, people who automate that machines that work in factories generally use “ladder diagrams” which work fairly well if they aren’t too complex. When they get very long and complex, they become extremely hard to read.

ladder diagram
Imagine this but several pages long. I have so much respect for the people who read these things.

So anyways, they wrote Structured Text to be easy to learn for people who are used to reading these things. I don’t know if it succeeds in that mission, but the company’s still selling this IDE so I imagine it does. Structured Text isn’t a fantastic programming language, but it works well enough and isn’t that difficult to learn. The problem is that the IDE is seriously lacking if you are trying to do anything other than ladder diagrams.

structured text
Those := signs are annoying! I keep writing them as = and getting errors

So the first problem I experienced with the IDE was that it only ran on Windows, and I have a Mac that can also run Linux. This wasn’t a huge deal, I just used bootcamp to boot up a Windows 10 ISO file that I legally downloaded from a legal website with my legal download app. But the real problem with this whole thing is the way variables work.

You see where it says Parameters and Local Tags? That’s where all the variables have to be stored. So when I wanted to define the variable count, instead of just writing a line saying count = 0; I had to go into this whole spreadsheet thing to define it. This is fine when you just have one variable, but when you start getting to ~50 variables, it’s a HUGE pain. Because there’s no way to define the variable in the code! If you need to know what a variable you are using is, you have to either remember it, or go through this big sheet that lists all the variables. All those “best practice” programing things are completely inapplicable.

Also it doesn’t work well with GitHub, because the IDE has special functions such as classes that run every few milliseconds. GitHub is a website where you can post your code, which is extremely useful for large teams where everybody is working on the same code. Normally you would just make a function and then call that function every few milliseconds, but this IDE has a whole system for doing that, and the information for that isn’t stored in the files. So if you upload all the files onto GitHub, and then somebody else were to download all the files, it would take some configuring to put all the files where they should be. So instead you have to compile the code and then upload the compiled file onto GitHub. The good news is, the editor understands the complied file you don’t have to do any configuring when running the downloaded code. The bad news is, if you want to see the recent changes on GitHub, the file looks like this:

ladder diagram

So anyways, I’m sure the IDE is great for ladder diagrams, but it needs some work when it comes to code.

I also did some work with the cyber security group at Davis, which is doing some work with the voting machines in Yolo county. While the stuff we are researching in regards to the voting machines isn’t top secret, they said they would prefer me not to post the information they gave the group online. So, instead of posting everything we learned about the voting machines, I’m just going to post some quotes from the discussion with the sensitive parts cut out.

There’s an entire GitHub page of exploits for the ___ they are using
- Undergraduate
It wasn’t random, and I shudder to think of it as pseudorandom
- Professor
Yeah, the _____s are going to hack that if they haven’t already

So my D&D character, Carxes Caryinax, is an extremely arrogant Triton Paladin who is the first in line to inherit the wealthy kingdom of Caryin in the elemental plane of water. He believes that Tritons are superior to other species, and the rest of the party are non-Tritons, so it’s an interesting party dynamic. Anyways, he was almost arrested for two weeks, and had to be bailed out by the other party members, who took this golden opportunity to humiliate him for being a specist jerk. It was some pretty fun roleplaying. Also, turns out that in our campaign world, there are “infinity stones” for each of the D&D stats (charisma, strength, etc). So we’re trying to figure out where to hide them so other people don’t get them.

May you be ever victorious in your endeavors!