European Space Agency ETV-5 approaches the ISS

Hugh Brown, VA7UNX

What Happened in August 2021 calendar Sep 11, 2021

What did I do this month? Let’s see.

Machine learning/data science

  • More work on MLHub’s Earth observation & machine learning bootcamp

  • 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.


Hardware hacking

  • 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:

Grafana temperature graph for August 2021

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.


  • 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 and added a bunch of little free libraries (“public bookshelves” is the tag OSM uses). Fun to do.


Climate emergency

  • Letters every Sunday to government – mostly provincial, because of the Federal election in progress right now.

  • Submitted a letter against the Tilbury LNG port expansion, which is right near me.

  • Joined Follow This, an organization dedicated to shareholder activism in energy companies – Shell, BP, Chevron and Total.

What Happened in July calendar Aug 24, 2021

So late! Let’s catch up.

Hardware hacking

  • 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.


  • 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. :-)


  • 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.

Machine learning/data science

  • Start going through MLHub’s Earth observation & machine learning bootcamp

  • 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 😬)


  • 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:

Grafana temperature graph for August 2021 heat wave

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.

What Happened in June calendar Jul 5, 2021

June: sick or whack? Let’s crunch the numbers.


  • Lots of work mentoring our GSOC student, who’s doing amazing work.

  • Work on a presentation about analysis of QUBIK data with Polaris.

  • A lot of work with another Polaris member digging into dependency problems; written up here, MR merged in July.

  • Submitted our proposal for running code on OPS-SAT. I’m incredibly excited about this. 🀞


  • 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
    • Able to display this on my phone without crashing, thanks to Leaflet.markercluster

    Still lots to do, but I’m happy.

Hardware hacking

  • 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.


  • Outing to local park; one QSO, truly awful signal reports from RBN. Not sure what’s going on.
What Happened in May calendar Jun 5, 2021

What happened in May? Let’s see.


  • Initial analyses for OPS-SAT, BOBCAT-1, and QUBIK
  • PRs to resolve a few small issues
  • Help review abstracts for conference presentations
  • Lead preparation of a proposal to run code on OPS-SAT. I’m super excited about this.
  • Played a bit with the nanosat-mo-framework in preparation for that proposal.
  • We’ve got a Google Summer of Code student, Ayush Bansal! πŸŽ‰ Very much looking forward to working with him.


  • I’ve been asked to be an advisor for ALEASAT, a cubesat project being built by UBC and SFU students. I’m incredibly thrilled about this.

Data science

Hardware hacking

  • 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


  • 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 (!).

What Happened in April calendar May 21, 2021

A little late (hah!), but still trying to keep the habit.


  • A lot of work getting ready for Google Summer of Code – our third year participating.

  • Initial analyses for a couple different satellites: QUBIK-1 and -2 (using data from integration testing), OPSSAT (see below for why).

  • Documentation improvements, always important.

  • Begin working (with a crapton of other people!) on a proposal to run our software on OPSSAT. This has been a lot of fun.

Machine learning / data science

  • More work on the dishwasher loading critic; not as much as I would have liked, though. But I did pay my son to annotate ~ 100 images. 🀘

  • Got my tree map page put up on this website.


  • 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.


  • 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.
Exploring RBN Data calendar Apr 17, 2021

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.


First off, a choropleth map seems like a good first step – not exactly what I want, but with Plotly it seems like the initial animated view should be pretty simple. It can be exported as a gif, or even as an MP4.

This tutorial gets into the weeds with matplotlib to do the animation.


This tutorial also shows using matplotlib to draw the map, which is another way to get that done.

There’s jupyter-gmaps, a library for displaying Google Maps in a notebook.

For OpenStreetMap, there’s this tutorial from ArcGIS and IPyLeaflet. (God, I wish I’d known about that…) IPyLeaflet also has an amazing series of notebooks for experimenting. And this article has a lot of great demos.

Github supports rendering GeoJSON.

This article goes over timestamped GeoJSON files – brilliant! This article is probably closest to what I had in mind.


What Happened in March 2021 calendar Apr 10, 2021

Hello world. March felt busy.


  • 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!

  • I prepared an initial analysis of data from the QUBIK satellites; the data was from integration testing, and we’re hoping to compare it with what we receive afterward. You can see the graphs for QUBIK-1 and QUBIK-2. Next up will be adding info to our documentationto show how we did this.

  • A short blurb about Polaris will be going out in the IAF newsletter, which is cool!

Machine learning

  • Finished up tracking down a bug in Detecto, a wrapper around PyTorch for object detection.

  • 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.


  • 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.

(Drafted with the help of x-hugh-blog-what-happened-last-month!)

Set Projectile Project Type to Golang calendar Mar 26, 2021

Memo to myself: to set projectile’s project type to golang, create a .dir-locals.el file that looks like this:

((nil . ((projectile-project-type . go)))

Shortcut for editing a projects .dir-locals.el file: C-c p E and select projectile-project-type.

What happened in February calendar Mar 1, 2021

Here’s what I got up to in February 2021:


Machine learning/data science

  • 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.)

  • Began playing with the New Westminster tree inventory, an open data file from my city. I’ve tried mapping that, and the code can be found here.

  • 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.

  • Some work on the dishwasher loading critic, including beginning to work with PyTorch directly rather than using Detecto.

  • Dig into what may (or may not) be a bug in Detecto with bounding boxes.

  • Began feature engineering course on Kaggle.

  • 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)


  • 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.

  • Reached Japan (7550 km) via CW on one watt!

  • Sysadmin work for the club.

Home sysadmin


  • Backyard bird count, plus started doing counts in local parks on weekend; submitted through Audobon app, which goes to


  • 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.
Fixing Apache and UTF8 calendar Feb 10, 2021

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">

Weirdly enough, changing that meta tag to:

<meta http-equiv="Content-Type" content="text/html; 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.