Welcome to my website!
My name is Alexander Volnov and I’m a software engineer.
My main areas of interest are:
- Graphics programming and game engine development
- Generic code and metaprogramming
- Software optimization
- Procedural generation (audio synthesis, textures, and 3D models)
- Library development
I develop software in:
- C++ (most of my projects)
- Go (backend for my web projects)
- 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:
- OpenGL (or OpenGL ES, WebGL as its subsets)
- Various Windows APIs
- Posix and Linux APIs
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.