Current Endeavors

Just wanted to make a blog post about my current side projects, RND, and experiments outside of work! If you would like, you can find me on GitHub and YouTube. Of course, everything is always:

Made with ❤️

  • LoRa – based IoT project with Raspberry Pi Pico W, ESP32
    • Testing various functionalities of the Pi Pico W, such as making calls to AI APIs, sending a Discord message from one, and storing some data in a Supabase PostgreSQL table.
    • Also still working on and playing with my ESP32 temp/humidity server, that communicates with a bare-metal SQL database via a custom Java Spring Boot API.

  • Various AI/RAG chatbot tools, scrapers, as well as learning the actual fundamentals of AI/ML theory.
    • I may share the code for the scrapers at some point, but the frontend is basically just a Next.js template from Vercel that I modified a bit. Most of what I did is migrate out the OpenAI API logic from being “serverless” (whatever that is Next.js…), to being in a separate Express.js server.
    • This RND also includes brushing up a bit on my Calculus/Linear Algebra concepts. APIs and libraries nicely abstract away a lot of the need for this complex math though.
    • I also have been working on my own non-AI, (mostly just OCR), based PDF to HTML translation thingy, its pretty cool, but I found the new GPT 4.1 model is good at working with embedded links within PDFs so my logic for this may be a bit heavy.
    • Also, I am working on a cross-platform desktop tool similar to Apple Intelligence on Mac that automatically summarizes any text you copy to your clipboard!
      • This app uses Python with Flask for the backend web server, pyperclip for accessing the system clipboard, and requests to interact with a local language model API (Ollama using Mistral). It serves data through RESTful API endpoints and renders a front-end via HTML templates. Data is temporarily stored in-memory using Python lists, and all operations (summarizing, deleting, viewing) are triggered via HTTP requests from the browser.
      • The app watches your clipboard for new text, automatically sends it to a local AI model to generate a short summary, and displays both the original text and summary on a web dashboard. It helps quickly distill copied information and manage a history of summarized content. Think of it as a personal, local summarization assistant for anything you copy on your computer.
    • Finally, I have Open WebUI and Ollama on my Raspberry Pi 5, as sort of a mini local Deepseek/Meta Llama chat server!

  • Playing with SSIS and SSMS server on my local network, planning to build a dedicated data warehouse server for all databases!
    • I have setup an SSIS job that pulls data from an API into a source DB, transforms it, and moves it to a destination DB!
    • Also working on DB replication with my main server and Raspberry Pi 4.

  • Neer
    • An app that shows people around you in real time and lets you create conversations with them (currently in my development server only)!
      • Currently, the map bit that shows every user nearby is done, just need to work on making it a bit more stable and add a simple chatting functionality!

  • Been playing around with and modifying the Doom C source code on my Raspberry Pi 5
    • Initially, I actually was able to build from the original source from id-Software on my main machine with WSL by realigning some pointers, but decided to go with Chocolate Doom on my Pi so I could customize the C code with more of an emphasis on development speed.
    • This is a unique learning experience, and I was able to modify some core functionality of the game! May make a YouTube video on this soon also (I know I keep saying that :D).

  • Load balancer setup
    • 1 Nginx proxy server, 2 Raspberry Pis with custom sync job for www/root files. Also a cute LED for each node that blinks when the homepage is hit!
      • Using Redis as a session store for PHP to persist sessions across nodes.
      • Almost sound like a parrot at this point, but I could put together a guide or publish the source code of the file sync and Nginx configs, its fairly straight forward though!
      • As a note, I was running a K3S cluster with my 2 Pis for a while, but I ended up opting for a simpler setup like this because even K3S was a bit demanding at some point for these little Pis.
        • I also like using the Pis for different tasks, such as the Open WebUI server, as well as an ARM assembly development playground (more on good ways to do this in another post). That is why I enjoy having this loosely coupled, simple, and efficient Nginx cluster in place.
        • I do have a ton of .yml files for deploying Minecraft, Nginx, WordPress HPA clusters, and other cool stuff now though!
  • Practice and experimentation with Docker in a Git Actions CI/CD pipeline, particularly with deploying .Net applications.
    • You can see this in action here. And the repo here.
    • Basically, I created a workflow system that will let me work on my overview site, push it to GitHub via CLI, and send a Discord message from Dev pipeline when the deployment is successful. This would mean that the container was pushed to Docker Hub and was pulled to my Linux server via Bash script that runs within the workflow.
    • On code merge to Prod, the production container is pushed to the registry, and gets pulled in a different automated script on my server. There is also a Discord message that is sent when this happens successfully.
      • You can learn more about my bare metal server here.
  • Various automations, cronjobs, and scripts to make my life easier:
    • Server backup cronjob at 5 AM.
      • This backs up all of my important server files to my SMB drive with rsync.
      • May share the code at some point, and a guide on enabling WoL for SMB servers. This one is a bit more involved and took a lot of time and ChatGPT to get it right, LOL.
    • Music Scraper – Feeds into a folder that is symlinked to Navidrome as well as my own custom music player interface.
    • The music is pulled from a YouTube playlist every hour and is downloaded to that symlinked folder! I’m probably not gonna release the code for this, but who knows…
      • You can see this in action at the following:
        • Navidrome (need authentication)
        • This is my custom player I coded in PHP and plain JavaScript!
    • AI bot PDF scraper(s).
      • Again, may divulge the code for this at some point. Its in Node.js, kind of want to do it in either PHP or C#.
    • Nvidia Driver update notifier.
      • This is in PHP and I will share the code soon. Pretty simple.
    • Data replication between my Master/Slave MariaDB instances.
    • AI generated hiking condition Tweet bot.
      • Sharing code at some point.
    • Ansible Playbook to update apt packages on my Pi cluster/parent Nginx proxy server.
      • This is straight forward, you can probably find similar code/setup instructions anywhere. Moreso just a time saver as I have 3 servers to manage.

  • A centralized documentation, authentication, and notification/alerting system for all of my machines and apps. May put this as a microservice on the dedicated DB server I plan to build!
    • I have created the centralized documentation within my intranet and it is accessible by anyone who has my VPN private key. It consists of very detailed documentation of all of my apps and different automations.
    • One portion is currently up, it is a Blazor (.Net) based portal for me to manage and see messages sent to my portfolio. With a bit of work, this is published on my Raspberry Pi 5!
      • It is hosted on my intranet only, but it looks like the typical Blazor app.
    • Another part is still in development. I started it in Spring Boot but might just move the entire thing including the above to raw PHP as I like PHP the most.
      • Update, I have implemented the Common Services API in PHP!

  • I am overall working 24/7 to maintain my various bare metal machines and keep them operating cleanly. One way I make sure of this is a custom 8-LED alerting bar I have created for general purpose use with any server/computer!
    • It consists of a Raspberry Pi Pico with a connected Neopixel strip with 8 LEDs that hook into my homeserver (USB/TTL communication) to blink on certain events.
      • LED 1 blinks white when a resume portfolio message is sent.
      • LED 2 blinks for favorite Reddit user comments.
      • LED 3 blinks for favorite Reddit user posts.
      • LED 4 blinks red when someone joins the Killing Floor 2 server.
      • LED 5 and 6 are currently unused, so they are controllable from here.
      • LED 7 blinks as a heartbeat every 30 minutes to show the server is alive.
      • LED 8 is a power-on green LED indicator (I disconnected the default front panel power/HDD LEDs from my server chassis).
    • You can also actually find out if my server is alive like this.
      • Internally, I was using Grafana on my K3S cluster (decomissioned), but I switched to Netdata as my server observability dashboard!
    • There is actually something similar to this I built years ago which still works, it is kind of inspired by Visdeurbel.
      • Basically it is an Arduino that lets you control lights and some pins from anywhere in the world! I currently have it off, but sometimes put it on livestream, (that is also currently disabled), and let people play with it in real time from this frontend.

Guys, please leave any possible thoughts, feedback, criticism, ideas, or even questions you may have about the stuff I am working on or researching!

Particularly, I wouldn’t mind any new information you can share! Put your favorite projects in the comments, and I can go more in-depth and put together a repository for whichever ones you want more clarification on.

As always, thanks for reading :).


Comments

2 responses to “Current Endeavors”

  1. Bigfan99 Avatar
    Bigfan99

    Keep on keeping on, I am avidly interested in your recent delve into the LLM space, specifically utilizing localized models to compute to solve real world problems in the PDF space. Great work!

Leave a Reply to Bigfan99 Cancel reply

Your email address will not be published. Required fields are marked *

Auto