Monday, May 4, 2020

Mumble server on a Raspberry Pi using Docker

I've recently needed to re-familiarize myself with the basics of Docker after some time away. A quick project to hit the ground running was launching a Mumble server (Murmur) on a Raspberry Pi 4 running Raspbian. There are certainly no shortage of Mumble servers on Docker Hub with the most popular one by far being this one. Unfortunately it won't do us any good as there is no armv7 build. Luckily, since Docker officially supports Alpine for armv7, and Murmur is packaged for Alpine, it is pretty easy to get up and running.

Wednesday, June 12, 2019

It's all about the integers

As previously discussed in Floating point madness, the handling of fractional year, month, day, week, hour, and minute components of ISO 8601 dates and times is fraught with all kinds of peril. At the time, I chose a solution that was pretty immediately obvious, could be implemented quickly, solved a real problem with degenerate cases, and seemed intuitive. Even at the time, I mentioned it would only work for most cases, not all. Unfortunately, issue 24 highlights that working for most cases isn't good enough. Is there a solution that can work for all cases?

Wednesday, January 30, 2019

Floating point madness

In the course of squaring away sub-microsecond precision in aniso8601, the discussion came up that fractional components in general are rounded instead of truncated at maximum representable precision which can lead to the same kinds of problems pointed out in issue 10. At the time I pushed back because I figured it would lead to 'floating point madness' trying to get the correct behavior in all cases. Recently I was convinced to capitulate as I ran into a series of issues in my own use. Issue 21 covers this in some detail, but for those that want a complete breakdown, read on.

Wednesday, November 28, 2018

Simple federated sign-on with Amazon Cognito Part 2 - The code

Now that we've got the general setup out of the way in part 1, it's time to dig into how the cognito.js code actually works. Keep in mind it's dependent on js-sha256 for the SHA256 implementation, which is included for you if you use the example index.html file.

Tuesday, November 27, 2018

Simple federated sign-on with Amazon Cognito Part 1 - The "basics"

I recently found myself needing to climb the learning curve for adding federated user sign-in to a webpage with Amazon Cognito. What follows is a quick summary of how you can do the same. For those who want to jump ahead, they can just take a look at the matching Bitbucket Snippet.

Friday, November 16, 2018

Color fringing with fonts in Fedora 29

So Microsoft joined the OIN, which has had knockdown effects on the Linux community, including using FreeType's ClearType subpixel font rendering by default in Fedora. For some reason, they chose not to enable any kind of LCD filter at the same time, which can lead to rainbow color fringing around text. Fortunately enabling an LCD filter in FreeType is easy:

$ ln -s /usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf /etc/fonts/conf.d/

Thursday, October 25, 2018

aniso8601 and sub-microsecond precision

After more false starts than I can count, aniso8601 is finally ready to handle sub-microsecond precision. Anyone following the (now approaching 3 year old) issue #10 will know that a solution wasn't immediately obvious. However, after fairly constant requests for "I want to parse an ISO 8601 timestamp and receive an X" and "why do you only support parsing to X and Y, I need to the parse result to be a Z" I came to the realization what people really wanted was a parser that just parses and to be able to build those parse results into whatever fits their use case best. Enter the 'builder' kwarg.

TLDR: New optional 'builder' keyword argument for all parse methods, 'relative' keyword argument going away. Default behavior is the same as always.