Connor M's Homepage

About Me

I am a computer nerd interested in a variety of things. I like programming goofy but educational projects in my free time. I also try amateur pentesting in VM's from time to time. I also do less nerdy things that don't involve computers. I am a student pilot, currently working on getting a private pilot's license.

If you want to contact me, I can be reached at the email address that ends with passinbox.com and has public.gloomy186@ before it. Apologies for the weird method, but it is to avoid web-scrapers finding my email and sending me tons of spam. Also, that email address is weird because it is using a forwarding service so I don't have to put my real email on the internet.

About This Site

This site is something I made with simple HTML and CSS. It is hosted on a server that I built myself that sits in the living room. I prefer that to cloud stuff that I can't control. People called me crazy until Crowdstrike happened. (Okay, they didn't, but my point stands.) I was hosting stuff like Jellyfin, Gitea, Ollama, and Home Assistant, and thought it would be cool to put an actual website on here too, so I did.

Projects

I mentioned in the About Me section that I do goofy programming projects. Most of my projects that aren't for school are publicly available on my selfhosted gitea instance. Here is an outline of the projects I have released with some information about each one:

Markov Chain Text Generator

I did this project on vacation recently. I actually asked my ollama / openwebui instance what some fun programming projects might be, as I wanted to write something but couldn't think of anything right then. It generated a list, and I remember this one sticking out to me, partially because I vaguely remembered my brother, who is a math person, talking about Markov Chains at some point. Anyway, I researched what it meant by that, and thought that learning more about basic language processing would be interesting, so I tried to start writing it. I am a big believer in learning by doing, so I tend to go into side projects like these intentionally unprepared so I can learn more from what problems arise in writing it, and because I would rather do that than read a bunch about the algorithm before writing it. It is worth checking out, there are some funny examples worth reading.

Minimax Tic-Tac-Toe

I did this one on the same trip as the one above. Initially, I went into the project with Minimax not in my vocabulary. I just wanted to try to make a tic-tac-toe bot, and see if it could beat me, and wanted an exercise to understand more about how computers play games. It isn't on my git yet, I will try to add it soon.

In my initial attempt, I wrote something similar to Minimax, but much worse. My initial attempt played every possible game from that game state all the way to the end. It looked at the total wins and losses possible from each next move available, and it took the one with the highest ratio of potential wins to losses. The flaw with this method can be described simply with one example: let's say I have three moves available, a, b, and c. If I pick a, I can win 9 ways and lose one, from there. (Yes, I know these numbers don't make sense for tic-tac-toe. The game in this example is irrelevant.) If I pick b or c, I can win eight and lose 2. My original bot would pick a, but if the one loss possible for a could be forced by the opponent in the next move, that would make a a guaranteed loss, assuming my opponent saw it.

My Minimax implementation makes the best move it can while assuming the opponent plays optimally. The implementation is pretty standard, so I won't go into too much detail here. If you want to see more, you can look at the code once I upload it, or check out Wikipedia.