Experience

Upsun (formerly Platform.sh) (remote)

Director of Engineering • Jun 2024 — now

Leading a team of 8 engineers owning multiple components of the product. Developing and mentoring individuals of varying levels of experience.

Communicating the company vision clearly and effectively. Building relationships with stakeholders, holding ourselves accountable and adapting to changing priorities.

Staff Engineer • Nov 2020 — Jan 2024

Became a strategic lead within the team, mentored others and took ownership of the container orchestration component (define its roadmap, set goals and communicate them to stakeholders, anticipate problems and own solutions, improve developer experience and reduce barrier to entry).

Collaborate with PMs on feature requests, iron out requirements, design solutions and translate to engineering tasks.

Played a crucial role in incident resolution and came up with fast remedies during stressful moments to resolve impact to customers.

Troubleshoot and deeply investigate numerous problems occurring on distributed systems that are time sensitive and extremely difficult to reason about by analyzing huge amounts of logs and correlating with the code, tracing Linux processes to introspect behavior and inspecting network traffic. Fix memory leak issues by profiling processes in both Python & Golang applications.

Senior Software Engineer • Jun 2018 — Nov 2020

Own or contribute to significant projects such as:

  • Running customer apps and services with triple redundancy for high availability and handling automatic failover between instances.
  • Automatically move containers away from failing hosts by adding liveness probes to them and in case of failure reallocating all workloads to different hosts.
  • Ensuring worker host utilization is maximized by distributing containers evenly across them and periodically rebalancing based on changing resource requirements.
  • Managed offerings for various HA-enabled services such as PostgreSQL, MongoDB, Redis, nginx, Elasticsearch, Kafka, Vault and others.

Software Engineer • Jul 2016 — Jun 2018

A member of the Core Engineering team for one of the leading PaaS offerings, responsible for the low level backbone components.

Contribute to the python-based container orchestration platform (similar to k8s) that manages the complete lifecycle of tens of thousands of containers using Linux namespaces and cgroups, ensuring high availability and seamless scaling for user applications.

Focus on system resilience, performance optimization, and automating container management operations. Contributed to our custom edge layer in Golang to minimize resource usage, reduce TLS connection latency and withstand DDoS attacks.

Python Golang Zookeeper Linux Distributed Systems Networking GitLab CI

Lexiful (remote)

Senior Software Engineer • Feb 2014 — Jun 2015

Architected and built a "Translation Manager as a Service" platform from the ground up, enabling automated coordination of complex translation workflows.

Implemented machine learning algorithms to route documents to the most suitable translators based on expertise, rate, and availability. Optimized the platform for cost-efficiency while ensuring strict adherence to target deadlines and quality standards.

Designed the full-stack architecture to handle file processing, user management, and automated task dispatching.

Python AWS (EC2, EBS, ELB, Route53, OpsWork, RDS)

Photiq (remote)

Software Engineer • Jul 2013 — Jan 2014

Engineered a high-performance e-commerce platform enabling small business owners to launch online stores instantly.

Designed and implemented the backend infrastructure on AWS and RESTful APIs from zero to launch using Node.js, MongoDB and PostgreSQL. Ensured linear scalability and high availability across the entire stack to support growing transaction volumes. Leveraged MongoDB's performance for most data operations and relied on PostgreSQL for transactional operations such as purchases.

Node.js MongoDB PostgreSQL AWS

SlideMe (remote)

Analytics Engineer • Jun 2012 — May 2013

Designed and implemented an internal analytics platform for one of the largest unofficial Android app stores.

Built ETL data pipelines to ingest and visualize application usage data, empowering developers with actionable insights. Designed to handle large volumes of data by inserting events through a queueing service, buffering them in memory and bulking database inserts.

Node.js MongoDB

Education

University of Crete

Bachelor degree in Computer Science • 2008 — 2013

The curriculum at UoC is oriented toward developing a problem solving & software architecture skillset, rather than teaching a myriad of programming languages. Of course, to achieve that, deep understanding of low-level systems is essential (e.g. memory management, compilers, etc).

The 1st software engineering university in Greece and 145th out of the top 400 universities in the world (as ranked by the Times Higher Education).

Projects

Flying Icarus

A flight monitoring platform similar to flightradar24.com. As an aviation enthusiast, I saw great value in a platform built and supported entirely by the aviation community, end to end. From the collection of ADS-B signals through antennas over people's rooftops to processing and visualization.

Every component of the whole system is open sourced, including the Kubernetes manifests.

Notably, drawing planes on the map is performed via WebGL instanced objects (through low-level Three.JS APIs), with custom vertex shaders, and it's able to draw thousands of objects with high frame rates, even on low performance devices.

Node.js Contributions

I started with Node.js in the early days of v0.2, was active in the community, and became proficient in it while working at Photiq. I even contributed a minor bug fix.

ESP32-based weather station

Built a solar powered weather station from scratch based on ESP32 for a local windsurf club. Hardware included modbus-based wind direction & speed sensors, i2c temperature & humidity sensor and a Qualcomm NB-IoT modem. Software started on bare bones FreeRTOS with esp-idf, and was later ported to rust. Measurements were sent over NB-IoT to an MQTT broker. Power management was crucial to ensure 24/7 operation over solar & battery.

Home kubernetes cluster

Ran a three-node kubernetes cluster at home to run various services including home automation, media center, photo storage, etc, but mainly as a way to learn kubernetes. Started with raspberry pis, moved to proper Intel N100-based mini PCs. Used Talos Linux for the underlying OS & k8s, metalLB for load balancing, helm charts, and mayastor for distributed storage.

Passbookster - iOS Passbook Library for Node

While working at Photiq we wanted to make use of Passbook in iOS, in order to serve receipts to customers. At the time no library existed for it, so I wrote one which used OpenSSL underneath and open sourced it.

Assurance - Input Validation Library for Node

Input validation library for nodejs, back when none of them existed. The goal was to allow easy validation for common use cases while also allowing custom logic. No form input or other integrations. Just do one thing and do it well. The API turned out clean and expressive.

node-openex - Web API Client for openexchangerates.org

Wanted to get live currency rates for a side project and there wasn't any library available for node to do that. Went on and wrote an open source client for the openexchangerates.org API for node.

Skills

Technical Skills

This is a non exhaustive list of software or platforms I've used extensively for prior work or side projects, but I quickly adapt to new technologies, understanding the underlying mechanisms and philosophy.

  • Programming & Libraries
    • Expert in Python (incl. asyncio, gevent)
    • Proficient in Golang
    • Proficient in Node.JS
    • Familiar with Rust (incl. embedded rust / nostd)
    • Familiar with Erlang/Elixir
  • Databases
    • PostgreSQL (incl. timescaleDB) / MariaDB
    • MongoDB
    • ElasticSearch
    • Cassandra / ScyllaDB
    • Redis
  • DevOps
    • Linux
    • AWS / GCP
    • Kubernetes
    • Observability stacks