HARVEST

Arguably my most ambitious project to date, HARVEST, is an autonomous robot for sampling soil and managing gardens. Im working on it for my capstone project in school, and its taught me a lot. 

It uses a raspberry pi 5b Running Ubuntu 22.04 LTS. I’m using ROS2 to do most of the actual management. Im using Zerotier to network the pi to my laptop as it makes everything much easier to manage.  

For motor control and power im using a somewhat generic raspberry pi UPS and a adeept robot hat. The two synergize pretty well, letting me power everything from one cable going from the battery. The battery also lasts a surprisingly long time. Lithium cells never fail to impress me.

Originally, I was using a raspberry pi 3b, but it wasen’t powerful enough to do computing on board. I wrote a custom python script using flask which let me control the robot through a web interface sending POST and GET requests using htmx buttons. 

That raspberry pi was actually broken when I first got it. I plugged it in and it started smoking, so in a hail mary attempt to fix it i desoldered the pull down diode on the board and it somehow fixed it. Pretty proud of that repair. 

The limitations of that original script eventually became obvious to me when it came time to implement the autonomous driving. Originally, I planned to write some sort of receiver script on my PC and using it to do the processing, but the response time was far too slow. 

That led me to using ROS2. Most of the basic setup was fairly simple. I ssh’d into the raspberry pi and installed it using the commands listed on the website, which went pretty smoothly (originally I installed Ubuntu 22.10 which was giving me errors). Installing the basic cores went equally as easy. 

Installing it on my laptop, however, was a significant pain. I use Manjaro for my laptop because in my almost half a decade of using Linux as a daily driver OS Manjaro has given me the least pains. That being said, trying to build ROS2 from source, or install it using binaries simply did not work. I spent about 2 days trying to get it to compile and it kept giving me errors about DDS. Eventually I decided to try using Distrobox to install it under ubuntu 22.4 and it worked perfectly first try. Goes to show, sometimes the simplest solution is the most effective. 

 The next big hurdle (which im still currently contending with) is making a custom hardware interface. ROS2 uses a system of abstraction to separate hardware from the commands, which seems nice at first, but trying to rewrite a hardware interface has proven to be more complicated than I initially anticipated. 

The first step was rewriting the motor controller script in C++. For whatever reason, ROS2 hardware interfaces have to be written in C++, so I had to spend about a day contending with the rewrite. The original control script from ADEEPT basically just writes to GPIO pins to do the control, which I rewrote using the wiringpi library (sidenote: thank you to whoever is still maintaining this library because the alternative libgpio looks way to complicated to work with. ) The main difficulty of the rewrite actually proved to be my own stupidity, as I spent a significant amount of time trying to narrow down which pins control which, which was caused by me using the code written for the ADEEPT motor hat, rather than the robot hat, which caused me significant greif. 

As of right now, im trying to intergrate the now-working wiringpi scripts into the hardware interface. I think after thats over with the project will go much faster. 

I plan to use ORB-SLAM3 for the actual machine vision, which already has a ROS2 node built, which should help speed things up. 

Chlorates

Two years ago I tried making a chlorate electrolysis cell, which largely failed. 

I specifically was using a lead dioxide “one pot” type setup. 

This year, im going to try this project again by making a much larger lead dioxide electrode, and using a titanium plate instead of stainless steel. 

I found the website “the chlorates and perchlorates” extremely useful. 

I dont really intend to make super pure chlorates and perchlorates, as I mostly plan to use them as oxidiser for rockets. I also just find the process of making an oxidiser from fairly inert chemicals quite interesting. 

Originally, I made some nitric acid by distilling sulpheric acid and nitric acid together. This was then added to an electroplating bath with a graphite electrode and lead metal. In theory, the nitric acid is acting as a catalyst in this reaction because the production of lead dioxide produces nitric acid as a byproduct, allowing for further dissolution of the lead metal. This seemingly worked fairly well, so I might stick with it when making the larger electrode. 

