RSSAmplifier

Blog

Dima Kogan

notes.secretsauce.netRSS feed ↗10 posts

Latest posts

Simple gpx export from ridewithgps

The Tour de Los Padres is coming! The race organizer post the route on ridewithgps . This works, but has convoluted interfaces for people not wanting to use their service. I just wrote a simple script to export their data into a plain .gpx file, including all the waypoints; their exporter omits those. I've seen two flavors of their data, so here're two flavors of the gpx-from-ridewithgps.py…

mrcal 2.5 released!

mrcal 2.5 is out: the release notes . Once again , this is mostly a bug-fix release en route to the big new features coming in 3.0. One cool thing is that these tools have now matured enough to no longer be considered experimental. They have been used with great success in lots of contexts across many different projects and organizations. Some highlights: I've calibrated extremely wide lenses and…

Meshroom packaged for Debian

Like the title says, I just packaged Meshroom (and all the adjacent dependencies) for Debian! This is a fancy photogrammetry toolkit that uses modern software development methods. "Modern" meaning that it has a multitude of dependencies that come from lots of disparate places, which make it impossible for a mere mortal to build the thing. The Linux "installer" is 13GB and probably is some sort of…

Using libpython3 without linking it in; and old Python, g++ compatibility patches

I just released mrcal 2.5 ; much more about that in a future post. Here, I'd like to talk about some implementation details. libpython3 and linking Follow-up patches The technique described here ended up still incomplete! These extra patches were needed: commit c2475520ff0e4905e5d4b2f251ccbd0d54b7e02c Author: Dima Kogan <dima@secretsauce.net> Date: Mon Jan 19 12:44:15 2026 -0800 I weaken the…

Eigen macro specializations crashes

There's an issue in the Eigen linear algebra library where linking together objects compiled with different flags causes the resulting binary to crash. Some details are written-up in this mailing list thread . I just encountered a situation where a large application sometimes crashes for unknown reasons, and needed a method to determine whether this Eigen issue could be the cause. I ended up doing…

Getting precise timings out of RS-232 output

For uninteresting reasons I need very regular 58Hz pulses coming out of an RS-232 Tx line: the time between each pulse should be as close to 1/58s as possible. I produce each pulse by writing an \xFF byte to the device. The start bit is the only active-voltage bit being sent, and that produces my pulse. I wrote this obvious C program: #include <stdio.h> #include <stdlib.h> #include <stdbool.h>…

Shop scheduling with PuLP

I recently used the PuLP modeler to solve a work scheduling problem to assign workers to shifts. Here are notes about doing that. This is a common use case, but isn't explicitly covered in the case studies in the PuLP documentation. Here's the problem: We are trying to put together a schedule for one week Each day has some set of work shifts that need to be staffed Each shift must be staffed with…

When are the days getting longer the fastest?

We're way past the winter solstice, and approaching the equinox. The sun is noticeably staying up later and later every day, which raises an obvious question: when are the days getting longer the fastest? Intuitively I want to say it should happen at the equinox. But does it happen exactly at the equinox? I could read up on all the gory details of this, or I could just make some plots. I wrote…

Strava track filtering validation

After years of seeing people's strava tracks, I became convinced that strava doesn't sufficiently filter the data, resulting in over-estimated effort numbers. Today I did a bit of lazy analysis, and half-confirmed this: in the one case I looked at, strava reported reasonable elevation gain numbers, but greatly overestimated the distance traveled. I looked at a single gps track of a long bike ride.…

GNU Make: details regarding intermediate files

Check this out! Suppose I have this Makefile : a : b touch $ @ b : touch $ @ # A common chain of build steps %-GENERATED.c : %-generate touch $ @ %.o : %.c touch $ @ %.so : %-GENERATED.o touch $ @ xxx-GENERATED.o : CFLAGS += adsf # Imitates .d files created with "gcc -MMD". Does not exist on the initial build ifneq ($( wildcard xxx.so),) xxx-GENERATED.o : xxx-GENERATED.c endif This is all very…