My first attempt to create these was a very manual approach: I made a screenshot from Spotify on my phone (the only place where the barcode is shown), cropped the code, pasted this in a Pages-file (the Apple-equivalent of Word) and added an album cover + tracklisting I found on Wikipedia. This would take over half an hour per album!
Automatically creating album-covers with a Spotify code
In my 2nd attempt I tried to script as much of this process as I could. In addition, I decided to skip the tracklisting (keeping just the cover + Spotify code).
This means I no longer needed to print double-sided. Which in turn meant I can have the covers be printed as ‘square photos’, so they look great now!
I had to dust-off my scripting capacities and my first attempt went a bit ‘overboard’. I created a script that:
automatically cuts the Spotify-code, the album-title and artist-name from an Android screenshot, using GraphicsMagick
uses Tesseract (an OCR-engine) to parse the album-title and artist into text
asks the user if the OCR was done correctly (with the option to provide a better album/artist)
uses Glyr (a metadata search-engine for music) to get a load of album-covers
finds the best-looking album-cover (approximately, using filesize) using the artist/album from the previous step
pastes the Spotify-code on top of the album-cover (in two versions: with the code either in the left or right bottom-corner)
Which worked GREAT! Except that all albums returned by Glyr were kind of ‘meh’-quality. I introduced several improvements, but in the end it never was ‘great’.
I took my losses and re-examined my options. I found that the resolution of the cover in the Android-screenshot was actually a lot better than whatever Glyr returned. So I greatly simplified my Bash-script. Now it only:
automatically cuts the Spotify-code and the cover from an Android screenshot, using GraphicsMagick
pastes the Spotify-code on top of the album-cover
Optionally, you can enable Tesseract to have a cool filename as well.
When I first heard about Bitcoin (8 years ago), I thought it would pass. It didn’t and I’m one of those suckers who’s thinking “why didn’t I just get a couple when they were worth nothing…“
But, better late than never!
I wanted to learn more about Bitcoin, so I bought a small amount and lo-and-behold: it got transferred into my wallet. A couple of hours later on Wikipedia/Youtube and I think I’ve got a pretty good idea how it works.
That’s it for Bitcoin, it’s too established to really do something ‘interesting’ with it (or invest in it, IMHO).
Monero is an alt-coin, which is constructed in a more privacy-concerned manner than Bitcoin. But that’s not the reason I got interested in it; The other interesting property is that the coin is designed so that ‘mining’ is more CPU-friendly.
For Bitcoin, the best mining happens on specifically designed machines (ASICs) and 2nd best happens on GPU. For Monero, it’s still possible to do decent mining (generating random hashes) on a CPU.
Which is interesting for two reasons:
I get to play around with it (I have an old GPU, but a decent CPU)
The latter reason is why I think Monero has a shot towards becoming a viable coin as well 😁
After about an hour I managed to compile both the GPU and CPU miner for Monero on OSX. Now I could find out for myself the Hash-rate difference between CPU and GPU!
Interestingly, the GPU miner completely locks up my computer but spits out a rather disappointing 10.5 H/s (NVIDIA GeForce GT 650M 512 MB).
As expected, the CPU fares a lot better: 37 H/s per core! My i7 has 4 cores, so if I leave one for myself, I get a nice 111 H/s without locking my computer up. According to the Monero IRC my processor would fare even better on Linux/Windows because of optimization in xmr.
Mine for yourself
If you want to join the cool kids and mine some Monero, you can do so on my blog, just press the button:
0 hashes per second
Here’s something that was on The List for a long time: adding this blog to a git-repository. Why did that take so long?
I wanted to have my own, personal git-server instead of GitHub to push stuff to, so I can have a post-hook do cool stuff like auto-deploy the website. That is possible with GitHub as well (if you pay for it), but I thought it would be ‘fun’ to play around with all this 🤓
My workflow used to be:
write article & jekyll serve
when satisfied: do a complicated rsync-command (hidden behind an alias)
My new workflow:
write article & jekyll serve
make commits while writing
when satisfied: git push
My server then checks out the most recent commit, runs jekyll build and rsyncs the new items. Since that all happens automatically it’s a lot less fault-sensitive.
You are now reading the first article published with git push 😇. Currently only matth-ijs.nl works like this, but in the near future I’ll port 1001ideas.org as well.
I’ve installed both git and jekyll on my VPS and added a new user there (git). In the home-folder of git I’ve setup blank repositories for all my projects (like this site). On my local machine I created a new RSA-key specifically for the git user (not strictly necessary, but I was in an experimenting mood).
I then created a new repository for this blog locally, added all files and set the origin to the server. Done!
in the home-folder of your git user: git init --bare <sitename>
add script to the hooks-folder (see below)
make a var/www/<sitename>/public_html which is owned by the right user
I’ve got a rather peculiar taste; apparently I’m a “Harbinger of Failure”* - someone who likes things the general population doesn’t like 😇
In other words: the kind of stuff Netflix and Spotify don’t recommend. The goal of this project is that others with similar tastes (other Harbingers of Failure) find my blog and discover new stuff to try out!
During my “nerdy-hour on Sunday” I installed OpenVPN on my home-server :)
Installation was a breeze (using this guide), with the following caveats:
the IP-address you use in step 1 if you’re behind a NAT-router is NOT your external IP, but rather the IP of the server you’re installing VPN on
the installation script has some oddities: it sometimes writes a number instead of a value (the script for instance asks: “Which protocol do you want to use: 1. UDP, 2. TCP” and instead of writing proto=udp it writes proto=1). So double check your server.conf and client.conf)
Even easier was installing PiHole for capturing all ads- and tracking-code (using this guide). I’ve left most settings as-is, but I also block facebook.com to stop ads from appearing in my PodCasting app (added bonus is less procrastination).
So that’s it! No more ads on my devices, safe internet on public WiFi and always the Dutch selection of Netflix.
By the way, running Bungie on Ubuntu right now and that’s a very pleasurable experience. Recommended!