RSSAmplifier

Blog

snehan kekre · posts

Writing by Snehan Kekre: docs, devrel, open source, and diving.

snehankekre.comRSS feed ↗6 posts

Latest posts

In macOS Seatbelt, bind and listen are two different permissions

network-bind authorizes bind(). network-inbound authorizes listen() and accept(). One propagates to the other under a condition that took me three days to see, because my probe called both syscalls inside one try block and labelled every failure with the name of the wrong one. The kernel had been logging the name of the operation it refused the entire time, one layer below the exception I was…

My dive computer records 17 channels. Subsurface exports 4.

Divers blame the interchange formats for losing decompression data. I counted the fields. UDDF has carried GF99 since 2018, DAN's format has carried the deco ceiling since 2006, and there is a version of UDDF that real software writes and that was never published.

Two wrists, one dive

My Garmin and my Shearwater both logged my 101.5 m dive, 19 seconds apart on clocks that don't agree about what time is. How bottomtime decides two logs are the same dive so you can do it yourself.

Proving byte 25

A reverse-engineered byte is a hypothesis. I wanted mine attacked from every angle before trusting it: the vendor's exports, its own arithmetic, physics, a second computer, and finally its source code.

The bytes my dive computer keeps to itself

Shearwater Cloud stores every dive as a gzip blob of 32-byte records, then exports a subset of it. GF99, deco ceiling, and battery voltage stay behind. So I decoded the blobs myself.

My homepage has a pulse

There's a small red heart on my homepage now, beating at my actual heart rate with an exactly 24 hour delay. How I get the data out of my Garmin, and where the white lie is.