Andrei Stepanenko
I am a Software Engineer with a broad set of interests that include:
- High-Performance Computing
- Embedded Development
- Programming Language Development
- UI/UX Design
- Game Development
- Software Architecture
- Project Management
I have a passion for learning and trying new things as a way to refine my skills in collaboration, organisation and solving real-world problems.
Work experience
Software Engineer at Spectral Compute
General-purpose GPU software solutions
- Implementing library features ranging from high-level APIs to low-level intrinsic functionality involving close communication between CPU and GPU
- Ensuring compatibility of the solutions with open-source projects, extensively testing them and contributing improvements for correctness and reliability
- Feeding into the company discussions, staying up to date with the big picture of the projects and highlighting non-trivial connections between their parts
Developing a web interface for custom hardware
- Building a high-quality dynamic UI/UX, collaborating with stakeholders to develop a unique design language and achieve the desired look and feel of the product
- Implementing additional ways to process data on the backend which pushed the limits of what’s possible and made it easier to use the hardware to its true potential
- Unifying and optimizing the frontend implementation, targeting responsiveness, accessibility and presentation clarity, introducing tests for the critical UI components
Software Engineer at Dreams AI
Distributed online gaming platform
- Worked in a team of 10 developing the system from scratch, which included the establishment of requirements, designing the platform’s architecture and a custom message passing protocol, followed by iterative implementation of the project’s parts
- Used advanced correctness and security techniques which included separation of responsibility between components, automatic message validation and exhaustive testing using generated data, as well as fine-tuned collection and presentation of various metrics
- Was a liaison between the developers and the clients, significantly simplifying the project architecture, finding more optimal solutions, and effectively reducing the cost and length of development
Extensible fraud detection system for a legacy online gaming platform
- Developed an external isolated validator for high-frequency event streams coming from the online gaming platform, which audited the system, verified the integrity of game results, and provided both computational and financial metrics and alerts
- Helped the client maximize revenue by detecting anomalies, eliminating security breaches and foul play
C++ Software Engineer at 1C Juniors Developer Centre
Customizable Java application launcher
- Created a cross-platform launcher for a Java application, which served as a wrapper and would set up the environment, handle errors in a predictable and user-friendly way, and support Unicode on the majority of possible system configurations
- Documented the project extensively for it to pave the way for better support of Unicode and unusual environments in other applications, the results of the internationalization research included modern C++ solutions and techniques for it and were added to the company’s knowledge base
Technician at Innovations Laboratory, Moscow Institute of Physics and Technology
- Set up services to help staff with the education process, such as shared Windows and Linux servers, a network file storage
- Maintained physical and wireless networks in the department, including a virtualized firewall, physical network switches and cables
- Configured the servers, 100+ PCs and associated hardware for optimal running conditions
Personal projects
I have worked on many personal projects – they are my favourite way to learn new things. Here are some projects I would highlight:
Obsidian ftvkyo
Obsidian ftvkyo is an Obsidian plugin that accommodates my workflow. The development process allowed me to reflect on the workflow and improve it greatly, and this project helped me achieve a huge productivity boost on a day-to-day basis.
Hovert60
Making something physical, something you can touch can be very exciting. More so, making something interactive, and what’s more interactive for a software developer than their keyboard? So, I decided to design and make a wireless, split & hardwired (no PCB) keyboard from scratch. Learn more in the devlog posts with the Hovert60 keyboard tag.
Lazy Keymap
Lazy Keymap is a generator of keyboard layouts and their reference cards. My keyboard has an irregular shape and custom firmware, and the OS keyboard layouts are also non-trivial. This project reduces the burden of configuring that all by hand by providing a unified configuration format that expands into the firmware sources, OS configuration and a compact reference card.
Tekutonu
Tekutonu is a simple voxel engine written in Rust and aimed at learning Vulkan. It’s not the first time I’ve experimented with voxels, and this project is interesting because of the lessons in engine architecture and the development process I learned.
Other personal projects
I have many more personal projects, they include:
- Full-stack applications
- TypeScript (React), Node.js, Electron, Next.js, TailwindCSS, Rust (tokio, async-std), PostgreSQL, Docker
- Flutter, Dart
- Experiments with programming languages
- C++ & LLVM, Rust, Scheme and other LISP-likes, TypeScript
- Small 2D and 3D games
- Java & OpenGL, Lua & LÖVE, Godot, TIC-80
- Making 3D models for 3D printing
- Autodesk Fusion 360, Blender, OpenSCAD
Activities
I also have hobbies outside of tech:
- Camping & Hiking: I have a goal of walking the Pennine Way with my friends, and we have walked 90 kilometres of it already (by Feb 2024)
- Photography: I love to take photos to preserve memories about places and events, I publish roughly 10% of the photos I take, and my album has been going since November 2020
- Reading & Writing: I think good publications are very inspiring, and I want to write things that would inspire others in the same way
- Board games are a good way to meet other people, while also being interesting purely from the game design perspective, and I even led some TTRPG games (like D&D) for my friends
- Video games such as Factorio, Outer Wilds and Souls-likes can tell interesting stories and even teach things like patience and strategic thinking
Leading Student Council’s IT department at DIHT, MIPT
This role was my first big step in the profession. I gained some experience in Project management, Full-stack development and supporting legacy systems. I also learned soldering and modified and assembled multiple custom door Access Control Systems that used campus cards and integrated with our website.
Member of Edinburgh Hacklab
- Learn more about the organisation at the Edinburgh Hacklab Wiki
- I went to EMF Camp 2024 with Edinburgh Hacklab (and had a great time)