Audalign

github.com/benfmiller/audalign

gif of audalign aligning

This project is part of the work I’m doing as an undergraduate research assistant at MSU with Dr. Robert Maher and Fraser Robinson. For more details about the research work, look at the university page.

As the name implies, the purpose of this project is to align audio files. Four alignment techniques were developed: fingerprinting, correlation, correlation with spectrogram, and structural similarity index measure. Each method has many configuration options to help deal with different audio situations. The largest enemies to alignment are clipping and noise to signal ratio in the audio files, so the effectiveness of each method varies significantly with different audio files.

The github page and the wiki discuss the features of the project, details of implementation, and configuration for each technique. They are definitely worth a read. The project is also installable from PyPI.

Raspberry Pi Keyboard

github.com/benfmiller/braspkeys

My desktop was originally built with a motherboard from a three-year-old Dell optiplex. It was not necessarily made to be rebuilt, so it threw errors each time I booted the machine. The desktop was still quite a bit more powerful than my laptop and had a lot more storage, so I wanted to be able to access it remotely while I was visiting family.

The solution I came up with was to setup a Raspberry Pi 0W as a keyboard device to press the desired keys to get through the error screen and login to the computer.

Since then, the motherboard bricked, so I no longer have that problem. My current motherboard works great! This project isn’t used as much now, but it is still fun now and then.

CLI Money Tracker

github.com/benfmiller/CLIMoneyTracker

gif of entering transactions and viewing data

I used this program for a year and a half, and it worked great for my purposes. After a while, I tired of the manual entry and switched to personal capital. If anyone wanted to keep track of their transactions in a granual, hands-on manner, I would definitely recommend this.

CLIMoneyTracker has an intuitive menu interface to enter transactions, search for transactions, and display graphs. Any entry can also be searched for and deleted or reentered. I really enjoyed the graphs to visualize my cash flow just how I wanted to.

Everything is stored in files, so there is no need to worry about databases. Paths are all relative, so it must be run from the same directory everytime (an area of improvement). If I was to do this over, I would probably use “rich” for prettier output.

The balance can be corrected if something is off or you don’t feel like entering all your transactions. The current year is set from the settings menu. The program also supports multiple users or separate accounts.

TradeSuite

This project is mainly focused on investing despite “trade” being in the name, but trading methods will also be implemented. It is still a little early in the development stage. Though I started this project in December of 2020, it is much more complex than the other projects and it is hard to focus on it for a long time with school work and other work.

This project is implemented in python, uses the Robinhood API, and stores data in MongoDB. It uses email updates with generated pdf’s to update users on performance. A great deal of care has been spent on modularizing this project and making the services as easily replaceable as possible. The intellectual effort is being front-loaded, as you may say.

I intend for this project to be highly extensible and to last many years, so I’m not taking any shortcuts. I have been learning a lot about value investing and wanted to implement it in code. Building infrastructure to analyze tons of stocks, get financial data and historicals, and handle quarterly earnings is a lot more complicated than simple time series analysis.

In the nature of this project, I wanted it to be a trading suite with many different methods implemented. As anyone knows, a model is only as good as its data. Streamlining the program flow and properly handling the data has proven to be the largest chunk of this project.