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.
Polaris
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:
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.
Nature/science
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.
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.
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.
Machine learning/data science
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.
June: sick or whack? Let’s crunch the numbers.
Polaris
-
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. π€
Space
- 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.
Radio
- Outing to local park; one QSO, truly awful signal reports from RBN.
Not sure what’s going on.
What happened in May? Let’s see.
Polaris
- 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.
Space
- 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
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 (!).
A little late (hah!), but still trying to keep the habit.
Polaris
-
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.
Sysadmin
- 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.
Animation
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.
Maps
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.
Libraries
Hello world. March felt busy.
Polaris
-
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.
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.
(Drafted with the help of x-hugh-blog-what-happened-last-month!)
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
.
Here’s what I got up to in February 2021:
Polaris
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
https://va7unx.space/trees, 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)
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.
-
Reached Japan (7550 km) via CW on one watt!
-
Sysadmin work for the club.
Home sysadmin
Birding
- 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.