Brent Walther

Projects

Even though software engineering is my profession, I don't only code in the office. I'll occassionally dabble in software side-projects at home, too. This page is dedicated to hobby/side projects I've worked on outside of my job. It includes some academic projects too.

Budgeting with ledger-cli

In my Personal Finance Philosophy post, I describe the importance of budgeting and acknowledge that it can be time consuming to do properly. Since I’m a software engineer by trade, I looked for software to help me with the job. Initially, that was practicing double-entry accounting for all my personal finances using GnuCash, an open-source version of Quicken (with less features). It allowed me to understand the workflows, but the integrated expense matcher is terrible and I wanted something better.

Read more...

Analyzing my 6.0L Powerstroke OBDII data

I recently took my 2003 F-250 on a trip pulling a single-axle camper trailer behind it. I’ve had the truck now for a few months and am well aware of the shortcomings of the 6.0L Powerstroke engine but wanted to collect some data for my engine to use as justification and prioritization for upgrades. I’ve been looking at the parts offered by BulletProofDiesel for quite some time but didn’t want to unnecessarily upgrade parts without first establishing a baseline for engine health. Using a bluetooth ODBII adapter and the Torque Android app, I collected that data on this recent trip. I estimate the total combine weight of the trailer, cargo, and passengers to be ~3000 pounds (on top of the truck curb weight).

My 2003 F-250.

Read more...

First three Homebrewed beers

I’ve been interested in trying homebrewing for a few years but it wasn’t until I had a second interested party that I finally decided to give it a try. My friend Trent told me he was interested in trying it out, that he has done it once before (solo), that he had some of the equipment already, and that he knew where the brew supply shop was. I was sold. There’s an Austin company called Brent’s Tree Service and we had an inside joke that led us to eventually settle on labeling (figuratively) our creations as “Tree Service” brewing.

Our setup is pretty simple. We brew in a giant aluminum pot over a propane burner. It isn’t perfect since the heat is concentrated in the middle but frequent stirring mitigates that issue. We’ve got a copper wort chiller coil that we submerge in ice when we need to transfer the boiled wort to the carboy for fermenting, and then we have a cheap 6.5 gallon plastic carboy to ferment in. We have only bottled out beer thus far (as opposed to kegging). Though I’ve had some folks suggest that kegging is more convenient, I prefer bottling so far since it’s easier to keep and share.

Our first three beers were:

Read more...

Portable Custom Boombox

(a.k.a. radio cooler v2)

The custom radio cooler (and other prior art) I built in college has been dragged all over the place between tailgates, pool days, the beach, camping, and hunting trips. It is a complete workhorse optimized for battery life and durability at the cost of portability (the 100 Ah battery weighs a ton!). I decided I wanted to build something sleeker and more portable, so that’s what I did.

Read more...

Radio Cooler

After having seen a few in the wild and having one crummy proof-of-concept build, I ordered parts for and built a brand new radio cooler in the fall of 2013. It started with two speakers and grew to four and has since been used hundreds of times between tailgates, beaches, and poolsides. It lasts longer, is way louder, and is much more hardy than a lot of store-bought speaker systems. I built mine to be as water resistant as possible; I used all marine audio equipment and tried to make decent seals around the speakers and lid. It can get rained on or be thrown into a river float and still provide powerful loud sound for tens of hours.

Read more...

Minecraft Controller Mod

Source Code

Minecraft Controller Mod Settings Page Screenshot.
A screenshot of the mod's settings page.

Developed in early 2018, this is a mod that uses MinecraftForge to enable controller use for the PC version of Minecraft. Instructions for setting up and using are in the repository readme. Once setup, it’s as simple as turning on your controller and pressing “run” in the IDE. The Mod uses XInput and should work anywhere XInput is supported.

Spotify Playlist Tools

Source Code

A playlist diff tool and a playlist copier for Spotify. Built with Angular during Summer 2015. The pitch was “version control for your playlist”. In practice, the idea was that you could ‘fork’ a playlist which would copy all the songs and you could add any of your own that you want but you could also merge in updates from the original playlist too. The use case would be to fork one of the spotify-updated playlists and make it your own.

Tearable Cloth Simulation

A physics simulation of a tearable (and gravity affected) cloth. The cloth is represented as a large spring mesh. I built this in Spring 2015 for Dr. Keyser’s Physically Based Modeling (CSCE-649) class at Texas A&M using three.js and vanilla Javascript. It uses Runge-Kutta fourth-order method to integrate movement over time.

It’s not optimized and evaluating as many nodes as the simulation has in a browser using Javascript is difficult. Thus you’ll notice it is a bit buggy, especially on slower computers or mobile browsers. You can use A and D keys to rotate the view and the T key to “tear” the cloth.

Demo

Rigid Body Demo

A simulation of a rigid-body cube that I built Spring 2015 for Dr. Keyser’s Physically Based Modeling (CSCE-649) class at Texas A&M using three.js and vanilla Javascript. It uses basic euler integration by default which can be unstable but has an option to use Runge-Kutta second-order method for greater stability.

You can use A and D keys to rotate the view. A rigid body (in physical simulation) is most basically described as a dice or other hard object which simply transfers energy within itself rather than absorbing it via a spring force.

Demo

Springy Mesh Cube

A simulation of a cube represented as a springy mesh (connected corners) that I built Spring 2015 for Dr. Keyser’s Physically Based Modeling (CSCE-649) class at Texas A&M using three.js and vanilla Javascript. It uses Runge-Kutta Euler method to integrate movement over time. It uses Runge Kutta second-order by default but can optionally use fourth-order for greater stability.

You can use A and D keys to rotate the view.

Demo

Boid Flocking Demo

A simulation of boid flocking that I built Spring 2015 for Dr. Keyser’s Physically Based Modeling (CSCE-649) class at Texas A&M using three.js and vanilla Javascript.

In the demo below, you can use the WASD keys to move around. You’ll notice three flocks (red, blue, and green) along with white agitator boids that change position. The spinning cubes are just for added affect and the boids should generally avoid them.

Demo

Code Graveyard

This is a collection of ancient programs I wrote during high school. Most of these were found either on old thumb drives or on my Dropbox. Select programs have a short description.