Many Months, Many Things - August Status Update

  • Posted: August 31, 2021
  • Updated: September 2, 2021

Hey… it’s been a while — three months and ten days, to be exact. Many of you have requested a new blog post but, more importantly, I’ve finally been in the mood to write something. So, with the next month under an hour away, here it is!

To be honest, I haven’t been particularly productive in the first few months after my last update. I’ve done some thinking about my own motivation, productiveness, and just myself to be honest. I’ve definitely figured some things out, at least enough to work on more than one passion projects in just the last month. The first, which I’ll briefly mention here, is sss, a Shamir’s Secret Sharing CLI and library implementation. It allows the splitting a secret into $n shares, of which any $k can be used to recover it. This project is actually just a small part of a larger idea I have similar to Marcus Wanner’s futurcap, a cryptographic time-delay system. This project shouldn’t take too long to complete, so look out for it in the coming months. The other project I’m working on is here, but it deserves a dedicated blog post and a bit more work to bring it up scratch. This one will be released sooner, likely a week in to September.

As nice as it is to write software by yourself, I really like working with others, so I’ve done some of that as well. Ariadna Vigo’s wonderful calculator program, scalc, is a tool I’ve become fond of and packaged for the AUR. Quick shoutout to her for sticking to standards (like POSIX) and using Makefiles, making packaging a breeze. Sourcehut had some issues with its consultancy page, so I went ahead and fixed those while also contributing some accessibility improvements related to icon use on all of the services. Some time ago I began helping out with a new (currently secret) programming language that’s being developed, so I added base64 encoding and decoding. A snippet of the encoding subroutine, which I hopefully won’t get in too much trouble for, is below:

use io;

// The padding character used at the end of encoding.
export def PADDING: u8 = '=': u32: u8;

// Encodes a byte slice using a base 64 encoding alphabet, with padding, and
// writes it to an [[io::stream]]. The number of bytes written is returned.
export fn encode(
	alphabet: []u8,
	sink: *io::stream,
	b: []u8
) (size | io::error) = {
	let z = 0z;
	let i = 0z;
	for (i + 2 < len(b); i += 3) {
		z += io::write(sink, [
			alphabet[b[i] >> 2],
			alphabet[(b[i] & 0x3) << 4 | b[i + 1] >> 4],
			alphabet[(b[i + 1] & 0xf) << 2 | b[i + 2] >> 6],
			alphabet[b[i + 2] & 0x3F],
		])?;
	};
	if (len(b) - i > 0) {
		if (len(b) - i == 2) {
			z += io::write(sink, [
				alphabet[b[i] >> 2],
				alphabet[(b[i] & 0x3) << 4 | b[i + 1] >> 4],
				alphabet[(b[i + 1] & 0xf) << 2],
				PADDING,
			])?;
		} else {
			z += io::write(sink, [
				alphabet[b[i] >> 2],
				alphabet[(b[i] & 0x3) << 4],
				PADDING,
				PADDING,
			])?;
		};
	};
	return z;
};

Base32 encoding as well as date/time support is on my list of things to work on as well. Finally, I would like to thank Sebastian LaVine for improvements to window sizing and project compilation for periodicus.

In terms of hardware, I’ve still got the PineTime development kit which is awaiting use. I don’t have any particular plans with that except for learning some lower level programming, primarily because I don’t have much use for a smart watch other than being a watch. I also recently bought an ePaper display and iCEBreaker FPGA to add to my collection of random hardware. Learning and tinkering with those two should be fun, so expect a project or two from there alongside some dedicated posts to talk about them. I mentioned getting a SoloKeys USB security token in my last update alongside a planned post to talk about my 2FA setup with it. I promise that said post is still planned but is awaiting a few more changes to some servers of mine.

To end off, I’d like to ask something of those that read this far: is there anything specific you want me to write about or topics you would like me to touch on in my updates? Also, for those that know me on IRC, you’ll know that I occasionally mention the projects that I’m working on or talk about my thoughts on $things. It seems some of you have Mastodon accounts, which are less emphemral compared to chat, and use them for similar purposes. Well, I’ve been thinking of opening up an account on an instance (likely Fosstodon) for microblogging or sharing smaller updates so I’m looking for some insight in terms of what it’s like and whether you’d like to see me do it. For responses to all of these, please email me (preferrable) or contact me in any other way.

Thanks for reading and see you soon, whether that’s in person, on IRC, or the next time you read some of my writing!