9 months ago I started development for the 3rd time on “sorbet”.
It’s been a long road but this journey is only just beginning.
I have a whole folder of screenshots so let’s go through them:
Development started on “oysterpail”, a repurposed old PC turned home server. Here you can see it was hosting documentation for C++ and SFML when I was working on my game. It also has private git hosting via gitprep (not linking cause wouldn’t recommend but it suits my needs). And a gallery of a webcomic I really liked.
Why, in 2024, not just use a VM or VPS for development? Or hell even a docker container.
Honestly, I don’t know. I just did what I knew and what I’m used to.
Things looked really good at first. I just slapped together everything I had already from the last attempt in 2015-2017, including the design, CSS, webcomponents, icons I grabbed from The Noun Project, a player (adapted from music.dayvonjersen.com and all sorts of notes and code snippets.
I was excited by how quickly progress was being made, I estimated I’d be finished in 3 weeks.
This was May 2023 btw.
I’ll let the pictures do the talking till I feel I should interject.
music.dayvonjersen.com of which sorbet is NOT version 2.0 of and you should definitely not compare the two sites ran out of memory apparently idk
Timescale of this project in a nutshell.
I had to sign my self-signed certificate in order to run citron (previously citrus.audio, another failed attempt at this idea)
Sorbet! makes extensive use of the Android awesome palette library which I ported to go: go get github.com/dayvonjersen/vibrant
😍
I liked the aesthetic of printed labels, neon glowing lights in vibrant color on an empty void, of gear and DJ equipment and the nightlife
I wrote a tool in C++ to read and write audio tags courtesy of taglib.
Previously I had been using PHP but this time everything was in Go, so my taglib php extension saw no use.
Google used to have pagination.
I decided to go with pagination instead of infinite scroll. I sorta prefered to make everything I know how to i.e. the old school way from when I learned to code. Implementations of infinite scroll always suck and if you’re actually browsing you want to be able to jump around and know where you were. It’s a usability thing, a laziness thing for sure (versus learning something new like how to do infinite scroll with incremental backoff or whatever my progress bars aren’t working and I’m writing a post-mortem blogpost on the thing like I’m finished this isn’t finished by a long shot.
This is turning into badthoughtsbuild.log let’s continue
Speaking of broken progress bars:
sorbetière is a microservice that processes uploaded files.
sorbetière:
My approach to design is an iterative one, as illustrated here:
I’m leaving out the milestone screenshots, but I guess I should speak about this.
I started making at least one commit per day, even if I didn’t feel like working on the project. Which happened a lot. But forcing yourself to do at least one thing per day is the only way to beat procrastination and ensure the thing gets done.
I’m a firm believer in this now and it started with deeper level. I wanted to write a blog post about that and maybe one day I will. But I used to make a track or work on a mix every day, no matter what. I mean I had the time to spare but it taught me discipline in finishing a project.
Sorbet! isn’t finished, it’s just at the point where it’s ready for users. And I need the validation of the idea before I go any further, because if no one uses it or it’s terrible then there isn’t any point in continuing.
Even though I will, because I’m stubborn like that.
This is how I implemented like and follow buttons
This is how I develop: a tmux session with, left-to-right: tiger, neovim, sorbet, sorbetière, and the last tab there is for the C++ tagging utility. I made a taskrunner called taban which watches a directory for changes to files and runs make.
For fonts, I went with Raleway and Orbitron from The League of Moveable Type and minecart LCD for sorbetto, which is the codename of the web player.
Sorbet! makes judicious use of webcomponents, for widgets, sorbetto and other custom elements.
It was sort of important to me to have a site where you could meaningfully view-source.
90 days was the milestone of the last blog post. I really thought I was close to finishing…
It’s 3AM. I’ll add to this later.