The Jerks

Blog

Back to blogs


Summer '23 - A retrospective

Every summer, I like to set a number of goals so I at least always feel some pressure to be busy. I usually don't complete all the goals I set, but that's fine as this is only to keep me busy; I leave myself the freedom to pick up new projects or even abandon the original projects. This summer was no different; however, we had a number of last-minute trips which hampered my productivity. I'm not complaining too much, as I saw more of the USA this summer than any summer before. I caught the "travel bug" towards the end of our travels and was even trying to rationalize a trip out to Reykjavik, Iceland before my wife pointed out that all our travelling was unsustainable. For anyone who knows me, this is a complete departure from my normal personality of hating travel; I prefer staying at home or hanging out in the city in which I live. I've seen nothing but contempt for tourists in the media, online, in real life, etc. and have no wish to become one of the individuals the natives laugh about behind their backs.


Goals for this summer

At the beginning of the summer, my goals were


md4tj

md4tj (Markdown for The Jerks) is the static website generator I've built in Elisp. I originally started it as a joke for illustrating the fact that Emacs is not a text editor, but rather a Elisp runtime. Due to a bunch of projects I worked on before (none of which are anywhere online), I became quite accustomed to Elisp's string processing functions which are excellent in my opinion. The code itself is rather ugly (definitely something people would use to defend the idea that lisp is a write-only programming language) but I'm able to easily understand it after a while. The website generator was mostly working at the beginning of the summer, but one of the most important features I added over the summer was a blog generator that fully generates a blog page and also an RSS feed for the blog. With the addition of this feature, I'm considering md4tj feature complete and once I stomp out a couple more bugs, I'll probably do a full write-up for it on this blog.


Open Card Table

Open Card Table fills what I perceive as a void in the FOSS gaming community - an extremely simple, terminal text-based "card table" engine. The engine is written in C and the games for the engine are written in Lua. I want this program to run on literally any *NIX system so I'm trying to keep it as simple as possible. Games are written in Lua 5.3, and networking is a first-class concern rather than an afterthought. At the beginning of the summer, I had a very simple demo - 2 player pong on the same computer. Due to n-key rollover, it's basically unplayable with 2 people but it does demonstrate a lot of features of OCT. At the time, I did not have networking implemented at all. I started on a very railroaded brutalist networking implementation at the beginning, and then scrapped this in favor of a more flexible queue-based system. As of right now, I have all the backend networking (the C-side) implemented, "tested", and working. I was hoping to finish the frontend (the Lua-side) by the end of the summer in the form of an easy-to-use server and client library that automatically facilitates people joining and leaving the game. Unfortunately, I did not finish this but hope to sporadically work on it and finish it by the end of this year. When the frontend is implemented, it will be super easy to create multiplayer card games and I hope to pump a bunch out.


Drone

