Hi! I’m Oliver, a software developer based in Tokyo, Japan, with over 8 years of experience creating performant, reliable, and maintainable software. I’m actively looking for new opportunities, so please feel free to reach out if my experience aligns with your needs.

In my most recent role, I participated in the design, development and maintenance of Ecommerce Search – a high-performance search engine now used by leading Danish retailers. With a background in engineering and extensive web development experience, I’m driven by a passion for problem-solving and a commitment to delivering impactful solutions.

Known for my curiosity, reliability, and constructive approach, I bring a strong blend of technical expertise, adaptability, and proactive learning to every project.

I have a broad interest in software, having worked on projects across web development, robotics, machine learning, and game development. This site showcases my work, serves as a place to refine my skills, and ties together my various projects.

Static Code Generation for Game Data in .NET

Use of Tabular Data in Game Development Recently, I’ve been developing a game with RPG elements. Naturally, this means that there are hundreds of stat values for abilities, characters, items, enemies, and so on. When doing game development, the roles of developers and game designers have distinct areas of responsibility. The developer will write the systems required to make the game run, while the game designer will design and tweak the systems and the various values of the game.

Semantic Search with OpenAI and Elasticsearch

Overview Recently, I’ve been researching semantic search, since elasticsearch 8 has added support for doing vector search as part of an ordinary search request. I’ve written a post about this topic, providing an introduction to the uninitiated. I wanted to build a simple semantic search proof-of-concept project with OpenAI embeddings and searching with the elasticsearch knn option. The result is this small project with an ASP.NET API, which allows for product ingestion and searching.

Introduction to Semantic Search

Overview Recently, I’ve been researching semantic search, since elasticsearch 8 has added support for doing vector search as part of an ordinary search request. Semantic search is a searching algorithm that builds on the rapid progress made in NLP with deep learning methods. It is possible to get high-dimensional vectors, called embeddings, which approximate the semantic meaning of any text. To leverage this for searching, all the searchable documents can be embedded with this semantic vector.

Fuzzy Logic with Fluent Syntax

Overview FluentFuzzy is a .NET package for adding fuzzy logic to a project in an easily readable, fluent way. The project is freely available on Github. I’ve written an introductory post on fuzzy logic here, which explains the basic concept and how it works. The project includes four source projects and a test project. The FluentFuzzy project contains the code for the core logic and fluent syntax builder of the package.

Introduction to Fuzzy Logic

Introduction As part of developing my dungeon-based RPG, I’ve recently been tinkering with fuzzy logic as a way to transform what non-player agents observe into what actions they choose to perform. The benefit of using fuzzy logic in this way is that given a set of input parameters, I can make human-understandable and -interpretable rules which can result in a very complex output. I haven’t yet integrated fuzzy logic into my game, but I thought I would make an explanatory article, which I can follow up with an update on my side-project afterwards.

.NET package for code timing

Overview Veachron is an application which can help storing and displaying timings. The main use-case is for debugging, as it can be embedded into code and used to get actual timings. The project is freely available on Github. The project consists of a Python application, using the Flask framework to host a REST API. The API is documented through swagger, to ensure ease of use. The application can be hosted directly, but alternatively, two Docker images are provided, with the application and a PostgreSQL database, for storing the timer logs.