ABOUT ME


Name:               Mikkel Munch Mortensen
Location:           Copenhagen, Denmark
Languages:          Danish, English
Contact:            E-mail, Fediverse

Skills/interests:   Python, Django, Django REST Framework (DRF), unit testing,
                    PostgreSQL, elasticsearch, nginx, HTML, CSS, Javascript,
                    Linux, Ubuntu, devops, CI/CD, Docker, vim, git,
                    open source, free software, web standards, open data,
                    privacy, equality

Turnoffs:           Enterprisey things, hypes and fads, Microsoft Windows


                                    *  *  *


                            PROFESSIONAL EXPERIENCE


Backend developer/architect – Whnue                           Sep 2024–Nov 2024

For a few months, I'm working full time on this side project (see below).


                                 ^  ^  ^  ^  ^


Senior backend developer/tech lead – Ofir                     Mar 2022–Aug 2024

django, django rest framework, python, elasticsearch, aws ses, heroku, docker,
github workflows, devops

Job listing website Ofir decided to start a complete rewrite of the entire
platform in Python and Django. I was hired, along with another developer, 
to work on this – in parallel with the existing development team.

The job seeker facing site, ofir.dk, was the first part to be revamped. We went
from zero to launch in a little more than a year.

This included:

 * Setting up CI/CD, driven by GitHub workflows.
 * Docker based deployments to Heroku.
 * Integrating to other, existing parts of our ecosystem.
 * Search, including saved searches, in order to let users be notified about
   new potential jobs of interest.
 * Mass e-mailing.
 * Server side user tracking, in order to reduce the sharing of behavioral
   data with 3rd parties.

Furthermore, helping and mentoring colleagues transitioning from C# to Python.
As I was taking on the responsibility for keeping code quality high and
following best practices, I was eventually promoted from senior backend
developer to tech lead.


                                 ^  ^  ^  ^  ^


Software developer – LetsGo Fleet Systems                     Nov 2019–Feb 2022

python, django, aws, ansible, terraform, full stack, devops

Maintaining and improving our booking and car fleet management system and
related systems, in a team of about 5 developers.

Projects I was involved in:

 * Visualising events related to a single car booking in a timeline, in order
   to help our staff better support the users when issues arise.
 * Rewriting the onboarding flow for new users. This included building a
   flexible framework for different steps in the flow and their internal
   dependencies.
 * Rewriting our accounting modules, in order to reduce the amount of manual
   work required from the accounting department.


                                 ^  ^  ^  ^  ^


Backend developer/architect – Whnue                           Sep 2019–Oct 2019

For a couple of months, I worked full time on this side project (see below).


                                 ^  ^  ^  ^  ^


Backend developer/architect – Whnue                              Jul 2015–Today

django, django rest framework, python, elasticsearch, gitlab pipelines, ci/cd

Whnue is a booking and management system, gathering all stakeholders around a
live event in a single system.

This is a side project that I am part of, with 2 friends. Since July 2015, my
"real" jobs have been 80% employments, allowing me to work 3 days every 3rd
week on Whnue.

I'm taking care of all the backend work and operations, building an API for the
user facing website and mobile apps.


                                 ^  ^  ^  ^  ^


Lead developer/architect/technical PM – Saxo Publish          Oct 2014–Mar 2019

django, python, django rest framework, ansible, linux, ci/cd

Saxo Publish is a self publishing platform, allowing anyone to publish their
digital and printed books to the world.

I started as the in‐house lead developer for a team of 3 freelancers/sourced
developers (some of them remote). This quickly turned into a role as the
application architect and periodically also technical project manager, taking
most of the responsibilities of the project from our CTO.

Responsibilities included:

    * Taking part of the business development as "the technical guy".
    * Turning business needs into technical specifications and tasks for
      developers to work on.
    * Daily maintenance of servers.
    * Code reviews and general QA of our applications.
    * Guiding and mentoring the rest of the development team.
    * Making impossible things happen in the old fashioned world of
      book publishing.

Major milestones and projects include:

    * Launching our Print on Demand solution.
    * Internationalisation of our platform, transforming it from a local
      Danish service into ready for conquering the world.
    * Scripting, streamlining and automating our release processes ﴾CI/CD﴿.
    * Scripting and automating the entire deployment process of new servers,
      ensuring a smooth transition from one hosting provider to another.
    * Upgrading projects from ancient to recent versions of Django and from
      Python 2 to 3.
    * Staying on board until the better end, taking care of properly handing
      over data to the 3rd party service that replaced our home grown platform,
      before shutting down our own operation.


                                 ^  ^  ^  ^  ^


Lead developer/architect – Refugees United                    Apr 2013–Sep 2014

django, python, php, html, solr, sms, ussd

