Hi there! This is my first post here. I'm planning on putting this post on my personal website once I get it up and running. I hope you enjoy it :)
Around the time I made Diary Locker, I wanted to get into journaling. Since I was too lazy to write, I decided to make videos of myself rambling on about things instead. Being the aspiring programmer I wanted to be along with wanting to keep my secrets, umm...secret, I decided to make a command line utility that would encrypt my video logs right after I made them.
As I started looking into this repository, I was impressed at just how much detail I tried to put into this. After all, it has a comprehensive README featuring instructions on how to set it up (including how to make it run at startup using the Task Scheduler), security details as well as the limitations of the script. Even the project itself is rather impressive. I remember wrangling with how to monitor the file system so that it would only encrypt files once I was finished using watchdog, creating the command line interface using
argparse and biggest of all, encrypting the videos themselves.
Figuring out how to encrypt videos is the fun part. From figuring out how to install the encryption utility to begin with all the way to getting the file to encrypt. I wanted to use pycrypto but that didn't work on Windows which lead me to use pycryptodome instead.
After setting up the directory monitoring, I now had to actually decrypt the file. There were two hard things associated with this- creating an initialization vector and padding the file so that it would be a multiple of 16 since AES works through blocks of 16. Once a video was made, I used tkinter to create a prompt for a password.
Just trying this out for the first time in 2 years, I'm amazed at how it still works. Despite a couple of bugs, this utility does what it was supposed to do perfectly. In making my various resumes and recounting my programming experience in interviews, I've always overlooked this project as a silly play thing. Looking at it now, it's impressive just how much work I put into it to make it usable to the layman. Sure there were things I could do like package it into a binary, test it across different platforms, make a graphical front end and actually enhance the security aspects, but in all, I'm grateful that I spent my summer making this project. It really pushed me outside my comfort zone and got me to think about how to make software for others.
Sadly, I'll be archiving this project to focus on newer ones, but I think this might be the best thing I've ever made.