Skip to content
View MrProgrammerMan's full-sized avatar

Highlights

  • Pro

Organizations

@MPM-Labs

Block or report MrProgrammerMan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
MrProgrammerMan/README.md

Header

Hi there πŸ‘‹

Welcome to my GitHub page. This is where you can see what I'm currently working on. Have a look around!

You can check out my showcase projects over on MPM-Labs

Who am I β€’ Philosophy β€’ Current Focus β€’ Work β€’ Tech


Who am I?

My name is Jonas and I am a software engineering student at Oslo Metropolitan University.

I love understanding how things work, and can never stop myself from investigating something I don't understand.

In addition to attending OsloMet, I am also the corporate contact and event manager at Ditio, the student association for IT students.


Focus β€” concrete

Currently, I am learning Rust. I like its unique position as a fast, compiled language with safeguards you would often only find in slower, interpreted languages.

I am also trying to learn more about functional languages. This is not just about efficiency in terms of raw execution speed, but about efficiency in terms of development time. Functional programming offers guarantees like safe concurrency, testability and more. Even if I don't end up working with it daily, it's worth learning. I use Haskell. On the side, I'm reading Category theory for programmers by Bartosz Milewski.

Quote
"A monad is just a monoid in the category of endofunctors."
β€” Saunders Mac Lane, Categories for the Working Mathematician (1971)

Nix deserves its own mention. It's a purely functional language drawing heavily on Haskell for its inspiration. It is, however, not primarily intended as a general purpose language. It is Turing complete, but its purpose is declaring and defining packages, system configurations, development environments, and much more. In general it provides a lot of great tooling involved in software development. I use it for all my projects, as well as for configuring all my machines, which run NixOS (a Linux distro based on the Nix package manager that is used with the Nix programming language).

πŸ”§ My current Nix deep-dive (click to expand)

Recently I've been focusing on the practical use cases of Nix. My portfolio page serves as a real-world test bed for a full Nix-based pipeline:

  1. Build β€” The site is written in Rust using Leptos. Nix builds the binary and all static assets reproducibly. Same inputs, same outputs, every time β€” like Docker, but more deterministic.
  2. Package β€” The build output is wrapped in a NixOS module that declares exactly how to run it, with configurable options for tweaking behavior.
  3. Test β€” The module runs inside a NixOS VM, letting me validate the full server environment before it ever touches production. This also enables automated integration tests with virtual servers and clients.
  4. Deploy β€” My own deployment tool handles server bootstrapping, updates, and secrets management via GitHub Actions and environment secrets. Binary caching bridges source and binary deployment, keeping build times low on resource-constrained servers.

As a bonus, Nix gives me deterministic, language-agnostic dev environments that live in the Git repo and work identically for every contributor.

Simply put, Nix is incredible.


Focus β€” philosophical

Good software accounts for ethical, societal and practical considerations. It's not only functional, but also maintainable and well documented β€” able to evolve with the client's needs and be passed to other developers with little friction.

I have a great interest in finding "proper" solutions to problems. More and more I find myself preferring expert books and official documentation over less formal sources like blogs or guides. That's not to take away from the wonderful part of the software world that is sharing and helping each other. It's just important to verify against official sources β€” otherwise you hit pitfalls like security holes and solutions that only work sometimes.

I care about efficiency. Modern hardware is fast, but energy consumption and scalability still matter, and I find it more satisfying to work in compiled, statically-typed languages where sloppiness has less room to hide. This will likely explain many of the technologies, languages and techniques I prefer using in my work.


Work

πŸ’Ό I'm actively looking for a job opportunity within software engineering.

I'm especially interested in roles involving Rust, systems programming, or infrastructure/tooling β€” but I'm open to anything where correctness and craftsmanship matter.

LinkedIn Website


Technologies I use or have used

🟒 Languages I know well


Rust
My personal go-to. Can be used for almost anything, from low level systems to web servers. I even use it to compile WASM for my portfolio website.

Nix
More tooling-oriented. I use it in all my projects. It packages software and guarantees correct deployment.

Bash
Always useful.

PostgreSQL
You can do remarkably powerful things with SQL and PL/pgSQL.

Python
For quick prototyping and university courses.

Java
The main language taught at university.

HTML
Always important to keep the basics in mind.

CSS
I prefer writing my own CSS (SCSS) instead of using tools like Tailwind. That being said, design is not my main focus.

JavaScript
Unavoidable in web work β€” though I reach for Rust + WASM when I can.

πŸ“š Languages I'm learning


Rust
Currently working on async understanding.

Nix
Currently working through chapter 5 of the thesis.

Bash
I often bump into commands I haven't used before and try to get familiar with as many as possible. (technically I use zsh)

Haskell
Currently reading Programming in Haskell and Category theory for programmers by Bartosz Milewski.

WASM
I am developing my portfolio site that runs on Leptos, but would like to learn more about WASM itself.

πŸ› οΈ Tooling I use


Docker
Mostly when collaborating with others. In my personal projects, Nix has replaced Docker.

Figma
Prototyping UIs.

Actions
Love this! Allows a ton of automation and free jobs on public repos.

Linux
I run NixOS (btw).

Maven
University work.

Nginx
Or Caddy. TLS and reverse proxying between sites.

Postman
Manual HTTP testing.

Redis
Caching and refresh token storage.

Spring
University work.

Vite
We use it to build the frontend of the student association's website.

🎯 Tooling I want to learn


Bevy
Game development in Rust.

Neovim
Next time I have a couple years to spare.

πŸ“¦ Technologies I've tried or used in the past


K8s
Ran my own GitHub Actions Runner Controller once (but this is a bit overkill and unnecessary).

Processing
This is where I'd say I learned to program.

Tailwind
Have tried it, prefer SCSS personally.

Arduino
Have had some hobby interest in electronics.

SketchUp
Useful for simple design, like apartment plans or simple 3D prints.

Pinned Loading

  1. nixos_config nixos_config Public

    Nix

  2. flake-templates flake-templates Public

    Flake templates for development.

    HTML

  3. MPM-Labs/portfolio MPM-Labs/portfolio Public

    My portfolio site, built with leptos.

    Rust

  4. MPM-Labs/nixos-deployment-template MPM-Labs/nixos-deployment-template Public template

    A template for installing NixOS on machines with NixOS anywhere. Saves each generated machine config to the repo.

    Nix 1