I’m Oliver Fleckenstein, a software engineer developing web, mobile, and embedded applications. Passionate about technology and building software to solve problems. Curious as a person and I always eager for new challenges and opportunities to learn and grow from. I have always enjoyed working both independently and in teams with talented people from all over the world.

Software skills

I have strong fundamentals in and experience working with both object-oriented and functional languages. I enjoy working with both backend and frontend development, and have build several REST APIs in ASP .NET and NodeJS, using OAuth 2 for authentication and OpenApi. For mobile development, I have created cross-platform apps in Xamarin (and now learning MAUI), along with iOS apps in Swift.

Programming languages

  1. C#
  2. Rust
  3. Python
  4. JavaScript
  5. TypeScript
  6. F#
  7. Haskell
  8. Swift
  9. Java
  10. C/C++

I have dappled around with several other languages, and always find it interesting to see how different tools try to solve problems.

Web technologies

  1. React
  2. NodeJS
  3. HTML
  4. CSS
  5. SASS
  6. PHP

Other skills

Strong knowledge of data structures and algorithms, and always looking for ways to write better and cleaner code, following practices such as SOLID and TDD. I believe in strong agile development frameworks, with rapid iterations and feedback loops. To assist with this during development, I always aim to have efficient Continuos-Integration and Continues-Deployment flows to ease testing and validation of code, along with often releases.

  1. Git
  2. SQL (PostgreSQL, SQLite)
  3. NoSQL (MongoDB)
  4. MQTT/Kafka
  5. Docker
  6. Kubernetes
  7. GitHub
  8. Azure DevOps
  9. Azure Cloud

Embedded

Experience with Nordic Semiconductor, Raspberry Pi and Arduino. During my time at Friday Home, I developed certified IoT BLE HomeKit devices.

Experience

-

BP

London, United Kingdom
Senior Software Engineer
Part of BP’s team to modernize their software services for processing energy related data and exposing queries for end users. Designed and build microservices running on Kubernetes/OpenShift build with reactive principles in mind, using Kafka for inter-service messaging.
-

Friday Home

Copenhagen, Denmark
Software Engineer
At Friday Home, I was part of a small development team responsible for the design, production and software development of a BLE and WiFi, HomeKit certified, smart lock. My responsibilities included; developing mobile apps for Android and iOS using Xamarin Forms, building backend API (.NET 3/5), frontend (HTML/CSS, React & TypeScript), and website (Umbraco), and implementing Bluetooth communication in app and firmware.
More

My time at Friday was full of many different learning experiences. Our development team was small, which allowed/required me to take the responsibility on several of the company’s products.

My first tasks where focused around mobile apps on Android and iOS. We choose to develop new apps using Xamarin Forms to maximize shared coded between platforms. One of the more challenging aspects was to implement a Bluetooth (BLE) stack on both platforms, that could abstract away the necessary details. The best and most interesting feature I developed was auto unlock, where geofencing on the user’s mobile was used to detect when they arrived home, triggering a background scan and connect to our smart lock, making the user’s phone automatically unlock their door when they arrive home.

A REST API was implemented in C# (.NET 3.1/5) to manage Friday’s products. This API contained both management of users, their mobile devices and Friday devices, all connected to a PostgreSQL database. Through the API, new locks could be setup, guest could be invited to use the lock through phone number or email, and WiFi connected Friday devices could sync directly with their digital clone.

Along with the API, I also build a authentication server using Identity Server to support login with different OAuth 2.0 flows, such as the Authorization Code with PKCE and Client Credentials flow. This meant having single sign-on along with a simple, single login page for users, while third-party partners could easily connect to our API as well.

On top on the API, we also build a web frontend in React and TypeScript. This allowed for a better overview of organizations and their locks, along with a access matrix that allowed an administrator to easily get an overview of which groups have access to which locks, and grant or revoke users’ access.

I was also assisting in developing parts of the firmware for the Friday Lock DUO product. My primary responsibility was around the protocol layer, where we utilized Protocol Buffers to create language agnostic message structures which could be shared between the firmware, mobile and cloud platforms. As the DUO lock was capable of transmitting through both Bluetooth and WiFi, we build a framework capable of syncing with mobile devices and our server side through the same message structures. For communication with our server, we used the MQTT protocol for a publish/observer pattern.

Other interesting parts of developing firmware for the smart lock included: ensuring it ran power efficient while still being responsive, controlling and calibrating the motor to many (many!) different lock types, and implementing everything to be compliant with Apple’s HomeKit protocol. Part of the HomeKit compliance also included implementing the Software Token Authentication Server.

Part of my time at Friday I spend in Taiwan together with our parters Brinno. Here we developed the software to track the production of Friday’s products, along with implementing a special factory-testing firmware, that allowed us to easily exercise and verify that all components of the hardware was working as expected. We build a infrastructure where we automatically gathered test results, images, and tracking information for every single device, allowing us to better track defects and issues with devices.

-

Microsoft

Kongens Lyngby, Denmark
Student Software Engiener
Worked on Business Central (Navision), as a part of the Microsoft Invoicing team. My position was focused on UX, primarily using TypeScript and React.
-

IBM

Brøndby, Denmark
Student project assistant
Worked to automate reporting of projects to clients from IBM’s project managing tool IBM Program Work Center (IPWC), which beforehand was done manually. This was done using VBA and HTML/CSS.

Education

-

Technical University of Denmark

Copenhagen, Denmark
M.Sc. in Computer Science and Engineering
Specializing in algorithms and intelligent systems. Courses included advanced algorithms, machine learning, logic based AI. My thesis was done in collaboration with MiR and focused on how to get multiple robots to collaborate to solve problems.
-

Technical University of Denmark

Copenhagen, Denmark
B.Sc. in Computer Science and Engineering
Courses included programming with Object-Oriented, Functional, and logical languages, hardware and memory constrainted programming using C++, introductory and advanced algorithms, and cryptography. My bachelor thesis was focused on Multi-Agent Systems, which included taking part in the Multi-Agent Contest, where our solution took second place.
-

University of New South Wales

Sydney, Australia
B.Sc. Study exchange
As part of my bachelor Degree at DTU, I had an exchange semester abroad at UNSW in Sydney, Australia, with focus on compilers, Computer Vision and Graphics.
-

Academy for Talented Youth

Zealand, Denmark
A project for gymnasium students to broaden our field of knowledge and to create relationships with other ambitious students. This was done through workshops and visiting different universities and companies.
-

Higher Technical Gymnasium

Hillerød, Denmark
Mathematics, Physics, and IT
3-year programme to qualify for higher education in Denmark, with focus on scientific subjects.