Shallow Thoughts
Akkana's Musings on Open Source Computing and Technology, Science, and Nature.
Fri, 17 Apr 2026
We're thinking about replacing our ancient fireplace with a modern
wood stove. There are lots of reasons, but one is that the house
smells smoky when we use the fireplace (which is pretty much every
night in winter), and I can't help wondering what all that smoke is
doing to my lungs.
Dave insists that the smoke all gets sucked up the chimney and I
shouldn't worry about it. I tried to look it up, but it seems like
there's hardly any published research on that (or maybe I was just choosing
the wrong search terms).
But why not actually measure it? I've occasionally wanted a particulate
matter sensor anyway; we get a lot of wildfire smoke here in New Mexico
most summers (sometimes from local fires, sometimes from as far away as
California or Canada) and sometimes the air quality can get pretty bad.
Of course you can buy ready-to-go air quality sensors. But what's the
fun in that, when you can make your own for about half the price?
(If you don't count the value of your time, that is.)
Read more ...
Tags: hardware, circuitpython, python
[
15:09 Apr 17, 2026
More hardware |
permalink to this entry |
]
Mon, 06 Apr 2026
As part of a quest to disable the HDMI audio devices that Linux's
audio system pipewire is so fond of (about which, more in a separate
article), I got the bright idea of blacklisting the
snd_hda_codec_hdmi kernel module.
(Don't do that; it isn't a good solution because it breaks other things.)
But at least along the way I learned how to blacklist kernel modules,
which isn't as simple as the net might make you think.
Read more ...
Tags: linux, kernel
[
11:40 Apr 06, 2026
More linux/kernel |
permalink to this entry |
]
Sun, 22 Mar 2026
One of the worst breakages from the *grade (I hesitate to call it an upgrade)
to Debian Trixie was audio.
The old PulseAudio setup — which had been working beautifully for the
last several years — was replaced by a new sound system called Pipewire
that sits on top of PulseAudio and, well, basically, breaks it.
Recently I decided it was finally time to figure out Pipewire's broken
handling of audio output. The main problem: half the time, upon booting,
my audio doesn't work, and if I run pavucontrol to see the
configuration, I see three different HDMI audio devices as well as
the laptop's built-in Intel audio chip. Most of the time my laptop is
plugged in to an HDMI monitor, yes — but that monitor has no
speakers or other audio hardware, so I basically never want HDMI audio.
And in any case there's only one monitor connected, not three.
(And yes, there are occasionally times I might want HDMI sound, like
if I want to give a presentation over a projector that uses sound.
That has happened to me once in my life, so far.)
So every time I boot, there's a good chance that audio won't work and
I'll have to fire up pavucontrol, go to the Output Devices tab,
mute all three of the HDMI sinks, unmute the built-in speaker sink,
and click the button to make the built-in speaker the default sink.
(There's no way to tell what the previous default was: pavucontrol,
although it has buttons to set a sink as default,
doesn't show what the current default is.)
Read more ...
Tags: linux, audio
[
16:37 Mar 22, 2026
More linux |
permalink to this entry |
]
Tue, 17 Mar 2026
For many years, I've been annoyed at how my Linux computer
(a Lenovo Carbon X1, gen 7)
fills dmesg with errors every few seconds like:
usb usb3: root hub lost power or was reset
(sometimes it was usb4 rather than usb3, or different but obviously
related messages).
It makes it hard to see real messages in dmesg.
I thought (NOTE: this was a stupid assumption)
that since it said "root hub", that meant it was some kind of bad
hardware design in the hub that's built in to the laptop, so I just
put up with it.
Recently I complained about it on #linux and someone challenged me to actually
try unplugging things to figure out what was actually causing it.
Read more ...
Tags: linux, kernel, usb
[
09:52 Mar 17, 2026
More linux/kernel |
permalink to this entry |
]
Sat, 21 Feb 2026
Yesterday I signed in to the billtracker, and got an error page when
trying to display my bill list:
[ ... ]
File "/var/www/nmbilltracker/billtracker/app/models.py", line 766, in location_html
if self.last_action_date > self.scheduled_date.replace(tzinfo=None):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: can't compare offset-naive and offset-aware datetimes
Python's datetime class drives me crazy.
Any given datetime object might or might not have a timezone.
Those that do are called "timezone aware" or just "aware" datetimes;
those without a timezone are called "unaware" or "naive".
Any given function might or might not return a timezone-aware datetime.
If you ever mess up and call a function that returns a timezone when you
didn't expect one, or vice versa, or if a function you call changes in
that respect, now you have a hidden time bomb that will crash your
program the next time you do any sort of comparison with or
subtraction from another datetime, and by then, you may have no idea
way of finding out where the problematic time came from so you can
guard against it happening again.
Read more ...
Tags: python, programming, timezones
[
18:53 Feb 21, 2026
More programming |
permalink to this entry |
]
Tue, 17 Feb 2026
We had business in Albuquerque yesterday, and the weather was nice, so we
brought our bikes along to explore the trails along the Rio Grande bosque.
It was a beautiful, relaxing ride.
The trails were packed with happy, friendly cyclists, hikers,
runners, plus people on scooters and a couple of those one-wheel,
self balancing skateboards (which I'd never seen on a trail before).
I think we saw more other trail users than in the cumulative past year
hiking in our usual spots.
There were lots of cranes on the river and in the sky, and a
roadrunner who ran across the trail in front of us, then slowly made
its way up the branches of a tree before gliding across the canal then
running up to the top.
Dave and I never get tired of watching roadrunners — the most
Velociraptor-like birds there are. I wish they were more common in White Rock.
Read more ...
Tags: nature, bike, MTB, New Mexico
[
15:02 Feb 17, 2026
More nature |
permalink to this entry |
]
Tue, 27 Jan 2026
(This is Part 1, a single state.)
I went looking for a "purple map" of the 2024 presidential election
— one of those maps that colors areas from red to blue depending
on how they voted.
And I couldn't find one! Well, I found lots of JPEGs and PDFs and such,
but I couldn't find a single map that was interactive and let me zoom
in and actually see the county-level data I was interested in.
Getting Data
It's not for lack of data. I'm happy to report that this year,
searching for 2024 presidential election county data
got several useful hits. I settled on the
MIT Election Lab data,
which has a GitHub
repository with a bunch of state-level files (that, weirdly, are all
zipped, so you have to unzip each one individually).
Read more ...
Tags: elections, politics, visualization, programming, python, mapping, GIS, data, open data, government
[
12:41 Jan 27, 2026
More programming |
permalink to this entry |
]
Wed, 21 Jan 2026
With the weather getting cold, I need a way to keep my ears warm while biking.
Many years ago, I had some fleece earwarmers that velcroed around a
helmet strap. I bought them in a bike store and they worked wonderfully,
but I've been unable to find anything quite like them online.
I've knitted triangular cozies to go over a helmet strap, but they
don't stay up, so they sag and don't cover my ears.
I tried making something like that, but they didn't come out well,
Read more ...
Tags: sewing, maker, bike, MTB
[
12:58 Jan 21, 2026
More bike |
permalink to this entry |
]