Hi, I’m Elina Shakhnovich

Welcome to the clumsy collection of notes (in progress) on all of my digital explorations, which include graphics programming, math, theoretical CS, hardware hacking, embedded systems, and everything else I find exciting and semi-adjacent to the topics mentioned above. Don’t get too surprised if there’ll be a mishmash of seemingly unrelated things - I will, most likely, go into painful detail about their connections.

Hopefully, my writings and doodle-y illustrations-diagrams will open a window into these fields’ playful spirit and serve as progress bars on various projects.

Conjuring Trees, Virtually and Without Magic

My full-time attention goes into co-creating a plant growing simulation game. As it’s often the case for indie games that follow the universal formula of “always an unexpectedly more time-consuming undertaking than I’ve assumed it to be”, I’m the “go-to person” for everything that needs to be done.

Our game focuses on growing realistic, procedural trees and plants generated according to novel algorithms and techniques (no plain L-systems; really cool optimizations and graph algorithms!). They respond to different environmental factors, such as light, nutrients, and soil moisture, with the end goal being ecosystem restoration.

I can mostly describe myself as a graphics, game engine, and overall game programmer and somewhat of a game designer. Cool tech alone can’t create an immersive and captivating experience that pulls one’s strings, makes one plan and iterate, and anticipate the next result of a mechanic, so I’m trying to take careful game design into consideration as much as possible.

The bulk of my daily tasks, though, include working with or designing custom bio simulation, graphics or procedural algorithms, designing and programming the game and graphics engine, and much more.

I’ve transformed into a hermit tirelessly programming in their cave. Putting some extra-nerdy technical details into writing that everyone could enjoy (aside from my less-technical devlogs at our game’s website) is my way to take a peek outside.

Worker Bee, Soldering Boards, and Plans

It seems like I’m masochistically drawn towards small teams with overreaching goals, regardless if it’s working on games or rolling up my sleeves at the intersection of hardware and software development.

I’ve previously worked as an embedded systems engineer in a tiny but fast-paced company with big clients and ambitious, innovative international projects.

At the time, every engineer architected and devised project development plans for whole products practically on their own or in teams of two - starting from the client’s idea to delivering the MVP. I was also eventually responsible for creating the project R&D plan for an autonomous vehicle, which included offering a realistic solution for long-term hardware and software development based on the client’s needs.

My colleagues and I often had a running joke about how a year at this company was akin to five years at a larger company regarding personal and professional growth. Throughout working on designing the software of whole products and closely working with electronics engineers, I had the opportunity to not only write drivers, large APIs and parts of an embedded OS, but also architect how all the different parts communicate with each other and design long-term software development plans with future needs in mind.

I developed a keen interest in technical sales and R&D (aside from just systems programming) due to the incredible diversity of large-scale tasks that led to the realization of how a good software product doesn’t exist without even more excellent communication on all sides of the table. I came to believe that sometimes a client doesn’t really need a flying carpet, and it’s my job to find the opportunities that would actually work for them.

Throwing fancier tech at a problem is not always the solution, rather less complexity and more conversations are likely the better answer. It ties into understanding the end user and the overall market and figuring out realistic tech solutions, so I’m excited about researching this aspect whenever I’m thinking of or presented with a new product idea.

The Dance

Magic doesn’t exist, but the closest real-life equivalent is a virtual world that lives on sheet music of binary voltage signals. Doesn’t matter if it’s a game, simulations of galaxies, or a platform for cozy online communities; it’s always a personal portal into another space. The programmer is the conductor arranging the notes. The hardware engineer and the factories pressing and printing chips and pathways on boards inside our computers assemble the orchestra, ready for symphonies.

There’s a buffet of endless ingredients we can mix to create tools that help us understand and communicate with not only ourselves but the universe. I always wanted to intertwine my love for the sciences and math with art but didn’t know how.

I thought I would become a physicist, but couldn’t imagine, at the time, how I could make it a little more playful. The romance of old labs, reclusive knowledge-seeking, and letter-writing describes modern programming more than the contemporary physics lab.

It took me quite a while to figure out how both programming and math open the doors to all of the most delicious curiosities. Math as the study of logic systems and how to think of seemingly unsolvable problems differently, conceptualize the very domains and approaches for something fundamental, and create computational frameworks for them. Programming and hardware engineering as tools that bring ideas to fruition, creating palpable or visible objects and experiences.

The nature of the early programming communities, open-source software, and hardware hacking carries the romance of alchemists and the tinkering, rebellious curiosity of aircraft pioneers. It’s also in the power of programmers to help open up science and make it more playful, among other things.

I see programming as a tool that helps me work on my interests with many opportunities to weave art, math, and physics together into one playground. Over time, it has also become increasingly important for me to create communities around tinkering and exploration in tech, such as organizing Rust Tallinn, to pay forward the enthusiasm and a welcome sense of togetherness.

I jumped around a lot from performing and making music, writing short stories, to taking a deep dive into philosophy, to helping at a film set; to researching at school if there’s a correlation between EEG and MRI results and if it can be computationally expressed, to switching majors from Physics to Computer Engineering for more programming and hacking after spending some time at a HEP lab, to eventually dropping out and replacing university with learning on the job and meticulous self-study.

I’ve created my warm virtual home, together with towers of books and many shelves with endless tools and toys. Now I know that it’s alright to combine everything one’s interested in on their own terms. To create, experiment, and iterate after falling over and over again, only to get a little closer to the mountaintop of understanding.