You are browsing as a guest. Sign up (or log in) to start making projects!

angelcube

@angelcube

Joined June 1st, 2026

  • 5Devlogs
  • 5Projects
  • 1Ships
  • 2Votes
Open comments for this post

55m 38s logged

There I was, scrolling through my Discord servers, when I saw this link: https://www.keithcirkel.co.uk/whats-my-jnd/
It was a small program to calculate the Just Noticeable Difference between two colours, or the JND. Reading the blogpost linked, it mentioned an algorithm called the “CIEDE2000.” And that’s when it hit me—the CIE is a real organization. Of course they would have a formula to calculate the similarities between two colours. That meant that I didn’t have to iterate through my array of wallpaper colours and do simple less-than checks—using CIEDE2000 would be much more accurate. Thankfully, there’s an npm library for this: color-diff. (I was NOT about to implement all that myself.) I also added a bit of randomization to the algorithm, so that should ensure you’re not getting the same wallpaper all the time if you live somewhere where there’s consistent weather patterns.

All in all, this probably constitutes a reship, doesn’t it? I’ll probably be tweaking the algorithm slightly as I continue to use it, so stay tuned…

Original post
@angelcube

There I was, scrolling through my Discord servers, when I saw this link: https://www.keithcirkel.co.uk/whats-my-jnd/
It was a small program to calculate the Just Noticeable Difference between two colours, or the JND. Reading the blogpost linked, it mentioned an algorithm called the “CIEDE2000.” And that’s when it hit me—the CIE is a real organization. Of course they would have a formula to calculate the similarities between two colours. That meant that I didn’t have to iterate through my array of wallpaper colours and do simple less-than checks—using CIEDE2000 would be much more accurate. Thankfully, there’s an npm library for this: color-diff. (I was NOT about to implement all that myself.) I also added a bit of randomization to the algorithm, so that should ensure you’re not getting the same wallpaper all the time if you live somewhere where there’s consistent weather patterns.

All in all, this probably constitutes a reship, doesn’t it? I’ll probably be tweaking the algorithm slightly as I continue to use it, so stay tuned…

Replies

Loading replies…

0
3
Ship Pending review

**🌈 rainwall is done!**
This is a CLI utility that uses the weather outside to select a matching image as your wallpaper.
This was my first time using Deno, and I feel like it's got its pros and cons. I learned so much in manipulating the actual OS through TypeScript, and I feel much more confiident in it as a scripting language now!
I wasn't able to test on any other architectures, so please submit feedback as needed!
You can download rainwall via [JSR](https://jsr.io/@angelcube/rainwall/), [GitHub](https://github.com/weightedangelcube/rainwall/releases), or with the [PKGBUILD](https://raw.githubusercontent.com/weightedangelcube/rainwall/refs/heads/main/PKGBUILD)!

  • 5 devlogs
  • 12h
Try project → See source code →
Open comments for this post

2h 3m 31s logged

Wrote a README, and my very first PKGBUILD! Arch Linux is pretty cool :)

Original post
@angelcube

Wrote a README, and my very first PKGBUILD! Arch Linux is pretty cool :)

Replies

Loading replies…

0
6
Open comments for this post

2h 16m 21s logged

Dumping all the sun data times to ensure the algorithm’s as accurate as possible! (-0.833 is the angle of the sun at sunrise/sunset.)

Original post
@angelcube

Dumping all the sun data times to ensure the algorithm’s as accurate as possible! (-0.833 is the angle of the sun at sunrise/sunset.)

Replies

Loading replies…

0
5
Open comments for this post

2h 47m 53s logged

Done!!! YEAH! I had to reimplement the output so that it wouldn’t sort into categories, as that turned out to be harder for the final algorithm to find a matching wallpaper. Currently hueRange is unimplemented as I’m not super sure how to go about it, and I’ve got to clean up the easing function code somehow, but other than that, this should be pretty much ready to ship!

Original post
@angelcube

Done!!! YEAH! I had to reimplement the output so that it wouldn’t sort into categories, as that turned out to be harder for the final algorithm to find a matching wallpaper. Currently hueRange is unimplemented as I’m not super sure how to go about it, and I’ve got to clean up the easing function code somehow, but other than that, this should be pretty much ready to ship!

Replies

Loading replies…

0
3
Open comments for this post

4h 7m 58s logged

Been formatting this into a full Deno project from an isolated zx idea. Never done anything config-related before, so making something to read/write the config was pretty cool.

A lot of writing the analysis code was processing the bash output into something manipulate-able with TypeScript. That was annoying as shit—splitting, filtering, mapping… I never want to process text again in my entire life.

Something really unexpected had to be the floating point errors I found in the loop. I was thinking there had to be a better way to populate the better array in the first place, but there didn’t seem to be, so there I was doing let i = 0, i < 1, i += 0.1 and fighting for my life against 0.60000001. I eventually got so tired of it I just made it a percentage out of 100% instead. Surely this won’t bite me in the back later :)

We’ve got cloud cover, shortwave radiation, and sun altitude with the help of Open-Meteo and suncalc. They’re going to map to parameters chroma, lightness, and hue respectively! This’ll be fun….

Original post
@angelcube

Been formatting this into a full Deno project from an isolated zx idea. Never done anything config-related before, so making something to read/write the config was pretty cool.

A lot of writing the analysis code was processing the bash output into something manipulate-able with TypeScript. That was annoying as shit—splitting, filtering, mapping… I never want to process text again in my entire life.

Something really unexpected had to be the floating point errors I found in the loop. I was thinking there had to be a better way to populate the better array in the first place, but there didn’t seem to be, so there I was doing let i = 0, i < 1, i += 0.1 and fighting for my life against 0.60000001. I eventually got so tired of it I just made it a percentage out of 100% instead. Surely this won’t bite me in the back later :)

We’ve got cloud cover, shortwave radiation, and sun altitude with the help of Open-Meteo and suncalc. They’re going to map to parameters chroma, lightness, and hue respectively! This’ll be fun….

Replies

Loading replies…

0
4

Followers

Loading…