Start
First, Happy New Year!
After many years of reading and admiring the blogs of other game developers and graphics programmers, I decided to make it a resolution to maintain a blog of my own. I have been wanting to collect my thoughts in a centralized location, as well as build a platform with which I can make more of a name for myself. In this post, I’ll introduce myself, then talk about my ideas for posts, and finally describe my graphics programming background.
Background
I became enamored with virtual 3D worlds since the moment I laid eyes on a Playstation game as a baby. The concept of being able to control what you were seeing really hooked me, and as I continued to play all the video games I could get my hands on, my appreciation for the art form grew wider and deeper, until I knew that I had to make a video game for myself.
I was ten or eleven years old when I started trying to use GameMaker to make my masterpieces (I really wish I still had those old projects, but alas). I would try to show my friends and family, but never got much of a reaction. My folks weren’t about to encourage me to spend my time on toy-making. As such, I gave up shortly thereafter. I felt that I was doing a really bad job, and I didn’t have a foothold with which to learn more about how to actually make games. I felt stuck and occupied myself with other things for the next several years.
I was seventeen, and a senior in high-school, when I decided to teach myself Python so that I could write a Twitter bot. The experience showed me how much I loved programming and how much potential as a programmer I really had. I studied hard, and attended OSU where I majored in Computer Science, while also doing many personal programming projects, including some game attempts, on my own time. I got an internship at Battelle, a very ethical nonprofit research institute. After graduating, I began my first full-time job as a DevOps engineer at a local FinTech company (I know, I know).
While working full-time, I taught myself how to write 3D graphics applications using OpenGL and Vulkan, and in February of 2024 I started a new job at LunarG, where I currently work on tools related to the Vulkan ecosystem.
Post Ideas
First, I’d like to blog about my experiences developing my own games and programs. I have implemented a few non-trivial things, and have heretofore felt like I’ve already wasted opportunities to share my experiences. Well no longer!
Second, as someone who began his programming life in a self-taught manner and was later made very frustrated by dogmatic, object-oriented programming instructors, I have many strong opinions about the culture we have surrounding discussions of “good” code. Casey Muratori’s excellent article about code organization really saved me back in the day, and forms a large part of the foundation that supports my current beliefs on what it means to write “good” code.
Finally, I’ve also been inspired by frame breakdown articles such as these, and as sucham planning to produce my own write-ups. I have already decided to tackle the renderers of Final Fantasy XIV and Monster Hunter Wilds (when it’s released), but I’ll also keep an open mind to any other games that come along.
That all said, this is where you can stop reading if you’re not interested in my graphics programming life story. I hope you enjoy the upcoming year of posts!
My graphics programming life story
I wasted many years believing that I needed a teacher in order to learn difficult concepts, so it was finally in the summer of 2019, after taking a terrible and useless graphics class in college, that I tried learning how to program 3D graphics in earnest. I knew that I had to get over my fear and pursue the knowledge I wanted through any means I could muster. That said, I began teaching myself OpenGL by reading the class textbook and learnopengl.com so that I could write a small sample program I named model_viewer. Because I just can’t help myself, the program also integrated with SteamVR so that I could interact with the scene using my HTC Vive.
Here’s a demo I recorded of the program in February 2020:
Of course, a large part of my motivation to learn 3D graphics programming was to make my own game using custom technology, so not long after reaching satisfaction with model_viewer, I moved on to trying to make a full VR game using OpenGL and OpenXR, creatively named vr_game_prototype. It was basically supposed to be Ape Escape but in VR, I thought the concept had juice. It came pretty far along, and I learned a ton and had many “firsts”, but eventually I lost interest in completing it due to becoming fed up with OpenGL’s API design.
OpenGL’s resource binding model felt too restrictive, so I wanted to learn one of the modern, lower-level APIs such as DirectX12 or Vulkan. Having always believed in open technology, and thinking that learning the hardest API made the most sense long-term, I started teaching myself Vulkan in February of 2022. The product of this work was a project I named vk_viewer. I implemented cascaded shadow maps correctly, as well as COD: Advanced Warfare style bloom, integrated an open-source physics engine, and more accolades you can check out by visiting the repo.

After the success of that project, I felt cofident enough to apply to be a speaker at GDEX 2023 for their Developer Day that year, and got in! I gave a presentation where I walked through the triangle rasterization pipeline, and then explained what I thought would be the best way for a new graphics programmer to come to grips with the discipline, including what tools to use, books to read, and Discords to join.

Headshot I used for my GDEX 2023 talk
It was a pretty low-key affair, but I really engaged with my audience in-person, as well as on YouTube where many YouTube commenters have expressed their appreciation for the usefulness of my talk, which has meant a lot to me.
Regarding vk_viewer, I lost interest in the project after getting frustrated with Rust. After which, I started a C++ Vulkan renderer project in order to bolster my resume. Ironically, I sent my resume to LunarG only a few weeks after I started the project, but I suppose my interview and failed PR to Dolphin convinced them I knew enough C++ to be productive.
I have since started a new project, but it’s still very much in its infancy.
Conclusion
Thank you so much for reading the entirety of this article and for reading the forthcoming posts, of course. 😎
>> Home