dj.exchange is live!

dayvonjersen 2024-03-18T03:06:23Z #announcement

9 months ago I started development for the 3rd time on “sorbet”.

Today I am announcing that dj.exchange powered by apricot sorbet version 0.5 is live!

Check it out.

It’s been a long road but this journey is only just beginning.

contributions-graph

I have a whole folder of screenshots so let’s go through them:

oysterpail

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 good at first things looked good at first

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.

progres+ spektrum

music.dayvonjersen.com was down

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

nutshell

Timescale of this project in a nutshell.

need new music tweets need new music tweets need new music tweets

a peak behind the scenes a peak behind the scenes a peak behind the scenes a peak behind the scenes a peak behind the scenes

pwned suckit

I had to sign my self-signed certificate in order to run citron (previously citrus.audio, another failed attempt at this idea)

}

go vibrant

Sorbet! makes extensive use of the Android awesome palette library which I ported to go: go get github.com/dayvonjersen/vibrant

ohayou hm ~ hurfdurf b0rk smug what After 7 years in development, hopefully it will have been worth the wait thypowerof

heart-eyes

😍

picture not available

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

clusterfuck

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.

goog

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

banter

Speaking of broken progress bars:

before and after

it works?

it hurts a little bit 🙂

sorbetière is a microservice that processes uploaded files.

sorbetière:


My approach to design is an iterative one, as illustrated here:

track-page-thing pressxtodoubt pressxtodoubt pressxtodoubt pressxtodoubt pressxtodoubt pressxtodoubt pressxtodoubt

300commits

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.

keepitgoing.png

~_~

2 day data binding

This is how I implemented like and follow buttons

like-comment-subscribe

what is happening omegadenko

thatsalligot thatsprobablyenough broken-cool

ducks

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.

50days

suffer

isthisalright

80days


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.

orbitronFAIL which bad stillbad that'sitchief allinadayswork wtf

webcomponents

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.

90days

90 days was the milestone of the last blog post. I really thought I was close to finishing…

finish the project


to be continued

It’s 3AM. I’ll add to this later.

👉👉👉dj.exchange👈👈👈👀