Photo by Kitera Dent on Unsplash

What comes to mind when you describe “your product”? Do you think about features built for your customers? How it solves a problem your customers have? Maybe even a logo, a slogan, or its theme color?

These aspects describe your product’s business side and value proposition. However, they fail to mention the foundation of your product: its software.

The reason you might have forgotten about the software part lies in the fact that product development tends to revolve around the central question:

Which feature should we build next?

Answering this question is undoubtedly a critical step in product development. It…


Photo by Brad Neathery on Unsplash

In a personal project of mine, I regularly fetched data collected by bicycle counting stations scattered around Cologne, Germany, and stored the data in a public GitHub repository. I ran the Python script which was fetching, appending, and uploading the data to GitHub manually for a while, but since I (am lazy and) wanted to always offer the latest data, I thought about how I could automate this process. Here’s how I accomplished running the reoccurring process with GitHub Actions.

At first, I thought about using the popular Oban library written in Elixir to run a reoccurring job, but every…


Photo by Caspar Camille Rubin on Unsplash

My team at Studitemps and I ran into the problem that we had multiple services, which needed to be served from the same URL. We had one service running the Elixir + Phoenix stack that we considered our “main service”. This service should be accessible under an URL like https://example.com. We also had another service serving our content, which we wanted to integrate into the navigation bar of our main service. We wanted the content service to be accessible under e.g. https://example.com/content.

Setting up CloudFront and Lambda@Edge

We decided on using AWS CloudFront to route the requests to the appropriate services. In order to do…


Here at Studitemps, we have to comply with many rules and regulations that we have to be certain are followed by our software as well. These business requirements have to be poured into production code 1-to-1. Otherwise, we risk losing our students, customers, and at worst, our license.

Therefore, we have to make sure that our software behaves in certain ways. We have developed a process of extracting and implementing business requirements and to make sure that our software will always operate as needed, even when we develop our software further.

The Interview

Before we can implement business requirements, we have to…


Writing code is fun, but nothing tops seeing your code moving things in the real world. That’s why I tested out the Nerves library and used $20 of Raspberry Pi utensils to let software wave a flag for me.

A Raspberry Pi Zero W with a 28BYJ-48 Stepper Motor waving a flag

The Hardware

For this project, I used the following hardware:

  1. Raspberry Pi Zero W
  2. 28BYJ-48 5v Stepper Motor with ULN2003 Board
  3. 16GB microSD Card
  4. A grandcentrix flag
  5. Some cables

The Wiring

Here’s an overview of how to connect the ULN2003 to the Raspberry Pi.


At grandcentrix, we use the Elixir + Phoenix stack to deliver scalable, fault-tolerant and high-availability IoT solutions to our customers. The web frontends, we build for managing these solutions, need to be developed rapidly and adjusted constantly to the needs of our customers. The Phoenix framework is a perfect choice for our needs, but unfortunately requires us to add interactivity using JavaScript. That changed when the Phoenix LiveView project came along.

With Phoenix LiveView, adding interactivity and displaying state changes without reloading the page becomes trivial. The complexity and loss of productivity due to context switching decreases significantly by eliminating…

Peter Ullrich

Peter ist ein sportbegeisterter Elixir-Entwickler bei Studitemps, radfahrender Afrikaliebhaber und leidenschaftlicher Teiler seines Wissens.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store