A Racket GUI Widget to display maps based on OpenStreetMap tiles

:: racket

This is a Racket GUI Widget which can display maps based on Open Street Map tiles — it allows embedding maps in Racket GUI applications. I originally wrote this code as part of the ActivityLog2 project and, since I wanted to use it in other projects, I decided to move it onto a separate package and publish it to the Racket package server.

Running and Cycling Workout Editor

:: activitylog2

A Garmin fitness device can use workouts during a bike or run activity: they are a collection of steps with a duration and intensity (such as heart rate, pace or power). While running or biking, the device keeps track of the duration and will sound an alarm if the intensity is too high or too low. Workouts can be created on the Garmin Connect website, but I decided to write my own application for creating workouts.

Arduino 433Mhz Receiver — Reading Keyfobs

:: arduino

I bought a 433Mhz receiver shield for Arduino as I wanted to experiment with wireless communication, and, as the first application, I built a receiver that can read serial numbers and button status from my garage door opener remote.

Arduino Inclinometer Improvements

:: arduino

After using the inclinometer for a while, it became apparent that the functionality was too basic. I extended it, so the unit tracks maximum pitch and roll values seen, displays the pitch and roll direction and can perform calibration on demand, so the unit does not have to acquire its orientation each time it is started up. I also built a better enclosure for it.

Interactive Overlays With the Racket Plot Package

:: racket

The Racket plot package produces interactive snip% objects which allow zooming of the plot area. While this is a cool and sometimes useful feature, the functionality is hard coded in the plot-snip% class inside the package. I extended the package to allow the user to customize the interactive features of the plot, to display additional information when the user hovers the mouse over the plot.

Changing Built-in Racket Packages

:: racket

To modify one of the Racket built in packages, a local copy of the package has to be set up first. This is a surprisingly complicated task and I spent more time on it than I would like to admit. To save future me and others some time, I wrote up a set of instructions on how to do it.

Equipment Usage and Costs

:: training data analysis

I paid $600 for my Garmin FR920 GPS watch, and since I got it, I bought six pairs of running shoes totaling $1124 and went to the swimming pool 153 times: at approximately $5 for a swim session, this is $765 spend on swimming. While the FR920 cost more than a single pair of running shoes or a single swimming session, it actually comes out as cheaper to own than the previous two.

Running and Outdoor Temperature

:: training data analysis

It is no surprise to anyone who tried to run in the heat that it is harder than when the outdoor temperature is more pleasant. But how much harder is it, and how can this be quantified? With summer in full swing in the southern hemisphere, I decided to take a look at how running is affected by temperature.

Arduino Inclinometer

:: arduino

My brother-in-law got himself a 4WD and wanted an inclinometer module to display the roll and pitch of the vehicle while going on his adventures. I build one using an Arduino Nano and an accelerometer module.