Christmas Hack

I tend not to take long periods of time off without something planned, but the use-it-or-lose-it nature of some of my PTO has led me to take the entire week of Christmas off. I’m expecting to spend Tuesday and Wednesday (that is, Christmas Eve and Christmas) at least partially with family, but that leaves me with three and four days off in a row.

I’d like to spend at least some of that time physically working on projects or chores around the house, but I would also like to use the time to get some concentrated effort in on an educational project.

So what I’ve decided to do is to identify a fairly clearly defined project outside of my comfort zone and attempt to complete it, with daily updates here. What I am currently looking at is writing a game with local netplay capability using SDL 2 and Objective-C. All of these are things I’ve been interested in working with or on, and none of them have much to do with what I do on a daily basis.

I’ve previously found building a little game (and game toolkit) to be useful in learning other languages, like Go. My web work relies a lot on the Internet, but it’s been a long time since I did any low-level networking code, and I might even be able to sneak in learning something like ZeroMQ.

SDL 2 has pretty shitty documentation right now, unfortunately — even the official site guides you to third-party tutorial content. I’ve worked with SDL 1.2 in the past, though.

Objective-C is currently kind of a wasteland outside the Apple compound, and I think that’s a shame. It’s an interesting language and it always has been the object-oriented C variant I preferred. I’ve been doing some work with C recently and I would really like to be able to take advantage of some of ObjC’s richer abstractions while still working in a relatively low-level, compiled language. ObjFW and clang are probably my best bet in Linux-land. If I really can’t get it to work, I’ll either look at Rust or resort to C, depending on my timeline.

My goal is to start first thing in the morning Saturday, December 21st and have something worth looking at by mid-day on Sunday, December 29th. I’ll create the repo and start writing code then, but I will be planning things (doing some basic sanity checks with ObjFW + SDL, coming up with a design document for the game, etc.) in advance.