Embedded Rust Programming on WSL (RISC-V)

Image Courtesy of SiFive, Inc. I recently picked up the SiFive HiFive 1 Rev B RISC-V microcontroller on Crowd Supply. According to the SiFive product page, the HiFive 1 Rev B is “an Arduino-compatible development board featuring the SiFive Freedom E310-G002 (FE310-G002) SoC plus a ESP32-SOLO-1 Wi-Fi and Bluetooth module”. I have seen examples for this board written in C, Rust, and TinyGo. Having not used Rust as much as I would like, I wanted to start there for development on this platform....

February 14, 2023 · 5 min · michaelpeterswa

Leveraging External Tables in Google BigQuery

Context Recently, I was tasked with logging error messages, request data, and the response body of failed HTTP requests to BigQuery for a service that makes outgoing GET and POST requests to thousands of different endpoints. Simple enough, right? Loading Logs into BigQuery Thankfully, the project already contained a legacy BigQuery streaming implementation which I used as my batch writer. After a thorough review of the changes, it was deployed to production....

June 29, 2022 · 6 min · michaelpeterswa

Ansible for the Homelab

Ansible for the Homelab It’s been a while since I last posted. Well, I’ve been working on something special. With my first server (an HP laptop with a broken screen) being nearly five years old, I was rapidly growing concerned about the health of it’s battery. The laptop has been plugged in and “floating” at 100% for the last 3-4 years. Given it’s previous life as a daily driven laptop (~7 years of total use), I assumed one day in the near future it would decide to become a spicy pillow....

February 13, 2022 · 4 min · michaelpeterswa

My ZSH Configuration

ZSH! Below you can find the setup that I’ve found very comfortable while still maintaining a relatively minimal terminal experience. Confidential environment variables and aliases have been omitted to maintain basic operational security. This post will be edited every time a major revision is made. Customizations of Note Plugin Manager: Antibody cat Alternative: bat Theme: lambda-gitster Current .zshrc Configuration export ZSH="/Users/michaelpeters/.oh-my-zsh" export PATH=/usr/local/git/bin:$PATH ZSH_THEME="lambda-gitster" DISABLE_UPDATE_PROMPT="true" COMPLETION_WAITING_DOTS="true" DISABLE_UNTRACKED_FILES_DIRTY="true" source $ZSH/oh-my-zsh.sh source <(antibody init) antibody bundle < ~/....

December 22, 2021 · 2 min · michaelpeterswa

Hashes and Strings in Go

Introduction In a few cases while working on Go software, I have needed to generate a cryptographic hash (mainly SHA-256) from a string or JSON value. In all cases up to this point, I needed to convert the resulting []byte to a string representation for storage or viewing. In my investigation, I found two popular ways to approach this problem. I’ll describe them below as well as explore the performance implications of each choice....

December 22, 2021 · 3 min · michaelpeterswa