software development / copenhagen

Projects

Throughout my journey, I have had the opportunity to work on a variety of software projects that have allowed me to grow and develop my technical skills. From developing web applications to creating internal applications, I have sharpened my abilities in different programming languages and technologies. I am always striving to create innovative solutions that meet trends. Whether working independently or as part of a team, I bring my passion for technology and my commitment.

2025

Sokoban Level Generation

Purpose: Exams
Tools used: PyTorch, Sokoban level dataset

This project explored the application of various AI-driven methods to procedurally generate valid and playable Sokoban levels. The research focused on three approaches: Autoencoders, Neural Cellular Automata (NCA), and Reinforcement Learning (RL).

Skills and Technologies Used:

  • Deep Learning: Designed, implemented, and trained convolutional neural networks (CNNs) for Autoencoder models and RL-based agents.
  • Reinforcement Learning: Developed custom environments using PyTorch and Stable-Baselines3, applying actor-critic policies for content generation.
  • Algorithm Design: Utilized BFS and A* search algorithms to validate level solvability and guide agent training.
  • Procedural Content Generation (PCG): Applied PCG frameworks to iteratively generate and refine Sokoban levels.
  • Data Handling: Trained models using a dataset of over 1000 Sokoban levels, focusing on medium-difficulty puzzles.
  • Problem-Solving: Rebuilt and modernized outdated RL implementations, adapting them to current frameworks and addressing hardware limitations.

 

Small-Scale 3D Scanner

Purpose: Exams
Tools used: Arduino, 3D printing, Autodesk modeling, Electric circuits

Designed and built a small-scale, portable 3D scanner prototype capable of generating high-quality 3D models. The device uses a rotating platform, a vertically adjustable camera rig, and a tilting mechanism to capture images from multiple angles, which are then processed using photogrammetry software to create 3D renderings suitable for 3D printing. The scanner was developed with minimal user interaction, allowing for a simple plug-and-play experience.

Skills and Technologies Used:

  • Electronics: Designed and wired circuits using Arduino Mega 2560, Nema 17 stepper motors, servo motors, and A4988 stepper drivers.
  • Embedded Programming: Developed Arduino code to control stepper motor movements, camera tilt, and user input through buttons.
  • Software Development: Created a Python script to interface with the USB camera, capturing and saving images in sync with the scanner’s mechanical operations.
  • Mechanical Design: Designed and 3D-printed components, including a lead screw mechanism for vertical movement and a swivel plate for camera tilting.
  • Problem-Solving: Overcame challenges such as jittery motor movements and structural flexing through iterative hardware and software adjustments.
  • Photogrammetry: Utilized photogrammetry software to convert captured images into detailed 3D models. – not implemented in the final project report

High-Performance Entity-Based Game Simulation – Siege Simulation

Purpose: Exams
Tools used: Unity, ECS

Developed a high-performance medieval siege simulation using Unity’s Entity Component System (ECS). The project involved creating a scalable and optimized simulation of catapults firing stone balls at a procedurally generated castle and walls, with realistic physics-based interactions and configurable settings. The system supports both single-threaded and multi-threaded modes, providing insights into performance under varying loads. The simulation was designed with a focus on efficient memory usage, parallel processing, and scalability, adhering to ECS best practices.

Skills and Technologies Used:

  • Entity Component System (ECS):

    • Decoupled data (components) from behavior (systems/jobs) to improve flexibility and performance.
    • Created systems for spawning entities, rotating catapult arms, and cleaning up inactive entities.
  • Unity Physics Engine:

    • Implemented realistic collisions, forces, and gravity for catapult balls and destructible castle elements.
    • Analyzed and optimized physics bottlenecks for handling large entity counts.
  • Performance Optimization:

    • Conducted scalability analysis using Unity Profiler on both single-threaded and multi-threaded modes.
    • Managed up to 50,000 entities, identifying and mitigating performance bottlenecks caused by intensive physics calculations.
    • Explored optimization strategies, including collision filtering and tuning simulation parameters.
  • Procedural Generation:

    • Designed scripts to procedurally generate castle walls and arrange catapults in circular patterns for optimal placement.
  • User Interface Development:

    • Built a configurable UI for controlling simulation parameters (e.g., number of catapults, firing strength, and thread mode).

 

2024

Twitter look-alike Web Application with DevOps Practices

Purpose: Exams
Tools used: GoLang, Docker, Azure, JS, Grafana stack, Postgres, GitHub CI/CD pipelines, SonarQube

This project involved the refactoring and modernization of an outdated MiniTwit web application(Twitter look-alike) into a scalable, maintainable, and automated system using advanced DevOps techniques. The project focused on implementing a new architecture, automating CI/CD pipelines, enhancing monitoring, and deploying the application on a Kubernetes-based infrastructure. The goal was to ensure high availability and resilience while handling a large volume of incoming requests. The application was successfully modernized to handle 14.5 million requests with a 94% success rate.

