Music and Open Source Update (2020-2021)
Hi! I am very bad about documenting what I work on. Even on my Patreon, the last update is from around 3 years ago.
I decided to put my post about what I’ve done on my blog, this time. Hopefully I’ll do it again before 3 years have passed.
House?!
WE BOUGHT A HOUSE?
AAAAAAA?
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
This has taken up most of 2021.
Music
In February/March 2021 I bought a Minibrute 2S synth and a Tascam DP-006 “pocket studio”, meaning I now have a music production workflow that doesn’t use a computer until editing.
I pretty much immediately released an experimental/exploratory album, Haunted Piles of Rock and Metal.
As part of that release, I decided to release all of my music on both Bandcamp and the Internet Archive. If you want to support me financially and can afford it, you can buy it on Bandcamp. If not, you can download it on Internet Archive.
Regardless of where you get it, all of my music from Reify (2015) to Haunted Piles of Rock and Metal (2021) are released under a Creative Commons Attribution 4.0 license.
Open Source
The first half of the year was pretty much completely dominated by buying and moving into our house.
Many of these changes are from 2020, but I hadn’t written them down anywhere, so I’m including them here!
awooOS
awooOS is some kind of experimental operating system I’ve been working on, because I apparently am always working on one of those?
It has been updated so that it:
- Uses standardized functions like
fputs()
,puts()
, etc instead of the nonstandardprint()
family of functions from before. - Is far less reliant on the event system, at least in the HAL. (It felt more like a liability than proper decoupling.)
- Has a Timer library, including both hardware-agnostic timer functionality and a global timer instance which is tied to the platform-specific timekeeping device.
ali
ali, awooOS’ libc implementation, now has:
- A test-suite that can be run independently of awooOS.
printf()
(and related functions)!- This took 5 attempts over the course of at least 3 years because it took that long for me to realize the POSIX standard is far more readable than the C standard.
- The current implementation is incomplete, but that’s okay. A solid base is in place, and can be improved gradually.
stdarg.h
support (va_arg
,va_copy
,va_end
,va_start
)!strdup()
andstrndup()
, andstrnlen()
- Tests for
strlen()
andmemchr()
.
Flail
flail, awooOS’ kernel panic/stack trace library, now:
- Uses a
putchar()
-compatible function instead of a nonstandard one. - Has an actual test suite, including continuous integration.
- At least theoretically works on x86-64 systems.
- Has better stack dumps.
- Is pure C, as opposed to C + assembly.
Tinker
Tinker is a test framework for C codebases. It was designed with awooOS in mind, but should work for other things as well.
Work on Tinker from 2020 and 2021 includes:
- Officially only a test suite; all remnants of code-generation have been removed.
- Is usable independently of awooOS.
- Has its own test suite! But it appears I never finished configuring CI for it. Whoops.
- Only relies on a C11 compiler and pointer to a
putchar()
-compatible function.
Boreutils
Boreutils is an implementation of many of the command-line tools specified in the POSIX.1-2017 standard.
Apparently I didn’t really get a proper start on it until 2020 so, uh, surprise I have a new project!
As of September 25 2021, the following POSIX.1-2017 utilities are implemented:
- basename
- cal (August 1752 and earlier does not work)
- cat
- date
- dirname
- echo
- env
- false
- head
- id
- kill (
kill -l EXIT_STATUS
is unimplemented) - link
- man (it’s not very robust, and doesn’t support
-k
) - mkdir
- mv (in progress)
- pwd
- rm
- rmdir
- sleep
- tail
- true
- tty
- uname
- unlink
As well as the following non-POSIX.1-2017 utilities:
- dir (an extremely basic
ls
alternative) - ish (a very basic non-POSIX-compliant shell)
- which (no standard)
- whoami (no standard)
- yes (no standard)
Bork
Bork is a build and release management tool for Python projects, with an emphasis on supporting PEP 517.
Bork has had a ton of work over 2020 and 2021, including:
- All releases from v4.0.1 and up are now on GitHub Releases in addition to PyPi.
- All releases from v4.0.1 and up now include a zipapp version.
- Dropping Python 3.5 support, because Twine needs Python 3.6+.
- When Bork runs Twine, it now uses
--repository
instead of--repository-url
, which means it now respects~/.pypirc
- Releases are fully automated — merging a PR that bumps the version will cause a new release.
- Bork can now create compressed ZipApps, which dramatically reduce the size of some projects.
- Bork can create GitHub releases for you.
- Every Bork release gets a Docker image released to Docker Hub.
Emanate
Emanate is a symlink finagler. You can also call it a “dotfile management tool,” if you’d prefer.
Emanate hasn’t had a release since 2019, but there’s been a lot of work despite that. Most of this has consisted of setting up an automated release process and general refactoring.
expsys
I did some experimenting with expert systems in August 2020. There’s more I want to do, I just haven’t gotten back into working on it since the whole house thing.
skysniff
I got like 4/5ths of the way done with a command-line tool for checking the weather, then got distracted for a year.
sntp-client
On February 21 2021 I banged out an entire SNTP (Simple Network Time Protocol) client library in 9 hours because I got bored.
They definitely kept the protocol simple. I’m thoroughly impressed.