TLDR:
My first project is writing a basic daemon,
written in bash (glue-code),
takes care of detecting an Android phone power and temp,
manage / change on-device BOINC computing behaviour
It’s possible to modify it for Linode to handle server use-cases, but I probably started to late already
You can get the code (and some findings) at https://github.com/truboxl/boinc-termux-client
What it does:
The daemon is really basic. It monitors the battery level and temperature device and sets the BOINC client compute settings whether to increase compute throughput (adding more available CPU cores) or to run / suspend all BOINC activities.
It’s currently lacking on both BOINC Android app and desktop BOINC client so I guess that’s a higher-level feature that can be worked on by the official devs.
Background:
Since graduated in September 2020 with a degree in E&E, I am having troubles finding jobs due to you-know-what. Since then, I tried to upskill myself with free Coursera courses to learn all about Computer Science and IT which was rarely explored in my selection of course in my university. So you can say I have to relearn everything despite early attempts to learning to code in my childhood with poor hardware.
So here I am. I learnt about the powerful Termux app from Bryan Lunduke’s talks and the World Community Grid (WCG) efforts to make solutions for the you-know-what, similar to Folding@Home. There’s also this BOINC software that allows WCG to distribute tasks, which pretty much an intro to distribution systems for me. Learning that computers can connect togethers to become “supercomputers”.
Although there’s an official Android BOINC app, it’s pretty restrictive (not allowing running custom code) and it doesn’t always work in newer phones. Contributing to the official BOINC app requires Java and I have no knowledge whatsoever and difficulty in learning Java.
Looking at Termux which allows running custom code that you can compile on-device, this wow’ed me and I can pretty much starting protyping right away.
Summary:
Over time, I learnt some bash, use git, contributed some improvements to BOINC project and other open source projects, learn to compile stuff on-device with gcc / clang, fixing build system problems, use docker, etc.
Really basic stuffs like learning to code for Arduino
While 2020 isn’t a good year, I definitely benefit a lot and hoping to put to a good use to find my next career.