My name is Aleksander Madland Stapnes and I'm a freelance developer. Online I'm madstap, because I'm terrible at choosing handles.

I write about programming. Or at least I have this blog about programming, but I've spent more time hacking on the blog engine (cryogen) than I have writing blog posts. I'm sure many of those reading can relate.

I'm a self taught programmer and I started by learning python around the middle of 2014. It was slow going at first and I eventually moved on to Ruby and Rails when I wanted to make websites and that seemed like what you'd use to make those. To learn it I read the RailsTutorial then did an online course called Tealeaf Academy (now called LaunchSchool). (I recommend both wholeheartedly, by the way.)

That's when I started to learn how to actually build programs bigger than a couple hundred lines. The course was in Rails (and CoffeeScript), but what I really learned was how to do professional grade software development with git, tests, logging and other best practices.

I also took a detour and started using Linux around this time, because I had a bunch of difficulties with Ruby on Windows. Now I can't really imagine using anything other than a *nix.

I had a phase where I looked at a bunch of languages, which was really fun and eye-opening. I tried things as varied as C, Haskell, Racket and even J, but eventually I settled on Clojure (and ClojureScript), as the language really made sense to me. (I read the excellent Clojure for the Brave and True). I also started using Emacs.

Clojure is my "native language" of programming languages, but I consider myself a polyglot programmer and will use whatever makes the most sense. I prefer the functional paradigm though.

I'm currently learning Rust for a small personal project and I'm really enjoying it.

I've been programming professionally full-time since the start of 2018. I've mostly worked for a small consultancy where I've had the good fortune of being able to work on a pretty varied set of projects for different clients, with the consultancy specializing in Clojure and Datomic.

Things I've done professionally include:

  • Adding features to a small Datomic backed Clojure app with a Clojurescript frontend.
  • Adding features to a Datomic backed Clojure app. The app being a paywall used as a library by the off-the-shelf Java CMS of a fairly large news site.
  • Write reports for a Datomic database for consumption by stakeholders.
  • Train a team in how to use Docker.
  • Dockerize an existing application.
  • Assist with a data migration (big-data-ish, tens of terabytes) from MonetDB to PostgresQL. Took the lead on diagnosing problems with the PHP app that uses said database, fixing things like obvious SQL injection vulnerabilities, performance problems and correctness bugs.
  • Write google cloud functions in Python.


Open source (Github)

Libraries I've authored.

comfy

Utils for clojure and clojurescript.

recex

A little language for specifying a series of times, in edn/clojure.

hugin

Simple debugging helpers for clojure and clojurescript.

igviz

Draws a graphviz visualization of an integrant system.

Cadastro de pessoa

Implementation of the validation formula for Brazilian ID codes.