I chose to use lead dioxide rather than platinum or MMO because it works best for a simple one stage cell. Producing perchlorates with a platinum electrode will actually erode it over time. Lead dioxide is also simply cheaper to experiment with.

For my “mark II” design im planning to use a polyethylene bucket as the main cell, as its lighter and cheaper than glass, but chemically resistant to the electrolyte, as well as the aformentioned improved electrodes. I will also need to get a better power supply, as originally I used an old computer PSU which quickly died, and I was unable to limit the current. 

I also plan to get some more supplimentary chemicals like Indigo Carmine for detecting chlorates, and Methelyne Blue for detecting perchlorates. I found persulphate can help in the selective production of perchlorates. 

My bike

I decided last sumer to take on the challange of building an electric bike “from scratch.”

This was a misatake.

For a long time I wanted to build myself an electric bike. They looked like a fun, interesting electrical engineering project to undertake. Unfortunately, the price of batteries made it prohibitively expensive for me to get involved. 

I eventually, however, found batteryhookup from a tannertech video. I found a deal on some 36v lipo packs and decided to just buy them. Little did I know the physical demonstration of the sunken cost fallecy that this decision would unleash into my life. 

Its a well known fact that buying a so called “project” car is a money pit. Yet, people still do it. Why? This project has taught me that a proverbial “project car” doesent have to be. If you work with what you have, as opposed to dumping money onto a project, it can be a rewarding way to get something you’ve wanted for cheap, in addition to teaching you new skills. 

Originally, I started with a crappy ebay motor kit and a toolbox strapped to the underside of a bike I found on the side of the road,  which worked about as well as you’d expect. I spent about a week wrestling that brushed motor to varying levels of suceess.

Despite the failure of that first bike, I got one or two good test drives in, and they were glorious. Feeling the wind in my hair as I flew down asphalt was incredibly freeing. 

I finally threw in the towel with the brushed motor when its clutch exploded on my porch spraying tiny ball bearings over the entire floor. Im still picking up those damned bearings.

After that experience, a normal well functioning member of society would sit down, reassess, and probably move on to something else. I did not. Thankfully, I eventually got my money back and decided to go for the real deal. 
I bought a VESC controller (flipsky), a hub motor, and a proper case for everything. 

I was using four 36 volt battery packs tied in parallel with terminal blocks. Tying them in parallel is convenient, but can diminish the total power of the bike. Its also not an especially robust solution for something shaking around like a bike. Eventually, if I feel like investing more time effort and money into this project I plan to disassemble the packs and build a 72v pack, which would allow me to squeeze more performance out of my motor. This would, however, require buying a lot of new hardware ( 72v charger, etc). The primary reason I used terminal blocks rather than spotwelding was simply because I already had them from wiring my greenhouse. 

The motor was a fairly generic 48v hub motor esc kit I found. Its endured my torture exceptionally well, and I have no complaints.  

The vesc controller was a tremendous pain to set up, but worked exceptionally well (with one very large exception). A vesc controller is essentially a configurable Field effect controller. It lets me configure torque curves, manage how low it will drain my batteries, set up electronic braking, etc. It’s a really nice peice of hardware. The Flipsky controller, however, is a piece of crap. I went through two flipsky controllers and both died mysteriously. I cant speak for other vesc controllers, but I would not recommend flipsky. 

That being said, when they did work, they worked exceptionally well. Getting to fly down the road again was great. 

I used a slightly nicer toolbox to hold all of the electronics on the back of the bike, and built custom adapters for the flipsky controller. Eventually, however, the flipsky died, and I went back to using the ESC that came with the motor, which, while not especially cool, works pretty well. 

Eventually, I plan to TIG weld a mount for the electronics onto the bike’s frame, possibly repaint it, get a nicer VESC controller, and spot weld the batteries into a 72v pack.  


