About Me
I'm a self taught and experienced software developer that loves technology and good UI. I've been very happily specialising in frontend development, using TypeScript, React and Next.js as my tools and occasionally playing with .NET and C#. I've had the privilege to contribute to building great products and most lately be assigned with the task of migrating an entire codebase to Next, with the goal of improving a already good product, used by thousands of customers. This venture has allowed me to further hone my skills regarding project architecture, design patterns and write code that is robust, concise and modern.
I enjoy keeping up with technology and trying out new tools, creating responsive and accessible experiences for users and writing code that shows how much I enjoy programming. When I'm not working or writing code for fun, I'm either cooking, traveling or spending time with family.
Work Experience
At Scandinavian Airlines, I specialise in frontend development with a focus on customer engagement post-travel. Upon joining the team, I led the migration of the SAS Customer Service portal to Next.js, rewriting the app from scratch to enhance SEO, scalability and user experience. This was an intensive objective, which required migrating the entire codebase quickly, while ensuring significant quality improvements and that customer service case submissions would not be negatively affected. I designed the app on modular principles, implemented maintainable solutions across all flows, and fixed UI/UX and copy inconsistencies, by introducing additional functionality aimed at navigation and form submissions. I also established quality guidelines and documentation, to make sure my fellow teammates could be painlessly onboarded and wrote comprehensive tests. I led all pre-release and QA testing, which allowed for quick iterations and bug fixing. I also supported all other fellow devs when starting with their contributions to the codebase, to ensure they became familiarised with the architecture and patterns of the app. With the migration, the team reduced technical debt and frontend errors, while increasing implementation lead time.
Currently, I work on the codebase I migrated and another codebase that customer service agents use for assisting customers. I am also involved in cross-team projects. I oversee our frontend, ensuring adherence to the implemented patterns and maintaining high code quality standards. As the primary contact in the team regarding Next.js-related queries, I support the customer service team by implementing new features and A/B tests and occasionally work with the backend integrations (Express), which support the frontend.
ReactTypeScriptNextJSFigmaDockerAzureExpressGrowthBookSoftware Developer
Stockholm, SwedenJune 2022 — February 2024
My role at Vidispine was in a SaaS setting and my responsibilities regarded front-end objectives, but were occasionally backend-focused (backend built on .NET supported by a PostgreSQL database). I was involved in the development of a feature-rich, web-based (React/TypeScript) media ingestion tool used by broadcasting companies to schedule, record and transcode content. Additionally, I was responsible for building reusable React components for a commercial component library (using Google's MUI as a base).
ReactTypeScriptFigmaMUIC#.NETDockerAzureSoftware Developer
Stockholm, SwedenJan 2020 — Apr 2022
As a software developer at Storytel, I developed an end-to-end neural network pipeline, which was responsible for synthesising speech from text, for generation of long-form audiobook content. I was responsible for and led the entire process, working independently (within a Data Science team) for the best part of my tenure at the company. My responsibilities included:
Delivering a fully functional MVP for stakeholders (the venture was new to the company) that could synthesise speech in English and Swedish
Developing a custom pipeline (for the Swedish language), in order to train style-controllable models and produce content, in multiple voices
Designing methods for generation of long-form audiobook content
Reviewing and implementing methodologies to maintain technological advancement
Training and evaluation of the network and its models, by conducting various tests and collecting mean opinion scores
Analysing, understanding and engineering the data the network used for the training sessions
Leading the recording sessions, directing voice actors when recording content to use in the data for the pipeline
The pipeline I developed was eventually successfully used to train the company’s first AI voice and produce the company's first fully neural network-based audiobook content.
PythonTensorFlowPyTorchpandasDockerFastAPIGCPNLP Developer
Uppsala, SwedenNov 2017 — Dec 2019
During my time at ReadSpeaker I gradually moved from speech synthesis related objectives to software development areas. It was a broad role in which I was tasked with:
Supervision of QA documents in different languages
Developing Python and C++ pipelines for text normalisation and disambiguation
Development of voice engine features used by third-party products
Training of various models (both supervised and unsupervised), such as parsers and taggers (spaCy pipelines) and grapheme- to- phoneme automata
PythonspaCyC++SVNUnixBash
Education
Master's Degree
University of Eastern FinlandJoensuu, FinlandJan 2020 — Jun 2020
Completion of Master's Education
Thesis Project: Transfer Learning in Speech Synthesis - Exploring Pretrained Weights Adaptation and Usage of Speaker Embeddings in Neural End-to-End Speech Synthesis
The project explored the feasibility of predict speech from text in pre-trained neural networks, where:
available data was 80% smaller than required and unprocessed, so that pre-training the network on other data was an option
obtaining data was not feasible, so zero-shot prediction, based on speaker embeddings, using clustering and multi-voice recordings, might be an option
Results showed that both options are viable for when training data is not available, but that the network is not able to pick on all of the new voice's vocal charactertics (such as prosody). The training pipeline was a mix of pyTorch and TensorFlow and training was done on a GCP instance.
Master's Degree
Uppsala UniversityUppsala, SwedenSept 2017 — Jan 2020
Concentration in Natural Language Processing (NLP)
Bachelor's Degree
Democritus University of ThraceKomotini, GreeceSept 2012 — Sept 2016
Concentration in Classics and Literature
Projects I've helped build
SAS Customer Service
SAS Customer Service is the customer service portal for Scandinavian Airlines, the flag carrier airline of Denmark, Norway and Sweden. In this project, I was responsible for the migration of the portal to Next.js.
ReactTypeScriptNextJSDockerAzureFigmaVidiControl
VidiControl is a web-based media ingest tool that broadcasting companies can use for planning or managing video server recordings and streams, including router control. In this project, I was responsible for development of app features, such as the scheduler, the bookings, the messages and the notification center.
ReactTypeScriptKendoReactFigmaDockerC#.NETKul med Koll - AI
Kul med Koll - AI is Storytel's first fully synthesised audiobook content, using a neural text-to-speech voice. In this project, I was responsible for the neural network pipeline used for the generation of the content, but also the synthesis process of the produced audiobook content.
PythonPyTorchTensorFlowDockerGCPSpotify Car Thing
Spotify Car Thing is a convenient and efficient hands-free music device compatible with iPhone and Android. In this project, I was responsible for optimising the text-to-speech voice engine the device is powered by, by writing rules for the software synthesising the text-to-speech voice.
C++BashSVN