139 lines
6.3 KiB
Markdown
139 lines
6.3 KiB
Markdown
# Vladan Popovic
|
||
## Senior software and systems engineer
|
||
|
||
\pagenumbering{gobble}
|
||
|
||
Bulevar Oslobodjenja 150, 11042 Belgrade, Republic of Serbia
|
||
|
||
Tel : +381 62 1436099
|
||
|
||
E-mail: vladanovic@gmail.com
|
||
|
||
|
||
## Profile
|
||
|
||
Experienced software developer and systems engineer in multiple fields, with
|
||
around 20 years professional experience. FOSS enthusiast, honorary member of
|
||
Macedonia's Free Software NGO and Belgrade's first hackerspace. Designed and
|
||
implemented distributed and monolith systems in the cloud, on-site and in
|
||
hybrid infrastructures. Keen on refactoring for the greater good. A long time
|
||
GNU/Linux user of many flavors, currently endeavoring to use Fedora
|
||
CoreOS, or any other [**OSTree based
|
||
distro**](https://forge.vp.mk/vladan/workstation-ostree-config) in a production
|
||
environment. My
|
||
[**Linked-In**](https://www.linkedin.com/in/vladan-popovic-957ab733),
|
||
[**GitHub**](https://github.com/vladan>) and [**my selfhosted forge
|
||
server**](https://forge.vp.mk/vladan) may provide more info if needed.
|
||
|
||
### Skills and toolset
|
||
|
||
Python is the language and ecosystem I have the most experience with. I've done
|
||
a lot of web apps in Django, Flask, FastAPI and made heavy use of SqlAlchemy.
|
||
Nowadays I use AsyncIO for most Python projects, used gevent before AsyncIO was
|
||
introduced. Deployed WSGI apps on uWSGI and love it for its robustness,
|
||
richness, large set of configuration options and wonderful documentation.
|
||
|
||
Huge fan of PostgreSQL with some NoSQL experience in Apache CouchDB. I have
|
||
fair experience with Apache Kafka, RabbitMQ, MQTT, ZMQ, gRPC for message
|
||
distribution and make use of Protobuf and Cap'n Proto for packing data before
|
||
sending it through the wire.
|
||
|
||
Professionally I used to manage infrastructure on AWS, GCP, OpenStack and
|
||
employed Ansible on multiple projects. Docker was a thing I've used a lot in
|
||
the past, but switched to Podman due to its daemon-less, free [as in
|
||
freedom] nature and its Kubernetes compatibility.
|
||
|
||
### Hobbies
|
||
|
||
I spend most of my free time writing Rust, from [**lock-free
|
||
queues**](https://github.com/filipdulic/bus-queue) to [**web applications in
|
||
WebAssembly**](https://git.vp.mk/ui) (must also mention that Elm provided me
|
||
with one of the greatest hobby-programming experiences ever). Recently I've
|
||
been busy with an [**embedded application in Rust for tracking
|
||
e-bikes**](https://forge.vp.mk/e-bike-tracker) on an esp32 with a sim module.
|
||
|
||
I'm an avid table tennis player, frequent hiker (~100k steps/week), pizza and
|
||
bread baker and an ordinary everyday cook. I also enjoy playing video games,
|
||
mostly football when in good company.
|
||
|
||
### Languages
|
||
|
||
Macedonian is my native language. I speak English and Serbian fluently and have
|
||
a fair German knowledge with a C2 degree in 2001.
|
||
|
||
\
|
||
|
||
\
|
||
|
||
\
|
||
|
||
## Work Experience
|
||
|
||
#### Self Employed - Rust Developer / Embedded (current)
|
||
\
|
||
Location Based Services for tracking electric bikes. ESP32 Microcontroller
|
||
written in Rust that also contains a SIM modem (SIM800L + u-blox NEO-6M GPS
|
||
modem, or A7670E with embedded GPS module) that sends location information to a
|
||
broadcast server (also written in Rust) with a streaming architecture that
|
||
receives locations from all devices (via MQTTS, or HTTPS) and streams those
|
||
locations to designated parties (mobile apps) via websockets.
|
||
|
||
#### [Aiven](https://aiven.io/) (Mar 2021 - Feb 2022) - Site Reliability Engineer
|
||
\
|
||
SRE in a dynamic multi-cloud setup consisting of close to 100.000 of nodes,
|
||
offering managed Postgres, Kafka, Clickhouse, Mysql, Elastic/Opensearch,
|
||
Cassandra, etc. The platform management software was written entirely in
|
||
Python and hosted on AWS, GCP, Azure, OVH and other smaller cloud providers.
|
||
|
||
#### Sigma Technology (Oct 2019 - Feb 2021) - Senior Python/Platform Engineer
|
||
\
|
||
Consultant in Ericsson LabOps team in Linköping - Sweden. Worked on automating
|
||
the infrastructure procurement for the R&D department in Ericssons on-site
|
||
private cloud. My responsibilities included implementing best practices,
|
||
reviewing most of the code in Gerrit and maintaining a Jenkins CI/CD pipeline
|
||
(code-test-deploy). The most interesting part for me was to develop a Python
|
||
project generator based on Jinja2 that contained configuration for the whole
|
||
pipeline, i.e. tests with Tox, wheels, Sphinx documentation, Docker images and
|
||
publishing to Artifactory.
|
||
|
||
#### H4 - Senior software engineer (Nov 2018 - Oct 2019)
|
||
\
|
||
Distributed application for managing and editing documents written in
|
||
TypeScript (NodeJS) and PostgreSQL using JSON-RPC for inter-node communication.
|
||
|
||
#### TradeCore - Python Lead (Jul 2017 - Nov 2018)
|
||
\
|
||
Reduced the technical debt by refactoring, planning and discovering bottlenecks
|
||
and bad/redundant implementations. Improved the development flow, enforced a
|
||
stronger code review practice and Python coding standards for the main product
|
||
written in Django, which also utilized PostgreSQL, ElasticSearch, Celery, etc.
|
||
Introduced a solid CI/CD infrastructure by automating the Selenium tests and
|
||
frontend packaging for ~25 environments, GitLab Review Apps, etc. Lead the team
|
||
reworking the product to a microservice architecture and successfully moved
|
||
large parts of the monolith to new services.
|
||
|
||
#### Itekako - Software Engineer / Python Lead (Jun 2012 - Sep 2013, Sep 2014 - Jun 2017)
|
||
\
|
||
Designed and built a scalable platform in the cloud for home security cameras
|
||
written in Python with JSON-RPC as the synchronization protocol hosted with
|
||
uWSGI on AWS with around a dozen service types: a server that kept a live
|
||
connection to every camera over TCP with Protobuf, transcoding server with
|
||
FFMpeg, Live555 custom streaming server, a DB/RPC service to handle clients,
|
||
file syncing service with SSH key management, a couple of notification
|
||
services, back office service for managing the platform, etc. Other projects
|
||
included reducing development and deployment overhead by dockerizing a couple
|
||
of clients’ complete infrastructures, a machine-generated-content service by
|
||
implementing a ranking algorithm in PostgreSQL, etc.
|
||
|
||
#### RedHat - Software Engineer - OpenStack (Oct 2013 - Sep 2014)
|
||
\
|
||
Development and RPM packaging on OpenStack Nova. Tested, debugged and deployed
|
||
various OpenStack scenarios and use cases.
|
||
|
||
#### Asseko - Software Developer (Dec 2010 - May 2012)
|
||
\
|
||
Part of a new team working on a complete rewrite of a legacy proprietary
|
||
Banking Software to C# and MSSQL. I was part of a team writing the new software
|
||
that also made the adapters for data migration from the old to the new
|
||
platform.
|