18 Lines

15 Jun 2021

This morning when I logged on, my minimax kata was staring at me. The loop and the for were bothering me. It could still be better.

I used the opportunity as warm up before diving into epic.

After a short while, i left it with two core functions and three little helpers along with a few others that, were this an application would be in a different namespace, and no loop nor for. The core functions and the little helpers that consisted of 22 lines of code. I just looked at it again, and something caught my eye, so I just brought that number down to 18 lines.

Minimax in clojure in 18 lines. I feel like that’s pretty good. It could still be better, but to condense it much more would make the readability a little tougher on the eye. There’s another line I could take out, but then I’d have to call a helper function twice. I feel like that’s cheating.

I’m pretty happy with it. Ooh, just made another little move! That was nice. Cool.

Then i worked on epic & log in. Once I got all the tests passing in both, i started up the database and cleancoders, and attempted login, which i correctly assumed would not be authorized.

I got a pop up saying that this application wasn’t authorized. I noticed that the pop up had the old logo though. I let Micah know. He was in the middle of a meeting and asked if I could fix it. Eek! Commit to cleancoders.com? I’ve never done that.

I dove in and found the error in just a few short minutes. I double checked it, made the correction, restarted it, and tested the pop up again. New logo! I nervously committed and made my very first push to the cleancoders.com website. Cool.

Last night, i called my little brother just to say hi. That hello lasted for several hours and into the way-past-bed-time hour, but we had a good chat. I caught him up on the things I was doing. He caught me up on his life. We mostly talked about work and coding and this industry.

Toward the end, two things were mentioned. First, he mentioned to me that he’s thought about my presentation from a few months back quite a bit and that he was really impressed with both my passion and understanding for the need for safety in software. He told me that my previous career experience and my passion and adamant stand on safety is rare in this industry and highly necessary and valuable. That was very cool to hear.

This led to a conversation about Colonial Pipeline and JBS and the recent ransomware. I mentioned that one of my former companies (narrowing it down…) was hacked and had its entire company-wide network shutdown on them a few months back. There’s not a lot of detail about the event out there, but I’ve concluded that it too was likely a ‘ransomware’ event.

Why the quotes? Well, Justin and I talked about ransomware and how the public think that it’s an application that can be purchased. Then he asked me question: “What do you think ransomware is? How do you think it works?”

Me: Deer in headlights. “Give me a second to think about that.” I thought it through very literally as software is very literal, and finally replied.

I told him that my thinking leads me to believe that ‘ransomware’ is really just a server making several requests over and over to a target server; perhaps in the form of pings, perhaps in the form of emails to employees. It builds a stash of responses. Then from there it might use an algorithm to build smarter requests by either putting together combinations of keys & tokens & secrets obtained from the numerous responses or figuring out the encryption patterns or both.

He was pleased with my answer, said he fully agreed, and then elaborated on the topic more.

I was pleased too. I took a concept that I hadn’t really ever mentally processed before, walked myself through the basics of what would have to be done, and arrived at an answer that was probably true. That was a big moment for me too.

These past two weeks or so have been the first weeks since probably november or december of last year (that’s like 7 or 8 months!) where I haven’t felt like i was under an immense amount of pressure all the time. With the relief, i have been able to practice concepts more and think through problems. I think this is important as it expands my understanding.

That being said, it is necessary to be able to work under pressure as well, but these brief breaks allow for knowledge gained and stored away to be processed, inevitably resulting in greater abilities to work under pressure again in the future.