
Hey, I’m John
Bad At Computer is my portfolio site. Here you’ll find projects and musings related to my work in software development.
I live in Sweden and hold a passion for developing and maintaining impactful, useful applications. I draw inspiration from futurism and retro tech, and I focus on solutions that are innovative, yet simple and resilient.
Latest Projects
Journeys: Discover Your Cosmology
Inspired by a creative blogpost by Buster’s Rickshaw, I converted his clean logic into a neat, compact flowchart application with the best kind of subject: our beliefs about the nature of reality. This app uses dotnet’s Blazor WASM Standalone framework to deliver an app that runs entirely in the browser – no server interaction needed!
Food Tours Website
A WordPress website built using WooCommerce to handle tour bookings and checkout. In addition to designing a custom website, this project proved to be an exploration of brand strategy, content creation, and e-commerce.
AI Retro Logo Generator
This Blazor web app makes use of Azure AI Foundry to produce consistent, miniature images in the style of Super Nintendo sprites. I built this app to sharpen my AI implementation skills while streamlining icon generation for Bad At Computer.
Eurozones: Money, Power, and Borders
An interactive map using .NET and Blazor app to help visualize the different currencies and memberships of European countries in terms of EU, EEA, Schengen, NATO, and Eurozone.
Neighbourhood Website
A custom website for a Canadian neighbourhood association. Built using WordPress with plenty of customization, plus Cloudways hosting and lots of project documentation.
Microcycle Web App
A Blazor web app for Canadian retailers and wholesalers to make sense of environmental regulations. Built using ASP.NET Core and PostgreSQL, styled with MudBlazor, and hosted in Azure.
Bluetooth Robot
An Android app that provides Bluetooth communication between a Temi robot and a retro gamepad. Our team’s objective was to help hospital staff connect to Bluetooth-enabled medical devices with a Temi as an automated assistant.
Pizzeria Website
Revamped the online presence for Rehoboth House of Pizza, a beloved local restaurant in Massachusetts. The goal was to keep this site simple and user-friendly while infusing a contemporary design.
DataDocket Website
Built a prototype site with my college classmates for a local business. We used the Python Django framework, Azure for hosting and blob storage, and a PostgreSQL database.
Current Reads
Recent Blogposts
- Let’s join Advent of Code 2025
- MacOS, Spotify, Chrome, & Media Keys
- Eurozones: Creating an Interactive Map with .NET
- Four easy ways to use Text-To-Speech for Retro projects
- Building a DR SBAITSO Text to Speech App
- IoT Blinking LED demo
- Embracing the Instant: A Programmer’s Ode to Instant Coffee
- 5 Advantages of Reading E-Books on a Kobo Reader
:::::::::........::::::::::::-------------
...::::::::::::::::::::::::::::::::=-=------------
..:**##*****########%%%%%%@@@@@@@:::=-=-----------=
..-#%#==========+++***##%%%@@@@@%::-=-=-----=======
..:+#@#+===++++****####%%%@@@@@@@#::-===============
.::*#@#**+++*####%%%%%%%@@@@@@@@@+::=================
::-*%@%#%+..+%%@@@@@@@@+=+*@@@@@@=::+================
::=*%@@@=+-+*=@@@@@@@#-#=+%*%@@@@-:-+================
::=*%@@@++*#=+@@@@@@@*-*@@**%@@@@:--+================
::=*@@@@@#==*@@@@@@@@@%*++*%@@@@@:--+================
::=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@%:--+================
::=*%@@@@@@@@###%%%%%@@@@@@@@@@@%---=================
::=*%@@@@@@@..:::::---*@@@@@@@@@%---=================
::-**###%%%%*:::::::+@@@@@@@@@@@%---=================
::::::::::::::--=++**+=--------=----=================
-------:----::--------------------================
..::::::--=+**##%%%%%%%%%%%%##*+===---=====+*##%#*++
::::::::::::::::::::::::::----==+**##%%##**++==========
::::::::::::::::::::::::::::::----:::--=================-
...::::.:::::::::::::::::::::::::::-------====================
.....::::::::::::::::-:-:::::-::::::::::::----====================
:::::::::......:::::::::::.:-:::::::::::::------+=================
-++====-----:::.::::::::-:.:.::-:::.:.:-:--===-=+=========+##
%%#****+====-----:::::::::-=---==+***+++=++*#














