2021 Blog Refresh
It’s time for a change and this blog received the brunt of my anxiety driven need to implement some sort of change. While the previous design was nice, I wanted a simple design containing less images. My hope is those with bandwidth constrained internet connections could more easily discover and consume the content I produce.
The change also brings some added motivation to work on side projects and share what I learn. I felt the old blog was stale even if that wasn’t the case. One downside to changing the blog is I decided to break previous URIs in favor of hugos permalink format. Google should re-index the site fairly quickly and the amount of traffic has dwindled due to not releasing much lately.
…Deploy Elixir apps utilizing Rust NIFs on Render.com
Update: Rust should now be included in the default Elixir install for Render.com. I’ll be leaving this blog post online to act as a resource for building elixir + rust docker containers agnostic of Render.com.
After a long week of dealing with servers at my day job I had no urge to do the same with my side projects. I looked at Render.com and decided to try them out. All was well until I decided to add a mix package that built a Rust NIF. The default build container used by Render for Elixir projects didn’t include Rust but after chatting with their team on Slack I came up with a solution, Docker.
…Stop default kernel updates on Pop!_OS
If you installed a mainline kernel on Pop!_OS then you most likely have noticed software updates for the default kernel. If you don’t wish to download and install kernel updates for a kernel you do not use then you are in luck, they can be stopped.
To stop future kernel updates from being shown you would pin the kernel version in your apt preferences file. This can be accomplished in a few easy steps.
…Installing a mainline kernel on Pop!_OS
Ukuu is a fantastic tool to install mainline versions of the Linux kernel. Older versions (of Ukuu) are available for free, while the newest version costs $12 USD (at the time of writing). When possible I am a fan of supporting Open Source authors if I use their work. If you are in a position to purchase Ukuu I recommend supporting the author, if not the free version works perfectly fine for this article.
…Changing the default login wallpaper in Pop!_OS
To complete the theme of my new rig I wanted to change the background shown on the login screen. This can be done in two steps:
Edit /usr/share/gnome-shell/theme/pop.css and change the lockDialogGroup background to point to the file you want to use as the wallpaper. I kept the file along side the existing assets and made sure owner/group/other had read access to the file.
#lockDialogGroup {
background: #2e2927 url("assets/file.ext");
background-repeat: repeat;
}
If you wanted to place the wallpaper in with existing assets you would copy the wallpaper to /usr/share/gnome-shell/theme/assets/<file.ext>.
Building a Gitlab CI light using Elixir/Nerves - Hardware
It’s no secret I am a fan of Gitlab and I thought about ways to utilize their API/callbacks to create a fun project using Elixir/Nerves. Other companies have created their own versions of light based notifications, here’s my take on it.

Hardware
I am going to use a 3 color tower light from Adafruit to provide the visual aspect of the notification system. It will be controlled by a Raspberry PI Zero W or a Raspberry PI 3, the code can be shared between the two devices. A 4 channel 5v relay board will control turning the lights on and off via the GPIO. Power to the lamp requires the use of a barrel jack and a 12v power adapter.
…ElixirConf 2018 was amazing
The cramped 6.5-hour flight to Seattle was worth being uncomfortable for the remainder of the night as ElixirConf 2018 was a truly great event. I experienced two major firsts: speaking and the hallway track. Chris McCord dropped Phoenix.LiveView, Boyd Multerer released Scenic and I am already drinking the kool-aid.
I mention a few talks below but I wanted to point out there are many more. Please visit the ElixirConf Youtube Channel to view more.
…ElixirConf 2018 crunch time
Crunch time is here, ElixirConf is in 36 days! I started my presentation which is going to require a lot more time than previously imagined. My goal is to have the audience laugh a bit while learning how to build their own weather station. Once again I will go with TenderLove’s approach, laugh at your own jokes and others will join you.
It’s challenging to try to forget what you know in order to better teach others. I don’t want to make any assumptions about the audiences knowledge, or forget to mention some important details. There was a bit about the Elm front-end that may get cut due to time. I have a branch for Lake Effect with some basic, but broken channel support, not enough to talk about at the moment.
…Building a Raspberry Pi weather station with Elixir/Nerves – Part 5
Speaking at ElixirConf 2018
If you want to learn how to build a weather station, laugh, cry when its over; then come to ElixirConf 2018! You can talk to me in person and I’ll make sure to tell you the wind speed.
It’s ALIVE
To see weather results visit https://weather.frankkumro.com. Refresh the page every 30 seconds to see the latest weather report.

Setting up wireless
Capturing weather data is useless without saving / displaying it. Lake Effect will send the data it captures to a Phoenix application over HTTPS in JSON format. I did not want to dig a trench to run power/Ethernet to the shed, it is around 100 feet from the house. Life is too short to dig holes for fun! Wireless will be used for connectivity and solar for power (future project). Setting up the wireless connection within Nerves is easy.
…Building a Raspberry Pi weather station with Elixir/Nerves – Part 4
Part 3 demonstrated how to communicate with the wind speed sensor. The next step is to create modules for reading from both sensors, and automatically repeating this task at a set interval.
You will notice two project names in the details below, Lake Effect and Thunder Snow. These are the project names for the code running on the weather station (Lake Effect) and the code that will be running the API/UI for display (Thunder Snow). Currently Thunder Snow is empty, that will change after Part 4.
…