Home

My name is Hugo. I’m a hobbyist programmer of nine years looking to enter the field of software development. I received my bachelor’s degree in computer science from the University of California: Riverside.

My biggest interests are in working close to the hardware, computer graphics, and writing performant code, primarily through SIMD vectorization. To a lesser extent, I am also interested in other forms of parallelism such as GPU programming and multi-threading. I’m particularly fond of C++ and Linux environments, although I also use Python and Windows as appropriate.

My interest in programming was initially motivated by a more general interest in computer graphics. Writing small scripts was useful for an artistic project of mine, however I eventually found that working on these scripts was more engaging than the project which motivated them. I grew to like the idea of developing tools for the production of digital art. I initially spent around a year focusing on Java, but quickly moved to C++ since it was more suitable for using OpenGL. For a number of subsequent years, I focused on programming graphics. I further familiarized myself with OpenGL and to a lesser extent Vulkan, using them to write some (frankly overly-ambitious) rasterizers, alongside some CPU ray-tracers. But I generally jumped between exploring various facets of the field: from rendering theory to writing shaders, from optimizing acceleration structures, to implementing procedural textures.

Around the same time, I also started familiarizing myself with the 3D computer graphics application known as Blender. Over time, I found myself gradually gaining an ability to answer the questions others would ask in Blender’s online communities. Doing this for a number of years earned me some recognition within one of these communities, a community that was eventually entrusted to me. With 1.2 million members, it’s one of Blender’s largest online communities, and one of the largest communities of 3D artists in general. Although, I no longer focus on programming graphics as much as I once did, I continue to use my technical knowledge to help 3D artists understand and make the most of their software.

While diving into computer graphics, I developed an interest in creating hand-optimized algorithm implementations. I became fond of utilizing specialized CPU instructions, particularly SIMD instructions, and leveraging knowledge of computer architecture to maximize performance. In doing this, I became familiar with the performance that modern CPUs can offer when programmed well, but also with how little of this potential is leveraged in practice. These realizations inspired a certain degree of frustration within me.

This has lead me to more recently developing an interest in programming language design. It seems likely to me that a well-designed programming language could make it substantially easier to write code that leverages modern hardware’s capabilities. Similarly, I believe it may facilitate the usage of patterns which although powerful are cumbersome to use with existing languages.

My Programming Blog - Thoughts and problems that caught my attention