[email protected] | Linköping, Sweden
20+ programming side projects, 15 years linux experience, scored top 0.1% in Swedish SAT, participated in The Programming Olympiads and several other competitions.
| Jul 2022- | Freelance Software Developer | Anthropic |
| Build open-source dev tooling requested by Anthropic. Wrote a Flake8 linter plugin for the Trio library in 4 weeks, that's already caught several bugs in deployed code. | ||
| Mar-Oct 2017 | Software Engineer, test development | Ericsson, HiQ |
| Uplift 4G base-station unit tests (Erlang) to work in a virtualized environment. Team member responsible for Git, Linux, Python & Shell scripts, and team pages on the internal wiki. | ||
| 2013-2017 | Amanuensis, Course assistant, Tool Developer | Linköping University |
| Taught Python, C++, Ada, MATLAB, Git. Graded labs and exams. Developed internal tooling and standardized lab grading. Transitioned internal kiosk from a manual whiteboard system to splitwise, with supporting XScreenSaver and automated e-mails (C). | ||
| Summers of 2013&14 | Course Developer, Engine&API development | Linköping University |
| Got frustrated by a bad course and when giving feedback was offered a summer job to improve it. | ||
| 2013: Overhauled assignments, documentation, instructions and maps. Minor bugfixes to the API. (Python, HTML) | ||
| 2014: Major updates to the API as well as the netcode between client & server (Python, C). | ||
2009-2012 Upper Secondary School, Natural Science with extra math & programming. C#, database construction, discrete math. Grade average 19.5/20, top mark in 31/35 courses.
2012 Swedish SAT: 2.0/2.0 (top 0.1%)
2012-14, 2020-21 Computer Engineering, 120 Credits Linköping University. Grade Average 4.1/5
- 80 credits in programming courses with a focus on algorithm construction, optimization, low-level code, and hardware. Python, C++, C, Java, Ada, VHDL, Prolog, Assembly, GNU MathProg, Microcode.
- Major projects include: Mapping robot: Atmega1284p processors and multiple sensors (C), BIT.TRIP clone (VHDL), Liero clone (Java), XPilot AI (Python).
- 40 credits in math courses; statistics, logic, discrete math.
2016 Swedish SAT: 1.9/2.0 (top 0.2%). Retook it for fun, competing with a friend.
When not otherwise noted, projects are written in Python.
Flake8-Trio [1,400 LoC, 3,500 LoC including tests]
Traverses the parsed Abstract Syntax Tree of python code written with the async concurrency library Trio library, warning about bad code practices. Available on PyPI.
Necro Score Bot [1,200 LoC]
240 Twitter followers, 13.2k tweets. In the last 3200 tweets (since july 2019): 2960 favorites, 270 retweets, 388 players of which 36 are tagged.
Continuosly running since 2015, 6 github contributors.
Pulls leaderboard updates from Steam for Crypt of the Necrodancer, posting notable scores to Twitter and/or Discord.
Tags registered players, and detects cheated or bugged scores notifying the developers.
Seat Exchange Bot [2,600 LoC] An implementation of a game from a Korean game show, The Genius. With 40 different commands it supports varying player counts, bots, simultaneous games, and permissions. Played several dozens of times on a personal discord server as well as IRL.
- Synchronized metronome for singing happy birthday over the phone and have it arrive on beat to the recipient.
- My Linux Dot Files (>50 config files), created since I started using linux 15 years ago, with a script to sync and copy files.
- Merged Py-Ethereum pull request [+115/-104] that cleaned up smelly code.
- Over 650 Tasker scripts for enforcing habits, tracking sleep and medications, custom Pebble menus, and more.
- Podcast Archive Fetcher parses rss for episodes, then continously monitors and adds to MPD playlist.
- Melatonin self-experiment for finding the optimal dosage.
- Stepmania playlist generator to substitute actually having to run outside when I practiced for a 5k race.
- Calendar event trigger (Android/Java) sends an intent on the start of calendar events, to be parsed by tasker and trigger my routine alarms.
- Automatic roller blind (video), a simple arduino program (C) which runs a motor taken from a tape drive.
- Youtube subscription downloader forked and improved for personal use.
- Soundcloud feed downloader and follow recommender.
- Solvers (Python&GNU MathProg) for a combinatorial puzzle stated by Nick Brown on twitter.
- Dominion:
- Game length analyzer parses bot messages to build a database of matches and their duration to allow statistical analysis of play speed with numpy and matplotlib.
- Tournament kingdom generator used for an in-person tournament such that cards are only used once and we don't run out of tokens, mats, etc.
- Opening probability calculator.
- Crypt of the Necrodancer:
- Scripts used for some of my 25 Steam Workshop mods.
- Designed the scoring formula for NecroLab
2014 MicroCode sorting competition as part of a university course. Placed 1st with an average runtime of 903.6 cycles, breaking the professors long-standing record of 948, and smashing the student record at the time. (>1100)
2011 Programming Olympiad, national qualifiers: 31st / 164 (in a 21-way tie)
2015 Nordic Collegiate Programming Contest: Formed a team with 2 work mates and placed 9th/22 (Team: "Ge Upp") at our university, 108th/355 across all universities.
2011 Kängurun, a swedish math competition: 9th / 155 in my division.
2015 IMPA. Local university competition for ambitious CompSci students. 10th/22 and 12th/22 during 2nd and 3rd round of 2015, solutions.
2016 Genikampen: National television reality game show. Extremely proud to get hand-picked out of hundreds of applicants. Trailer
2012 Ljungbergspriset: A 20.000 SEK (1950€) scholarship, one of three graduates at my school to get it.
2013 Mensa entrance test: IQ>=135 (top 1%).
Crypt of the NecroDancer Online Racing league (CoNDOR) moderator. Release and DLC playtester.
Dominion League moderator. Peak at top-200 on ladder, top-50 in the league. Winner of Dominion: Creative and Big Games 2. Best player in EA.
Oxygen Not Included custom map to mimic Minecrafts "Skyblock" mod.
Placed 1/13 in Genius Invitational, an Online Reality Game lasting 6 months, solvers and game ideas.
Taught myself game theory and solved MonUnrail (a variant of Monorail, memorizing it's nimbers with Anki.
National level trombonist during school. Can identify ~all common swedish birds on sight and/or song, now learning insects. Love swing dancing, primarily Bugg, Fox and West Coast Swing - three podium placements in club competitions. Veg*n for 15 years. Took the Giving What We Can pledge in 2017. Types on fancy keyboards with fancy layouts. Prefer my house plants to be succulents and vines.