Current Project

Automatic Accounting

Short description: Reads PDFs and adds them to the ledger with correct values.

Year: 2020-ongoing

Language: PHP, JavaScript, TypeScript

Tools: React, Nodejs, Nginx

Source: github.com/Senth/accounting/tree/migrate-to-nodejs

I got tired of having to manually add all my international invoices to my ledger, as it requires a lot of steps checking the exchange rate and calculating win/loss from the invoice date until it was paid.

So I started working on a prototype in PHP and react. When I got the business logic working and all the difficult PDFs working I decided to migrate the backend to nodejs. What I've learned the most so far is how to effectively split the frontend and backend so that the application doesn't become a mess and is easily testable.

Android Apps

Remember My Wins - Android App

Short description: Remember your wins by adding them to a list

Year: 2018-2019

Language: Java/Kotlin

Source: github.com/Senth/remember-my-wins

Very simple (but intuitive) Android app for remembering your wins, to be grateful, and various happenings.

The information can be stored either in the cloud through Google Firestore or locally through Sqlite

Balansbladet - Android App

Short description: Simple app for adding manual transactions to balansbladet.se

Year: 2016

Language: Java

Source: Not public

I use a service called Balansbladet.se for keeping track on my economy. But the site isn't very user friendly, especially when adding manual transactions. So I took things into my own hands and developed a small app that does just what the site was bad at; adding manual transactions.

As Balansbladet.se doesn't have an API I login through a Java browser and parsed the HTML response to get the right information and POST methods to add new transactions.

I learned a lot about the HTTP protocol, parsing text, Android App development, and Sqlite during this project.. The video below is a sales pitch to Balansbladet.se; the linked clip starts half-ways as that's when the demonstration of the app starts.

Game Projects

Voider - Game

Short description: 2D sidescroller for Android and PC with ability to create and share maps

Years: 2012-2016 (never released)

Language: Java

Source: github.com/Senth/voider

2D sidescroller with focus on creating your own maps and uploading them (á la Little Big Planet). The maps and enemies would automatically get synced (within seconds) to another device if you wanted to test the map on your phone. You could also test the map directly from the editor. Publishing maps, downloading, rating, tagging was all functional.

Decided to discontinue the project since there was at least 2 years left of polish before it would be publishable. I also wasn't fully sold on the idea.

Teammate AI for StarCraft BW

Short description: Play together with an AI in StarCraft: Brood War

Year: 2012

Language: C++

Source: github.com/Senth/bats

Master Thesis: A Communicating And Controllable Teammate Bot for RTS Games

One of my favorite projects so far. It was a blast to build an AI for StarCraft; a game I hold dear.

We asked how much information and control a player wanted from a teammate bot. Our results showed that inexperienced players didn't want any control; whereas experienced players wanted to have some control over the bot.

All players wanted information about what the bot was doing.

AlIce - Spring RTS Bot

Short description: Bot for Spring RTS Engine using goal oriented action planning

Year: 2010

Language: Java

Source: github.com/Senth/alice

Bachelor Thesis: Adaptive Goal Oriented Action Planning for RTS Games

The focus for this project was to create a goal oriented bot for Spring RTS instead of using conventional state-machines with limited information.

I learned a lot about goal oriented action planning; a design I later improved on and used in my master thesis.

Bugtanks

Short description: Top-down shooter; kill bugs with tanks. School project together with 9 other people spanning 6 months.

Years: 2009-2010

Language: C++

Source: github.com/Senth/bugtanks

I designed the AI for the bugs which used potential fields to find the players. We did everything from scratch using our own developed engine.

Various Projects

Mastermind Timer

Short description: Simple timer for Mastermind meetings

Years: 2017-2018

Language: Javascript, php, css

Source: github.com/Senth/mastermind-timer

Demo site: https://mastermind.senth.org

During 2017 and 2018 I was part of a mastermind group. We almost always went overtime, so I created a simple and effective timer to keep track of everyone's time.

MatteusMagnusson.com

Short description: My personal development blog I write articles on

Years: 2015+

Language: English

Link: https://matteusmagnusson.com

During 2017 I decided to focus fully on the blog for a while and wrote a whole lot of articles during that time. After a while I ran out of things to write about and decided to take a break from writing.

Small Projects

home-control Controls the lights in my apartment through a web API. But also has internal schedules to turn on/off lights depending on if the sun has set, someone is home, a certain device is turned on.

reality-check Reminds me to check-in on certain parts of real-life that I can forget

facebook-cli Automatically wish friends happy birthday on FB; and schedule FB messages

tankar-for-dagen Download all/latest episodes from "Tankar för dagen" on SR

discourse-map Fetch locations of all users on a Discourse forum and add it to a Google Spreadsheet

the-game Puzzle hunt implementation. If you've been to Dreamhack it's similar to Dreamhack Game

MaterialShowcaseView Fork, but fully reimplemented Android Showcase animations

enhanced-modules Factorio (game) mod, added more modules

enhanced-combinators Factorio (game) mod, added combinators with more functionality

brigthness-adjuster Adjusts desktop monitor levels automatically depending on the light in the room. (and redlight depending on sunset time)

mess Project for monitoring income, expenses, and setting a budget

backup-script Full and partial backups of my server

letsencrypt Automatically get a SSL certificate from letsencrypt and create an nginx (and maybe apache vhost) conf when done