Participated in Kaggle’s 30 Days of Machine Learning
course/contest. Some of it was stuff I already knew, but it was a
good prod to do a bit of ML (nearly) every day.
Automated importing walking data from my phone. Since I’ve got an
iPhone (sigh) and Linux, this means exporting data from the Health
app, emailing it to myself, then processing it with Python to add it
to InfluxDB with the help of this repo. Since I got my phone
in 2018, I’ve walked about 7,650 km – here to St John’s,
Newfoundland is only 6,800 km.
Also automated importing air quality data downloaded from the BC
government.
As I mentioned last month, I began some experiments to track the
running time of some battery-powered fans – some with batteries
built in, some that rely on external batteries through USB
connections. I got one of the ubiquitous USB voltage meters,
and it’s perfect for this.
Began monitoring sound levels in my office with a Raspberry Pi and
the Seeed ReSpeaker 2-mic hat. It would have been really good
to get this working before the pandemic hit, because I think it
would have demonstrated the change in traffic noise due to the
pandemic…but better late than never.
Finally added soil temperature probes to my father-in-law’s garden.
We’ve got three at different depths: 1 foot down, 2 feet, and 3
feet. The trends so far have been pretty cool:
Note the dual scales – air temp (green shaded line) on the left,
soil temp (yellow/blue/orange) on the right. Fascinating to see how
the change in temperature is buffered at different depths.
Mapping/GIS
More GIS podcasts/courses.
I made a dirt-simple Arduino GPS logger that used a small GPS module
I got as a gift from my father, and managed to map the results.
I fired up a long-dormant account on OpenStreetMap.org and
added a bunch of little free libraries (“public bookshelves” is the
tag OSM uses). Fun to do.
More work on the weather station to accommodate the one-wire sensors
intended for the ground, and to prepare for the anemometer that’s
been built. I think we’re going to skip calibrating the anemometer,
and just record RPM.
Set up (finally!) a sound card hat for the Pi to catch ambient noise
levels in my home office; we’re right by a major road, so my hope is
that this will let me track traffic levels by proxy. I’d thought
about this when COVID hit, but didn’t get on this for a long time.
Polaris
Helping out Ayush Bansal, our Google Summer of Code student; his
final report will be coming out any moment, and I’ll mention that in
(checks watch) 7 days.
ESA turned down our proposal to run code on OPS-SAT :-(, but another
Libre Space Foundation project got accepted. :-)
Mapping
More listening to GIS podcasts and courses.
More work on the tree map, including trying to get Bootstrap
working. I think this was a bit ambitious for me, though – I need
a much better foundation in the basics of web development.
First work on the dishwasher loading critic project in a while
Upgrade Paperspace to a paid account (which I still haven’t used
very much π¬)
EV
First road trip, to see what it’s like to drive longer distances.
This was only about 270km round trip, but it was illuminating.
Props to the fast charging station in Chilliwack at City Hall.
Climate Emergency
We went through the big heat wave; outside temperatures hit
45.1 C in the sun at my inlaws’ pace, and 32.8 C indoors at my
place; as for the max overnight temperature, it was 24.9 C at my
inlaws, and 29.1 C at my place:
This scared the shit out of me. A number of things have come out of
that.
For a start, my wife & I have begun talking about emergency
cooling. We’re in a townhouse and have no AC; we coped by staying
indoors, and taking us all out to malls & other places with
cooling. If there had been a widespread power outage, we would have
been in serous trouble. We’ve decided to start trying to prepare
for that, much as we try to prepare for an earthquake.
I’ve signed up for an energy efficiency assessment for our house,
which is something I’ve been meaning to do for the longest time.
Hopefully we can find some cooling options that are energy-efficient.
I’ve started with some battery-powered fans, and am running some
experiments to see how long they can run on simple battery banks
(like for charging phones). This is partly to get a bit of
experience, partly to make sure I don’t run out and spend a bunch of
money on something useless, and partly to – honestly – give myself
a sense of control by having some experiments to do. It’s not the
only thing we’ll do, but it’s a start. I’ll write this up later.
Another thing that came out of this is a commitment to writing my
local, provincial and federal governments every week for a year on
the climate emergency. This month: writing my provincial
government to end old-growth logging in BC.
Patrick Johnstone, one of my city’s councillors, wrote a
heartbreaking blog post about the heat wave and how New
Westminster responded:
It was a cascading failure, a demonstration we were simply not
ready, as a City and as a Province. People died, leaving behind
families and neighbours traumatized by the lack of response. I am
afraid first responders were equally traumatized, as they had to
operate in a broken and failing system that didnβt allow them to
do the work they are trained for and dedicated to doing β protect
and comfort the residents they serve. Instead, they spent three
days in the stifling heat surrounded by the suffering and death of
people they wanted to help. I cannot imagine, but once again, they
deserve not just our recognition and gratitude, but a response β a
way to fix this so they donβt have to go through it again.
More Aleasat meetings and helping them out as I can.
Data science
Start graphing EV efficiency data for our Kia Soul: cookiecutter
repo, import into InfluxDB, graph in Grafana.
More work on New West Trees. Signed up for a free account on Carto,
thanks to this tutorial; I’ll look at hosting this on PostGIS
locally, but for now this gets me started. Current state:
Able to search for 5 nearest trees
Able to display just a particular species of tree
Able to mark all the unknown trees with a separate icon
Got ethernet breakout boards for the weather station, which allow me
to use cat6 cable to take readings from Dallas 1-wire temperature
sensors. These will get buried in the soil at my inlaws’ garden. A
lot of soldering work to get this done, and then rebuilding the
Arduino software for the first time in years. Oh, and setting up
udev rules to create static rules for /dev/weatherstation and
/dev/sds011. …which I haven’t mentioned yet!
Bought a couple SDS011 particulate matter sensors; I’ve added one to
the weather station, and one at home. Interesting to see how
they’re doing.
Radio
Outing to local park; one QSO, truly awful signal reports from RBN.
Not sure what’s going on.
Replaced rain sensor on weather station at my in-laws
Tested running 3 Dallas 1-wire sensors over a 25 foot / 7.5 metre
ethernet cable: one twisted pair element each for positive, ground
and signal. Worked a treat! These are going to be buried in the
garden there to get soil temperatures at different depths
Radio
First POTA activation: Ve-3300, Cariboo Hill Park. 21 contacts,
including 2 park-to-park. Closest I’ve come yet to a pileup.
Power went out at my house for a few hours, so I used the time to
make contacts on my homebrew magloop on 20m while it was dead quiet.
Made England, plus one with KD6JUI/MM, who was kayaking (!) with a
homebrew magloop (!!).
CQ WPX contest: 55 contacts over 3 days. I’ll be honest, it was a
bit of a chore by the end. But I managed to make New Zealand on 5W,
and Australia on 5W on 40m (!).
Replace failing hard drive for Zombie, the home server that does it
all.
Hardware hacking
More work on the anemometer. My father-in-law built a shelter for
this to keep the rain off, and we’ve now got the sensors/magnets
permanently (*with crazy glue) mounted on the arms.
Radio
First attempt at POTA, at a local park. Unfortunately, I only got
four QSOs, so no good. I think part of that is probably due to the
location: it was in a lower part of the park, and it seemed to
affect propagation.
A while back I started exploring data from the Reverse Beacon
Network. My initial goal had been to come up with an ML model to
predict how many DX stations the local skimmer would receive – but
there was a lot of exploration of the data as well. I captured that
exploration in a series of notebooks, and set aside the project
after a while.
One of the things I never accomplished was a satisfying display of
where stations were being received from. I was aiming for something
that would show changes over time, as well as location. Yesterday I
was browsing through this Kaggle notebook for the BirdCLEF 2021
competition when I saw a cool map being generated from something
called a shape file. A bit of browsing through the Internet found
some great tutorials, and I think I have a better sense of what I
can do.
The Libre Space Foundation (and thus Polaris) was accepted for the
Google Summer of Code, and we had bunch of awesome students show
up in our chat room. A lot of work came out of that: coaching
students, evaluating their MRs, giving early feedback on proposals,
and helping them find their way through the codebase and the
problems. But these are definitely good problems to have!
Dig into more options for image augmentation, including Albumentation
Came up with a rough prototype for the Dishwasher Loading
Critic: a (poorly) trained model, sitting behind an API written
in Fast, with a copied bootstrap template. I was able to post
pictures to it from my phone & get some (poor) bounding boxes around
things. Progress!
Still trying to figure out where I want to go with this project:
stick with Detecto, or move to PyTorch? I’d like to do the latter,
but I have a lot of learning to do there.
Got LSP-mode enabled for Emacs. Interesting, and I suspect this
will be a way forward for Emacs.
Tried Paperspace again after their upgrade, and WOW: it’s
blazingly fast to start up. I’m going to re-open my account with
them again.
Sysadmin
Finally got Fedora 33 installed on an Intel NUC. The problem had
been that wifi did not work after installation, even though it
worked during installation. Turns out there’s a bug where
wpa-supplicant is not installed during installation; installing it
afterward by hand did the trick.
Learned about nftables…huh.
Hardware hacking
First prototype of anemometer working – I’m now able to get RPM
read and displayed in Grafana. Apparently, the best option open to
me for calibrating this thing is to use a car: hold it out the
window, go at a set speed, and take measurements.
Began Chapter 9 of the FastAI book. This is on tabular
learning, which is really interesting; I think this is the sort of
approach I’d want to take for loostmap, my attempt to predict
HF propagation by looking at data from the Reverse Beacon Network
(I picked that project name from a random name generator…I really
need something that makes more sense.)
Played with Roboflow, an online service that augments image
data for machine learning. Also came across imgaug, a Python
library that covers much the same ground.
Talked to my manager about the possibility of looking for DS/ML
projects at work. Apparently there’s one team he knows of that’s
looking into a project in this area, and the possibility exists to
work with them for a bit. π€
Hardware hacking
My father-in-law finished a prototype of our anemometer; he’s a
retired millwright, so he actually knows what he’s doing. (puts
popsicle sticks and yarn away)
Radio
A few contests entered. Closer to getting my WAS – only missing
Maine and Nebraska, and state contests for those are coming up in
the next few months.
Backyard bird count, plus started doing counts in local parks on
weekend; submitted through Audobon app, which goes to
ebird.org.
Gardening
Began growing wildflower seedlings at home under a grow lamp and
promptly got mildew. There are a couple that have survived; I plan
on transplanting those & trying again.
A while back, I started having problems with the output of Venus, a
planet-like aggregator I use to read a bunch of things. The symptoms
were broken characters for things like apostrophes, quotes and so on
– which rendered the output nearly unusable. I dug into it,
but couldn’t resolve the problem…so I resorted to a bletcherous hack
(cron job to copy the file to my laptop, and view it with
file:///...) and blamed Python 2.
Today I came across the same problem but manifested in another set of
files. This time I managed to find the answer:
AddCharset UTF-8 .htm .html .js .css
To be clear, I already:
had made sure that the headers for the file included Content-Type: text/html;charset=utf-8
had made sure the html file had <meta charset="utf=8">
worked…the apostrophes and such were displayed correctly. But they
never showed up in the output when I ran a curl on the URL. Does
Apache filter this stuff on the fly?
Anyhow…that’s enough encoding debugging for one day. Or possibly a year.
Here’s a quick list, for my own reference, of what I got up to in
January. It’s heartening to see everything laid out, and realize that
I’ve actually managed to get a fair bit done!
Hardware hacking
My father-in-law and I worked on getting the precipitation meter
going for our weather station. It took a while, but we finally
got it working. π
Some one-wire temperature sensors came in, and I was able to whip up
a quick demo to make sure they worked.
Talked to my father-in-law about building a Lehmann
seismograph. Early days, but I think he’s in.
Got a hugo site whipped together for polarisml.space, which now
has links to our demo, code, chat and documentation.
Cut my first release for Polaris after getting our page on PyPi
sorted out.
Machine learning
Some progress, though slow, on going through the FastAI book.
Tripped over Roboflow, which generates synthetic data for ML;
very interesting, and I may give this a try for the dishwasher
loading critic.
Some initial experiments with detecto, a simple wrapper for
PyTorch object detection.
Radio
Not a whole lot of trips out, but some…and managing to reach D4Z Cape
Verde on 10W. 9,155 km!
Totalled up my contacts toward SKCC Centurion…42/100. Normally
I’m not big on this sort of thing, but it’s a number to reach for,
and that’s no bad thing right now.
I’ve been interested in machine learning for a while now. Like a lot
of things, my approach has been a bit scattered. I’m slowly learning
how to get better at that, but I still tend to veer around.
A couple of months ago, I decided to take the Fast.ai course
again. I had done a couple of lessons a year ago, but had not
followed it up. This time around, I saw that they not only had a new
version of the course, but a book as well. I ordered the book
(and another book as well), and got started on the Jupyter
notebooks that the book is based on.