I am a full-stack developer with a strong preference for backend work. I enjoy designing robust systems and appreciate having control over the entire stack --- from infrastructure to user-facing UI details.
- StackOverflow --- I mostly answer in python-related tags.
- Devpost --- hackathons I participated in.
- GitHub
- My resume as PDF
- To get in touch, email me at terlya [dot] stas [at] gmail [dot] com.
- Backend: Python, Django (except for the somewhat limiting ORM) + DRF or FastAPI with SQLAlchemy and Alembic (more powerful, but more boilerplate).
- Databases: PostgreSQL if we're talking SQL, DynamoDB for something less structured.
- Frontend: JavaScript or TypeScript (depending on the size of the project) with React and Tailwind. For quick prototyping I've had some exceptional experience with shadcn/ui.
- Infra: AWS is my favourite, with some features simply unmatched by other
major providers. And Docker is the most convenient way to ship exactly
what you test, with
docker compose
offering an instant local environment setup. - Tooling:
pre-commit
, GitHub actions,ruff
,uv
,biomejs
(although they still lack some ESLint features), the list goes on... And, quite controversially, Jira as a project management tool. - Dev environment: I'm running Lubuntu on my primary laptop and use Sublime Text instead of an IDE. I also use Vim for any editing that doesn't need ten open tabs and perform a lot of tasks via CLI.
- Rust: it doesn't clearly fall into any of categories above, but all my experience with it has been overwhelmingly positive.
I'm currently the CTO of Simpleem, where we are building a system that uses the power of machine learning to quantify and classify behavioral traits of video call participants.
Our platform helps sales teams improve performance by analyzing behavior and highlighting the most impactful moments of conversations. HR teams can use Simpleem to streamline candidate assessment, reduce manual screening, and identify candidates who best fit their culture and team dynamics.
We've developed a system that can predict deal outcomes with a high degree of reliability and offer actionable insights --- powered by a mix of LLM-based engine and in-house heuristics discovered by thorough review of a huge dataset.
Here are a few aspects of the implementation I love the most (and was personally responsible for):
- Fully serverless architecture: The core of the Simpleem platform is powered by AWS lambda and orchestrated by AWS Step Functions, our inference engine (Python, Torch) handles many short chunks of a video in parallel, alongside audio analysis and transcription, achieving excellent observability and reliability. Switching from GPU instances to Lambda gave us a 20x cost reduction.
- Our backend (Python, Django, DRF) is also deployed on Lambda and connected to an RDS database. It scales effortlessly and remains extremely cost-efficient.
- Our frontend (TypeScript + React) avoids unnecessary complexity --- no SSR, just a static site served from S3 via CloudFront. It's fast, lightweight, and easy to maintain.
- As a side product, we ship a WebRTC-driven video pitch game. It was fun to build and probably deserves its own write-up.
- Attention to code quality and DX pays off! Setting up a very strict set of
linters for everything from main code (shout-out to
ruff
andbiome
) to "helper" files such as yaml auto-formatter or Dockerfile linter saves a lot of time spent resolving merge conflicts and catching weird bugs. - Time to release matters. A change, once approved, can hit staging or production in less than 30 minutes. During that time a lot of linters are trying to tear the code apart, and a comprehensive test suite with over 90% coverage ensures correctness at the next level.
In my spare time I enjoy bouldering --- a form of rock climbing that focuses on
short but challenging routes on low walls. I recently climbed my first 7b/+
route --- still proud of this milestone!
I'm also lucky to have a supportive family: my amazing wife, who encourages me through everything, a cheerful medium-sized dog (a mixed-breed rescue we found in Armenia --- she won us over instantly!) and two cats who seem to think 4 a.m. is the perfect time to start the day.
I studied at MIPT and was working towards a Bachelor's degree. I had to leave the programme and relocate in 2022, but the experience deeply shaped my thinking and technical foundation.
Python type checker: mypy
If you're unfamiliar, mypy
is a static type checker for Python that brings
optional typing to an inherently dynamic language. I really enjoy the ability
to increase the correctness of the code and our own confidence in it without
sacrificing flexibility.
Although I'm not the original author, I've contributed around 50 PRs ranging from correcting a small omission to hunting down and fixing a critical bug that affected a large number of users.
Developer tooling: mypy-issues
A small helper built with Python and GitHub actions to check mypy
changes against the corpus of open project issues. It helps us keep the tracker
clean and catch some regressions before the PR gets merged.
I have enjoyed building something that runs entirely via GitHub interface: open an issue, wait for the results to be reported there. Done!
Simple time tracker client: toggl
I've been using Toggl to track my work hours until they have deprecated the native Linux app and suggested using a browser extension instead. I'm allergic to browser extensions for everyday tasks, so I built a minimal Rust-based client tailored to my own needs.
The client has to deal with some unique API design: Toggl API returns time in profile timezone --- certainly the best way to handle datetimes that sure will never get out of sync.
For distribution, I packaged binary builds via NPM --- one for each
platform/arch, and one meta-package to rule them all
resolve them dynamically. It's a workaround, but it works!
Terraform module for ECR-based Lambda deployment
Which came first --- the chicken or the egg? AWS engineers don't know either.
If you want to deploy a docker-based Lambda function, you need an image in place. To build an image, you need a pipeline to build that image and update the function which doesn't exist yet.
I ended up studying the registry specification and publishing a module that
uses curl to fetch and push a lightweight alpine
image as a placeholder ---
no Docker installation required.
This project was inspired by this clever StackOverflow answer.
VeChain SDK in Rust: thor-devkit.rs
Funded by the VeChain Foundation, this SDK brings core blockchain utilities to Rust, enabling developers to build dApps and tools with full support for VeChain's protocols.
While I'm cautious about the hype around crypto, I believe in its long-term potential when used right --- especially for decentralized finance, digital identity, and fair creator ecosystems.