- 15+
- Years shipping production software
- Full-stack
- .NET, SQL Server, TypeScript, React
- Internal systems
- Platforms, data pipelines, integrations
Reliable software, owned end to end.
I turn ideas into software that works. I work across C#/.NET, SQL Server, and React to build scalable systems for media and entertainment.
Beyond the day job, I stay close to how AI is changing delivery and quality, I tinker with new tech, ship side projects, and I like owning the full cycle from concept to deployment. I’m also building foundations in machine learning: Codecademy’s Machine Learning Fundamentals path, Jupyter notebooks, and experiments you can browse on my GitHub. Always learning, always creating, and always looking for the next idea worth building.
Outside of work: photography, tinkering with local LLMs, and hands-on ML study with notebooks and small repos on GitHub.
Where I've been
A few places I've shipped code and learned things the hard way. Open any role for detail; dates are easy to cover in conversation.
Stuff I've built
Side projects, experiments, and the occasional thing that actually got finished.
MCP server that lets AI assistants (Claude, Cursor, VS Code) query and manage Microsoft SQL Server using natural language. Natural language to SQL, CRUD, schema management, multi-database support, read-only mode. Published on npm; one-click install for Cursor and VS Code.
Regression project predicting residential EV charging energy (kWh) from Norwegian charging and traffic data. Started from an exploratory notebook; evolved into an installable Python package with sklearn baselines, PyTorch MLP, CLI, tests, CI, and optional FastAPI and Streamlit frontends.
Unsupervised learning exercise in Jupyter: k-means clustering on the classic wine dataset, with practice in feature scaling and interpreting cluster structure.
Course-style ML project in Jupyter working with tabular survey data: preprocessing, modeling, and evaluation in a focused end-to-end notebook.
Reverse marketplace where buyers post requests and sellers make offers. Real-time messaging, Stripe Connect, escrow, user reviews, image uploads, push notifications, and admin moderation.
React Native app for drone pilots with real-time weather data, customizable safety thresholds, and hourly/weekly forecasts. Helps determine safe flying conditions.
Interactive coding learning system with challenges, courses, and real-time code execution. Built with T3 stack, Clerk auth, and Shadcn UI.
Fast 1v1 typing battles with server-scheduled round starts for fairness. WebSocket-based matchmaking, RTT-aware timing, and rolling rounds with rematch support.
Web app to upload PDF documents and ask questions about their content using AI. Full-stack with authentication and database.
MCP server that analyzes React codebases for type errors, security issues, performance bottlenecks, and refactoring opportunities. Integrates with Cursor and Claude Code.
Writing that sits closer to delivery than performance.
Essays on migrations, ingestion pipelines, and the operational details that decide whether software remains trustworthy after it ships.
What a reliable React migration actually looks like
Notes from an incremental migration: where shared components helped, where ceremony got in the way, and how to modernize a business-critical frontend without pretending greenfield rules apply.
Building matchers that explain themselves
A practical note on weighted scoring, audit trails, and reviewer feedback loops for metadata matching systems that people can actually trust.
Deterministic ingestion pipelines are a feature, not just plumbing
What changed when I stopped treating imports as background glue and started designing them like product features with clear failure surfaces.
The usual suspects
Languages, frameworks, and tools I reach for when building things.
