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.

Portable Custom Radio

[Permalink]

(a.k.a. radio cooler v2)

The custom radio cooler I built in college (and other prior art) has seen a lot of fun times between tailgates, pool days, tailgates, and hunting trips. However, it was built optimizing for battery life at the cost of portability (the 100 Ah battery weighs a ton!). I decided I wanted to build something sleeker and more portable, so I did.

The first step was choosing some type of case. Coolers are pretty convenient because they’re easy to cut through and they can be fairly water resistant but they are also difficult to seal well. I began looking at electrical junction boxes (and I still think one could work quite well) but many had awkward dimensions and I wasn’t sure if drilling or cutting through them would work well. I finally settled on a latching plastic case meant for electrical components or firearms. It seals well and has a convenient handle already installed. It also was long enough to fit three speakers.

Empty radio case.
Empty case.
Case with amplifier inside.
Amplifier sizing.

The case is quite spacious inside. I placed the amplifier in first to size it up but I had compared dimensions online before purchasing.

Inside of case with speakers, amplifier, and aluminum rails installed.
Installed speakers and some components.
Outside of case after installing speakers.
Outside of case with speakers installed.

I carefully measured and cut out holes for the speakers using a dremel tool. I used a tiny cutting wheel to get a rough shape first and then used one of the sanding heads to round them out. If I were to do it a second time, I would tape templates down from the start to get perfectly round holes. After cutting the holes, I installed the speakers using bolts and wing nuts as well as a bit of silicon sealant around the speaker beds.

The components on the inside are mounted via aluminum C-channel I found at Home Depot. It was inexpensive, reasonably strong, light weight, and shouldn’t rust if any moisture gets inside. The two T brackets ended up getting mounted behind the battery to C-channel two cross members. The battery is 12V/20Ah sealed unit I picked up on Amazon. The entire assembly is mounted to the case at 4 anchor points: 2 to the bottom of the battery and two at the place where the lower amplifier holes are.

Finished portable custom radio front.
Finished radio front w/ trickle charger.

The finished radio looks quite nice from the front and uses a small trickle charger to charge up. It sits easily upright though I would love to have a way to also sit it on its side so the three speakers were stacked. The sound is very directional (somehow to my surprise) so it’s best placed facing the direction you want the sound to go. The volume of the case with all components installed seems close to the right size to get good speaker suspension – bass is loud and even shakes the lid some.

The inside of the cooler is slightly messier than I’d like but it’s still a work in progress. The battery is held in place via paracord because I haven’t thought of a better way that isn’t too rigid (I don’t want to jar the battery too much). The switch is placed alongside a 2-port USB power hub and the bluetooth module. The hub shows the battery voltage to give an approximate idea of charge level. The bluetooth module only draws a few mA so I keep it permanently powered (switch controls the amplifier)..

Completed inside of portable custom radio.
Finished and wired inside.
Finished portable custom radio rear.
Finished radio rear w/ trickle charger.

The rear only contains 4 mounting bolts which can be easily sealed with silicon caulking. The radio is significantly more portable than the previous iteration and can be carried with one hand like a suit case.

Me holding the custom radio at my side.
Finished radio is very portable.

Parts List

Here’s a non-exhaustive list of what I used for this build. Including hardware one of these can be built for around $350. It’s way louder than the all-in-one stereo units you can find at Costco or Sams Club.

Radio Cooler

[Permalink]

A front 45 degree view of the radio cooler.
It cleans up pretty nice.
A rear 45 degree view of the radio cooler.
Bottle opener is used frequently.

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.

Components

My radio cooler is built from mostly inexpensive components and was constructed such that any component can be swapped out quite easily. For this build, I used:</p>

So all together it costs around $275 to build one of these give or take some depending on what kind of battery you use. You can also use any type of cooler that you feel comfortable mounting the amplifier and speakers in.

Construction

A complete picture of the inside of the cooler.
A complete picture of the inside of the cooler.
An image of the tricle charger wired to the battery.
Trickle charger rests in the bottom and is hard wired to the battery with quick disconnect.

Putting one of these together is much easier than it looks. The battery essentially hooks straight to the amplifier and the amplifier straight to the speakers. After that, you just need to wire in a toggle switch from amplifier (+) to the amplifier toggle post. Plug in the RCA adapters in connecting the amp to your phone (or other aux/RCA output). Turn it on and start jamming!

A common question I get about this cooler is whether or not it can actually hold drinks. The answer for my build is no. In order to maintain low moisture inside the cooler, I try not to invite any liquids (except perhaps sunscreen) inside. It can become an issue if your cooler has a drain plug. Mine eventually failed and could no longer float in a river tube without being filled with water. It is worth mentioning however that my amplifier continued to work even with fully submerged power and speaker terminals.

An image of the wired and mounted speaker.
Speakers are mounted with bolts and have wires soldered (not required).
An image of the amplifier, toggle switch, and battery.
Toggle switch hangs loose but could be mounted. Battery connects to amplifier. RCA on top.

I measured and cut the holes in the cooler using a reciprocating saw. Speaker and amplifier components were mounted using bolts with wingnuts through pre-drilled holes. I soldered the wires to the speakers but this is not required. All amplifier connections are using terminal connectors and the battery rests on the bottom with small brackets preventing it from sliding. There is a fair bit of storage space inside.

Wiring

Below is a wiring diagram showing how where all the wires connect up with one another.

A wiring diagram demonstrating how to wire up a speaker cooler.
Click the diagram to download a large version.

Minecraft Controller Mod

[Permalink]

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

[Permalink]

Source Code

A playlist diff tool and a playlist copier for Spotify. Built with Angular during Summer 2015. I has grandiose dreams of building something with the pitch “version control for your playlist”. 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

[Permalink]

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

[Permalink]

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

[Permalink]

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

[Permalink]

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

[Permalink]

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.