# Shawal Mbalire > Today is a nice day for engineering ## Posts - [Github Workflow.](https://blog.shawalmbalire.com/github-workflow/): A streamlined SemVer workflow using the terminal. 1. The Terminal Workflow (Step-by-Step) Step 1: Start the Task Find your next task and create a local branch tied to the issue. Step 2: Code and “Tag” your Intent Write your code. When you commit, use the Conventional Commit prefix. This is the “data” the automation will use later. Step 3: Push and Create the PR Push your branch and use the CLI to open a Pull Request. Bash Step 4: The Merge (The Trigger) Once tests pass and the code is reviewed, merge it. This “signals” the automation to prepare a […] - [Shawal's README.md Rubric](https://blog.shawalmbalire.com/shawals-readme-md-rubric/): This is a readme outline and format that I want to adopt and grow alon with me. This rubric is meant to be a vision to creating better README files for my repositories. Post Outline Table of Contents What it is: A clickable map of the document. What it entails:For any README longer than a quick scroll, a Table of Contents (ToC) is non-negotiable. It allows a developer to instantly jump to the section they care about—whether that’s the local setup instructions or the deployment pipeline. Keep it clean, use anchor links, and make sure it accurately reflects your header […] - [Every time a decision can be made, it must be made and it is.](https://blog.shawalmbalire.com/every-time-a-decision-can-be-made-it-must-be-made-and-it-is/): Disclaimer: There is no AI use in the writing of this video. Only an English spell checker was used. Indecisiveness is an issue that pesters me a lot. I cannot help but overthink what if there are negative consequences of my actions. What if there is a better string of words or events that could lead to a better outcome. And most of the times my worries are rightfully placed. Almost always there is 100% certainty that the choice i make is not the best course. Choices made by us humans are largely influence by immediacy. whichever is the most […] - [The Embedded 12-Factor App (E12FA)](https://blog.shawalmbalire.com/the-embedded-12-factor-app-e12fa/): The 12 factor application, https://12factor.net/ is a great checklist to building Applications. I have found it to be a greate guideline that I believe is a good checklist for most software projects. As such I started to aaply it to my applications. Then I thought that I could apply it to embedded systems. But there were a number of differences which I thought I could air out with this blog post defining the E12FA according to how I think they can help in Embedded software projects. This blog was written with assistance from Gemini by Google. 1. Codebase: One codebase […] - [The Foundation of Embedded Development: Defining Board Bringup Software](https://blog.shawalmbalire.com/the-foundation-of-embedded-development-defining-board-bringup-software/): An analysis of the critical initial firmware used to validate and initialize custom hardware platforms, focusing on robust configuration and debug readiness. TLDR: Quick Summary Bringup Software is the minimal, bare-metal firmware used to validate a new custom circuit board. Its primary mission is to check basic hardware integrity (power, clocks, debugger, memory) and resolve subtle silicon or driver issues before any high-level application development can begin, ensuring a stable foundation. In the rigorous lifecycle of a custom embedded device, the creation of Bringup Software marks the critical transition from a passive physical circuit board to an active, functional development […] - [How to Configure STM32 ADC for Periodic Sampling using DMA and Timers](https://blog.shawalmbalire.com/how-to-configure-stm32-adc-for-periodic-sampling-using-dma-and-timers/): A detailed guide to setting up the Analog-to-Digital Converter (ADC) on the STM32H7 series for autonomous, periodic data acquisition with minimal CPU overhead. As embedded systems engineers, one of our core challenges is efficiently bridging the analog and digital worlds. This tutorial provides the professional, low-overhead method for continuous Analog-to-Digital Conversion (ADC) on high-performance STM32 microcontrollers, specifically using the H7 series. We will utilize a combination of the ADC, a Hardware Timer, and DMA (Direct Memory Access) to create a set-and-forget acquisition system. 1. The Pro Approach: Why Use ADC + Timer + DMA? In high-performance embedded systems, minimizing CPU […] - [Modern Embedded Systems Programming: A Comprehensive Guide](https://blog.shawalmbalire.com/modern-embedded-systems-programming-a-comprehensive-guide/): All summaries and code snippets in this document are based on the Modern Embedded Systems Programming YouTube playlist by Dr. Miro Samek. Welcome to this in-depth blog series on Modern Embedded Systems Programming! Whether you’re a student, hobbyist, or professional engineer, this guide distills the essential lessons, code patterns, and best practices from Dr. Miro Samek’s acclaimed YouTube course. Each module is summarized with practical code examples and concludes with actionable insights to help you apply what you’ve learned to real-world embedded projects. 🏛️ Module 1: Foundations of Computer Architecture & C Programming This foundational module introduces you to the […] - [Docker Compose Deployment with Traefik](https://blog.shawalmbalire.com/docker-compose-deployment-with-traefik/): This guide walks you through deploying a scalable Django app with Traefik, PostgreSQL, Redis, Celery, and automated data loading—optimized for modern cloud and VPS environments. Service Overview: Quick Start Architecture Services Network Flow Access Points Development Production Environment Variables Create a .env file with the following variables: Common Docker Compose Commands Configuration Traefik Features Scaling Configuration Production Features Monitoring Traefik Dashboard Security Production Checklist SSL Configuration Troubleshooting & Common Errors 1. Bad Gateway (Traefik) Symptom: Traefik dashboard shows routes, but accessing the site gives a Bad Gateway error. Solution: 2. CSRF Verification Failed (403) Symptom: You see “CSRF verification failed. […] - [Setting up a Samba server on Linux](https://blog.shawalmbalire.com/setting-up-a-samba-server-on-linux/): Setting up a Samba server on Linux allows you to share files and printers with Windows, macOS, and other Linux machines on your network. I wanted to be able to share files from my higher storage linux laptop to my lower storage mac mini. 1. Installation First, install the Samba package on your Linux system.For debian systems For Fedora and redhat based systems. This also sets the firewall to allow access to Samba from other computers. 2. Verify Samba Service Status After installation, check if the Samba service is running. Bash The output should indicate that the service is active […] - [Installing Windows Apps on MacOS](https://blog.shawalmbalire.com/installing-windows-apps-on-macos/): Recently I got access to an M4 mac mini computer to aid my development and engineering. However I need to run a bunch of windows simulation programs for my electrical engineering thus resulted into this deep hole of finding a FOSS way of running windows applications on MacOS.Below is a list of some of my requirements Wine An obvious choice is wine. The not an emulator from the GNU/LINUX world is an interesting option. The thought that wine should just work. The first issue I had was that the default package manager homebrew does not have support for installing wine […] - [Creating a LoRa satellite ground station](https://blog.shawalmbalire.com/creating-a-lora-satellite-ground-station/): TinyGS The tinygs project https://tinygs.com/ forms the basis of this project. TinyGS is an open network of Ground Stations distributed around the world to receive and operate LoRa satellites, weather probes and other flying objects, using cheap and versatile modules. With a reach telegram community and github. There are resources for one to build a lora based ground station. Below is my experience trying to setup a ground station. This blog will be structured as follows. Installation First of all to install the tinygs firmware, we need supported firmware. A list of the supported devices is given on the tinygs […] - [Installing Flutter on Linux](https://blog.shawalmbalire.com/installing-flutter-on-linux/): This guide assumes you are using the Fish shell. Step 1: Clone the Flutter Repository Flutter is available on GitHub. To install it, clone the official repository: This command downloads Flutter into the ~/flutter directory. You can change this path if needed. Step 2: Add Flutter to Your PATH To use Flutter globally, add it to your system PATH using Fish shell: To make this change persistent, add it to your Fish configuration file: Step 3: Verify Installation with Flutter Doctor Run the following command to check for any missing dependencies: This command will analyze your system and list any […] - [Hello world!](https://blog.shawalmbalire.com/hello-world/):  Hi there! I’m Shawal Mbalire, a passionate software and electrical engineering student. I’m excited to share my thoughts, experiences, and insights with you through this blog. Why This Blog? Ever since my newly formed writing hobby, I thought it would be nice to write for fun so as to: What to Expect Here’s a sneak peek of what you can expect from this blog: I’m open to suggestions and feedback, so feel free to leave a comment or reach out to me. Let’s embark on this journey together! I can’t wait to share more with you. Stay tuned! ## Optional - [Agent (MCP protocol)](websites-agents.hostinger.com/blog.shawalmbalire.com/mcp) [comment]: # (Generated by Hostinger Tools Plugin)