Jan 2019

Posted on Thu 31 January 2019 in Devlogs

This is the first in my monthly Devlog series. Unfortunately January being January I don't have much excitement to kick things off with. This feature is replacing my "Projects" Feature which has now been unpublished.


I spent an evening musing about my latest big project, which I am in the mood to attempt off the back of my sucess with devemember. That said I have Exams through most of this month, so I won't have time to actually start work on this until next momth.

So I have finally gone mad enough to attempt this!

Rule 1. of computing is "computers cannot think, they just follow a predefined set of instructions, therefore they cannot have a creative spark" So why how could a computer possibly write a song?

Short Answer is "MATH!!!" Long answer is Music is deeply mathematical and can be modelled with surprising effectiveness. Meanwhile programming is it's self a a deeply creative task that requires that creative spark. So where these two points overlap we can shunt the creative workload from a composer to a algorithm designer.

The Goal isn't to build the most amazing dynamic music in the world either. This project was actually inspired in part by DJ's opping lounges at many hacker conferences (see GPN and C3) and in part by lofi continuous mixes that were very popular on YouTube in 2016/17.

What these have in common is the audience wants dynamic background music to whatever they are doing, that is not to complex or distracting but still energetic enough to be enjoyed on it's own. We're aiming a bit higher than elevator music, but we're not trying to make new hit's here!

There is a slight sadistic twist to the motivation of this project. Some of the aforementioned DJ's are scraping the very bottom of the barrel, producing the most uninspired electronic / house mixes and sometimes (especially @ GPN) don't know what their audience wants. "A rising tide lifts all boats." If I can prove I can algorithmically generate not only a better mix, but dynamically compose the songs as well then maybe I can encourage the other 'players' to up their game.


I just am checking in; I haven't had much opportunity to get any project work done In over two weeks, which sucks. The most "dev-y" thing I have been done since December is spending a few hours suring-up my network infrastructure. I switched my primary Storage/VM/Media server over to arch's LTS kernel in a hope that it would improve system stability. Knock on wood so far it's working better.

I also tried to recover an offsite backup server, that "disappeared" all the way back in November. I am assured by it's local guardian that it boots up, but I am no longer able to access it. After swapping some config files on the cold root OS and still nothing. I have had to retire that remote until I can get back to it in person.

I have also been following some tutorials on binary reversing, with the hope that I can do some reversing CTF's later in the year as part of the Infosec society in my university. I am using Radare2 as my disassembler, as I am a poor student and can't even afford Binary Ninja.


Well crap I forgot to fill in the blog for the last week and a half. I finished my exams and had a week and a half to do some hacking. I used that time to do a long overdue sorting of my electronics parts cache. This is a physical box full of zip-lock bags of electronics parts. Since forever they have been completely unusable as I didn't have an index of the components or a way of finding them. So I put an enormous amount of time (and labelling tape) into sorting labelling and recording in an index all of the bags, so they can be found by type and value. Its a good excuse to watch some TV while idly entering pages of data into a spreadsheet.

I also (finally) managed to get my Embedded Rust beginner's project off the ground. I now have a microcontroller talking over serial to the host and using PCM to control the brightness of 4 LED channels. This is exciting as the entire source is written in Rust and has the safety guarantees that come with the language. Now I have a platform I can start to experiment with more complex features like light animations, or maybe input triggers, which involve complexities that make such a project daunting to develop in C.

Finally this week I discovered a cool feature of the Odroid C1(+) while trying to set it up as a dev board for use in uni labs. It's micro USB port can operate in device mode, and the default images have drivers to provide Ethernet and a serial console to the device. So with a single USB cable to a PC I can power up the device and provide console and internet access. This is going to be really useful when using the device in the lab, where quick and reliable setup is very important.

That closes out the first (quiet) month of devlogs. Next month I will hopefully have more time to focus on project work and make some more headway with "doing the impossible"