Gotta grind em up a bit to get traction

No images? Click here

Goatmire Elixir 2026

28th of Sep - 2nd of Oct. Varberg, Sweden. Sweden's largest, smallest, best and worst Elixir conference.

Tickets

A third of the tickets are gone. We have not announced most of the line-up yet. Be warned that they might move fast.

Acquire your passage!

Workshops

Also some of the most popular workshops have had som capacity added, the wait list has been slurped in and they are likely to get oversubscribed shortly again. We will announce more workshops but I don't believe we'll be able to expand some of these hardware ones very much. So take a look and commit fast if you can.

Goatmire Elixir 2026 website

Speakers

Those who dare speak will find our Call for Talks bids them welcome.

Seriously though. We want speakers of all experience levels from all parts of the world. Take a look. The previous conference was a blast.

Sponsors

If you think your company can and should support the conference we are actively talking to sponsors now. You can just respond to this

 

Gnawing on problems

On a bench by the train tracks at the Varberg train station. Heading to Gothenburg for a bit. Spring air is clear and cold but the sun is out. The balance is nice.

I'm currently carrying some problems. Not to say I'm troubled. Maybe I am. In this case the problems I'm digesting are all relatively practical and potentially tractable with code, human effort, time and similar possible resources. Oh, some ideas might be needed as well.

Funding for the Erlang Ecosystem Foundation

I am a board member of the EEF. Funding is a major topic as it always is in a foundation I'm sure.

This is something Alistair (chairman of the board), Dan (fixer of the foundation) and others have been focus in on for a bit. Essentially for the foundation to fulfill its purpose more and better it needs more resources, mostly financial ones which can be exchanged for time and labor. More resources would best be acquired through the orgs that benefit from the ecosystem. Commercial companies primarily.

As someone who has worked in the ecosystem for a long time: most of my clients have been companies you've never heard of. Every little town I visit in Sweden has a surprise Elixir shop in it. If you throw together 30.000 people in a geographical area I think they have an Elixir company among them. So there are a lot of those out there. Finding them is incredibly challenging.

Thankfully we don't need all of them. I have some ideas for making cold outreach work and how to make it a good deal for the company without needing to commit to sponsorship immediately. Step one is reaching companies and establishing a line of communication. Sponsorship is a sales process and the best sales happen through building a relationship.

There are tools that are relevant to this and I have things in motion that I'm not sharing. Suffice to say, it is on my mind and being processed.

So that's one thing I have both practical and conceptual things rolling around. If you want to get your company in on the EEF, feel free to respond to this email.

Connecting a Nerves workshop using Wireguard

Frank threw out this idea in one of our chats and I did what I do currently which is get distracted. I'm not sure I'm gnawing on this problem as much as trying to solve it using a very straight line approach. I think the tools I pick might be of interest though

I got to Ash HQ and hit Install Now to get their little wizard and it didn't use to have Cinder but I think it does now. So I'd add cinder to the command. But I write a name, pick uncheck "Install Elixir for me", hit Advanced Options and boop the ones I want. Usually a data layer of some kind, an auth of some kind, always LiveView and Cinder.

I run the command. Then I start a Claude Code instance. Kill it because I forgot I'd rather write the initial bit in a text file. I write down my plan in CLAUDE.md and then start it again and tell it to go do it. I include a fair bit of technical detail on the bits I care about. I usually include a note not to use Ecto and to never use authorized?: false and to always work with Ash's concepts of actors and policies. These are things it will always muck up.

I still need to try this on a proper host where I can verify some of the implementation. But early indications are pretty good. I have not seen the code. I assume it's great, flawless, beyond criticism.

This is a utility that would't have been worth the time to put a lot of effort into. But that might make a bunch of cool workshop things way easier for us when doing Nerves stuff. And LiveView plus LLMs make UIs trivial. Everything can have a  UI or a TUI. Or both. And with Ash adding an API or MCP tools is essentially no work.

Integrating ex_nvr experiments

I did a bunch of fairly rough work for the workshop I held using ex_nvr in February. The project is a part of a commercial product. And while I want my changes in there I don't want them to suffer my rough crap. So I've been going through and tidying up my work. Divvying it up into digestable and somewhat logical features that build on each other.

First we had triggers, which just got merged. This is basically a way to specify one-step workflows based on sources and targets. Thing Happens + Do Thing and you can connect those and then you add that trigger to a camera device. The first version allowed the existing Events API to be used to Stop or Start recording on a device. Just as examples.

Next branch is circular-buffer-recording which allows a new recording mode for cameras called on_event and adds a new target for triggers to activate recording with some options for how much of a pre-recording buffer should be held and how long it should record for without seeing a new trigger happening. This allows a an API call event to trigger recording and thanks to the buffer record say 10 seconds before the event (10s buffered in memory) and 15 seconds after the event was last seen to capture a nice little clip. If this trigger is set up it affect the entire Membrane pipeline to add the buffering.

After that is inference. This adds object detection on CPU or GPU via Ortex and ONNX through Alvise's YOLO library. Or via the Raspberry Pi AI Kit hardware, aka. Hailo. Suddenly the features snap together and you can trigger recording only when a person is detected in the camera feed. And capture some of the time leading up to and some of the time after they stopped being detected. This works shockingly well. And ex_nvr already supports IP cameras with ONVIF discovery and everything, webcams and faking a camera using a file.

Then the last bit is the Grid view which is a live WebRTC view Billal at Evercam had already built that I repurposed for a command-center type view. And I added a trigger target for drawing bounding boxes with some config to choose style.

Breaking out a proof-of-concept like this and making it mergeable is a chore. But a very nutritious one. Each thing has become way better and more thought through as I've broken them out. I had Claude do a lot of the code writing, and porting of specific parts from my old workshop branch to the new branch. I worked on the resulting code, ensuring more test coverage, improving functionality.

More?

I have more I could share but this is long enough already. What is your brain working on ?

I'm here on email or on Bluesky and the Fediverse if you want to share. You can just reply to this email :)

Thank you for reading. I appreciate you.

 
 

This is an email from Underjord, a swedish consultancy run by Lars Wikman.

Everything else is found at underjord.io

You signed up for this newsletter and confirmed the subscription. If you want to stop receiving it. Just use the link below.

Preferences  |  Unsubscribe