About
Most of what I enjoy about software engineering is working out how a complex system functions beneath the surface, then using that understanding to build reliable tools. Operating systems, networking, and multimedia systems have all held my attention because they are fundamentally knowable. You can always trace what happened, follow the data, and understand why a component behaves the way it does.
My journey started in industry where I built practical utilities. I wrote tools that pulled data off industrial equipment, moved information between backend systems, and audited files across networked machines. The work was practical and offered fast feedback, but I constantly met the edge of what I actually understood. I was opening network sockets and using file systems without knowing what happened behind those abstractions once a function call returned. That gap in my understanding led me to graduate study, where I focused on working down through those lower layers to build things like custom kernels, media codecs, and raw network implementations from scratch.
When designing software, I strive to make my work clean, predictable, and resilient. I try to build tools that are general enough so that accommodating a new use case simply means changing the inputs, rather than rewriting the internal logic. Today, I enjoy working on software that sits near physical hardware while keeping the final interface straightforward and usable for the person on the other end.