That's a lot of attitude from a very small rodent. "Are you lookin' at me!?"
Scott Laird
mastodon 4.7.3Temporal, ex-Figma, ex-Google SRE. Prone to fits of extreme geekiness on many topics. Seattle-ish. He/him.
Random collection of this year's interests:
- Photography
- Siberian cats
- Networking
- Time synchronization (NTP, PTP, etc)
- Go (the language, not the board game)
- Amateur Radio (WA7SL)
- CNC / 3D printing / woodworking
It's time for Saturday-morning moss, apparently.
Wow, okay -- looks like there's been a big improvement in camera sensor technology lately when I wasn't paying attention. CineD just posted a review of the DJI Osmo Pocket 4P (https://www.cined.com/dji-osmo-pocket-4p-lab-test-rolling-shutter-dynamic-range-and-exposure-latitude/) and found that it gives *17* stops of dynamic range, which is legitimately more than any camera that they've tested, including the ARRI Alexa 35, which is pretty much *the* Hollywood "real cinema" camera. Most *great* cameras give 12-14 stops of dynamic range. The tiny little Osmo gives 17, and it doesn't seem to be due to AI gimmicks.
This seems to be the first non-phone camera with one of Sony's new "LOFIC" sensors. It sounds like it's able to handle overflowing photosites better, so it can handle extreme highlights without clipping, which has always been a fundamental problem of digital sensors.
It'll be interesting to see what these do once they grow to bigger-than-phone-sized sensors.
Tulips at dawn this morning.
Today's morning fun: playing with creating a Netbox config template for my Arista devices.
- Good: it's actually pretty simple to get started. Almost no new infrastructure needed, unlike the time I tried to do this in Ansible and felt like I was pushing a rock uphill the whole time.
- Good: the data model (shockingly) matches reasonably well.
- Bad: oh god, not jinja2 again.
- Meh: you're mostly just left with a blob of text; there's no actual automation for diffing/deploying/etc. Although plugins are available
- Bad: the mismatch between jinja2 templates and Actual Python(tm) gets *really* annoying. It's like *half* python and half not. It's just fine for simple stuff -- "iterate over all interfaces and add `mtu {{ interface.mtu}}`" is easy. Iterating over all IPs for each interface and adding `ip address` or `ipv6 address`, depending, isn't too bad. Iterating over all IPs for each interface *plus* FHRP (VRRP, etc) addresses for each interface, plus dealing with corner cases is a making me lose hair.
- Meh: there are missing things in Netbox's data model that would be really nice, like the MLAG ID. There are plugins for some of this, and people have built giant complicated models for other bits; I'm tempted to just add a custom field for the ~dozen cases where I care.
- Meh: avoiding excessive newlines around `{% if ... %} command{% endif %}` in jinja2 is really annoying me. I guess I should probably re-read the manual -- I want "output what I say, without trying to reformat anything, but don't emit totally blank lines". Lots of blank lines: easy. No newlines at all: easy. Newlines in the right place: not so much.
I've already upgraded 4 systems, I'll do a couple more this morning and then maybe hit two birds with one stone and write a new "import and preprocess video and still images from cameras" tool that gives the open-source flavor of my employer's product a workout. I should really be more familiar with it, and it's probably the right tool for this job. Ish.
The problem is that my NAS isn't really fast enough to let me edit 8K or 12K video directly from network shares, and I don't usually want to wait for an ~hour for a TB of video to slowly copy from a flash card onto the network before I can edit things. But I don't have enough local SSD space to keep everything local. And telling Resolve to start editing when files are on flash drives means that the projects break.
Plan:
- Produce a tree full of symlinks on a local disk.
- When a new video is detected on an external drive, first add a symlink that points directly to the external drive.
- Then copy the video from the flash drive onto a local SSD. When complete, update the symlink.
- Then copy the video from the local SSD onto the NAS. Don't update the symlink.
- When the local video-storage SSD is nearling full, delete videos from the SSD, after verifying that they've been copied to the NAS correctly. Update symlinks to point to the NAS copy.
This is mostly pretty straightforward, but getting the details right and not losing data is (as always) the fun part.
It's officially spring -- the tulips are blooming.
I finally bought a new photo printer; my last one was an Epson Stylus Photo 1270, which was introduced in 2000. The 1270 was impressive at the time, but the ink wasn't very stable and it *loved* to get clogged nozzles, which meant that it wasn't actually all that useful. I managed to produce a few prints from it that I liked, but it took a lot of iteration and wasted a lot of paper and ink, and in the end it was more of a matter of luck than anything.
The new one is a Canon imagePROGRAF PRO-1100, which obviously needs at least one more "pro" in the name. It's a beast that can print on 17" wide paper, and massively more computerized than the old Epson. It's smart enough to detect and fix clogs on its own (supposedly), and includes a bunch of self-checking and calibration tools that probably didn't exist anywhere 25 years ago.
For being ~25 years newer and at least one rung up the model ladder, the specs aren't actually *that* different from the old Epson. The Canon has somewhat higher resolution (2400x1200 vs 1440x720 dpi), but they both claim the same minimum droplet size (4 pl). Other than the paper size (13" vs 17"), the biggest spec difference is that the Canon is a 12-ink printer while the Epson was a 6-ink model, which gives is a *much* wider color gamut, so landscapes and portraits look more natural.
The biggest difference in actual use, though: I haven't had a bad print yet from the Canon. I've printed 6 or 7 prints in different sizes on a few different papers, and pretty much every single one of them matched what I'd expected to see. Shockingly, it seems to actually print correctly and reliably. Almost every photographic paper manufacturer ships ICC profiles *plus* printer config profiles (for paper thickness, ink handling, etc) for the 1100, and so far everything has actually worked. Download the profile, load the ICC into soft-proofing in Photoshop, load the paper profile into Canon's media tool, tweak so that it looks ok on the monitor, then hit print. A few minutes later there's a perfectly workable print sitting right there.
I'd really expected this to be harder, and was expecting to be frustrated for a few days before I actually found a printing process that worked for me.
Compared to updating the base OS, getting netbox working again is, as always, a total pain.
Like all Python apps, it's pretty tightly coupled to the version of Python installed on the system. Ubuntu 26.04 upgrades to Python 3.14, which, like all Python upgrades, breaks tons of things.
So I got to spend an hour or so iterating through Netbox's requirements.txt and randomly upgrading dependencies until they stopped complaining about missing methods, and then I had to modify a few legacy migration scripts so they didn't depend on parts of the language that no longer exist.
16 dependencies later, it seems to at least start up now.
Okay, 4 more hosts upgraded to 26.04 today, 9-ish left. Mostly not very exciting, but:
- I had to make minor changes to Kea's DHCPv4 config to get it to restart.
- One host had been set to use legacy v1 cgroups, so I had to change that before the updater would run.
- Rebooting takes too long every time. I always decide that it's not going to boot and I'm going to need to drag a monitor and keyboard over about 3 seconds before it boots.
- Netbox failed to start, which is what netbox does whenever you even think about changing the version of Python on the system. This is going to be fun, but it can wait a bit.
The first of these is easy to fix, just add something like
"reconnect-wait-time": 3000,
"max-reconnect-tries": 3,
to the lease-database block in kea-dhcp4.conf. That'll let it try reconnecting after a 3s delay, but it'll still exit if it fails 3x in a row. Getting systemd to restart it is at least a bit better documented.
I just realized that images from my camera, when saved as a 16-bit TIFF (which is almost required if you're going to edit or print them) are just *barely* small enough to be able to fit one photo onto a CD-ROM. Roughly 611,401,222 bytes.
It's sort of like the inverse of the old Sony Mavica cameras that used a floppy disk drive ("save icon") for saving images in the camera.