I recently revisited the bike with the principle of KISS in mind, and as such, kept it simple and stupid. I used the stock 36v charger, and batteries, tied them together with wago connectors and electrical taped it into a sort of “engine” for the bike. I put that inside a soft bag held in the middle of the bike to keep the mass central, and its worked great. There are definite benifits to a VESC controller in terms of control and power, but I think i’ll wait to rebuild another bike with more power and a VESC. I’m quite happy with how this bike has turned out thus far, and am comfortable putting the project more or less to rest now that its in a useable state. Happy building!


Its been through a couple months of solid use, and it’s been working great. If I have a need to, I might go back to using a VESC. I found a decent vesc controller, a decent display, and a way to connect it to lights.

I could then probably seperatly upgrade the battery pack to 72 volts after, for another boost.

This website

I started this website as a way to teach myself HTML and some more complex networking. It’s honestly taught me a lot and I encourage whoever is reading this to go onto github pages and make a simple Jekyll site. 

I started out by trying to use Neocities because it was a free hosting service, but quickly realized that the workflow of adding content to that site by writing html line by line just wasen’t going to work for me. 

I then learned about github pages, and built myself a website using Strapi as my CMS (with CKEDITOR as my WYSIWYG editor, and a plugin to make it work with Jekyll), Jekyll as my SSG, and Jenkins as my CI/CD. All of this is running in docker containers on my home server. It took some time to get everything intergrated, but works fairly well. I like the fact that this method seperates my home network from all the actual hosting with an airgap, while still allowing me to easily add new content.

I chose to make my own website sort of from scratch because I wanted the control to choose how each page looked. Building it from scratch also gave me an opportunity to add some fun back to website design with Javasript snippets like Steve the cat on the homepage. 

I feel like modern web design standards expects everything to look clean and steril, and in doing so, the web has become too boring.  Its a shame to me that html lost marquee and blink, because they were fun. They were tools for people to make a fun little website for themselves. 

When designing this website I took a lot of inspiration from archived Geocities pages and gifcities from the internet archive.


10/17/25

As my abilities for networking and computer wizardry have grown, I too had outgrown my old website. I have since drastically changed how this website works. I have moved it to an lxc container running under proxmox running wordpress. I hate to be a conformist but wordpress is just significantly easier to use than the weird jekyll strapi thing I had going before. WordPress definitely has its own quirks, but it’s more of a “just works” experience. I have also bought a proper domain name etc. Currently I have an lxc container running under proxmox (specifically: https://www.turnkeylinux.org/wordpress), with cloudflare tunnel connecting it to the internet. So far its worked quite well, my only annoyance being spending an hour trying to debug, only to realize I had to disable the apache mod evasive to allow access to the admin panel.

Best Mixes

Best Mixes


Silly Goober music

Dreamy synth music. Good background music for working on something artistic. The bass is thick as jiffy and the rhodes are as smooth. 

I imagine the dogs playing poker like listening to it. 


Welcome Back Aphex Twin

Complicated programmed drums, intricate synth melodies. Good for active listening. I have a soft spot for songs like these that make you question how someone could imagine something like that in the first place. For full experience make sure to use your most pretentious pair of IEMS.


Ross Set Extended Universe

Aggressive breakcore, downtempo drum and bass, its got it all.  Hold on to your Xoxbox because your in for a ride. 


Tunes to Male Manipulate Grippy Sock Girls to

Emoish rock/pop. Curated primarily by my friend Quatherine. 


Zipties Extended Universe Discography

Various songs from my band The Zipties. Some good, some not so good.


Zach Smells Like Cheese 

Pop, rock, jazz. Inspiration for me and zach when writing songs for The Zipties.


Chill Beats to Malt Corn to

Hypnotic D&B. Good for studying to. I listened to this on loop for about a week during midterms.

Occlupanids


Occlupanids are a taxonomy of bread tags categorized by the group HORG.

I originally found out about occlupanids from a video by the channel STRANGE ÆONS. Since then, I’ve researched some more and gotten quite interested in this weird field. 

I find this project really cool, and might start my own collection. I like how it takes an extremely mundane part of life and gives it new meaning. 


4/16/25

Ive started slowly collecting some bread tags when I see them. I think it would be interesting to classify other objects that I see like screws and nails as a different genus.