Lead developer in a team of 5+. Working from Copenhagen, with the rest of the
tech team based in Nairobi.

Responsible for the further development of the REFUNITE reconnection platform.

Key responsibilities:

    * Making sure that all solutions are thought through – keeping the grand
      overview of the entire platform and assisting the project manager in the
      planning of future development.
    * Primary sudo'er – managing servers, monitoring, scripting, automation,
      ad hoc technical firefighting when necessary.
    * Tech anchor – guiding the company through the process of turning into a
      downright tech company, from previously relying entirely on
      external development.

Learned quite a bit about mobile technologies (GSM, USSD, etc) and the
challenges you meet trying to work within what is supposed to be standards.

Built internal tools for bulk SMS campaigns and a deployment platform tailored
to our needs.

Did a lot of ad hoc data extraction and analysis, helping the rest of the
organisation understand our data.

Being the first in‐house developer, I was also part of the process of hiring
and establishing our Nairobi tech team. Which eventually became self-driven to
the extend that I decided it no longer made sense to have me leading them
from Copenhagen.


                                 ^  ^  ^  ^  ^


Web developer – Kristeligt Dagblad                            Sep 2011–Mar 2013

php, python, html, css, javascript, databases, apache, linux

One of a team of two web developers maintaining and developing our online
publishing platform as a newspaper. Integrating to our print publishing
platform, subscriptions system, payment gateways and various other
external systems.

Also making other stuff, like online contest management, statistical tools and
a bit of system administration.

I felt that I had to leave when my boss decided we should move to Drupal.
Despite trying to make friends with Drupal for some months, I concluded that
either I or Drupal had to leave the ship.


                                 ^  ^  ^  ^  ^


Web developer – DR, Danish Broadcasting Corporation           Feb 2005–Aug 2011

php, python, html, javascript, css, databases, c#, asp.net mvc

I often think of these years as my informal education.

Part of a small web development team in the youth department. Made anything
from small campaign sites to larger scale online communities, streaming
services, content management systems and hybrids in between.

Biggest achievement was to bypass the archaic corporate CMS and build our own
in just a few months. A system miles ahead of corporate CMS, even working
within the restraints of corporate IT. It really confirmed my belief that
modular beats monolithic on every parameter.

Biggest failure: That our next generation community project was closed due to
management giving up and thinking everything should be based on Facebook.
This was the dream task, and we had so many great, groundbreaking ideas that
Facebook implemented over the next years. Good to realise we did the right
thing. Too bad management didn't know what they were doing.

As DR was a very Microsoft heavy organisation, I ultimately decided to leave,
in order to work more with open source technologies.


                                    *  *  *


                    VOLUNTEER WORK, NOTEWORTHY PROJECTS, ETC.


Board member, founding member – data.coop                        Jun 2014–Today

data.coop is a cooperative, which owns and operates a digital infrastructure
for its members. Our fundamental vision is to protect our members’ data, and
our values evolve around privacy, decentralisation, encryption and
zero knowledge.

Our entire setup is defined in open sourced code, allowing (and encouraging)
others to start their own data cooperatives.


                                 ^  ^  ^  ^  ^


Backend developer – Arkiv24syv                                         Oct 2019

django, python, ubuntu

This was a project of activism: The original Radio24syv was closing down, and
it seemed like no one cared about saving an archive of their programs. We saw 2
major issues in this:

1) That the politicians responsible for the radio station never thought about
   an exit plan for the huge archive of tax funded content. We wanted to
   highlight this act of neglect.

2) We also wanted to make sure that at least 1 copy of the archive existed
   somewhere, before the servers were shut down, in order to be able to hand it
   over to proper archivists at some point.

In a handful of nights, along with 2 others, we hacked together a partly
distributed solution that involved volunteer participants:

- We built a scraper and indexed metadata for all the episodes of all of the
  programmes in the Radio24syv archives.
- We set up a central archiving backend, which kept track of the download
  status for each episode.
- We built a browser based frontend, which asked the backend for an episode to
  download from the remote archives and then uploaded this to our archive. This
  of course included a live status for the participant, telling them what they
  were downloading or uploading, and how many episodes they had helped us save.

After announcing the project, we managed to download everything in a few days,
with the help of thousands of participants. We also sparked a public debate
about actual archiving of – and continued access to – tax funded material
like this.


                                 ^  ^  ^  ^  ^


Webdude/volunteer – Klauzdal                                          2003–2013

php, html, css, javascript, apache, ubuntu

Built a CMS and resource management system for the suburban music venue,
Klauzdal. Including: Event planning and management, photo archive, scheduling
for the volunteers, bar menu management, etc. Everything done as a volunteer at
the venue.

Other volunteer tasks included most aspects of running live events,
like bar management, bartending, ticketing, cooking, cleaning, etc.