ayoree
Open to work · remote or relocation

Danil Aptin

Software Engineer

A developer with 7+ years of experience behind me. C/C++ is my main direction - it's where I found my place in commercial projects - and right now I'm widening my range toward Rust and Go. I love digging down to the essence of a task, to the answer to "why is it done this way?". Since childhood I've loved poking around inside devices, and that grew into my hobby - reverse engineering.

Experience
7+ years
Now
C/C++ Game Developer at Be Nice Games
Based in
Novosibirsk, RU · working remote
Languages
English C1 · Russian native

Experience

my stack trace
  1. C/C++ Game Developer

    Be Nice Games Herceg Novi, Montenegro

    - present

    Web games built on W4, the company's own engine. W4 has no editor - no scene view, no inspector, no drag-and-drop. Gameplay, shaders and tooling are all written as code and compiled to the browser through Emscripten. That constraint taught me more about C++ than any job with a GUI would have.

    • 50+ shipped mechanics
    • 100+ legacy bugs closed
    • 20+ projects delivered

    stack C · C++ · Emscripten · GLSL · Dear ImGui · CMake · JavaScript · REST

  2. C/C++ Software Engineer

    WizardSoft Saint Petersburg, Russia

    -

    A desktop cost-estimation application - roughly Excel, Access and Word fused into one program. I built the document logic: estimate creation, cross-document links, automatic formula recalculation and dependency resolution. Wrote MFC/COM UI components and ported several of them to Linux.

    stack C · C++ · MFC · COM · Visual Studio · Linux port

  3. Web Developer

    Fifth Dimension Russia

    -

    Industrial practice during college. Built a site plus admin panel on Laravel and designed the MySQL schema behind it. First time I wrote queries complex enough to be worth thinking about, and first time I touched data encryption.

    stack PHP · Laravel · MySQL · JavaScript · HTML/CSS

  4. C/C++ Developer, Reverse Engineering - freelance

    Self-employed Russia · remote

    -

    Where I stayed: C and C++. Game trainers to order - find the value in memory, hook the code that moves it, keep the offsets alive across patches. Reversed save and asset formats, wrote binary patches and DLL mods for games that never planned for modding. This is where the reverse-engineering hobby turned into paid work - the full picture is further down the page.

    stack C · C++ · x86 Assembly · WinAPI · Reverse Engineering · IDA Pro · x64dbg · DLL

  5. Python / Web Developer - freelance

    Self-employed Russia · remote

    -

    Commissioned work through the college years, back before AI grew to commercial scale. Started in Python: site parsers, Telegram and other chat bots, automation scripts, collecting and processing large sets of data. Then web - sites and admin panels in JavaScript and PHP, with the MySQL schemas behind them.

    stack Python · JavaScript · PHP · MySQL · REST · HTML/CSS

  6. Education (not counted in the total experience)

    Plekhanov Russian University of Economics Russia · secondary vocational

    -

    Honest version: four years I'd rather have spent working. The diploma has never once answered a hard question for me, nor helped me land a job (yet). Everything I actually needed I found and learned on my own anyway - because it was interesting.

Toolset

the part of my memory nothing can unmap anymore

Languages

  • C
  • C++ 11 → 23
  • Java
  • Python
  • TypeScript
  • JavaScript
  • PHP
  • GLSL
  • SQL
  • Bash
  • x86/x64 Assembly

C and C++ are two languages, and I'm comfortable in both.

Libraries

  • STL
  • Boost
  • Asio
  • Crow
  • Dear ImGui
  • ICU
  • PortMidi
  • MidiFile
  • GLFW

Build & debug

  • CMake
  • Make
  • Ninja
  • Gradle
  • GCC
  • Clang
  • GDB
  • Valgrind
  • x64dbg
  • IDA Pro
  • Cheat Engine
  • Wireshark
  • Git
  • Bruno

Domains

  • Systems programming
  • Multithreading
  • Concurrency
  • Low-latency services
  • TCP/UDP
  • REST clients & servers
  • WebAssembly
  • Cross-platform
  • Desktop GUI & CLI
  • Real-time graphics

Ops

  • Linux
  • Docker
  • Nginx
  • systemd
  • iptables
  • WireGuard
  • MySQL
  • Prometheus
  • Grafana
  • GitHub Actions
  • CI/CD

Projects

things I wrote because I wanted them to exist

BadwordDetector

Async C++23 REST service · multilingual profanity detection

Crow on standalone Asio, with the request layer kept strictly separate from the detection core - every incoming field is checked for presence and type before anything downstream sees it. Filters are a uint64_t bitmask, and the regex generator is built from a dictionary plus a lookalike-character table, so leetspeak and Cyrillic/Latin homoglyphs don't slip through. Secrets come from the environment, never the source.

  • C++23
  • Crow
  • Asio
  • ICU
  • MySQL X DevAPI
  • -Wall -Werror
  • AGPL-3.0

Midi2Qwerty-plus

Real piano → keyboard, in real time

