Easy WireGuard setup using TailScale

WireGuard I’m pretty sure that most people have heard about the networking tool called WireGuard. It’s become very popular in the past couple of years for good reason. It is dead simple and only supports 1 encryption protocol. This prevents security flaws by accidentally choosing the wrong encryption parameters, which is easy to do if the tool you are using offers many options. It easily meets or exceeded the throughput of all other available VPN solutions. [Read More]

Tailscale Hosts

Tailscale Hosts Last post I talked about how to set up a mesh network of WireGuard peers using a service called Tailscale. One of my only complaints is that sometimes it’s hard to keep track of the IP address assigned to all the peers. Tailscale automatically keeps track of all the connected peers with their IP address and hostname. This is where my program tailscale-hosts comes in. It parses the output of the tailscale status --json command append the hostname and IP address to the /etc/hosts for easy access. [Read More]

Added STM32F families to stm32-meson

The stm32-meson project now supports more STM32 chips. Previously the the project only supported STM32G0 family of ST microprocessors. I’ve gone through and added support for STM32F0, STM32F1, STM32F2, STM32F3, and STM32F4 families. In total 321 ST chips have been added in this update. To build the stm32-blinky project run the following syntax. The cross file must be specified which includes the proper arguments to supply to the Arm GCC compiler. [Read More]
meson  stm32  c 

Dotfile Managment using dotdrop

There has to be an easier way

Every developer has a customized system that they are familiar with to make coding easier. For a Linux system this involves modifying the dotfiles for all the software being used on their system. One of the dis-advantages of all these dotfiles is that they take a long time to get setup on a system. So switching between different PC’s can be a bit of a time sync to get everything setup to your liking. [Read More]
dotfiles  python  c 

Meson Python Modules

The meson build system is very versatile and can be integrated with a wide variety of technology. Meson can be used to build C modules that link in as a python module. Sometimes this is required to allow Python to integrate with a system library written in C. Let start by creating a Python module called mymath which implements a function called add written in C. This library contains all the definitions for the methods to interface with the extension module. [Read More]
meson  python  c 

Meson Polyglot - Rust and C

The definition of polyglot is “knowing or using several languages.” With that definition Meson could be considered a polyglot. Meson is able to work with multiple languages. Currently c, cpp, d, objc, objcpp, fortran, java, cs, vala and rust are supported by Meson. Rust is a language that emphasize on memory safety and speed at the same time. Let’s start with Rust’s version of Hello World! and see about compiling it using meson. [Read More]
meson  rust  c 

stm32-meson

Using meson for stm32 development

STM32 Meson Ive been a big fan of stm32-cmake which simplifies the setup of a stm32 embedded project. All that is required is the STMCubeMX directory and the chip being used. All the rest is automatically generated by stm32-cmake. I’ve recently learned about meson and have decided to create the stm32-meson project as a way to learn how to get something useful done is meson. First I’ll show the expected usage of the project. [Read More]
linux  gcc  meson 

RTL-SDR basic setup

What is a Software Defined Radio (SDR) I recently got my hands on a RTL-SDR which is a software defined radio (SDR). A software-defined radio (SDR) is a radio communication system where components that have been traditionally implemented in hardware (e.g. mixers, filters, amplifiers, modulators/demodulators, detectors, etc.) are instead implemented by a means of software on a personal computer or embedded system. In recent years SDRs have become very affordable using commedy hardware. [Read More]

Automatic CMake Header Dependency

Download dependencies

Often times 3rd party dependencies can be the hardest part of setting up a C++ project. CMake has eased this pain, but it is still often quite difficult to deal with with the numerous different types of build system. CMake includes the FetchContent library call which allows a dependency to either be cloned from a git repository or tar.gz archive to be included into the project. This is a very convenient feature which allows your projects dependencies to be neatly downloaded without having to include the source in your project. [Read More]
cmake  c++ 

PC / Desk Setup

I spend a lot of time at my PC so I’ve put a lot of though into the parts that make the experience a pleasent one. I have a modest PC I build back in 2015 when I was still in high school. It’s served me quite well over the years. Here are the major components that make up my system. I’m also planning on updating this post whenever I add new equipment to my desk setup. [Read More]
pc  desk