January 12, 2022 @12:20
Background
Starting just before the holidays I found myself back on the kick of working with
LEDs. About 7 years ago I started making a little microcontroller based
controller to drive LED strips
and generate some interesting effects. I've used this in a bunch of
situations with WS2812, WS2811 and APA102C based LED strips (Adafruit
tends to call these NeoPixel or DotStars) over the years and recently decided
to reorganize the code into more generic building blocks. In doing so I moved a
bunch of the heavy lifting to a little
library
which allowed me to step back and do some thinking about how I might want to build
up larger effects in the future. Since I do all my microcontroller development
in C the natural fit seemed to be to create a sequence of actions as an array of
structs. The structs could contain some conditions and a function pointer to be
executed. It is also possible to have the condition be a function pointer,
enabling the triggerable events so the controller can respond to stimulus or
use the random number generator to change up patterns. With this in mind I
designed the sequencer. It takes two arrays of structs, one for the sequence
and one for the optional events. It turns out that not only was this
easy to implement, but there wasn't a tremendous amount of special work
needed to support the
split memory architecture
of the AVR platform. At the time of writing the
whole file
is right around 100 lines of code.
More (38%) …
January 01, 2022 @22:00
In keeping with last year, here are the 10
most visited posts as tracked by the
metric collection system that
I wrote in 2018.
More (12%) …
November 03, 2021 @16:53
About 11 months ago I upgraded the main server
in my home network and I figured it would be a good time to
take a look at look back and gauge if it has been a success. The new system
is comprised of the following components.
More (6%) …
October 08, 2021 @14:15
If you follow my thoughts microblog you may have noticed that
I finally had to replace my router. The new to
me motherboard is a SUPERMICRO X11SDV. I was finishing setup on it and
discovered that I do not have the IPMI password. Turns out that getting it
may be tricky, especially if you have one of the motherboards that didn't
ship with their
BMC Unique Password Security Feature, but got it via a firmware update. This means you may not
have the default password on a label on your board.
More (37%) …
September 26, 2021 @14:15
When I originally installed the UniFi Video system at the house I was pretty
happy with it. While rudimentary it was remarkable in that it was a prosumer
grade system that was able to run entirely on premises. I installed the
controller application on the same VM that runs the UniFi controller for the
networking system and was reasonably happy.
More (27%) …
September 06, 2021 @12:00
Today marks five years since I re-launched this site, built on the software
that I wrote to generate the site from a collection of markdown files. The
development started 4 days prior with this rather innocuous commit.
More (23%) …
August 30, 2021 @11:50
Previously
I got passff working on Windows 10
using a bit of a convoluted process that involved manually editing a bunch
of the shims and replacing the pass binary with gopass. This has worked
OK but I recently downgraded Firefox to the ESR release (the new UI in 90+
is an absolute abomination and I'm going to avoid it for as long as I can)
and that wiped out my profile and deleted all the installed extensions.
I figured it was time to do the update dance anyway and while doing that I
decided to look into other solutions to see if there were less fragile
options.
More (43%) …
July 14, 2021 @10:30
I had previously bemoaned the
inability to figure out why my automounts were being so stupid in Catalina
and after periodically searching and giving up I finally found a
bread crumb that showed me
the way.
More (19%) …
July 02, 2021 @11:15
I have a pair of galleries on the website that are generated by my
simple-gallery Python program. I created
it back in 2010 and in 2016
I added lazy loading of thumbnails using jQuery.lazyload. This seemed
reasonable to me at the time. These days I prefer to not use any external
JavaScript libraries unless I have to and then I try to only use ones that
are reasonably self-contained (because let us not forget that the JS
ecosystem has a history
of being a Zork-like maze of twisty passages all alike.) So while making some
other much needed updates (a lot of Python 2 to Python 3 refactoring) I set
about taking some JavaScript I wrote for a different project and bashing it into something more generic.
More (18%) …
June 29, 2021 @13:45
I don't understand the desire to shove everything into a web browser.
Other than the fact that it is how tech startups extract money from
venture capitalists, spy on your user base, and lock out interoperability
I don't see why a web browser is a better place to implement most things
and yet, here we are. I have resisted participating in the new real time
chat services because they don't really offer much over IRC, however I
finally gave in and joined a group of friends on Discord.
More (14%) …
June 03, 2021 @19:00
One of the more popular things that I have written in recent times is
a small Python tool that gets statistics from an Arris SB8200 DOCSIS
cable modem and sends them to InfluxDB. I then visualize this data in
Grafana to keep an eye on the physical status of my cable Internet
connection. This setup has happily chugged along since sometime in 2019,
but sadly its time to put it all to bed.
More (44%) …
May 07, 2021 @11:53
I'm a feckless curmudgeon, so of course I believe that software that
provides security infrastructure -- especially physical security
infrastructure shouldn't be trying to chase the upgrade dragon like
a heroin addict, but I digress. My UniFi Video installation stopped
working last night and I was a bit distressed. Yes I know it isn't
supported anymore and Ubiquiti would REALLY LIKE ME TO UPGRADE TO
PROTECT NOW PLEASE. But never the less. Turns out, dear lazyweb
that a Java update screwed me.
More (60%) …
January 17, 2021 @20:00
ur-tardis
Back in 2013 I was able to cram an Ivy Bridge i5 and 6 3TB hard drives into
a Mini-ITX Lian Li case. I called the system tardis
as it was intended to be
both a NAS and a hypervisor and it has served me well since. The only drawback
with the system was the limited memory support. Intel's Ivy Bridge processors
support 32GB of RAM but the Intel H61 Express chipset used on the ECS H61H2-MV
motherboard I chose only supports 16GB and that turns out to have been the
main limiting factor as that was the first resource I ran out of.
More (3%) …
January 02, 2021 @20:37
It seems like top N lists are popular at the begining of the year so here
are the 10 most visited posts as tracked by the
metric collection system that
I wrote in 2018.
More (14%) …
October 14, 2020 @17:10
Now that iOS 14 is almost a month old, I can't help but feeling that the
text messages that I sent to a friend at launch feels more like wishful
thinking than tongue in cheek snark.
More (3%) …