July 09, 2025
Fixed some bugs and brought it to crates.io!
Redid the commands and now the program can extract the file with the same name it was injected with.
Added some documentation for the CLI options.
Did some refactoring! This image (if the website doesnt do weird things/compression to it) contains inside it an encoded image of Jake from Adventure Time in JPEG format.
I managed to extract my first file! Now I really have to organize the code a bit.
Managed to get encoded data injected in an image, now on to extracting!
I made my own encoding for the file content and name, broken down into bytes. This is the data that will actually be injected into the image.
I've attached a demo with a simple text file.
I managed to read bytes from a .png file using the png Rust crate! This is exactly what I needed.
Hide data in your images, through the art of steganography. This program allows you to hide an arbitrary file, at bit level, inside a regular image file. The process is unnoticeable and it makes it so the file can later be extracted from a normal looking image. No one will ever suspect anything was hidden inside it! If you want to learn how it's done, read the README :)
After quite a long break, I'm back to it!
I implemented some really essential functionality, going back to a previous track, lol. Also, I rewrote the entire UI code to use ratatui instead of tui, making for some much better and cleaner code. I discovered that working with terminal UIs is really cool and I love these crates.
Coming up, I plan on implementing another display mode that gives info about the current track and maybe even displays the album art in the terminal!
After a few more hours of work, I've managed to put together some basic playback features and a simple command-line UI, controlled entirely from the keyboard. It's coming together quite nicely! It certainly hasn't been easy trying to learn everything to make this work, but I do not plan on giving up. I will keep adding more features!
Starting is the hardest thing!
I have basically no experience with Rust, although I have programmed quite a lot before with other languages, using OOP.
This was pretty much a straight dive in, so thankful for the docs! They are life saving.
Until now, I have managed to write some wrappers and I'm able to get basic playing and queuing functionality going.
This was widely regarded as a great move by everyone.