Skills and Technologies Used:

  • DevOps and Automation:

    • Created CI/CD pipelines using GitHub Actions for automated builds, testing, and deployments.
    • Implemented blue/green deployment and autoscaling using Kubernetes.
    • Utilized Terraform for infrastructure as code (IaC), including Kubernetes setup and VM provisioning.
  • Cloud and Containerization:

    • Migrated the application from a monolithic architecture to a containerized microservices setup using Docker and Kubernetes (K3S).
    • Deployed the system across multiple Digital Ocean VMs with high availability using Traefik as a load balancer.
  • Monitoring and Logging:

    • Integrated Prometheus and Grafana for real-time monitoring of performance metrics and business insights.
    • Implemented Loki and Promtail for centralized log aggregation and querying.
  • Code and Security:

    • Refactored and modularized the codebase using Go (Golang) for improved maintainability and performance.
    • Conducted static code analysis with SonarQube and CodeClimate to ensure high code quality and security.
    • Addressed vulnerabilities using dependency scans with Snyk and GitHub’s Dependabot.
  • Team Collaboration and Agile Practices:

    • Adopted Kanban boards for issue tracking and task assignment.
    • Used pull request reviews and automated linting to maintain code quality.

 

Designing a Score System to Enhance Competence in Gameplay

Purpose: Exams
Tools used: Godot, Google forms

The project focused on enhancing player engagement and satisfaction in the arcade-inspired bullet-hell game Spaccanavi by designing and implementing two score systems: destruction-based and survival-based. The goal was to evaluate which score design best satisfies the players‘ need for competence, a core concept in self-determination theory. The project involved designing score mechanics, conducting an A/B test with players, and analyzing both quantitative and qualitative data to determine the effectiveness of each system in improving player experience.

Skills and Technologies Used:

  • Game Design:

    • Designed two score systems:
      • Destruction-based: Rewards players for destroying enemies, with a point system based on the type of enemy destroyed.
      • Survival-based: Rewards players for surviving longer, with points awarded per second of gameplay.
    • Integrated score systems into the game using the Godot Engine.
  • User Testing and A/B Testing:

    • Conducted controlled playtesting sessions with 27 participants, split between the two score versions.
    • Designed and administered surveys inspired by BANGS (Basic Needs in Games Scale) and PXI (Player Experience Inventory) to assess competence satisfaction, frustration, and progress feedback.
  • Data Analysis:

    • Performed statistical analysis (e.g., t-tests, Pearson’s correlation, linear regression) on telemetry and survey data to evaluate hypotheses.
    • Coded qualitative data from interviews to identify player expectations and feedback trends.
  • UI/UX Design:

    • Updated the game UI to display scores dynamically during gameplay while maintaining a minimalist style to align with the arcade aesthetic.

 

2023

Filch – cloud CLI app

Company: Maersk
Tools used: GoLang, React, Docker, Azure, JS, Blob Storage

Filch is designed to work specifically with Grafana, which is a popular open-source analytics and interactive visualization tool used by many organizations for monitoring and analysing their data. Filch enhances Grafana’s capabilities by providing additional features and functionality for keeping the workspace clean and organized. Additionally it provides a backup functionality for users dashboard. Functionality is supported by web application.

2022

Web applications

Purpose: Exams
Tools used: Python, React, JS, SQL, Figma, Bootstrap
During the span of my studies I have worked on multiple web-based applications which structure was built either out of microservices or the system was a monolith. The full stack of the application was equipped with API connections to databases created by us or from 3rd party. Moreover, some applications had microservices focused on logging into the app. Working with sessions and JWT tokens was a standard to implement as well. For example, applications like: Online library, School system for maintaining the presence of students and managing lessons, Online car dealership.  

Detection of Diabetic Retinopathy – AI model

Purpose: Exams
Tools used: Python, scikit-learn, dataset of 50 000 retinal images
The purpose of the model was to train itself on more than 50 000 retinal images of the human eye. The majority of the eyes had more than one disease where one of the could be diabetic retinopathy. The model was trained to detect retinopathy by applying number of filters to images from which each filter was focused on extracting certain features that are specific for this disease. Once the data were collected they were sent into classifiers for the result. Resulting performance of the model was satisfying however, it is not good enough to be implemented into real word scenaries for detection.

2021

Shooting range robot – App development

Company: Trainshot
Tools used: C#, Xamarin Forms, iOS and Android devices
Assigned to create iOS/Android supported applications for remotely controlled robot. Purpose of the project was to have a programable robotic device which can move on shooting ranges and act as dummy target for practicing. My part was to create programmable map for which is going to represent any shape and size of playgorund found in real life. Additinally communication with robot had to be developped. Project was also demostrated and showcased at Defence exhibition in UAE.

Other projects

Face recognition camera tracker

Purpose: Exams
Tools used: Python, Arduino, OpenCV
Idea was to create an embedded system that is going to track a face of a given person and track him by moving the camera. With a combination of Python and Arduino system was successfully built and tested. The camera managed to successfully follow the face of the person until the face was clear and visible and the servos of the camera did not run out of tilt range.

Robo car

Purpose: Exams
Tools used: C, Arduino
Development of robotic car which was serving multiple purposes. The software of the car had 3 different scenario settings: Follow the line, Locate a box and push it out of the playing area, and Manual control for other purposes. The project was supposed to demonstrate the possibility of embedded systems and how software is influencing the behavior of the same hardware.

Smoke prevention – Webapp

Purpose: Free time
Tools used: JS, React, Bootstrap
Idea was to create an app that would persuade users from smoking by showing them data about their smoking habits. For this to work user had to insert the amount he/she smokes per day. The app would keep track of this and display the amount of money spent, amount of days they have shortened their lives, and alternatives that could have been bought by the amount of money they have spent on cigarettes.