The GUI Made Me Do It

21 Sep 2020

Since 1995 and before I was even ten years old, September 21st has been a date that has always struck me. It’s always been an important and reminding date. 25 years ago today, while Bust-a-Butt & I were watching my dad beat F-Zero on super-nintendo in the basement, we suddenly heard my mom call “Bob, quick come here!”. He dropped the control mid-race, and we all ran up the stairs to see that my dog Skittle had just died–i say horrifically, because to a nine year old girl any type of sudden death is horrific, but in truth, it was just that: sudden & unexpected. I think she actually went peacefully.

Anyway, it’s just interesting to me how a memory can be so ingrained into one’s mind–especially that of a child to the point that for 25 years, i’ve not been able to get past September 21st without thinking of her.

Again, anyway… Today was actually a pretty good day. I sat in on my dad’s webinar about the future of programming languages and got to hear some pretty interesting stories from his childhood, teens, & early adulthood. I also found interesting the point he made about how all programming languages have pretty much been written by a person–in other words, not written by a company or even a group of people. A single person. He also saved his discussion about the benefits of languages like clojure for last.

I’m very happy with my decision (or perhaps it was subconscious persuasion from my dad) to learn clojure first. During iteration today my brother asked me how I felt about using clojure. Specifically, he had first asked me if I’d used any states or state changes in my ttt app. My response was, “I don’t think so–well… ok, so… I hadn’t…but then… Well, the GUI made me do it!” He found this amusing, but it was actually the truth! The way quil is set up, it forced me to use state changes, which throughout my main program, I hadn’t used any state changes–which is pretty cool. I was able to create an entire game with rotating parts & players without changing a single variable outside of the main function. Inside the function, yes, the variables were manipulated, but outside of the function, the state of any variables remained immutable and unchanged. This is what he was asking about–how did I feel about this.

I thought back to writing the first big algorithm for ttt–mini-max. That was the moment when i really learned about recursion and how to use & manipulate variables without changing them externally. Like I said, I’m very happy to be learning clojure first. From posts of others that I’ve read, there seems to be an almost fear to learn a functional language like clojure–which i get; it’s not intuitive, but once you get it, it’s actually really nice. Additionally, i have no fear of learning a procedural language–java, python, whatever. I don’t think it will be hard to grasp after having learned a functional program. My dad told me that it will feel dirty, and that I believe. It’s easy to change a variable while challenging to manage the changing variables; but to write a program where everything at the end is exactly as it was in the beginning because it never changed to begin with; that takes some abstract thought–a different way of thinking. Even with just that said, it’s easy to understand that there’s less risk and more confidence, because you know the state of the entire program at all times.

As for ttt–i got the GUI to play computer vs computer! That was exciting! Now I just have to work out the bug in computer vs human.


Rex:
It was the strangest and most awesome thing, but about two days ago, I brought something to Rex, and he said “Thank you, Mommy.” What?! Where did you learn that word?! That’s amazing! I will bring you anything you ever ask me for, if you say thank you; i’ll even forget about trying to get you to say please (momentarily).

Also, tonight at dinner, I asked Rex what he had for lunch at school today, and he said “Food.” If I didn’t know better, it would have seemed to be sarcastic, but this was the first time that he hadn’t had “trucks” for lunch, so it caught me off guard.

Leo:
I swear to you that Leo has some kind of mind control possessing him causing him to have two goals: 1. Bite Rex (and really, anyone). 2. Find all ways to potentially kill one’s self. I know, the latter is a terrible thing to say, but seriously, what else would cause him to throw himself off the bed or couch; try to climb over the back of the couch; eat tiny choking size trucks or dog food; seek out plastic bags; try relentlessly to get into the bathtub; pull the child-protection plugs out of the sockets; force open the knife drawer; reach for heavy things that are just barely within reach to see if he can get them to fall on him; or repeatedly climb onto tables from he could fall off and get seriously injured?!