Seeds grow in the underground


I built Underjord as a diverse team of apprentices and freelancers who solve problems, strengthen teams and build productive culture within the software industry.

I have a decade’s experience in professional full stack web development both as an individual and a team leader. I also have two decades of deep investment in tech and open source work. Now, I am happy to share what I know and help you where I can.

Whether you need my help to fix an immediate problem and bring your team to a maintainable, sustainable position, or you need guidance on creating and implementing a long-term development plan, I have the expertise you are looking for.

My clients work with me because of clear communication, deep technical experience and reliable results. As an added benefit, I have a strong network of freelancers that I can access on my client's behalf to find the right person for specialist work. I'm fairly “tool agnostic” and have done plenty of work with Elixir, Python, PHP, Javascript & Node.js, so I am prepared for anything you and your project may need.

Get in touch at
- Lars Wikman

Lars is a real pro: timely, thoughtful, and effective. He communicates well and delivers on his word. 10/10 would recommend.
- Jerod Santo, The Changelog

Clear communication, easy to work with and solid deliveries.
- Olle Nyman, Loops Education

Vlog - 2020-09-22 - Helping Junior Developers


Pondering one of the things I want to make an impact in: helping inexperienced developers get the traction they need to find their way into the industry.

Read the full post

Vlog - 2020-09-17


A brief weekly run-down of what I've been doing.

Read the full post

Is this evil?


I try to be a friendly citizen of the web. I try to keep my site in good shape. It should load quickly, track nothing beyond your basic server logs, not hassle you about cookies, GDPR or my newsletter. I do have a newsletter but it won't pop up in your face here. I try to stay firmly on the side of friendly and a good experience in how I run this site.

Read the full post

Vlog - 2020-09-07


A brief weekly run-down of what I've been doing and what I'm planning on doing.

Read the full post

Nerves-keyboard - Running a mechanical keyboard with Elixir


Chris Dosé was interviewed by us on Elixir Mix. When he spoke about his work on a Nerves-powered keyboard I knew this was a project I wanted to try out. So I dropped into their dev channel, acquired the hardware (thanks for the help) and have done some playing around with it.

Read the full post

Simple Solutions: UI choices without JS


I've been looking at creating some progressively enhanced UI which shouldn't require JS for any basic operations. The idea being that I can accelerate and simplify any operation with interactivity provided by Javascript but I won't implement things in a way that requires JS.

Read the full post

Beam Bloggers Webring


This is a brief announcement. If you are interested in following bloggers in the BEAM, Elixir, Erlang, etc. ecosystem or you blog yourself. Please check out to get in on the old-school webring action. Bloggers can join it. It might lead to some traffic. Mostly it is a small nod to a stranger old time on the web when sites organized in rings for discoverability. I think the need for discoverability remains and some webrings have been showing up again. You can find the shuffler for the webring at the bottom of my site as well and just let it carry you to a new site.

Read the full post

The Strong Technologies


I feel like a curmudgeonly sort recently. I'm honestly a pretty optimistic and positive person. But I'm becoming increasingly technically curmudgeonly. I don't think it is age turning me conservative. But I feel like I'm moving back to what I find tried and true in many ways. I feel resentful in a lot of cases where I can't really reasonably go back. So what am I talking about here?

Read the full post

The best parts of Visual Studio Code are proprietary


I've been very surprised and delighted over a number of years now by Microsoft's strong efforts in open source. I understand the skeptics, I was on Slashdot when they tried to sue Linux out of existence and I think only time will tell. I figure MS contributing is better than them hunting Linux distributions for sport. So I was mostly onboard for Microsofts efforts and I've especially found Visual Studio Code useful.

Read the full post

Five Buck Fatigue


This is about a reaction I noticed with myself in response to membership programs, patreons and individual sponsorship as I've run into significantly more of these following Corona. The advertising-supported model has confirmed many of the concerns about its sustainability and creators are looking for more reliable options. I think this feeling I have might be something other people experience and something for creators to be prepared for.

Read the full post

"More than one thing at a time"


On a recent Elixir Outlaws episode Chris Keathley told us all a nice story of the advantages of Elixir as opposed to Ruby. His frustration with Ruby and appreciation of how Elixir works resonate at the frequency of my own frustrations and joys. I believe my titular quote is accurate, that's one of the primary things he noted. How nice it is to use a runtime that can do more than one thing at a time.

Read the full post

WordPress & the gross inefficiencies


My recent work with WordPress revived a frustration I built up while working with software from that era of the 2000's. Drupal, WordPress, Joomla and friends. Whenever you visit a page, the system will generate it from scratch.

Read the full post

The WordPress merging problem


WordPress is approximately the most popular CMS out there. I've worked with it plenty over the years, off and on, as clients, employers and others have needed websites.

Read the full post

A wall too tall - Nerves & k3s


Short update on the general state of things. Pandemic quarantine in full swing. Me and mine are doing fine. Thankfully. We are staying at home awaiting a baby. I'm likely to be fairly sporadic for a few months. But I do intend to keep writing. Most of my blog posts are written to be useful in the longer term. If you want more in-the-moment writing, the newsletter is more temporally anchored publication (signup further down, no pop-up).

Read the full post

Self-evaluation improvements


A little while back I released a tool for self-evaluating as a web developer. I have just now updated it to include some explanation and guidance for things topics where the learner indicates a need for it.