Plug a MIDI piano into the machine and it types. All 88 keys, velocity-aware, with MIDI file playback on a separate path from live device polling - because a dropped note is a latency bug you can hear. The whole GUI is Dear ImGui, including custom window chrome replacing the OS title bar, a rendered keyboard, and its own logger.

  • C++
  • Dear ImGui
  • PortMidi
  • GLFW
  • async polling
  • AGPL-3.0

ChatImprover

A Minecraft mod that's really a plugin host. Addons implement one interface, mark it with @AutoService, and get discovered by ServiceLoader with zero registration on my side. Reaching the client's private chat internals needed Fabric mixins. Ships as a real Maven package through GitHub Packages.

  • Java
  • Fabric mixins
  • Gradle
  • CI

example addon · starter template

Server plugins

Written for the Minecraft server I host myself, because the existing options each did one thing not the way I needed. PVP rules, player model sizes, per-player view distance.

  • Java
  • Gradle

SimplePVP · SimplePlayerScale · SimpleViewDistance

Everything else on GitHub

Growing into

reserved at link time, zero-initialized, filled at runtime

.bss is the segment the linker sets aside for things that will exist but are still empty. It shows genuine interest with zero commercial experience behind it yet. I'd rather name the gap than dress it up.

Rust

uninitialized

Learning it now. After years of owning lifetime questions by hand - and one comment in my own code reminding me that a r_string must outlive the JSON holding it - a compiler that asks those questions up front is a trade I want to make properly, not tourist-style.

Go

uninitialized

I've written async services in C++ where half the work was the plumbing. I want to see what the problem looks like in a language where the plumbing is the language, and what that actually costs.

CUDA & GPU compute

uninitialized

The direction I want most. I've written GLSL shaders against a real engine, so the GPU isn't abstract to me - but shading pixels and scheduling compute are different jobs. Warps, coalescing, occupancy: that's the next thing I want to be genuinely good at.

Where I want this to land: systems and low-latency C++ close to hardware, or a GPU-adjacent team willing to take someone who reads disassembly for fun and hasn't shipped CUDA yet.

Homelab

maintained by me, at runtime, on my own time

One Ubuntu box that I keep alive because an old laptop was sitting idle. This page is served from it. It runs Nextcloud, game servers, SFTP, MySQL and phpMyAdmin, with Grafana and Prometheus watching, everything behind an Nginx reverse proxy. I configured the VPN endpoints, the firewall rules, the certificates and the domains myself.

Scale check: this is personal-project infrastructure, not enterprise. One host, my traffic, my mistakes. But I know what a reverse proxy does rather than just what lines to paste into one.

edgeNginx · Let's Encrypt / CertBot · own domains
netWireGuard · Amnezia · Hysteria · iptables
svcNextcloud · game servers · SFTP · MySQL · phpMyAdmin
obsPrometheus · Grafana
ciDocker · systemd · GitHub Actions

Reversing

the page with write and execute on it - a hobby I simply enjoy

I take programs apart to find out how they work inside. Attach, find the structure, watch it change, work backwards to the code that changed it. Almost all of it has been games.

It started with modifying game code directly - hunting offsets and rewriting instructions in assembly through Cheat Engine. The first was Worms 3D; one of the most recent, Dota 2. Now and then I reverse GUI applications too. From there I wrote my own trainers for single-player games: they locate the addresses they need two ways - signature scanning and computing offsets from the module's base address - so the addresses stay valid across restarts and game updates. Over time code deobfuscation and network-traffic analysis got added, and I came to know client-server interactions well.

From experience: a memory trainer for Dota 2 that forced critical hits by intercepting the hit-type value on its way through and rewriting it. This one was never for sale - it existed to answer "where exactly does the game decide this, and can I use it?"

Illustrative, not a working patch. The interesting part was never the byte.

  • Static analysis x64dbg, IDA Pro; reading and editing x86/x64 assembly.
  • Dynamic analysis Cheat Engine.
  • Finding data locating the right code by breaking on the instructions that read or write an address, and by string search.
  • Process memory addresses and structures via signature scan and module-base offsets; trainers that survive restarts and patches.
  • Deobfuscation Java, changing behaviour straight in the bytecode; and obfuscated JavaScript while analysing client-server exchanges with encrypted requests and responses.
  • Network traffic Wireshark, HTTP Debugger, NetLimiter, Chrome DevTools; reading game traffic to see what data goes over the wire and in what shape.

tools C · C++ · x86 Assembly · WinAPI · IDA Pro · x64dbg · Cheat Engine · Wireshark · HTTP Debugger · NetLimiter · Chrome DevTools

Mini-Game

a small clicker - allocate memory until you run out. (the memory is not real)

This slot holds a small interactive game: an allocator clicker with a few mini-games inside. It needs JavaScript.

End of mapped region

nothing below this but contacts - here's what I build to
  • Alan Walker - Faded
  • TheFatRat - Fly Away
  • TheFatRat - Unity