Home page

Welcome to my website!

About me

My name is Alexander Volnov and I’m a software engineer.

My main areas of interest are:

  1. Graphics programming and game engine development
  2. Generic code and metaprogramming
  3. Software optimization
  4. Procedural generation (audio synthesis, textures, and 3D models)
  5. Library development

I develop software in:

  1. C++ (most of my projects)
  2. Go (backend for my web projects)
  3. JavaScript (frontend for my web projects)
  4. Other programming languages (Java for small Android apps, C# for small Windows-only GUI-utils, etc)

Usually, I avoid using any high-level libraries, engines and frameworks unless they are really small and easy to learn and modify. So I mostly write my code using low-level libraries including but not limited to:

  1. OpenGL (or OpenGL ES, WebGL as its subsets)
  2. Various Windows APIs
  3. Posix and Linux APIs

See my projects in the Projects section or in my GitHub account.

I strongly believe that code reuse by using libraries is broken. This is why I avoid third-party libraries so much. Inability to reuse code is the root issue in the software industry that leads to bloated software with exponentially growing complexity. I feel that it affects libraries written by me as well, so this isn’t just a so-called NIH (not invented here) syndrome.

In my projects, I constantly look for ways to write less code that does more things without sacrificing its efficiency. I try to achieve this by leveraging metaprogramming to make code more generic, composable and reusable. My experience shows that it works really well but the deeper I go the more difficult it becomes to continue generalizing code. I aim to find the best balance between the complexity of the generic code I write and its power to solve practical tasks.

My dream is to make a revolution in software development by creating a new technology that will allow almost unlimited code reuse. This is the long-term goal of my projects and I’ve been researching this for a long time. Particularly, Intra’s dev-next branch is a test area for most of my ideas about code composability. I’m also developing an early on-paper draft describing a programming language specifically designed for code reuse.