# Rasmus Lindahl - lindahl.works

> Generated from the live site content on 2026-07-15.

## About

30-year-old Computer Science Engineer and CTO at Rektron AB. Works best where breadth meets depth - moving between low-level technical detail and product strategy. Background spans robotics, industrial, energy, and medtech software, with a practical focus on AI. Combines technical leadership with a passion for astronomy, history, and advancing technological frontiers.

### Interests

- **Astronomy & Astrophysics** - Passionate about understanding the cosmos, from stellar evolution to cosmological phenomena
- **History** - Exploring diverse periods from prehistory to modern times, with particular interest in Mongol empires and ancient civilizations
- **Philosophy** - Enjoying learning, discussing and writing extensively about philosophical concepts and ideas
- **Science & Technology** - Following cutting-edge developments in VR, AI, and emerging technologies while staying connected to scientific research

### Contact

- [LinkedIn](https://linkedin.com/in/rasmus-lindahl-6501371ba/)
- [GitHub](https://github.com/mrconter1)
- [rasmus.lindahl1996@gmail.com](mailto:rasmus.lindahl1996@gmail.com)
- [0708176182](tel:+46708176182)

## Experience

### Chief Technology Officer - Rektron AB

*Jun 2026 - Present · Stockholm · professional*

Leading Rektron's technology end to end, owning the full product portfolio, the technical strategy, and the team that builds it. Own technical and architectural strategy across all of Rektron's products (statistical quality control and production-monitoring SaaS), including the AI roadmap and build-vs-buy direction. Lead a team of six across engineering and support, owning direction, work allocation, people development, and technical hiring. Accountable for customer delivery and support end to end, from platform reliability and SLAs to customer migrations. Own infrastructure, security, and IT, plus the central BI/data platform, and hold budget responsibility across team, infrastructure, and tooling.

**Tech:** Leadership, Architecture, AI, SaaS, TypeScript, C#, Azure, Product Strategy

### Senior Software Engineer - Rektron AB

*Dec 2025 - Jun 2026 · Stockholm · professional*

Leading development on a SaaS platform for statistical quality control (SQC) and statistical process monitoring in industrial manufacturing. Progressed from integration work into technical leadership and project management. Consolidated CRM and support tooling by migrating from Upsales and Zendesk into HubSpot, and migrated customers from legacy systems to the current platform. Developed in TypeScript and C#, built a BI platform, and set up project management workflows in Azure.

**Tech:** TypeScript, C#, Azure, HubSpot, BI Platform, SQC, CRM

### Technical Lead - Enequi

*Apr 2025 - Dec 2025 · Stockholm · professional*

Driving technical excellence and team leadership at energy tech scale-up. Led cross-site development coordination while mentoring team on architecture, best practices, and technical excellence. Built critical business infrastructure including BI platform (7000+ cases), CRM system, AI chatbot, and comprehensive development roadmap. Established enterprise infrastructure including cloud security architecture, data and access control systems.

**Tech:** Leadership, Architecture, Cloud Security, BI Platform, CRM, AI, Mentoring

### Software Engineer - Cubist

*Sep 2024 - Apr 2025 · Stockholm · professional*

At Cubist, I work on regulated medical software development, focusing on MDR compliance and IEC 62304 standards. I've developed automation tools for regulatory documentation, including scripts that interface with Jira and Confluence to generate MDR certification materials. My role combines technical development with ensuring compliance to medical device software standards, contributing to both software solutions and regulatory documentation for healthcare applications.

**Tech:** MDR, IEC 62304, Python, Jira, Confluence

### R&D Software Engineer - ABB Robotics

*Jan 2021 - Sep 2024 · Västerås · professional*

As an R&D Software Engineer at ABB Robotics, I applied expert knowledge in C++ and R&D methodologies to consistently deliver innovative solutions, contributing to the enhancement of ABB's product line. One notable achievement was developing a tool that addressed a significant problem previously deemed "impossible" by principal engineers, which is now regularly used by senior developers and has led to significant time savings. I also took initiative in new areas, such as advising and coordinating teams on ChatGPT integration, including developing a demo application for web chat functionality.

**Tech:** C, C++, C# .NET, Python, R&D, LLMs

### Software Developer - Centiro Solutions

*Jun 2020 - Dec 2020 · Borås · professional*

During my summer break and alongside my studies, I worked at Centiro Solutions focusing on developing web APIs using C#, Asp.Net MVC, and various database technologies. I was also involved in UI development and gained valuable experience with deployment processes using Octopus and Azure DevOps. This role helped me develop a strong foundation in enterprise software development practices.

**Tech:** C#, Asp.Net MVC, Azure DevOps

### Victim Support Worker - Brottsofferjouren (Victim Support Organization)

*Nov 2018 - 2021 · Karlstad · volunteer*

For nearly two years, I dedicated one full afternoon each week to providing comprehensive support to victims of serious crimes. This involved offering both emotional support and guidance through the legal process, requiring a deep understanding of both psychological support principles and the Swedish legal system. I also contributed to raising awareness about the organization's work by producing and promoting a podcast. This experience significantly developed my ability to handle sensitive situations and provide meaningful support during crisis situations.

**Tech:** Podcast Production

### Lab Instructor - Karlstad Universitet

*Aug 2018 - 2020 · Karlstad · professional*

As a Lab Instructor at Karlstad University, I was responsible for grading and providing constructive support to student projects across multiple programming languages including C# .NET, Python, Java, and C. This role helped me develop strong communication and mentoring skills while deepening my understanding of fundamental programming concepts through teaching others.

**Tech:** C# .NET, Python, Java, C

### Support Worker - Women's Shelter

*Jun 2018 - Aug 2018 · Karlstad · volunteer*

At the Women's Shelter, I focused on providing emotional support and creating a safe environment for children whose parents were in protected housing. This involved establishing structured activities and routines to help children cope with challenging circumstances, while working closely with staff to ensure comprehensive support for both children and parents in crisis situations. This experience taught me valuable lessons about creating safe spaces and providing trauma-informed care.

### IT Consultant / Full Stack Developer - Freelancer

*Aug 2016 - Jun 2017 · Borås · professional*

Developed a comprehensive restaurant ordering system that enabled real-time interaction between customers and restaurant owners. The platform allowed customers to browse menus and place orders through their phones, while restaurant owners could dynamically manage their menu items and track orders. Built using a full-stack approach with PHP backend, MySQL database, and jQuery for the frontend, the system featured real-time updates and responsive design. This project required close collaboration with the restaurant owner to ensure the solution met their specific business needs.

**Tech:** PHP, MySQL, jQuery, Java

## Education

36 courses, 292.5 credits total.

### Computer Science

- Degree Project - 30 credits, grade 4, 2024-01-25
- Perspectives in Computer Science - 7.5 credits, grade 4, 2020-01-23
- Computer Engineering Project - 15 credits, grade 4, 2020-01-22
- Software Systems Architecture - 7.5 credits, grade 4, 2019-10-30
- Topics in Computer Security - 7.5 credits, grade 4, 2019-06-07 (Tor)
- Topics in Computer Networking - 7.5 credits, grade 4, 2019-06-05
- Mobile and Wireless Systems - 7.5 credits, grade G, 2019-03-29 (4G, 5G, Wifi)
- C#.NET - 7.5 credits, grade G, 2019-03-11 (C#, WPF)
- Computer Security II - 7.5 credits, grade 4, 2019-02-04
- Distributed systems and applications - 7.5 credits, grade 5, 2019-01-17
- Software Engineering - 7.5 credits, grade 4, 2018-11-13
- Computer Security I - 7.5 credits, grade 4, 2018-10-29 (SQL Injection, SSL)
- Programming Languages - 7.5 credits, grade 5, 2018-06-25 (Prolog, C)
- Software Test Design - 7.5 credits, grade 4, 2018-06-14
- Computer Networking I - 7.5 credits, grade 4, 2018-05-02 (TCP, UDP)
- Real-Time Systems - 7.5 credits, grade 4, 2018-01-30
- Data Structures and Algorithms - 7.5 credits, grade 4, 2018-01-15 (C)
- Green Computing - 7.5 credits, grade 4, 2017-11-28
- Operating Systems - 7.5 credits, grade 4, 2017-11-03
- Computer Engineering - 7.5 credits, grade 5, 2017-06-25
- Theoretical Computer Science - 7.5 credits, grade G, 2017-04-20
- Digital Electronics - 7.5 credits, grade 5, 2017-04-19
- Software Development Methodology - 7.5 credits, grade G, 2017-01-30
- Experimental Scientific Methods with Computer Aid - 6 credits, grade 4, 2016-12-14 (Matlab)
- Programming Techniques for Engineers - 6 credits, grade 5, 2016-10-27 (C, Java)
- Project Methodology with Project Planning - 3 credits, grade G, 2016-01-25 (Scrum, Agile, C#)

### Engineering

- Linear Algebra - 7.5 credits, grade G, 2020-06-09
- Discrete Mathematics - 7.5 credits, grade G, 2020-06-04
- Applied Thermodynamics - 7.5 credits, grade G, 2020-03-19
- Calculus in several variables - 7.5 credits, grade 4, 2019-08-20
- Wave Physics and Electric Circuits - 7.5 credits, grade G, 2018-08-17
- Mechanics for Engineers - 7.5 credits, grade G, 2017-08-18
- Stochastic Methods - 7.5 credits, grade G, 2017-06-09
- Matter - 7.5 credits, grade G, 2017-05-02
- Calculus in one variable - 7.5 credits, grade G, 2016-01-20
- Foundation course in Mathematics - 7.5 credits, grade G, 2015-10-26

## Projects

### eat-out (2026)

Daily lunch menu aggregator for nearby restaurants, using Gemini vision to parse menu images when text is not available.

A lightweight Next.js app that scrapes three nearby restaurants each day and shows what is on the lunch menu. When a restaurant publishes its menu as an image rather than text, Gemini reads the image and extracts the dishes. Results are cached per day so the scraper only runs once.

Restaurants

- •Restaurang S - Röntgenvägen 2, Solna (149 kr)

- •Bredbar - Kolonnvägen 16, Solna (139 kr)

- •Villa Wera - Frösundaviks Alle 1, Solna (149 kr)

How it works

Each scraper fetches the restaurant page with retry logic and a 45s timeout, parses HTML with Cheerio, and falls back to Gemini vision if the menu is image-based. Dishes are typed as meat, fish, veg, or extra. If the menu date does not match today, the restaurant shows as closed.

**Tech:** Next.js, TypeScript, Web Scraping, Gemini API, AI, Cheerio

### Wilhelm Scream DB (2026)

[https://www.wilhelmscreamdb.org/](https://www.wilhelmscreamdb.org/)

The first crowdsourced database for every Wilhelm Scream appearance in film and TV. Nothing like it existed before.

The Wilhelm Scream is a stock sound effect first recorded in 1951 that became a running inside joke among Hollywood sound designers. Despite having a devoted fanbase, no structured database of its appearances ever existed. This is the first crowdsourced one: every known use in film and TV, with timestamps, scene descriptions, YouTube clips, and community-verified entries.

Features

- •Full-text search by title, year, IMDb ID, or scene description

- •Embedded video clips jumping to the exact moment

- •Community confirmed/disputed voting on each entry

- •Submit new sightings through the site

- •Dynamic sitemap for SEO, TMDB integration for posters

**Tech:** Next.js, TypeScript, PostgreSQL, Prisma, Tailwind CSS, shadcn/ui

### Redigera (2026)

Android AI image editor that generates four edited variants side by side so you can actually compare before and after. No other tool does this easily.

Most AI image editing tools generate one result and ask you to judge it against a mental memory of the original. Redigera generates four variants in parallel so you can hold them next to each other and compare. Load an image onto an infinite pannable canvas, write a prompt, and get four options back at once from Gemini or OpenAI's image models.

Features

- •Four variant previews generated in parallel for side-by-side comparison

- •Infinite canvas with pinch-to-zoom and pan

- •Prompt input card for describing edits in plain language

- •Switch between Gemini and OpenAI models in settings

- •Background generation service keeps work running while the app is minimized

**Tech:** Kotlin, Android, Jetpack Compose, Gemini API, OpenAI API, AI, Mobile

### powerp (2026)

[https://stanzio.fly.dev/](https://stanzio.fly.dev/)

AI-powered presentation editor built on the idea that HTML slides are the future. LLMs can read and write HTML natively; they cannot do the same with .pptx.

The .pptx format is opaque to LLMs. HTML is not. This app bets that HTML-based presentations are the right primitive for AI-generated slides: the model can read the full slide source, edit it precisely, and reason about layout in a way that binary formats never allow. Decks live in Drive-style folders. Claude builds each slide with access to web search, image search, and live URL screenshots.

Features

- •Drive-style folder and deck management

- •Claude as an agent with web search, image search, and screenshot tools

- •Thumbnail generation per slide via Playwright

- •File upload support for images and assets

- •Shareable read-only deck links via token URLs

- •Per-user daily usage limits tracked in PostgreSQL

**Tech:** Python, Flask, Claude API, PostgreSQL, Playwright, Brave Search, Pexels API, AI, LLM

### bingo_math (2026)

[https://github.com/mrconter1/bingo_math](https://github.com/mrconter1/bingo_math)

What is the maximum number of filled cells on an NxNxN 3D bingo board without completing any line? Proven up to N=8 using CP-SAT. Contributed the 2D bingo interpretation to OEIS A180291.

A pure combinatorics problem: given an NxNxN 3D bingo board, what is the largest number of cells you can fill without completing a single line in any direction (row, column, pillar, or diagonal)? The project proves optimal values for small N and finds tight empirical bounds for larger ones. The 2D case (n×n board) connects to OEIS A180291, where the bingo interpretation was contributed by Rasmus Lindahl.

Results

- •N=1 through N=5: proven exactly (0, 1, 16, 45, 97)

- •N=7 and N=8: proven exactly (294, 448)

- •N=6: 177 empirical after 9+ hours of CP-SAT with symmetry breaking

- •N=9: lower bound 646 feasible; N=10: bounds proven 894-900

Approach

Three solvers: a backtracking brute-force for small N, a CP-SAT ILP solver with optional symmetry breaking and target feasibility checks, and a parallel scan script that tests a range of target values across CPU cores.

**Tech:** Python, CP-SAT, Combinatorics, Optimization, Research

### vad-vill-jag (2026)

[https://vilketparti.com](https://vilketparti.com)

Swedish political quiz based on what parties actually did in the Riksdag, not what they promised. Most valkompasser use party platforms; this uses recorded votes.

Most Swedish political quizzes (valkompasser) are built from party platforms and election promises. Those capture what parties say they will do. This one is built from actual Riksdag division records: what each party voted for when it mattered. A Python pipeline fetches roughly 1800 votes from Sweden's open parliamentary API, filters for recent and meaningful ones, and uses Claude to turn each into a plain JA/NEJ question. Your answers are matched against each party's real recorded vote.

How it works

- •Data pipeline fetches division records from riksdagen.se open data API

- •Claude converts raw vote descriptions into clear JA/NEJ questions

- •Your answers are compared against each party's actual recorded vote

- •Results show percentage alignment per party with no editorial framing

**Tech:** Next.js, TypeScript, Python, Tailwind CSS, Web, Civic Tech, Data Pipeline

### Brevvakt (2026)

Battery-powered IoT mailbox sensor that sends a push notification when mail arrives. A fun low-level hardware project: ToF distance sensing, LTE-M, and a custom firmware that survives -15C winters.

Built to solve the mundane problem of not knowing when the post arrives. The real challenge turned out to be interesting: reliably detecting a small change in mailbox depth under varying light conditions, keeping the device alive on a single charge through a Swedish winter at -15C, and transmitting over LTE-M with no WiFi. Uses a VL53L0X time-of-flight sensor, a LilyGO T-SIM7080G-S3 with a Things Mobile IoT SIM, and custom firmware with no external dependencies. Total BOM cost around 570 SEK.

Firmware design

- •Scout/judge debounce: quick read triggers a 2s wait, then a confirmed median of 10 readings

- •Self-calibrating baseline: empty mailbox distance learned over time

- •Winter battery protection: at -15C battery impedance causes voltage sag, so transmission is gated at 3.5V resting voltage

- •Pending alert queue: if battery is too low to transmit, the alert is stored and retried on next cycle

- •Night sleep mode: longer sleep window from 01:30 to 06:00 to preserve battery

- •OTA firmware updates via GitHub Actions pipeline to brevvakt-releases repo

Roadmap

The project has a mapped path from internal alpha to commercial launch: field beta with 5 units, CE/RED compliance research, custom PCB design, injection-molded enclosure, and a webshop. Each phase has a go/no-go decision gate before proceeding.

**Tech:** C++, Arduino, IoT, LTE-M, NB-IoT, Embedded, Hardware

### good-enough-ar-glasses-metric (2026)

[https://github.com/mrconter1/good-enough-ar-glasses-metric](https://github.com/mrconter1/good-enough-ar-glasses-metric)

A weakest-link scoring formula tracking when AR glasses will finally be good enough to replace your screens as a daily driver.

A single score that answers the question: how close are current AR glasses to being something you would actually wear all day instead of a monitor? The score uses a weakest-link formula so a single failing spec drags the whole product down regardless of how good the others are.

Formula

- •score = min(nits/3000, fov/50, ppd/30, battery/8, 40/weight, 1400/price)

- •A score of 1.0 means every threshold is met. Above 1.0 means it exceeds them.

Current findings (March 2026)

- •Best score so far: 0.19 (RayNeo X3 Pro, INMO Air3)

- •Battery is the universal bottleneck across all devices

- •RayNeo X3 Pro is the only device to clear the brightness target (1.17x)

**Tech:** Python, Data Visualization, Research, AR, Hardware, Metrics

### rustc-php (2026)

[https://github.com/mrconter1/rustc-php](https://github.com/mrconter1/rustc-php)

A Rust compiler written in PHP that emits real x86-64 Linux ELF binaries with no LLVM, no assembler, and no linker. More art project than practical tool. 307 stars.

More of an art project than something you would ship. A full Rust compiler in PHP that produces native Linux binaries: it parses Rust source, runs ownership and borrow checking, type checks generics and traits, and writes raw x86-64 machine code directly into a valid ELF binary with no LLVM, assembler, or linker in the chain. The absurdity of the stack is the point. It reached 307 GitHub stars.

What it implements

- •Types: i32, bool, u8-u128, usize, String, &str, &T, &mut T, raw pointers, structs, tuples, enums, Option, Result, Box, Vec (monomorphized)

- •Ownership: move semantics, borrow and mutable borrow checking, Copy inference for primitives and all-copy structs

- •Generics on functions, structs, and impl blocks; trait definitions and implementations with default methods

- •Control flow: if/else as expressions, while, loop, for ranges, match with enum arms, if let, while let

- •Closures with capture-by-value, impl blocks with self/&self/&mut self, mod declarations with file-based resolution

- •Heap runtime: mmap bump allocator with free-list for dealloc/realloc

Test suite

Each test case is a .rs file with expected output declared in comments (exit code, stdout, or expected error message). Tests cover fundamentals, invalid programs that should be rejected, multi-file modules, and complete programs.

**Tech:** PHP, Compiler, x86-64, ELF, Borrow Checking, Type System, Ownership, Generics

### cursor-pace (2026)

[https://github.com/mrconter1/cursor-pace](https://github.com/mrconter1/cursor-pace)

Cursor extension that reads your real AI spend from the local session database and gives you a self-adjusting daily budget.

Cursor subscriptions come with a pool of model credits but no built-in way to pace yourself across the month. This extension reads your session token from Cursor's local SQLite database, fetches your real usage history from the dashboard API, derives per-model cost rates from on-demand rows, and computes a daily budget that tightens if you overspend early and loosens if you are frugal.

Features

- •Status bar shows daily usage percentage, turns yellow at warn threshold and red when over budget

- •Dashboard panel: today's spend, adjusted daily budget, month spend, current model, per-model cost table

- •Modal warning when over budget and not on the auto model

- •Worst-case pricing assumed for models with no price data so budget is never understated

- •Usage refreshed every 30 seconds, soft warnings throttled to once per 30 minutes

**Tech:** TypeScript, VS Code Extension, SQLite, Cursor, DevTools

### earth-match (2025)

Scores every known exoplanet on how Earth-like it is across five parameters, using live data from the NASA Exoplanet Archive.

Queries the NASA Exoplanet Archive TAP API for all planets with measured radius, mass, orbital eccentricity, semi-major axis, and host star age, then scores each one against Earth's reference values. The dashboard shows a scatter plot of all scored planets colored by score, plus individual breakdowns per parameter.

Scoring

- •Star age (reference: 4.6 Gyr)

- •Radius (reference: 1.0 Earth radii)

- •Mass (reference: 1.0 Earth masses)

- •Orbital eccentricity (reference: 0.017)

- •Semi-major axis (reference: 1.0 AU)

Each sub-score is normalized to 1.0 at Earth's value. The overall score is the average. Planets missing any parameter are excluded from the ranking.

**Tech:** Next.js, TypeScript, Python, NASA API, Data Visualization, Space, Recharts

### Floor Tile Crossing Detector (2025)

Labeling pipeline and trained AI model that detects tile corners in real time on a phone camera. Works on almost any tiled surface.

The key challenge was building the annotation tooling to generate training data, then training a model lightweight enough to run in real time on a phone. The desktop pipeline handles video ingestion, contour detection, grid calibration, tile tracking, and GUI labeling. The result is an ONNX model that runs live on an Android camera feed and detects tile boundary crossings on almost any tiled surface.

Pipeline stages (try-track)

- •Contour detection: Canny edges filtered for enclosed skewed squares by area, aspect ratio, and angle

- •Grid homography: calibrates an overlay to the tile pattern using perspective transform optimization

- •Tile matching: signature generation and cross-frame similarity to track tile identity across frames

- •Annotation tools: GUI tools for labeling crossings and reviewing training data

- •Model training and ONNX export for on-device inference

Android app (FloorTrack)

- •Live camera frames via CameraX at 640x480 with ImageNet normalization

- •ONNX Runtime inference with NNAPI hardware acceleration

- •Results overlaid on the live camera preview

**Tech:** Python, OpenCV, PyTorch, ONNX, Android, Kotlin, Jetpack Compose, CameraX, Machine Learning, Computer Vision

### worldview-assessment (2025)

[https://github.com/mrconter1/worldview-assessment](https://github.com/mrconter1/worldview-assessment)

A 32-question survey about work, meaning, and human nature. See how your answers compare to everyone else who has taken it.

Rate 32 direct, opinionated statements on a five-point scale from strongly disagree to strongly agree. The questions cover topics like whether meritocracy is real, how companies actually behave versus what they claim, what drives human decisions, the nature of friendship, and what it takes to live well. There are no correct answers.

Features

- •32 statements rated on a 1-5 Likert scale with animated transitions

- •Results summary showing your position on each question

- •Public statistics page with aggregate response distributions

**Tech:** Next.js, TypeScript, Tailwind CSS, Framer Motion, Web

### Path Collector Sim (2025)

Real-time simulation testing optimal path strategies for resource collection, demonstrating 20% performance gains from counter-flow movement strategies inspired by World of Warcraft dynamics

A real-time simulation that tests whether contrarian movement strategies give a measurable edge in resource collection. The idea came from crowded World of Warcraft herb-gathering areas, where going against the crowd seemed to pay off - this puts that hunch to the test.

Core Features

- •Multi-player environment with 6 players (5 clockwise, 1 counter-clockwise) and randomized speeds

- •WoW-like mechanics with collection timers, resource respawning, and organic circular paths

- •Real-time visualization with live tracking and cumulative performance graphs

Key Results & Implementation

- •Counter-clockwise strategy demonstrates consistent 20% performance advantage

- •Canvas-based rendering with interactive controls and data visualization

- •Validates contrarian movement reaches fresh spawns before conventional pack routes

Why it matters

When 80%+ of participants follow the same conventional path, going the other way reaches fresh spawns first. Beyond gaming, it is a small study in crowd behaviour and how contrarian timing plays out in competitive, shared-resource settings.

**Tech:** JavaScript, Canvas, Real-time Simulation, Data Visualization, Gaming, Web

### AI Chat Compressor (2025)

Firefox browser extension that intelligently compresses Claude AI conversations by ~50% while preserving essential information, reducing token costs and enabling context preservation for follow-up conversations

A Firefox extension for long Claude conversations that grow past the context limit and get expensive to process. It compresses a conversation by roughly 50% while keeping the key information, decisions, and technical context.

Core Features

- •Smart compression reducing conversation length by 20-80% with configurable chunk size

- •Parallel processing with real-time progress tracking and cancellation support

- •Export to formatted Markdown files with detailed compression statistics

Technical Implementation

- •Firefox Manifest V2 extension with OpenAI GPT-4.1 integration

- •Parallel chunk processing (default: 5k tokens) with intelligent reassembly

- •Secure local storage for API key management and user preferences

Performance & Use Cases

A ~25k token conversation compresses in about 30 seconds via parallel chunk processing, for a 40-60% reduction with key decisions and technical details intact. Useful for cutting token costs in follow-ups, keeping context for later, and handling chats that have outgrown the context window.

**Tech:** JavaScript, Firefox Extension, OpenAI API, HTML, CSS, Browser Extension, GPT-4

### Charts Explorer (2025)

Mobile-first podcast analytics dashboard that tracks and visualizes Spotify episode rankings across regions and time periods with real-time data filtering and smart search capabilities

A mobile-first podcast analytics dashboard that turns raw ranking data into something you can actually read. It is the frontend for the Podcast Sync Engine, with visualization and filtering for Spotify podcast performance across markets.

Core Features

- •Mobile-first responsive design with touch-friendly navigation across all devices

- •Multi-region analytics comparing Sweden and United States podcast markets

- •Flexible time windows: weekly, monthly, quarterly, annual, and historical overviews

- •Live search functionality and individual podcast pages with Spotify deep-linking

Technical Implementation

- •Built with Next.js 15, React 19, and TypeScript with modern UI components

- •Real-time data integration with Supabase PostgreSQL backend

- •Data filtering and visualization pipeline deployed on Vercel

Data Integration

The dashboard reads directly from the Podcast Sync Engine's Supabase database. It has a main view with filterable episode rankings, per-podcast detail pages, and search, all tuned to work on mobile and desktop.

**Tech:** Next.js, React, TypeScript, Tailwind CSS, shadcn/ui, Supabase, PostgreSQL, Responsive Design

### Podcast Sync Engine (2025)

Elegant serverless data synchronization system that perpetually tracks Spotify podcast rankings across multiple regions with zero monthly costs using smart web scraping and automated scheduling

A 3-tier serverless setup that runs indefinitely inside free cloud tiers, orchestrating a few managed services into a reliable data pipeline with no ongoing infrastructure cost.

Architecture

- •Google Apps Script scheduled execution engine (24-hour intervals)

- •Supabase PostgreSQL managed database with REST API integration

- •Multi-region tracking: Sweden and United States podcast charts

- •Processes 500 episodes daily (250 per region) with enhanced metadata scraping

- •Runs continuously for $0/month

Data Processing

- •Performance-based scoring system (Rank #1 = 250 points, Rank #250 = 1 point)

- •Intelligent web scraping for episode descriptions, duration, and show metadata

- •Unicode text cleaning for database-safe international content storage

- •Rate limiting with 50ms delays and exponential backoff retry logic

- •Error handling and health monitoring with detailed sync reports

Reliability

- •Automated retry logic for 403 errors with intelligent backoff strategies

- •Modular function architecture supporting easy regional expansion

- •Database upsert operations via custom RPC functions

- •Keeps Supabase database active preventing auto-deletion through scheduled sync

Daily Pipeline

Each day it fetches top episodes from the Spotify charts, enriches them with scraped metadata, applies the performance score, upserts to Supabase with Unicode cleaning, and serves the result over a REST API. The modular design makes it straightforward to add new regions, platforms, or scoring rules later.

**Tech:** Google Apps Script, Supabase, JavaScript, PostgreSQL, Web Scraping, Serverless, API

### Enequi BI (2025)

Comprehensive business intelligence platform transforming customer support emails, sales data, and product metrics into actionable insights for renewable energy sector leadership

Enequi BI is an analytics dashboard that pulls customer support communications, sales data, and product metrics into one place. It gives Enequi's leadership a current view of customer health, operations, and market performance in the renewable energy sector.

Analytics Engine

- •Automated processing of 7,000+ customer support emails with traditional analysis and LLM sentiment analysis

- •Real-time monitoring of IoT device installations and sales performance

- •Customer health monitoring with response time tracking and frustration pattern analysis

- •Brand mention tracking across 12+ competitors

- •Product category analysis covering inverters, car chargers, solar panels, and smart meters

Data Processing Pipeline

- •Python-based analytics engine with Outlook COM interface integration

- •Automated email synchronization processing 1.5-2 hours for full dataset

- •Intelligent conversation threading and batch processing (100 emails per batch)

- •Seven-category customer frustration classification system

- •IoT device backend integration for installation tracking

Dashboard Features

- •Role-based access control with four predefined user accounts and permission levels

- •Interactive data visualizations using Recharts with line, bar, area, and pie charts

- •Customer health section with email volume trends and conversation turn analysis

- •Sales intelligence tracking customer installation growth and market penetration

- •Product intelligence dashboard analyzing service themes and feature usage patterns

Technical Architecture

A Next.js 15 frontend (a 2,190-line dashboard component) on top of a Python analytics backend that uses pywin32 for Outlook automation and pyautogui for keyboard simulation. The backend emits structured JSON covering email volume trends, customer frustrations, sales analytics, response times, and competitor brand mentions.

**Tech:** Next.js, React, TypeScript, Python, Tailwind CSS, Data Analytics, Business Intelligence, AI, LLM, Sentiment Analysis

### Enequi AI Assistant (2025)

Smart, responsive AI chat assistant built for Enequi with real-time streaming responses, mobile optimization, and comprehensive product knowledge

The Enequi AI Assistant is a chat interface built in 1 hour and 50 minutes that answers questions about Enequi products, services, and technical implementation in plain language, and works across device types.

Core Capabilities

- •Answers manual questions about Enequi products and services

- •Responds to technical questions about codebase implementation

- •Real-time streaming responses for immediate user feedback

- •Mobile-optimized interface with fixed-position input

- •Markdown support for rich text formatting in responses

Advanced Features

- •Message regeneration capability for improved responses

- •Chat history management with persistent sessions

- •Loading indicators and smooth animations

- •Pinecone integration for enhanced knowledge retrieval

- •Responsive design optimized for desktop and mobile experiences

Technical Architecture

Built with Next.js and React using TypeScript for type safety, styled with Tailwind CSS for responsive design. The application integrates with Pinecone for vector-based knowledge retrieval and supports markdown rendering for rich text responses. The interface features a mobile-optimized layout with fixed positioning and desktop-friendly centered content.

Build Time

The whole thing went from idea to working deployment in 1 hour and 50 minutes - a quick test of how far modern tooling and an LLM can take a small, focused interface in one sitting.

**Tech:** Next.js, React, TypeScript, Tailwind CSS, AI, Pinecone, Markdown, Responsive Design

### Oh Life! (2025)

[https://oh-life.vercel.app/](https://oh-life.vercel.app/)

Engaging audio-based letter recognition game where players listen to spoken letters and compete on a global leaderboard with real-time feedback

Oh Life! is a simple but engaging game where players listen to spoken letters, find and click the correct letter among multiple options on screen, and compete for high scores on a global leaderboard. The game combines audio learning with competitive gameplay elements.

Gameplay Features

- •Listen & Click gameplay - hear spoken letters and identify them visually

- •Real-time visual feedback for correct and incorrect selections

- •Global leaderboard displaying top 25 players worldwide

- •Responsive design optimized for desktop and mobile play

- •Clear audio pronunciation using Web Speech API

Technical Implementation

Built with Next.js 15.3.0 and React 19, featuring modern web technologies including TailwindCSS 4 for styling and Supabase for backend database functionality. The game leverages the Web Speech API for text-to-speech capabilities, providing clear letter pronunciation for the audio-based gameplay mechanics.

Database Architecture

Utilizes Supabase for leaderboard functionality with a structured scores table containing player names, scores, and timestamps. The real-time database integration allows for immediate leaderboard updates and competitive gameplay tracking across all players.

User Experience

Feedback is instant, and the layout and touch controls adapt to screen size so it plays the same on desktop or mobile.

**Tech:** Next.js, React, TypeScript, Tailwind CSS, Supabase, Web Speech API, Gaming, Web

### Constrained Text Generation (2025)

Python project for generating text using Large Language Models with specified constraints including word count, character restrictions, and constraint-aware prompting

A Python project focused on generating text using Large Language Models (LLMs) with user-specified constraints. The system provides a framework for controlled text generation, allowing developers to enforce various restrictions and requirements on LLM outputs.

Core Features

- •Text generation via configurable LLM interface

- •Word count constraint enforcement

- •Character restriction validation

- •Extensible constraint framework for additional requirements

- •Modular architecture for easy LLM API integration

Technical Architecture

The project features a clean separation between the main constraint-checking logic in main.py and the LLM interaction layer in llm_interface.py. This modular design allows for easy integration with various LLM providers including OpenAI, Hugging Face, and other APIs while maintaining consistent constraint validation.

Implementation Approach

Currently includes placeholder LLM responses for development and testing, with a constraint checking system that validates generated text against the specified requirements. The architecture supports multiple constraint types and leaves room for constraint-aware prompting strategies later.

Future Development

Planned next steps: wire in real LLM APIs (OpenAI, Hugging Face), add more constraint types, and explore constraint-aware prompting that nudges the model toward compliant text on the first pass.

**Tech:** Python, LLM, AI, OpenAI API, Hugging Face, NLP, Research

### Enequi Website Redesign (2025)

Modern website redesign proposal for Enequi featuring interactive energy savings calculator, smart grid showcase, and contemporary glassmorphism design

An energy management platform prototype showing AI-driven energy optimization for residential and commercial users, with a responsive interface, smooth animations, and glassmorphism styling.

Core Features

- •Interactive energy savings calculator with real-time calculations

- •Smart energy management with peak shaving and spot price optimization

- •Weather integration for solar generation predictions

- •EV charging control during optimal energy pricing periods

- •Real-time power consumption analysis and optimization recommendations

Technical Implementation

Built with Next.js 15.3.0 and React using TypeScript for type safety, styled with modern Tailwind CSS 4.0. The application features custom UI components with Radix UI patterns, smooth animations powered by Framer Motion, and a mobile-first responsive design system.

Design System

The design uses primary colours (deep red and blue), a dark theme with subtle gradients, serif headings, and scroll-triggered animations. Glassmorphism and parallax carry through across device types.

**Tech:** Next.js, React, TypeScript, Tailwind CSS, Framer Motion, Responsive Design, Web

### Stair Model Visualization (2025)

[https://problem-test.vercel.app/](https://problem-test.vercel.app/)

Interactive 3D visualization tool for analyzing stair models in architectural designs, validating step depth for safety compliance with progressive filtering pipeline

This started as an interview task: a simple script returning true/false for stair depth validation. I found the problem interesting enough to build a 3D visualization tool around it instead. It analyzes stair models in architectural designs and checks step depth against the 25cm minimum safety requirement.

Key Features

- •Interactive 3D visualization with FPS-style camera controls

- •Multiple specialized rendering modes for different analysis approaches

- •High-precision measurement display with outlined text for clarity

- •Intuitive camera movement and rotation controls

- •UI with controls and information panels

Rendering Modes Pipeline

- •ALL_FACES: Complete model rendering from raw 3D data

- •FLAT_RECTANGLES: Horizontal surfaces only (same z-value filtering)

- •CLOSED_RECTANGLES: Well-formed, complete closed shapes only

- •UPPERMOST_RECTANGLES: Top faces only (filters out bottom faces of cuboids)

- •ASPECT_RATIO_RECTANGLES: Stair-step shaped faces based on proportions

- •LONG_SIDE_LINES: Precise depth measurements with visual indicators

Technical Implementation

Built with Next.js and Three.js, the visualization uses a progressive filtering approach where each rendering mode builds upon the previous one. The system parses 3D stair models, analyzes geometry to identify horizontal surfaces and rectangular shapes, filters based on orientation and aspect ratio, and measures distances between parallel edges to determine step depths.

User Controls

FPS-style navigation with mouse look, WASD movement, Space/Shift for vertical movement, and dedicated modes for precise analysis. Left-click toggles pointer lock for camera rotation, while right-click enables slow, precise movement for detailed inspection.

Why I kept going

The interesting part was the geometry: filtering raw faces down to the actual stair treads, then measuring depth between parallel edges. The progressive rendering modes are really just the steps of that pipeline made visible.

**Tech:** Next.js, Three.js, TypeScript, 3D, Architecture, Visualization, Web

### Existence Bingo (2025)

[https://lifes-bingo.vercel.app/](https://lifes-bingo.vercel.app/)

A dark humor web app that generates personalized 'misfortune bingo' boards based on your life choices.

Existence Bingo is a darkly humorous web application that creates personalized "misfortune bingo" boards based on your life configuration. The game generates a unique 4x4 grid of potential life challenges, allowing you to mark off events you've experienced. Get four in a row to achieve bingo!

Core Features

- •Personalized boards based on life situation (spouse, children, siblings, pets)

- •Deterministic generation - same identifier always creates the same board

- •Responsive design across mobile, tablet, and desktop devices

- •Local storage for persistent board state

- •Colorful celebrations with confetti for bingo achievements

Gameplay Mechanics

Players configure their board by entering personal details like family composition and pets, then provide a personal identifier that deterministically generates their unique misfortune board. The game tracks progress as players mark off experienced events, celebrating when they achieve bingo through completing rows, columns, or diagonals.

Technical Implementation

Built with Next.js and React using TypeScript for type safety, styled with Tailwind CSS and enhanced with shadcn/ui components. Features deterministic board generation algorithms, local storage persistence, and responsive design patterns for optimal cross-device experience.

Design Philosophy

This project serves as dark humor and commentary on the shared human experience of facing life's difficulties, while also functioning as a subtle critique of pro-natalism. The application is designed to acknowledge life's challenges with humor rather than making light of serious situations.

**Tech:** Next.js, TypeScript, Tailwind CSS, Web

### Bolugn (2025)

[https://bolugn.se](https://bolugn.se)

Intelligent Swedish rental housing platform with automated matching, subscription-based services (299 SEK/month), and comprehensive move-in assistance

Bolugn is a full-stack app aimed at Stockholm's competitive second-hand rental market. It runs as a paid subscription that does proactive apartment hunting, contract monitoring, and full-service moving help on the user's behalf.

Technical Architecture

Built with Next.js 15 and React 19, featuring a modern TypeScript-first architecture. The application uses Supabase PostgreSQL with Row Level Security (RLS) for data management, Clerk for Swedish-localized authentication, and Stripe for subscription billing with European compliance (3D Secure). The frontend uses Tailwind CSS with fluid typography, glassmorphism, and Framer Motion animations.

Business Model & Features

- •Premium subscription service at 299 SEK/month with automatic billing

- •Intelligent preference system with drag-and-drop priority ranking

- •Smart matching algorithm considering commute times, neighborhoods, and amenities

- •Customer limit of 10 active subscribers with waitlist management

- •Comprehensive admin panel for apartment and case management

Admin & Preferences

There is an admin panel for apartment management, a landlord CRM, and case tracking. Users set detailed preferences - Stockholm neighborhoods, price range (10,000-20,000 SEK), size, and commute - with real-time validation and cookie persistence.

Payment Integration

Advanced Stripe integration with pro-rated billing, billing cycle anchoring to the 1st of each month, and webhook handling for real-time subscription status updates. It includes 3D Secure compliance for European regulations and cancellation flows with confirmation emails.

User Experience

Swedish-first and fully localized, with mobile-friendly responsive design and the usual performance touches: skeleton screens, optimistic UI updates, dynamic imports, toast notifications, and progress indicators.

**Tech:** Next.js, React, TypeScript, Stripe, Supabase, Clerk, Tailwind CSS, PostgreSQL

### DomKollen (2025)

[https://dom-kollen.vercel.app](https://dom-kollen.vercel.app)

Modern web application for exploring and analyzing Swedish court verdicts with advanced filtering and search capabilities

I developed DomKollen to modernize the way legal professionals, researchers, and the public interact with Swedish court verdicts. The system combines Python-based data processing with a polished web interface to make legal information more accessible and analyzable.

The backend processing pipeline efficiently handles court verdict PDFs, extracting crucial information such as case IDs, dates, court names, and legal keywords. This data is then transformed into a structured format that supports detailed querying and analysis, while keeping the original documents intact and easier to navigate.

The frontend, built with Next.js and Material UI, provides an intuitive interface for exploring the processed data. Users can filter cases by multiple criteria, search through legal keywords, and analyze patterns across verdicts. The responsive design ensures a seamless experience across all devices, while server-side rendering enhances performance and SEO capabilities. The project demonstrates the potential for technology to improve access to and understanding of legal information.

Visit the live site: https://dom-kollen.vercel.app

**Tech:** Next.js, TypeScript, Python, Material UI, Web, Legal Tech

### Party Bingo (2025)

[https://bingo-psi-eight.vercel.app](https://bingo-psi-eight.vercel.app)

Interactive party game that generates random challenges for social gatherings, featuring automatic progress saving and responsive design

I developed a fun and interactive party game that helps break the ice at social gatherings. The application generates a random 5x5 bingo board filled with unique party challenges, creating engaging social interactions and memorable moments.

A responsive grid layout adapts to all screen sizes, and local storage keeps players' progress even if they close the browser. The game draws from a pool of 50 party challenges.

To enhance user experience, I implemented a confirmation dialog for new games to prevent accidental progress loss. The interface features smooth animations and touch-friendly controls, making it equally enjoyable on both desktop and mobile devices. Special attention was paid to mobile optimization and persistent state management, ensuring players can enjoy the game seamlessly across different devices and sessions.

Visit the live site: https://bingo-psi-eight.vercel.app

**Tech:** Next.js, TypeScript, Tailwind CSS, Web

### DiceBench (2025)

[https://dice-bench.vercel.app](https://dice-bench.vercel.app)

A Post-Human Level (PHL) benchmark for testing superintelligent AI systems through dice prediction

DiceBench introduces a novel approach to AI system evaluation by creating a benchmark that deliberately exceeds human cognitive capabilities. The project consists of a dataset of video sequences showing dice rolls that cut off before the final outcome, challenging AI models to predict results using physical information that humans struggle to process effectively.

The system includes a comprehensive evaluation framework built with TypeScript and Python, featuring a public dataset of 10 videos and a private evaluation set of 100 videos. The web interface, built with Next.js, provides an interactive testing environment and detailed documentation. Integration with OpenAI's GPT-4V demonstrated above-human performance at 33% accuracy compared to human performance at 27%, both exceeding the random baseline of 16.7%.

The point is partly the benchmark itself and partly the question behind it: how do we evaluate AI systems once they start beating humans on the tasks we used to measure them by?

**Tech:** TypeScript, Python, Next.js, OpenAI API, AI, Research, Web

### H-Matched (Dec 2024 - Present)

[https://h-matched.vercel.app](https://h-matched.vercel.app)

A platform tracking AI's progress by measuring time between benchmark release and AI matching human-level performance.

H-Matched tracks how quickly AI systems reach human-level performance on various benchmarks. It shows the trend over time, a timeline of when each benchmark was matched, and the underlying release and completion dates. Built with Next.js and TypeScript, it makes the shrinking gap between a benchmark's release and its human-level achievement easy to see.

It tracks over 15 well-known AI benchmarks, each sourced from academic papers and official documentation. Every entry links to the original paper, official site, and a verification source so the data points can be checked.

**Tech:** Next.js, Node.js, TypeScript, Tailwind CSS, LLM, Research

### LongScope (2024)

[https://github.com/mrconter1/LongScope](https://github.com/mrconter1/LongScope)

Benchmark framework for evaluating LLM long-context capabilities

LongScope represents a novel approach to evaluating large language models' ability to handle long-form context. While similar to existing needle-in-haystack approaches, LongScope introduces a generative component and offers customizable parameters for both length and difficulty.

The framework provides a more nuanced understanding of how different models handle increasing context lengths, offering insights beyond simple binary success metrics. The generative nature of the benchmark helps assess not just retrieval capabilities but also the model's ability to synthesize information from extended contexts.

**Tech:** Python, LLM, NLP, AI, Research, DevTools

### aitemplater (2024)

[https://github.com/mrconter1/aitemplater](https://github.com/mrconter1/aitemplater)

Web interface for creating and managing LLM prompt templates

I developed a Retrieval-Augmented Generation (RAG) system to make ABB's product documentation more accessible. The system began by processing public ABB manuals into manageable chunks and creating embeddings stored in a vector database. A web interface built with C# Razor framework provided the front end, while integration with an LLM enabled natural language understanding.

The system could understand and accurately answer questions about ABB products by combining context-aware retrieval with natural language generation. This made technical documentation more accessible to users who might not know exactly where to look for specific information.

**Tech:** Next.js, Node.js, Vercel, Web, AI, LLMs, DevTools

### PullRequestBenchmark (2024)

[https://github.com/mrconter1/PullRequestBenchmark](https://github.com/mrconter1/PullRequestBenchmark)

Framework for evaluating LLMs' ability to review complete Git histories and pull requests

PullRequestBenchmark creates a realistic evaluation framework that challenges LLMs in a way that directly relates to software engineering tasks. The system provides models with complete Git history and pull request information, then evaluates their ability to make appropriate approve/reject decisions.

The benchmark compares model decisions against real-world pull requests collected from GitHub, providing a practical measure of how well LLMs could potentially assist in code review tasks. This approach helps evaluate not just code understanding, but also the ability to consider historical context and project evolution in decision-making.

**Tech:** Python, Git, LLM, AI, DevTools, Research

### HuggingFace Paper Explorer (2024)

[https://huggingface-paper-explorer.vercel.app](https://huggingface-paper-explorer.vercel.app)

Community-endorsed tool for exploring and filtering HuggingFace paper submissions across different time horizons

I developed this tool to address the challenge of discovering interesting machine learning papers on HuggingFace. While the platform had a page for daily paper submissions and voting, there was no easy way to view trends across different time periods. The application performs real-time scraping of HuggingFace paper submissions and presents them with flexible time horizon filtering options.

The interface allows users to view and sort papers by popularity across daily, weekly, and monthly timeframes, making it easier to discover significant research that might have been missed in the daily feed. The project gained significant traction in the community, ultimately receiving official endorsement from the HuggingFace community owner, validating its utility in the ML research ecosystem.

**Tech:** Next.js, Node.js, Web Scraping, Web, AI, Research

### Unified LLM Evaluation Framework (2024)

[https://github.com/mrconter1/BenchmarkAggregator](https://github.com/mrconter1/BenchmarkAggregator)

Comprehensive framework for standardized evaluation of multiple LLM models across various benchmarks

In response to the fragmented nature of LLM evaluation, where different models are often tested on different datasets, I developed a unified evaluation framework. The system connects to multiple model providers through the OpenRouter API, allowing for standardized testing across all major benchmarks.

The framework was designed with extensibility in mind, making it easy to add new models or benchmarks as they emerge. This approach enables fair, future-proof comparisons between models, helping to establish more consistent evaluation standards in the field. The result is a more comprehensive understanding of each model's strengths and weaknesses across various tasks.

**Tech:** Python, OpenRouter API, AI, LLMs, Research, DevTools

### Long Multiplication Benchmark (2024)

[https://github.com/mrconter1/The-Long-Multiplication-Benchmark](https://github.com/mrconter1/The-Long-Multiplication-Benchmark)

Novel benchmark for evaluating LLM context understanding using mathematical operations

The Long Multiplication Benchmark emerged from a search for tasks that are both scalable and easily verifiable by humans. By using schoolbook long multiplication, I created a benchmark that tests LLMs' ability to handle increasing context lengths while maintaining accuracy on a task that humans can readily verify.

The beauty of this approach lies in its independence from coefficient length - the core operation remains the same regardless of the numbers' size. This allowed me to estimate the theoretical minimum context length needed for successful computation, providing a clear baseline for evaluating model performance.

**Tech:** Python, LLM, AI, Research, DevTools

### Lifography (2024)

[https://www.lifography.app](https://www.lifography.app)

Professional website for AI avatar generation service with integrated customer interest form

Lifography represents a novel concept in AI avatar generation, allowing people to archive their personality through text, audio, and video content. I designed and developed a professional website to showcase this service concept, using Tailwind CSS for a polished, responsive design. The site was built on Node.js and deployed through Vercel for optimal performance.

The site explains the service, collects customer interest, and lays out the package options. The SendMail API handles automated responses to inquiries. The focus was on communicating the value proposition clearly and making it easy for people to express interest and pick a service option.

**Tech:** Next.js, Tailwind CSS, Node.js, Vercel, SendMail API, Web, AI

### Voice Chat App (2024)

Walkie-talkie style voice interaction app using OpenAI's Whisper and GPT-4

After extensive use of ChatGPT's voice mode, I identified several limitations in its interaction model, particularly around interruptions and speech timing. To address these issues, I developed a more robust voice interaction system using React Native and Expo. The application implements a walkie-talkie style interaction model that provides more control over the conversation flow.

The system integrates multiple OpenAI APIs: Whisper for accurate speech-to-text conversion, GPT-4 for generating contextual responses, and text-to-speech for natural voice output. This combination, along with the push-to-talk interface, created a more reliable and less frustrating voice interaction experience compared to the standard implementation.

**Tech:** React Native, Expo, TypeScript, OpenAI API, Mobile, AI, LLMs

### Cladio (2023)

[https://github.com/mrconter1/Claudio](https://github.com/mrconter1/Claudio)

Web-based audio labeling tool with ML-powered cough detection

What started as a job interview assignment to create a cough detection model evolved into a comprehensive audio labeling platform. The initial task involved training an LSTM model on audio clips to identify coughs, but I saw an opportunity to create something more useful.

I expanded the project by developing a web-based GUI that allowed users to not only detect coughs but also visualize and label audio clips. The interface made it easy to modify and maintain audio datasets, making it a valuable tool for creating and curating training data for audio-based machine learning models.

**Tech:** Python, JavaScript, LSTM, Web, AI, ML

### Budget Management App (2023)

[https://github.com/mrconter1/budg](https://github.com/mrconter1/budg)

Cross-platform financial management application with intuitive interface

**Tech:** Flutter, Dart, Mobile, Cross

### SnippetDepot (2023)

[https://github.com/mrconter1/SnippetDepot/](https://github.com/mrconter1/SnippetDepot/)

API and website for real-time retrieval of code snippets, including a VS Code extension and comprehensive documentation with a 5000-word wiki

**Tech:** Python, jQuery, Bootstrap, REST, TypeScript, Backend, Web, API

### OS Installation UI (2023)

Modern UI for streamlining OS installation process with hardware and infrastructure integration

At ABB's R&D department, we frequently needed to install new operating systems on various hardware configurations. To streamline this repetitive process, I developed a modern UI solution using WPF and .NET Core. The application automatically detected connected hardware and integrated with our online infrastructure to provide seamless version selection.

The interface simplified what was previously a complex, multi-step process into a streamlined, one-click operation. The tool supported multiple OS versions and configurations, significantly reducing the time and complexity involved in setting up new hardware in our R&D environment. This improvement in workflow efficiency was particularly appreciated by team members who frequently needed to switch between different system configurations.

**Tech:** C#, .NET Core, WPF, Windows, Enterprise

### WikiGenGPT (2022)

[https://github.com/mrconter1/WikiGenGPT](https://github.com/mrconter1/WikiGenGPT)

Dynamic Wikipedia-style page generator using GPT for content creation based on context

I created a dynamic wiki system that generates content on-demand using GPT. The system was designed to automatically generate new pages based on user navigation patterns, maintaining context awareness by considering previously generated content. As users explored the wiki structure by clicking links, the system would dynamically generate new pages while maintaining coherent context with the existing content.

This project demonstrated the early potential of GPT for dynamic content generation and contextual understanding, creating an ever-expanding knowledge base that grew organically with user interaction. The system's ability to maintain context across multiple pages showed how language models could be used to create interconnected, coherent content.

**Tech:** Python, OpenAI API, AI, LLMs, Web

### Product Manual ChatBot (2022)

RAG-based chatbot for ABB product manuals using vector database and LLM integration

I developed a Retrieval-Augmented Generation (RAG) system to make ABB's product documentation more accessible. The system began by processing public ABB manuals into manageable chunks and creating embeddings stored in a vector database. A web interface built with C# Razor framework provided the front end, while integration with an LLM enabled natural language understanding.

The system could understand and accurately answer questions about ABB products by combining context-aware retrieval with natural language generation. This made technical documentation more accessible to users who might not know exactly where to look for specific information.

**Tech:** C#, Razor, LLM, Vector DB, AI, Web, Enterprise

### gChat (2022)

[https://github.com/mrconter1/gChat](https://github.com/mrconter1/gChat)

Early exploration of GPT-2 capabilities through Turing test implementation

This project represented an early exploration of GPT-2's capabilities, developed two years before ChatGPT's release. With early access to the OpenAI API, I created a chat interface that enabled human-AI interaction in a novel way. The system implemented a Turing test framework where users engaged in conversations without knowing if they were talking to an AI or another human.

Users were asked to rate the authenticity of their conversations, providing valuable insights into the AI's ability to maintain natural dialogue. This early experiment with conversational AI helped understand the potential and limitations of language models before they became mainstream.

**Tech:** OpenAI API, AI, LLMs, Web

### VS Warning Navigator (2021)

Visual Studio extension for efficient navigation of programming warnings in separated build tools

**Tech:** Visual Studio, C#, Windows, DevTools

### Fall Detection Smartwatch App (2020)

Non-ML approach to reliable fall detection for elderly care applications

**Tech:** Android, Java, Mobile, Wearable

### Excel2Code (2020)

Automated translation of Excel specifications into C# code at Centiro by creating an Excel plugin, significantly enhancing development efficiency and code standardization

**Tech:** C#, Excel, VBA, Windows, Automation

### Dynamic Object Tracking System (2019)

High-performance multi-object tracking solution with dynamic adaptation capabilities

I developed a non-ML approach to object tracking that could dynamically adapt to multiple objects in real-time. The system worked by implementing an innovative pixel sampling technique around the initial mouse-click position on the video feed. By analyzing and matching similar colored pixels, then taking their average position, the system could maintain tracking even as objects moved or changed slightly.

The tracking was further enhanced by an iterative position prediction system that used previous positions to anticipate where objects might appear in the next frame. This approach proved particularly effective for face tracking, as it could adapt to natural movements and lighting changes without requiring any machine learning models. The combination of random sampling, color matching, and position prediction created a robust and computationally efficient tracking solution.

**Tech:** OpenCV, C++, Vision, AI

### Morse Code Input App (2019)

Mobile application using accelerometer for morse code input translation

**Tech:** Android, Java, Mobile, Input Method

### Hand Tracking ML Pipeline (2018)

Developed a machine learning model to track hand position relative to a VR headset. Collected data using a custom C# tool and trained a Convolutional Neural Network

I developed a complete machine learning pipeline for tracking hand positions in VR space using a webcam mounted on an Oculus headset. The project began with creating a data collection tool in Unity/C# to gather training data of hand positions relative to the headset. This data was then used to train a CNN model using TensorFlow that could predict XYZ coordinates in real-time.

The system provided a cost-effective alternative to dedicated hand tracking hardware, demonstrating how computer vision could be used to enhance VR interactions without specialized equipment. The real-time performance of the system made it practical for actual VR applications.

**Tech:** C#, ML, CNN, Unity, AI, Desktop

### 3D Game Engine From Scratch (2018)

[https://github.com/mrconter1/IntuitiveEngine](https://github.com/mrconter1/IntuitiveEngine)

Built entirely from drawPixel function, implementing z-buffer, camera systems, and 3D rendering without external resources

Over two months, I built a 3D game engine from first principles, using only the drawPixel function and mathematical intuition, without any external resources or internet reference. The engine grew to include a custom z-buffer for depth handling, comprehensive camera systems, and basic lighting calculations.

The rendering system was optimized for real-time performance, supporting Minecraft-style voxel graphics. For terrain generation, rather than using traditional Perlin noise, I developed a unique approach using combinations of 2D sine waves. By overlaying multiple waves with different frequencies, amplitudes, and phases, I created natural-looking landscapes that added depth to the virtual world.

This project was particularly challenging but rewarding, as it required developing every aspect of 3D graphics from scratch, leading to a deep understanding of computer graphics fundamentals.

**Tech:** C++, Desktop, Gaming

### Labyrinth Generator (2018)

Procedural maze generation using multi-agent digging system with visualization

**Tech:** Python, Pygame, Desktop, Gaming

### Ticket System Reverse Engineering (2017)

Reverse-engineered and replicated a bus ticket application, decompiling Java code, decrypting database keys, and rebuilding the application from scratch

This project involved reverse engineering the university town's bus ticket system through a methodical approach to understanding its security mechanisms. After extracting and decompiling the Android app binaries, I discovered an encryption key stored in plain text within the decompiled code. This key allowed me to decrypt the SQLite database, providing insight into the system's data structure.

The most challenging aspect was recreating the intricate ticket view, which included animated arrows and dynamic gradients that changed daily. Through careful analysis of the patterns, I was able to predict how tickets would appear up to seven days in advance. The project demonstrated both technical reverse engineering skills and attention to visual detail in replication.

**Tech:** Java, Android, Cryptography, Mobile, Security

### Enigma Machine Emulator (2017)

[https://github.com/mrconter1/PyEnigmaMachine](https://github.com/mrconter1/PyEnigmaMachine)

Software implementation of 1941 Enigma machine standard for string encryption and decryption

**Tech:** C++, Desktop, Security

### i3_meta_workspace (2017)

[https://github.com/mrconter1/i3_meta_workspaces](https://github.com/mrconter1/i3_meta_workspaces)

Extension for i3 window manager enabling meta workspaces management with community recognition

**Tech:** Bash, Linux, Scripting, Desktop

### Comic Community Platform (2014)

Full-stack platform featuring daily content updates, real-time chat, and user engagement features

I built a comprehensive comic sharing platform from the ground up without relying on frameworks, serving a dedicated community of users. The site featured a dynamic front page that showcased comics based on user popularity, supported by a robust voting system that helped surface the best content.

Users could upload their own comics, engage in real-time chat discussions, and participate in the community through a comment system. The platform was built using vanilla web technologies including HTML, CSS, jQuery, JavaScript, Ajax, MySQL, and PHP. This project was particularly significant as it demonstrated full-stack development capabilities and the ability to create a complete, interactive web platform.

**Tech:** JavaScript, jQuery, PHP, MySQL, Web, Fullstack

### Restaurant Order System (2014)

Mobile-first solution enabling customers to place orders via phone, with real-time menu sync for restaurants

**Tech:** JavaScript, PHP, MySQL, Web, Mobile, Fullstack

### VR FPS Game (2014)

First-person shooter with VR support using early Unity VR packages and custom physical phone VR mount

**Tech:** Unity, C#, VR, Gaming

### Calculator Text Reader (2014)

Text reader program for Casio calculator with Python script for text conversion and unlimited page support

**Tech:** Casio Basic, Python, Embedded, Scripting

### Minecraft Building Mod (2013)

Minecraft modification enabling level-by-level grid building with custom UI integration

**Tech:** Java, Gaming, Modding

### Classroom Schedule App (2013)

Mobile application for viewing and syncing classroom schedules with automatic updates

**Tech:** Java, Android, SQLite, Mobile

### Platform Game (2012)

Interactive platform game featuring a rolling character with dynamic music integration based on movement

**Tech:** ActionScript, Flash, Gaming, Web

### Game Server Platform (2011)

Custom game server with extensive mechanics that grew to hundreds of active users

What started as a simple game server evolved into a comprehensive platform serving hundreds of active users. The project involved writing extensive game mechanics in Lua, managing server infrastructure, and building a vibrant user community.

As the user base grew organically, I continuously added new features and gameplay elements to keep the community engaged. This early experience in maintaining a live service taught me valuable lessons about user engagement, server management, and community building. The project's success demonstrated the potential of creating engaging multiplayer experiences even with relatively simple technology.

**Tech:** Lua, Backend, Server, Gaming

### 3D Shape Calculator (2011)

GUI application for calculating volumes of various 3D geometric shapes including cuboids, cones, and spheres

**Tech:** C++, Visual C++, Windows, Desktop

### Minecraft Clone (2010)

3D voxel-based world with block manipulation, flying mechanics, and custom rendering

A clone of Minecraft implemented in C using OpenGL, featuring a unique approach to block placement mechanics.

Key technical achievements:
- Implemented full 3D navigation and flying mechanics
- Developed an innovative block placement system using ray casting
- Created a virtual stepping algorithm that:
1. Steps forward along the gaze line until hitting a block
2. Steps backward until finding empty space
3. Uses this position to determine valid block placement

The most challenging aspect was determining block placement locations, which was solved through this iterative ray-stepping approach.

**Tech:** OpenGL, C, C++, Desktop, Gaming

### Seterra Auto-Solver (2010)

Program to automatically solve geography quizzes by reading memory addresses and mapping coordinates to screen positions

During junior high school, we were assigned to memorize countries using Seterra, a Windows software for geographical learning. I discovered that the location data was likely stored in memory and used Cheat Engine to locate the relative memory addresses. This led to developing a C program that could dynamically read these memory values and map them to screen coordinates.

The program could automatically complete geographical challenges with 100% accuracy by translating the memory values into precise mouse positions. This project was my first deep dive into memory manipulation and reverse engineering, transforming what was meant to be a learning exercise into an interesting programming challenge.

**Tech:** C, Windows, Automation

### Sound Speed Calculator (2009)

Terminal-based calculator for computing speed of sound as a function of temperature in air

**Tech:** C, Desktop, CLI

## Poetry

### 2024-11-28 (Connection)

> En organisation
> är inte starkare
> än dess svagaste
> länk

### 2024-11-26 (Loss)

> Så tänk att du var första
> blomman efter sista
> människan gått bort
> 
> Slutar du att växa?
> Slutar du att vara vacker?
> Slutar du att vara?
> 
> Hur hade de sakerna ändrats
> om du inte var lycklig?
> 
> Om någon kunde se dig
> så kanske de hade tänkt:
> 
> "Vad vacker du är.."
> "Vad fin du är..."
> 
> Och kanske hade du
> till och med varit det
> på insidan
> 
> Men oavsett,
> hade det spelat
> någon roll?

### 2024-10-04 (Nature)

> Helt otroligt hur unik
> varje människa är
> trots att vi är
> så många

### 2024-09-25 (Wisdom)

> Du vet...
> 
> Du har helt rätt
> från ditt perspektiv.

### 2024-09-08 (Identity)

> Jag hade bemästrat
> mitt liv
> men inte
> livet.

### 2024-08-29 (Everyday)

> En
> beskymmersfri vardag
> är verkligen underskattat

### 2024-08-28 (Identity)

> Jag är
> extraordinärt
> ordinär.

### 2024-08-27 (Everyday)

> Jag kanske inte kommer
> förändra världen
> men jag har i alla fall
> tränat idag.

### 2024-08-17 (Nature)

> Det är något
> med att vara ensam
> i Sveriges största stad.

### 2024-08-11 (Everyday)

> Nu skiner
> solen igen.
> 
> Det bli inte
> mycket bättre
> än så här.
> 
> Och det är
> varken mer
> eller mindre
> okej.
> 
> Många frågar sig
> om man skall vara
> eller inte vara.
> 
> Medan svaret kanske
> faktiskt är
> att bara vara.
> 
> Varken hungrig eller mätt.
> Inte hög eller full.
> 
> Du gör det du bör
> och det är livet.
> 
> Du tränar, städar,
> umgås och jobbar.
> 
> Och resten fylls av något som
> gör personen med för
> höga förväntningar på livet
> besviken.
> 
> Du kan inte inte vara
> men du kan
> bara vara.
> 
> Det blir inte mycket bättre än så här
> men det behöver inte bli så mycket sämre.

### 2024-07-26 (Emotion)

> Låt dina känslor
> marinera dig.

### 2024-07-09 (Connection)

> I min vänskap
> vill jag hellre att
> du försöker
> och misslyckas
> än inte
> försöker alls.

### 2024-07-02 (Wisdom)

> True success
> is no success.

### 2024-06-13 (Wisdom)

> En klok man
> lyssnar på
> en vis man.

### 2024-06-13 (Existential)

> Inget liv
> var mycket bättre
> än ett annat.
> 
> Inget liv
> var mycket sämre
> än ett annat.

### 2024-06-02 (Time)

> Mycket av det
> mest värdefulla i livet
> är tiden
> den bästa ingrediensen.

### 2024-05-19 (Wisdom)

> If you want to be a wise man
> Everytime you're not sure
> on what to do
> simply ask yourself
> "What a wise man would do?"
> and do that

### 2024-05-17 (Identity)

> It takes a while to be comfortable
> holding a position
> when you're the only one
> holding it.

### 2024-05-16 (Connection)

> En fantastisk vänskapsrelation
> är inte något man får
> det är något man gör.

### 2024-03-26 (Connection)

> Någon som faktiskt
> bryr sig om andra
> måste bry sig om sig själv.

### 2024-03-23 (Nature)

> Du klarar
> att stå ut
> i 0.00057%
> av universums
> livstid.

### 2024-03-15 (Wisdom)

> En klok man
> inser vikten
> av sina ord

### 2024-03-12 (Nature)

> The last star
> sent it's last light
> and the last shadow
> was cast.

### 2024-02-26 (Emotion)

> Sorg är priset du måste betala
> för att få uppleva
> kärlek.

### 2024-02-24 (Time)

> Tid är
> en av de finaste sakerna
> du kan ge
> en annan människa.

### 2024-02-05 (Time)

> För mycket i livet
> är tiden
> den bästa ingrediensen

### 2023-12-12 (Everyday)

> Idag såg jag något
> röra sig i ögonvrån
> på väg till jobbet.
> 
> Det var en ekorre
> men jag stannade
> inte ens upp
> för att kolla.
> 
> Barndomens flamma
> har blivit vuxenlivets
> glöd.

### 2023-12-07 (Wisdom)

> En insikt
> kan vara att inse
> vad en insikt är
> och detta är i sin tur
> en insikt.

### 2023-11-09 (Nature)

> Hur kan du bli förvånad
> att du blir svettig
> när du flyger så nära solen?

## Music

- **Piece No. 1 - Reflections** (2023, 1:04) - Digital composition combining piano with subtle strings and cello, aiming for an optimistic feel.
- **Piece No. 2** (2023, 1:40) - Quiet piano piece exploring softer dynamics and peaceful melodies in FL Studio.
- **Piece No. 4** (2018, 0:31) - Piano improvisation moving between contemplative and lighter moments.
- **Piece No. 3** (2017, 0:29) - Simple melancholic piano recording with natural acoustics and resonance.
- **Piece No. 5** (2017, 1:13) - Structured piano piece with recurring themes and basic song elements.
- **Piece No. 6** (2016, 1:59) - Dramatic piano piece exploring stronger dynamics and acoustic resonance.

## Sketches

- **Castle Study** (2024-03-15) - Detailed sketch of a medieval castle
- **Waiting Room** (2024-03-01) - Sketch of a hospital waiting room
- **Summer Porch** (2024-02-20) - Cozy front porch with details
- **Home** (2024-02-15) - Architectural sketch of a home exterior
- **Harry** (2024-02-01) - Portrait sketch of Harry
- **Portrait Study** (2024-01-25) - Detailed portrait study
- **Friend** (2024-01-20) - Portrait sketch of a friend
- **Wood Grain** (2024-01-10) - Textural study of wood grain

## Photography

- Scenic island view - Stockholm, Sweden (Phone, 2024-01-22)
- Sunrise over landscape - Stockholm, Sweden (System, 2024-01-20)
- Dense forest landscape - Karlstad, Sweden (System, 2024-01-18)
- Close-up of tree bark texture - Karlstad, Sweden (System, 2024-01-15)
- Close-up of a vibrant green leaf - Stockholm, Sweden (Phone, 2024-01-15)
- Serene lake view - Karlstad, Sweden (Phone, 2024-01-12)
- Peaceful lakeside scene - Karlstad, Sweden (Phone, 2024-01-10)
- Textured rusty surface - Stockholm, Sweden (Phone, 2024-01-08)
- Ocean waves and horizon - Varberg, Sweden (Phone, 2024-01-05)
- Upward architectural view - Stockholm, Sweden (Phone, 2024-01-03)
- Wedding celebration moment - Stockholm, Sweden (Phone, 2024-01-01)
- Single leaf in focus - Karlstad, Sweden (Phone, 2023-10-20)
- Autumn leaves pattern - Stockholm, Sweden (System, 2023-09-25)
- Architectural pillars in perspective - Helsinki, Finland (Phone, 2023-08-12)
- Urban street scene - Stockholm, Sweden (Phone, 2023-07-30)
- Stand-up paddleboarding scene - Varberg, Sweden (Phone, 2023-06-15)

## Crisis Management

### De-escalating Group Conflict (2024-02-15)

**Context:** During a social gathering, what started as playful banter escalated into a concerning situation where several friends physically restrained another while attempting to access his private phone. The atmosphere had shifted from fun to tense, with multiple people involved in a physical struggle.

**Approach:** Rather than immediately intervening or adding to the chaos with words, I observed the situation carefully. After a moment of assessment, I simply walked up to those holding the phone, maintaining a completely neutral expression and body language. Without saying a word, I held out my hand. The calmness and clarity of intent was so effective that they immediately handed over the phone, which I then returned to its rightful owner.

**Outcome:** The situation dissolved almost immediately. The simple, non-confrontational approach completely defused the tension without anyone feeling accused or embarrassed. The group naturally transitioned back to normal social interaction.

**Learnings:** This experience reinforced that sometimes the most powerful intervention is the simplest one. By remaining completely calm and demonstrating clear, non-confrontational intent, you can often resolve conflicts without escalation or confrontation. The absence of emotional reaction can be more effective than any words.

### New Year's Eve Venue Crisis (2023-12-31)

**Context:** Just two hours before a New Year's Eve party for 30 people, we discovered our planned venue (a workplace) had been double-booked. This created an immediate crisis with food already prepared, activities planned, and guests expecting to arrive in less than 2 hours.

**Approach:** Rather than immediately jumping to solutions, I first recognized the emotional impact on the primary organizer and gave her space to process while quietly assessing our options. After she had processed the initial shock, I proposed that splitting the group between two nearby apartments was our best option. We then methodically tackled each logistical challenge, from borrowing a car for food transport to securing additional seating, all while maintaining clear and calm communication with guests about the changes.

**Outcome:** The party was successfully relocated and ended up being a memorable evening. The split between two apartments actually created an interesting dynamic that worked well with the planned activities. Guests were understanding of the situation, and many stayed until 4:30 AM, indicating the success of the recovery plan.

**Learnings:** This experience reinforced the importance of balancing emotional support with practical problem-solving during a crisis. Breaking down seemingly overwhelming situations into manageable tasks while maintaining flexibility in planning proved crucial. Most importantly, staying calm and methodical while leveraging available resources and support networks can transform potential disasters into successful outcomes. The situation demonstrated how crisis management isn't just about solving practical problems, but also about supporting people through emotional challenges.

### Managing Housing Contract Crisis (2023-12-10)

**Context:** Just weeks before my planned move to Stockholm, and a day before I was supposed to pick up the keys, my new landlord called to say he might sell the apartment instead - effectively threatening to break our contract. This came at a particularly challenging time as I was also in the process of changing jobs.

**Approach:** Instead of reacting emotionally to this sudden crisis, I consciously chose to step back. I spent the afternoon walking, cooking, and meditating to process the news. The next day, I approached the landlord with professional courtesy, focusing on practical solutions rather than confrontation. I carefully suggested fair compensation for the contract breach, including the standard notice period plus additional compensation for the inconvenience.

**Outcome:** The situation resolved with a favorable compensation agreement that provided a financial buffer for finding new housing. By maintaining professional communication and focusing on solutions rather than conflict, we reached an amicable resolution without needing legal intervention.

**Learnings:** This experience reinforced that initial reactions to a crisis rarely lead to the best outcomes. By taking time to process emotions before acting, maintaining professional communication, and focusing on practical solutions rather than emotional satisfaction, you can often turn potential conflicts into manageable situations.

### Supporting Friend During Medical Emergency (2023-11-15)

**Context:** During a vacation in Dubrovnik, a complex situation developed when one friend became severely intoxicated while another friend with severe emetophobia (fear of vomiting) became increasingly distressed. The situation was complicated by the group's plans to go into town and everyone's desire to enjoy their vacation.

**Approach:** I focused on managing both the immediate medical situation and the emotional crisis simultaneously. This involved creating separate safe spaces for both affected friends, coordinating with others to modify evening plans, and finding creative solutions to sleeping arrangements. Throughout the night, I maintained calm communication between all parties, regularly checking on both friends while ensuring everyone felt supported.

**Outcome:** Both friends recovered safely, and the group dynamic remained positive. The following day, both friends expressed deep gratitude for the support, and the incident actually strengthened relationships within the group rather than damaging them.

**Learnings:** Complex situations often require balancing multiple needs simultaneously. By staying calm and focusing on practical solutions while showing empathy to all parties involved, you can turn potentially divisive situations into opportunities for strengthening relationships.
