One more time.
I recently wrapped up my sabbatical — time to look for a job.
If you need a technical leader who can both do the heavy lifting and steer the ship, get in touch — I'd be happy to chat. If you're building a startup, get in touch too.
The scope of the work and the degree of influence over the outcome matter more to me than the role's title. If you have a challenge or a problem with no clear solution (in your team, processes, or code), tell me about it. I'll get to the heart of it, and together we'll work out what the end result should look like and map out how to get there. If needed, we'll train / develop / hire a team. And what to call the role — we'll figure that out along the way.
You can find plenty of details about my 20-year adventure in software development (including 13 years in gamedev) on this blog. For example, there's a series of posts on my views on management, as well as my annual reports.
A few things worth knowing about me beyond what's in the CV:
What I'm looking for:
If you're working on any of the following, it'll be easier for us to work something out:
What I'm not considering:
If I sound like a good fit, drop me a few lines about your product, team, and the challenge you'd like my help with:
a.eletsky@gmail.com
The Monsters & Memories developers have made some of the game's metrics public, including subscriber counts. That kind of openness is rare in the industry and deserves a lot of respect. Sadly, the official statistics page shows only the current metrics, not the history. To fix that, I started collecting hourly snapshots of the data. One thing led to another, and four days later I'd vibe-coded a whole dashboard.
Dashboard: tiendil.github.io/monsters-and-memories-stats
Repository: github.com/Tiendil/monsters-and-memories-stats
Here's what you'll find:
Since the game has only recently entered Early Access, there isn't much history yet, but I hope the dashboard grows into a valuable resource for players and game developers alike.
P.S. Huge respect to the M&M devs. Who doesn't dream of making their own MMO, complete with elf girls and monetization? Real numbers help keep those dreams grounded.
Idiomatically spending a sabbatical.
In 2023, Yuliya made a table of 1000 labs (!), chose one, moved to Germany, and started doing a PhD there. For a year, we flew back and forth between Poland and Germany, realized it was terribly inconvenient and expensive, so I quit Palta and, at the beginning of 2024, moved to Germany as a trailing spouse.
"What a great excuse to take another sabbatical", I thought, and so I did. Two and a half years later, it's time to look for a job take stock.
In this post, you'll find a full report on all the resting I managed to get done: what was planned, how the plans changed, what was achieved, and what was not.
In short: blog updated, 68 posts written, 20 books read, 4 new open-source projects built, more than 400 GitHub stars earned, feeds.fun made genuinely usable and ready for monetization, my own approach to management formulated, some weird but interesting courses on intellectual property development completed, AI figured out, coding agents coding, my wife's eye twitching.
A few links to better understand the post:
Coding agents often need to answer practical questions before making changes, such as:
In other words, the agent must discover all dependencies between files and add them to the context to complete the task correctly.
To answer such questions, the agent must think, form a plan of action, execute it, and analyze the results. All of this consumes tokens, context, and time, without guaranteeing completeness and correctness of the result.
For example, the agent must decide how to search for each specific type of dependency. Sometimes, as in the case of import chains, the agent must read and parse the source code to understand which modules it imports, then generate paths to the corresponding files and read them — this is resource-intensive and inefficient.
The result of such "agentic search" is not guaranteed, the agent may forget to grep by function name and lose an important dependency, or miss a niche spec because it decided it is not needed in this particular case.
Moreover, for searching, the agent uses a bunch of tools, every one of which, by its very use, increases token consumption and eats up context. For the same task, the agent may choose different tools or call them with different parameters from time to time, which kills predictability and reproducibility of the result.
The standard ways to improve the situation are to integrate LSP or something similar as an agent tool, or to deploy one of the countless RAG systems. This helps, but does not solve all problems. For example, it does not guarantee completeness, minimality, and determinism of the result.
Meanwhile, since ancient times we have had a huge pool of utilities and libraries for file searching and source code analysis that can do the same work quickly and efficiently, without any LLMs. Each of them works much better than a probabilistic model in its specific area.
It would be great, I thought, to have a single abstraction over all these tools that provides the agent with a universal interface for extracting all dependencies between files (whatever you configure) and does not require it to think about what to search for or how to search for it.
So, it could be used, for example, like this:
> depmesh dependencies -r governed_by -r tested_by ./depmesh/cli/application.py
## governed_by
Specifications that apply to the artifact.
- @/specs/architecture/entities.md
- @/specs/architecture/errors.md
- @/specs/architecture/modules_layout.md
- @/specs/architecture/naming.md
- @/specs/architecture/static_analysis.md
- @/specs/architecture/tests.md
- @/specs/behavior/cli.md
- @/specs/behavior/file_paths.md
## tested_by
Tests that verify the artifact.
- @/depmesh/cli/tests/test_application.py
As a result, DepMesh was born.
How Donna works.
In February, I released Donna (the original post) — a CLI tool to run agent workflows as state machines and describe them in Markdown files.
Since I was developing it simultaneously with learning how to work with agents, Donna came out as an overcomplicated, versatile monster. It had many features, all of which were useful, but in total, they restricted the developers' environment too much and required too much time to learn.
So, after I gained some experience, I decided to follow the Unix philosophy and refactor a single monolithic tool into a set of smaller tools with single responsibility. New Donna is the first one of them (and the second is depmesh — I'll tell about it in a separate post).
New Donna exists to solve the control flow problems of agents in the long run. The logic is as follows:
Donna runs predefined workflows as deterministic state machines, so the agent can focus on reasoning, code generation, and other agentic work.