Read the full post

Check yourself - Web developer self-evaluation


I've been thinking a lot about inexperienced (junior, if you must) web developers and just how much there is to learn about programming in general but the web in particular. You often hear people say that you don't need to know everything but you should have a solid foundation. Well, how do you establish a solid foundation and how do you know if you have one? How do you get introduced to all the relevant terminology and how do you find out what you haven't learned yet?

Read the full post

I always want to do it all


My brain has very little chill on a day-to-day basis. There are moments where I can find a very peaceful state of mind. Doing something menial in the garden for an extended time, cooling off outside after a while in a sauna, winding down after heavy exercise. At most other times my mind is usually working on something or I'm itching with the need to do things.

Read the full post

Lumen - Elixir & Erlang in the browser


The Lumen Project is an alternative implementation of the Erlang VM, more known as the BEAM. It is designed to work in WebAssembly with the specific goal of bringing Elixir and Erlang to the browser.

Read the full post

Why am I still excited about Elixir?


A good ol' while back I wrote about why I'm interested in Elixir. I think that deserves some follow-up.

Read the full post

Ecto & Multi-tenancy - Prefixes - Part 3


This should be the final piece of this saga. Previous parts can be found here:

Read the full post

A Slight Delight - Compile-time checking things


This was a short-but-sweet thing that struck me while working with a client code-base. It was trivial but both useful and delightful and it is a type of thing I haven't been able to do in Python, PHP and Javascript in quite the same way.

Read the full post

Elixir - Signing for Cloudfront resources


This covers how to create Signed URL Custom Policies with Cloudfront in Elixir.

Read the full post

Happy little screens (with Elixir)


So me and Emilio Nyaray made Inky. We built on top of what was there from Nerves and Scenic and in the end we had the Inky series of eInk displays for Raspberry Pi devices working with Nerves through Elixir. Cool. That was a fun trip I've covered previously:

Read the full post

Consider signing up for the Elixir Radar


If you have an interest in the Elixir ecosystem I think the Elixir Radar newsletter is useful resource. I followed it even before I had any real opportunity to work with Elixir or Phoenix but it helped in keeping me up with conference talks, interesting blog posts and assorted other stuff. I recommend it.

Read the full post

Ecto & Multi-tenancy - Dynamic Repos - Part 2


In the first part I covered the basics of getting started with Dynamic repositories with Ecto. Using that post we can create one or more repos at runtime, create the necessary database, run migrations to get it ready and then direct queries to it. That's a good start. Building blocks for something better. I'll try to get into the better bits here.

Read the full post

I was on a podcast


You can listen to it here.

Read the full post

Ecto & Multi-tenancy - Dynamic Repos - Part 1 - Getting started


Ecto is the database library we know and love from the Elixir ecosystem. It is used by default in Phoenix, the high-profile web framework. Ecto has a bunch of cool features and ideas. But this post is about a corner full of nuts, bolts and very little of the shiny or hot stuff. It just covers some rather specific needs. Ecto docs for these features are this guide and this API. But that is usually not the whole picture. I'll try to cover some of the practicalities.

Read the full post

What I'm up to - Mostly Elixir things


While I'm writing something a bit more involved and substantial I figured I could give an update on what I've been doing. Mostly around Elixir. But I'll cover a few different things.

Read the full post

Why a newsletter?


So I'm launching a newsletter. The sign-up is at the bottom of the page, it won't pop up here, so read on in peace.

Read the full post

Case Study: Inky - An elixir library


This is a post covering the creation and refinement of an open source project within the Elixir ecosystem. More words than code. Be warned.

Read the full post

Artisanal software - Beyond pragmatism


Whenever we design and create software we need to pay attention to the trade-offs we are making.

Read the full post

An eInk display with Nerves & Elixir - Getting started with Inky


So I've been curious about what kinds of displays you can connect to the Pi-series single board computers for a while. I happened to accidentally order a few. Among others an eInk display. I ordered the PaPiRus ePaper. It ended up being dead on arrival and then out of stock so I received an Inky to replace it. Fair enough.

Read the full post

Inky library released!


Me and nyaray finally finished up our work on the Inky eInk display library to a level where we are happy to release it. So Inky 1.0.0 is now out on Hex! Docs are on there too.

Read the full post

Revitalizing valuable legacy systems


Do you have a system that is vital to your business that your development team seems to have given up on? Do they consider it old, slow, complicated or impossible to work with? Are they pushing heavily for a rewrite?

Read the full post

Why am I interested in Elixir?


I’ve had Elixir on the brain recently. And by recently I probably mean 2 years. In my defense I think it is fair to say it is blooming right now. I haven’t had much need of it, or opportunity for it, in my day-to-day of maintaining a Python legacy system, renewing another legacy or optimizing Elasticsearch. So I’ve tried it with a few hobby projects I’ve spent time on and that was fun. But mostly I really just watched the community and what they did with a feeling of “Shiiiit, I want in on some of that!”. I'll primarily touch on BEAM, OTP, Phoenix Presence, Phoenix LiveView, Nerves, Scenic and Rustler.

Read the full post

Scenic - Getting started from scratch


This post covers setting up a Scenic project in the Elixir programming language. It briefly covers the default method but largely dives into adding Scenic to an existing project, which covers the different parts that Scenic requires to run.

Read the full post