diff --git a/TODO.md b/TODO.md index e22d35a..ad99a67 100644 --- a/TODO.md +++ b/TODO.md @@ -51,7 +51,7 @@ The reference leaf the hub now ships carries one step this repo's deploy does no ## Open decisions - `/robots.txt/` and `/osd.xml/` currently sit in `slugs.map` pointing at `/`. The first would be better pointing at the real `/robots.txt`. -- **The conversion dropped images from at least five galleries, and 120 carried media files are linked from no page.** Five `gallery` shortcodes are empty, across three posts: [`esp32-water-and-gas-utility-meter.md:25`](./content/posts/2021/08/09/esp32-water-and-gas-utility-meter.md), [`installing-flair-smart-vents-to-keep-room-temperatures-balanced.md:59,96,154`](./content/posts/2022/10/30/installing-flair-smart-vents-to-keep-room-temperatures-balanced.md), and [`halloween-pumpkins-and-lights.md:28`](./content/posts/2022/10/31/halloween-pumpkins-and-lights.md). `gallery` is the only shortcode this happens to. The ESP32 post is the clearest case: it says "Below are pictures of the finished case and the utility meters:" and then renders an empty div, while a sequential run of camera originals from that month sits on disk linked from nothing. Do not delete the empty shortcodes, which would erase the evidence and leave the prose promising pictures that never arrive. Recovering them needs the source export, since gallery membership and order are not derivable from what is carried here. `ORPHANED_MEDIA` in [`checks/check-url-parity.py`](./checks/check-url-parity.py) holds the count and falls as galleries are restored. The 120 are not all gallery losses; the remainder is unadjudicated and may include uploads the old platform never published. +- **103 carried media files are still linked from no page, and the cause of each is unknown.** The count opened at 120; the five empty gallery shortcodes accounted for 17 and are restored. What remains is a mix of further conversion losses and uploads the old platform never published, and this repo cannot tell those apart: the capture can, by comparing each post's rendered galleries against its converted markdown. The comparison that found the five is worth generalizing, and its blind spot is worth knowing — a mirror page parsed as having *fewer* figures than the markdown means the parser missed that page's markup, never that images were lost, so only a surplus in the mirror is a finding. `ORPHANED_MEDIA` in [`checks/check-url-parity.py`](./checks/check-url-parity.py) holds the count and fails if it moves either way. - Content is capped at a fixed 720px on every screen, because PaperMod's width is four CSS variables with no responsive term and no Hugo parameter. The prose measure is right and should stay; images and galleries inheriting the same cap is the part that costs something on a wide display. The knobs, the override location, and the `--gap` trap are documented under "Customization points" in [`themes/README.md`](./themes/README.md). ## Deliberate deviations from the fleet baseline diff --git a/checks/check-url-parity.py b/checks/check-url-parity.py index 6f7fba7..ba38bed 100755 --- a/checks/check-url-parity.py +++ b/checks/check-url-parity.py @@ -27,11 +27,13 @@ # resolving proves an inbound link still lands, and a reference resolving proves it names a real # file. Neither asks whether anything points at a given file, so an image the conversion dropped # from a page stays reachable by URL, invisible on the site, and green in both directions. -# Every one traces to the WordPress conversion rather than to anything this repo does. Five empty -# gallery shortcodes across three posts are the identified cause of some of them, and the rest are -# unadjudicated. The count is exact rather than a bound, so restoring a gallery lowers it here in -# the same change and slack can never accumulate for a later regression to hide in. -ORPHANED_MEDIA = 120 +# Every one traces to the WordPress conversion rather than to anything this repo does. It opened at +# 120. Five empty gallery shortcodes across three posts accounted for 17 of them, restored from the +# captured live site, and the remaining 103 are unadjudicated: some are further conversion losses +# and some are uploads the old platform never published, and telling those apart needs the capture +# rather than this repo. The count is exact rather than a bound, so whatever lowers it lowers this +# in the same change and slack can never accumulate for a later regression to hide in. +ORPHANED_MEDIA = 103 def load(name): diff --git a/content/posts/2021/08/09/esp32-water-and-gas-utility-meter.md b/content/posts/2021/08/09/esp32-water-and-gas-utility-meter.md index e89b580..1e41c40 100644 --- a/content/posts/2021/08/09/esp32-water-and-gas-utility-meter.md +++ b/content/posts/2021/08/09/esp32-water-and-gas-utility-meter.md @@ -23,6 +23,13 @@ Below are pictures of the finished case and the utility meters: {{< gallery cols="4" >}} +{{< figure src="/media/2018/08/20180811_180521052_ios.jpg?w=1024" alt="" caption="" >}} + +{{< figure src="/media/2020/08/img_6638.jpg?w=768" alt="" caption="" >}} + +{{< figure src="/media/2021/08/img_8178_1.jpg?w=400" alt="" caption="" >}} + +{{< figure src="/media/2021/08/img_8178.jpg?w=569" alt="" caption="" >}} {{< /gallery >}} The ESPHome code uses the [pulse\_meter](https://esphome.io/components/sensor/pulse_meter.html) sensor, with the total sensor being measured by the HA [utility\_meter](https://www.home-assistant.io/integrations/utility_meter/) integration. The sensor produces flow rate measurements and incrementing absolute consumption, and it is the consumption, not flow rate, that is needed for the utility meter integration. diff --git a/content/posts/2022/10/30/installing-flair-smart-vents-to-keep-room-temperatures-balanced.md b/content/posts/2022/10/30/installing-flair-smart-vents-to-keep-room-temperatures-balanced.md index 4a52263..93d29bd 100644 --- a/content/posts/2022/10/30/installing-flair-smart-vents-to-keep-room-temperatures-balanced.md +++ b/content/posts/2022/10/30/installing-flair-smart-vents-to-keep-room-temperatures-balanced.md @@ -57,6 +57,13 @@ The look and feel of the Puck was a bit disappointing for the price, small non-t {{< gallery cols="4" >}} +{{< figure src="/media/2022/10/img_1646.jpg?w=1024" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1647.jpg?w=594" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1655.jpg?w=665" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1657.jpg?w=426" alt="" caption="" >}}FLAIR puck vs. my old Ecobee3 {{< /gallery >}} I installed the iOS app, set the puck in gateway only mode, followed the installation steps in the app, including creating an account, connecting the puck to WiFi, and connecting Flair to Ecobee for access to my thermostats. I installed batteries in a vent, without installing the actual vent but observing its behavior, and added the vent to Flair using the iOS app by entering pairing mode, no problems. @@ -94,6 +101,13 @@ I ended up removing the old vents, and visited my paint store several times to c {{< /gallery >}} {{< gallery cols="5" >}} +{{< figure src="/media/2022/10/img_1651.jpg?w=663" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1663-edited.jpg" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1665-edited-1.jpg" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1668.jpg?w=589" alt="" caption="" >}}FLAIR vent is smaller than standard vents {{< /gallery >}} With all the trouble caused by the too narrow vents, I wondered if there was a standard to sizes, and if so, if Flair was following it. I researched vent sizes across several HVAC supply sites and hardware stores, and my conclusion is that the Flair [vents](https://www.flair.co/smart-vent-engineering-and-dimensional-data-public) are always longer and narrower than standard wall/ceiling vent sizes (I did not compare floor vent sizes). @@ -152,6 +166,13 @@ I looked for vendors with reasonable pricing and thin white paintable plastic ma {{< gallery cols="4" >}} +{{< figure src="/media/2022/10/img_1708.jpg?w=726" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1709.jpg?w=617" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1752.jpg?w=601" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1751.jpg?w=519" alt="" caption="" >}}Laser cut white acrylic flange {{< /gallery >}} I shared the Fusion 360 projects and DXF files in [Autodesk Gallery](https://gallery.autodesk.com/projects/173188/flair-vent-flanges), and I created a shared [Ponoko cart](https://www.ponoko.com/share/MgBrJSraTWp83F79ob_Ql) with a ready to order 6x10 and 6x12 flange. For sizes other than 6x10 or 6x12 you will need to use Fusion 360 (free for hobby use) and adjust the dimensions in the sketch (\[modify\], \[change parameters\]), then export the projection as a DXF file. diff --git a/content/posts/2022/10/31/halloween-pumpkins-and-lights.md b/content/posts/2022/10/31/halloween-pumpkins-and-lights.md index 1c3b109..cf2ba0c 100644 --- a/content/posts/2022/10/31/halloween-pumpkins-and-lights.md +++ b/content/posts/2022/10/31/halloween-pumpkins-and-lights.md @@ -26,6 +26,11 @@ Last year I used wood planks as backing on my coro props, but that made hanging {{< gallery cols="4" >}} +{{< figure src="/media/2022/10/img_1731.jpg?w=768" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1702.jpg?w=1024" alt="" caption="" >}} + +{{< figure src="/media/2022/10/img_1700.jpg?w=623" alt="" caption="" >}} {{< /gallery >}} This year I used a [Kulp K16A-B](https://kulplights.com/product/k16a-b/) controller and a [Wired Watts](https://www.wiredwatts.com/build-a-controller-kit) enclosure that saved me the effort of 3D printing my own mounting hardware, and I just used more ports vs. power injecting. I also added [Wally's Lights 30W RGB floods](https://wallyslights.com/collections/flood-lights/products/30-watt-rgbw-12v-flood-light), and [Mattos Designs Diamond Pixels Balls](https://mattosdesigns.com/collections/smart-pixels/products/pre-buy-3-md-12v-diamond-3d-pixel-ball-36ct) wrapped around the tree.