My friend and I have been trying to build a drone since high school. We have the drone built, but it has fallen into disrepair and we never wrote the software for it (I'm too obstinate to use a ready-made solution, I want to use this as a learning opportunity for control systems). I did not touch the drone this summer.


G13 driver

The Logitech G13 is a USB keyboard for RTS and MMO turbo-gamers who need to assign macro keys to optimize their APM. It features 22 extra keys that can be bound to keys or key-combinations in the official driver, an LCD display, and a mini-joystick. I got it because I thought it would be a fun peripheral for 0 A.D. and Age of Empires II. Unfortunately, it has no official Linux driver (and if it did and wasn't open source, I probably wouldn't use it regardless) but it does have a userspace driver. This driver is excellent, except for one thing: it only supports binding the keys to a singular key; it does not support key-combinations rendering this basically useless for enhancing 0 A.D./Age of Empires II gameplay. I was going to hack in support for key combinations, but didn't get around to this at all. I'll get this finished eventually (I've been saying this for the last 4 years).


Travels

Over the summer, I ended up in a total of 7 different states with all my travels. What follows is a summary of these travels.


ISCA

I started my summer off with a trip to Orlando, Florida to attend ISCA 50, courtesy of my lab. I hate flying, so I chose to do a road trip. My wife went with me and promptly disappeared to Disney World. This year, ISCA (International Symposium on Computer Architecture) was part of the once-every-four-years FCRC (Federated Computing Research Conference), so there were like 6 other conferences to wander around in the same building. I had a good time listening to the PLDI (Programming Language Design and Implementation) talks, which are much closer to my research interests than the hot topic of ISCA this year - hardware acceleration. I also sat in a couple of STOC (Symposium on Theory of Computing) but I have too low of an IQ to understand those; talking to a couple of STOC presenters it turns out that they didn't understand most of the talks either - the vibe seemed to be that TOC research is extremely tribalistic with little cross-talk between subtopics but of course I very well could be wrong. I got to meet a bunch of computer architecture celebrities and put faces to names on author lists of papers I've read, including David Patterson, Margaret Martonosi, and Kunle Olukotun. I talked to a lot of industry people and it looks like RISC-V is finally getting a lot of attention outside of academia, so that's something to look forward to in the coming years. I wandered around the conference for like two days until I realized my advisor was there; she didn't even know I was going which was pretty funny. Once she got ahold of me, I was introduced to a lot of people that helped her through her PhD journey including what my advisor called my "academic grandfather"; he promptly reassured me that I was his "academic grand-embryo". Fair enough, I'm still far out from achieving my PhD. The conference featured an excursion to the Kennedy Space Center; we had a meet-and-greet with two astronauts and a late-night reception with food and drinks. I had to leave the next morning, but I did manage to stay to hear Norman Jouppi's talk on Google's TPUv4.


San Francisco

We went to San Francisco this summer to visit family; my cousin was graduating high school. We walked up and down the Golden Gate Bridge, saw the trolleys, saw some self-driving cars, marvelled at the armed guards at the local Target, had way too much chocolate at Ghiradelli Square, and jumped into the Pacific; the normal tourist stuff. Getting there was a hassle, as we took off at 2:00 AM when our flight was supposed to leave at 8:00 PM; the flight suffered from a combination of some flight computer failing tests and the airport closing the main runway after midnight. The entire trip was extremely rushed (we only spent 4 days in Frisco) and we weren't going to lose a day because of a bad flight so we powered through the first day on basically no sleep (I don't sleep on flights).


Blairsville

We relaxed for several days in the mountains of North Georgia.


Wisconsin Dells

The Dells is the Vegas of the Midwest; what happens in the Dells stays in the Dells.


All in all, I think I had a travel overload. The last month of summer was among the most unproductive of my life - I had the post-travel blues.


Vidya

The summer is my time to play vidya. I try to avoid vidya for the most part during the school year and save it for breaks; that way it is more special to me. I started many games this summer, but finished very few. I was hoping to finally finish my game of Divinity: Original Sin with my friend but we never got around to that; we literally started around 3 years ago I believe. I rediscovered Poker Night at the Inventory and Poker Night 2; which made me sad about Telltale Games' demise. The world just isn't interested in adventure games anymore unfortunately. I started Sam & Max Hit the Road and got quite far into it, but unfortunately my save was corrupted so that killed that attempt. I got a couple of levels into Death to Spies which is a pretty fun game in the same vein as Hitman. I unfortunately got trapped in a section and didn't feel like working my way out of it, so that killed my playthrough. I started my third attempt at Divine Divinity but got bored as all with all other attempts and dropped it. I mostly finished Hyperbolica, an adventure game taking place in non-euclidean spaces. Once I finish it, I'll post a full review. I discovered swbfspy, a reimplementation of the GameSpy master server for Star Wars Battlefront and Star Wars Battlefront II, allowing online multiplayer for people in my very specific situation of not using Steam's or GOG Galaxy's multiplayer. Unfortunately, it's basically dead but occasionally I'll find one or two humans on the servers. I also tried out Star Wars Battlefront III Legacy, a mod for Star Wars Battlefront II featuring the assets of the almost-finished-but-ultimately-cancelled Star Wars Battlefront III. It's fun, but I'd like it better with multiplayer. I tried out The Void but lost quite early on; I barely understood how the game works as it is unlike anything I've ever played. I will definitely pick it up again someday when I have more time to figure out the mechanics. Finally, I started on The Operative: No One Lives Forever which came to my attention when I searched "Dumbest first person shooters" on the internet. It is definitely a fun game, but I didn't have the motivation to continue after the second level due to wanting to play other games and wanting to work on projects. On my Nintendo Switch, I beat (but didn't 100%) Super Mario Odyssey and almost 100%'d Super Mario Bros U Deluxe but my save got deleted.


Conclusion

All in all, I had a great summer. I would have liked to been more productive, but what's done is done. I've got a very busy semester ahead of me, but I'm looking forward to Christmas break to sit back, relax, and finish off some projects.