One Day Challenge: SSIF
This is my second One Day Challenge that I have done for myself, and I think a far more interesting challenge than the previous. Since I had some time while I was on vacation I decided to take on a project that I had been thinking of for a while: I designed and implemented an image format in a day.
Steve's Simple Image Format or SSIF
for short is a basic binary image format
with a reference encoder and decoder written in Rust. I chose Rust because I
love the language and thing that it us suitably low-level for such a task.
Notably my implementation is entirely in safe Rust, as it should be.
The code can be found in the repo, with the specification for the image
format in the README.md
file.
I acutally really liked this project and it is something that I may come back to. I'm quite proud of my design, with SSIF supporting some nice features like a basic form of compression.
When I started I didn't even plan to write the encoder, only the decoder, but after getting going I found myself writing both and even implementing the compression system into the encoder.
While I do think that the code still needs some work, I am particularly proud of
the decoder, which leverages higher-order programming and the itertools
crate
to perform the decoding in one chain iterator functions.
I am thinking of coming back to this project and adding some more tools, and probably a basic SSIF view viewer or BMP import/export.