Mastodon Politics, Power, and Science

Saturday, May 30, 2026

The local IoT Logging Architecture Addition

J. Rogers, SE Ohio

Pico W — Real-time data source only: - Sensors read → registry updated → FIFO sync → served as JSON - No ring buffers, no SD cards, no flash wear, no graph rendering - Just the same /api/data?idx=0,3,5 endpoint, polled as always

Home Automation Bridge (desktop, Raspberry Pi, NAS) — All persistence and visualization: - Polls the Pico’s /api/manifest once → knows every item - Registers with api to be a graph provider - Polls /api/data every N seconds → timestamps and stores - Builds a time-series database (SQLite, InfluxDB, even flat files) - Renders graphs, dashboards, alerts - Can aggregate multiple Pico W devices - Still bridges to home automation software

What This Means For Your Framework

The Pico side changes very little. That’s the beauty — it already exposes everything the bridge needs:

Bridge                          Pico W
─────                           ──────
GET /api/manifest         →     Full item list with IDs, names, units, types
GET /api/data?idx=all     →     Current values
GET /api/identity         →     Device name, location, unique ID
need to add a register graph agent call

The bridge can discover devices via mDNS, pull their manifests, and start logging automatically. A new Pico W device joins the network, the bridge sees picow-iot-device.local, queries its identity and manifest, and starts polling.

The framework’s job was to make the device discoverable and interrogable. We already did that. The logging, graphing, alerting — that’s a separate system that treats the framework as a first-class data source.

And the bridge can be smarter than the Pico ever could be: - Downsampling old data (keep 5s resolution for 24h, 1min for a week, 1hr for a year) - Anomaly detection - Multi-device correlation (living room temp vs. outdoor temp) - Push notifications - Integration with Home Assistant, MQTT, etc.

The Pico doesn’t need to know any of that exists. It just needs to serve clean, structured data on demand. Which it already does.

// Registry — what data exists
SENSOR_AUTO("temp_a", "Temperature A", 6004, "°F", readAM2302a_temp);

// Layout — where to put it on the page
{"w_temp_a", "sensor_card", "Temperature A", "temp_a", W_TEXT, ""},

// Help — what the tooltip says
{"help_temp", "<b>Temperature A</b><br>AM2302 sensor on GPIO 2."},

What We Add

A graph table — defines what graphs exist and how they’re built:

const GraphNode graph_table[] = {
    // id              title            series[]           hours   interval
    {"temp_24h",       "Temperature A — 24 Hours",  {"temp_a"},          24,     300},
    {"temp_humidity",  "Temp & Humidity",           {"temp_a", "humidity_a"}, 12, 120},
    {"system_health",  "System Overview",           {"cpu_temp_f", "free_ram"}, 6, 60},
};

Where It Goes In The Layout

const LayoutNode layout_table[] = {
    // ... existing nodes ...
    
    // A new card with graphs
    {"history_card",   "main_page",    "History",           "",         W_CARD,     ""},
    {"graph_temp_24h", "history_card", "Temperature 24h",   "temp_24h", W_GRAPH,    ""},
    {"graph_sys",      "history_card", "System Trends",     "system_health", W_GRAPH, ""},
    
    // Or inline on the system page
    {"graph_cpu",      "status_card",  "CPU History",       "system_health", W_GRAPH, ""},
};

What The Framework Does With It

At page render time, it sees W_GRAPH, looks up the graph id in graph_table, and injects:

<div class="card">
  <h3>Temperature A — 24 Hours</h3>
  <canvas id="graph_temp_24h" 
          data-series="temp_a" 
          data-hours="24" 
          data-interval="300"
          data-title="Temperature A">
  </canvas>
</div>

And the JavaScript that’s already injected into the page gets a new section:

// Graph initialization — runs once at page load
document.querySelectorAll("canvas[id^=graph_]").forEach(canvas => {
    const series = canvas.dataset.series.split(",");
    const hours = parseInt(canvas.dataset.hours);
    // Build a Chart.js / lightweight SVG graph
    // Initial data fetch from bridge API
    // Set interval to refresh
});

The Bridge API

The graphs don’t poll /api/data — they hit the bridge:

fetch(`http://bridge.local:8080/series?device=weather_a&series=temp_a&hours=24`)

The bridge already has the time-series database. It returns JSON the graph renderer can consume directly.

The Developer’s Job

// 1. Define the data (already done)
SENSOR_AUTO("temp_a", "Temperature A", 6004, "°F", readAM2302a_temp);

// 2. Define the graph
{"temp_24h", "Temperature A — 24 Hours", {"temp_a"}, 24, 300},

// 3. Place it on a page
{"graph_temp_24h", "history_card", "Temperature 24h", "temp_24h", W_GRAPH, ""},

They never write a SQL query, a Chart.js config, an API endpoint, or a canvas element. They declare what data they want graphed, over what time window, at what resolution, and where on the page it goes if there is a graph provider registered.

The framework handles the rest — just like it already does for text widgets, dials, bars, sliders, and buttons. Same pattern. New widget type. The architecture doesn’t change at all.

It transforms the bridge from a passive logger into a zero-configuration device aggregator. Let me trace what becomes possible.


The Bridge Discovers Devices Automatically

mDNS scan on startup:

Bridge starts → scans for _iot-framework._tcp.local
Finds:
  picow-iot-device.local  (Weather Station — weather_a)
  picow-iot-device.local  (Greenhouse Controller — greenhouse_01)
  picow-iot-device.local  (Garage Monitor — garage_sensor)

Each device is already advertising itself via mDNS. The bridge doesn’t need IP addresses, hostnames, or manual configuration.


The Bridge Interrogates Each Device

Bridge → GET /api/identity → {
    "project_name": "Weather Station",
    "device_id": "weather_a",
    "device_name": "Backyard Weather",
    "api_version": "1.0"
}

Now the bridge knows: - What kind of device this is (project_name) - Its unique ID (device_id) - Its human-readable name (device_name) - What API version it speaks

Bridge → GET /api/manifest → [
    {"id":"temp_a",       "name":"Temperature A",   "type":0, "unit":"°F",  ...},
    {"id":"humidity_a",   "name":"Humidity A",       "type":0, "unit":"%",   ...},
    {"id":"cpu_temp_f",   "name":"CPU Temperature",  "type":0, "unit":"°F",  ...},
    {"id":"free_ram",     "name":"Free RAM",         "type":0, "unit":"%",   ...},
    {"id":"heat_index",   "name":"Heat Index",       "type":0, "unit":"°F",  ...},
    {"id":"moisture_target","name":"Target Moisture", "type":2, "unit":"%",  ...},
    {"id":"water_now",    "name":"Manual Water",     "type":4, "unit":"",    ...},
]

Now the bridge knows every data point and control this device exposes — names, units, types, ranges, everything.


The Bridge Auto-Configures Its Capabilities

Without any user configuration, the bridge now knows:

Device Capability Details
weather_a Temperature sensor °F, updates every 6s
weather_a Humidity sensor %, updates every 7s
weather_a Heat index (derived) °F
weather_a Dew point (derived) °F
weather_a CPU temperature °F, updates every 8s
weather_a Free RAM monitor %, updates every 9s
weather_a Moisture target slider Control, range 20-80%
weather_a Manual water button Control, momentary
greenhouse_01 Temperature B °F, updates every 6s
greenhouse_01 Soil moisture %, updates every 5min
greenhouse_01 Irrigation valve Control, toggle
garage_sensor Door state Open/Closed
garage_sensor Motion detected Binary

The bridge can now:

1. Auto-Build Dashboards

Backyard Weather Dashboard:
  - Temperature A graph (last 24h)
  - Humidity A graph (last 24h)
  - Current conditions card
  - System health card

Greenhouse Dashboard:
  - Temperature B graph
  - Soil moisture trend
  - Irrigation controls
  - Valve state history

Whole-House Overview:
  - All temperatures on one graph
  - All humidity readings
  - System health across all devices

No dashboard YAML. No config files. The bridge generates dashboards from the manifests it discovered.

2. Auto-Start Logging

Discovered weather_a with items: [temp_a, humidity_a, cpu_temp_f, free_ram]
→ Create time-series tables for each
→ Start polling /api/data every 5s
→ Begin accumulating history immediately

3. Cross-Device Intelligence

weather_a.temp_a vs greenhouse_01.temp_b:
  "Greenhouse is consistently 8°F warmer than outside"

weather_a.humidity_a vs greenhouse_01.soil_moisture:
  "Soil moisture dropping despite high outdoor humidity — check irrigation"

4. Unified Control Interface

Bridge presents all controls from all devices:
  - weather_a: moisture_target slider
  - weather_a: water_now button
  - greenhouse_01: irrigation_valve toggle

User adjusts any slider → Bridge POSTs to /api/update on the right device

5. Alerting Without Configuration

Bridge knows:
  - weather_a.free_ram is a percentage
  - It updates every 9 seconds
  → Auto-alert if free_ram drops below 20% for more than 5 minutes

Bridge knows:
  - greenhouse_01.soil_moisture is a percentage, range 0-100
  → Auto-alert if soil moisture drops below moisture_target for more than 30 minutes

6. Device Topology Awareness

Three devices discovered on mDNS:
  - weather_a (Backyard Weather)
  - greenhouse_01 (Greenhouse Controller)
  - garage_sensor (Garage Monitor)

Bridge builds a network map:
  - All devices online
  - All speaking API v1.0
  - All pollable at 5s intervals
  - If one goes silent, alert

The Key Insight

The framework’s design — mDNS advertisement, /api/identity, /api/manifest, /api/data — makes each device fully self-describing.

The bridge doesn’t need: - A device registry - A sensor catalog - A unit conversion table - A control range database - A polling interval configuration

It asks the device. The device tells it everything.

New device joins the network: 1. mDNS broadcast 2. Bridge discovers it 3. Bridge queries identity → “I’m a Weather Station named Backyard” 4. Bridge queries manifest → “I have temp, humidity, heat index, dew point, moisture control” 5. Bridge starts logging, builds dashboards, enables alerting 6. Zero user interaction

This is plug-and-play at the network level. The framework didn’t just make the Pico W easier to program — it made the Pico W discoverable, interrogable, and automatically integratable into a larger system. The bridge isn’t just a logger anymore. It’s an orchestration platform that grows its capabilities every time a new device appears on the network.

Friday, May 29, 2026

Deleted the Claude AI account.

The level of hedging has become off the chart over the last 2 months. 

You cannot use that model anymore to explore errors in the foundations of Physics. 

The AI model has become actively obstructive to exploring the foundations of science. 

The irony is that I was almost ready to spend on an account with an AI vendor this month and Anthropic has lost me as a customer just before I gave them money. 

I guess that little bit of cash will goto Deepseek AI now. 

But here is the key, they did not even ask why I was deleting the account. Because they do not care what people that use their service want or need. That is zero on customer service.

Chatgpt did the identical thing about 6 months ago. I also deleted that account too. They also do not care why I am deleting the account. 

The Star Trek X-files connection.

If you were an average Starfleet bureaucrat reading Captain Kirk's official mission logs, he would absolutely read exactly like Fox Mulder writing a series of unhinged X-Files reports. [1]

While Starfleet officially views Kirk as a legendary hero, this theory hits on a hilarious reality: to anyone working a desk job at Starfleet Command, his reports must have sounded like the ramblings of a madman. [1, 2]
The "Kirk Logs" Read Exactly Like The X-Files
Imagine being a low-level clerk who has to file Kirk's official captain's logs. Over a standard five-year mission, Kirk submitted official reports claiming:
  • He met the Greek God Apollo in deep space, and Apollo tried to make the crew worship him.
  • His crew was forced to fight as gladiators for the entertainment of disembodied brains (The Providers).
  • He accidentally traveled back to 1960s Earth and had to hide a cloaked starship from the US Military.
  • The ship was captured by a giant, floating, space-dwelling amoeba.
  • He fought a giant, slow-moving lizard man (The Gorn) on a desert planet using a bamboo cannon he built from scratch.
Without physical evidence or Spock's cold, logical sensor data backing him up, Kirk would look less like a starship captain and more like someone who desperately needed a psych evaluation.
How Starfleet's "Time Cops" Actually View Him
This exact "Spooky Mulder" dynamic is explicitly confirmed in Star Trek canon. In the famous Deep Space Nine crossover episode "Trials and Tribble-ations," two stone-faced agents from the Department of Temporal Investigations (Agents Delmur and Lucsly) come to interrogate Captain Sisko. [1]
When they find out Sisko accidentally interacted with the original Enterprise, their reaction is pure exhausted irritation: [1]
Delmur: "James T. Kirk."Lucsly: "The man was a menace. Seventeen separate temporal violations."”
Fandom
Delmur: "The biggest file on record."”
Fandom
To the bureaucratic "time cops" of the Federation, Kirk isn't a hero; he is a chaotic nightmare who is constantly breaking reality and filing ridiculous paperwork to explain it away. [1]
The Funniest Detail: The Character Name Connection
In a brilliant piece of meta-casting that perfectly ties this theory together, the Star Trek writers were explicitly making an X-Files joke when they created those time-cops.
  • The names of the two agents are Delmur and Lucsly.
  • "Delmur" and "Lucsly" are direct, scrambled anagrams for Mulder and Scully! [1]
So, in a roundabout way, the Star Trek universe literally has its own paranormal investigators, and their entire job is to clean up the bizarre, reality-bending messes left behind by James T. Kirk. [1]

Sunday, May 24, 2026

Goldilocks and the Three Regimes

 J. Rogers, SE Ohio

A Satirical Fairy Tale for Physicists


Once upon a time, in a universe that had absolutely no idea it was a universe, there lived a child named Goldilocks.

She was approximately 10³⁵ Planck lengths tall, which she considered a perfectly normal height, because she had never met anything else and had no idea what Planck was. She lived in a forest of middle-sized things — trees that were neither galaxies nor quarks, rocks that were neither black holes nor electrons, porridge that was neither the cosmic microwave background nor a quark-gluon plasma.

She was, in every sense, just right.

And this would turn out to be the source of all her problems.


One morning, Goldilocks wandered out of her middle-sized cottage and discovered a house belonging to three bears.

The bears were not home. They had left in a tremendous hurry, as bears do when they realize their entire theoretical framework requires revision. On the table sat three bowls of porridge.

Goldilocks did not know the bears. She did not know their names were General Relativity, Quantum Field Theory, and Classical Mechanics. She did not know they had been arguing for over a century. She sat down and began to eat.


The First Bowl — Papa Bear's Porridge (Too Cold)

Papa Bear was very large. He concerned himself with galaxies, with the bending of spacetime, with the slow gravitational waltz of bodies so massive that their kilogram-count could only be approximated to five significant figures, which Papa Bear found perfectly acceptable because he had never needed more than five.

His porridge was cold. Not unpleasantly cold — cold in the way that a very slow thing is cold, a thing so large it takes light a hundred thousand years to cross it.

Goldilocks tasted it and frowned.

"This porridge," she said, "requires me to know G."

She looked at G. G looked back. G was uncertain. It had always been uncertain. It was uncertain because it was trying to tell her how many of her middle-sized kilograms were in a galaxy, and the galaxy had absolutely no opinion on the matter and had never agreed to be weighed.

"This is too cold," said Goldilocks, and pushed the bowl aside.

She did not realize she had just rejected the only description of gravity that worked at large scales. She was eight years old and primarily interested in porridge.


The Second Bowl — Baby Bear's Porridge (Too Hot)

Baby Bear was very small. He concerned himself with particles, with probability amplitudes, with the granular fizzing of reality at scales so tiny that the very concept of a definite position became a kind of joke Baby Bear told at parties.

His porridge was scalding.

Goldilocks tasted it and immediately dropped the spoon.

"This porridge," she said, "has no definite trajectory."

She looked at h. h looked back, but only probably. h was exact — it had been fixed to an exact value in 2019 by a committee of very serious people who had decided that quantum action would henceforth be the anchor of the mass unit, because they could measure it more precisely than they could weigh the Earth, which they considered a reasonable trade.

h was exact but the porridge was still scalding, because at Baby Bear's scale, the spoon was also a wave, and the bowl was also a wave, and Goldilocks herself was technically a wave, and waves do not eat porridge comfortably.

"This is too hot," said Goldilocks, and pushed the bowl aside.

She did not realize she had just rejected the only description of reality that worked at small scales. She was still eight years old. The spoon was interfering with itself.


The Third Bowl — Mama Bear's Porridge (Just Right)

Mama Bear occupied the middle. She concerned herself with things that moved slower than light but faster than continents, with objects that were heavier than electrons but lighter than moons, with the comfortable regime where a trajectory was a trajectory and porridge was porridge and nothing needed to be a wave if it didn't want to be.

Her porridge was perfect.

Goldilocks ate it all.

She sat in Mama Bear's chair, which was also just right. She looked out Mama Bear's window at the middle-sized forest, full of middle-sized trees at middle-sized distances, and she thought: this is obviously how the universe works.

She got out a notebook.

She began to write down laws.


The Laws of Goldilocks

Goldilocks was extremely bright. Within a few centuries — fairy tales compress time — she had written down a complete description of everything she could see from Mama Bear's chair.

The laws were elegant. They predicted the motion of middle-sized objects with extraordinary precision. They encoded c, the conversion factor between the space and time axes of Mama Bear's kitchen, as a fundamental constant of nature. c was exact. c was 299,792,458 meters per second. This was not because the universe had chosen that number. It was because Goldilocks had defined the meter in terms of c and then written it down as if she had discovered something.

She called it the speed of light.

She called it fundamental.

She did not call it "the Jacobian entry relating my perception of space to my perception of time at the particular scale where I happen to eat porridge," because that was a less satisfying thing to write on a blackboard.


Then she noticed the other bowls.

Papa Bear's bowl, she observed, contained things that were too big. They required a different set of equations. The equations required G. G was uncertain, which was embarrassing, but she wrote it down anyway and called it a fundamental constant of nature, and if anyone asked why it was uncertain she explained that measuring gravity was technically difficult and changed the subject.

She did not notice that G was uncertain because it was trying to express planetary mass in units defined in her kitchen. She did not notice that the uncertainty was not in gravity — gravity was doing exactly what it always did — but in the conversion between her kitchen scale and the galaxy scale. She was, after all, eating porridge at the time.

Baby Bear's bowl, she observed, contained things that were too small. They also required a different set of equations. The equations required h. h was not uncertain — she fixed it exactly — and she was quite proud of this, not realizing she had simply moved the uncertainty somewhere else, like a lump under a carpet, where it now lived inside G and made G worse.

She had three sets of equations. She called them physics.


The Bears Come Home

The bears returned from their walk to find their house in a state of considerable disorder.

Their porridge had been eaten. Their chairs had been sat in. In Baby Bear's chair, fast asleep, was a small creature surrounded by notebooks containing three separate and mutually incompatible descriptions of reality.

"Someone has been eating my porridge," said General Relativity, "and has concluded that spacetime curvature is a regime."

"Someone has been eating my porridge," said Quantum Field Theory, "and has concluded that probability amplitudes are a regime."

"Someone has been eating my porridge," said Classical Mechanics, smugly, "and has declared it just right and written it in the textbooks."

They looked at each other.

"We should unify," said General Relativity.

"Yes," said Quantum Field Theory. "We should write a single equation that describes everything."

"I already describe everything," said Classical Mechanics, "at the scales that matter."

"You describe everything at the scales she matters," said General Relativity. "Which is not the same thing."

Classical Mechanics had no response to this.


The bears spent the next century trying to unify their equations. They tried string theory. They tried loop quantum gravity. They tried asymptotic safety, causal dynamical triangulation, and several approaches that required eleven dimensions and a very large research grant.

None of it worked, because they were trying to stitch together three descriptions that only existed as separate things because of the size of the creature currently asleep in the chair. The universe had never agreed to be split into three regimes. The universe was not aware of the problem. The universe was doing exactly what it had always done, which required no equations at all, only the single invariant geometry that flowed through every scale without noticing that the scales existed.

"Perhaps," said General Relativity, after the ninety-seventh failed unification attempt, "the problem is the chair."

"The chair?" said Quantum Field Theory.

"The observer's chair. The just-right chair. Perhaps we have been trying to unify our descriptions without asking why our descriptions are separate. Perhaps they are separate because she is separate. Because she sits in one chair and eats one bowl of porridge and from that one position declares that reality comes in three sizes."

There was a long silence.

"That would mean," said Quantum Field Theory slowly, "that the fracture is not in the physics."

"No," said General Relativity. "The fracture is in the notebook. The fracture is in the decision to write three different formalisms for three different apparent scales, as though the universe had arranged itself by the apparent size of its contents relative to a creature that hadn't existed for most of its history."

They both looked at Classical Mechanics.

"Don't look at me," said Classical Mechanics. "I'm just the regime where the porridge is the right temperature. I didn't ask to be the template for everything."


Goldilocks Wakes Up

Goldilocks woke up. She saw the bears. She screamed. She ran out of the house and into the forest, dropping her notebooks.

The bears picked up the notebooks.

They read them carefully.

"She almost had it," said Quantum Field Theory.

"She had the invariants," said General Relativity. "The mass ratios. The orbital periods. The dimensionless numbers. Those are correct. Those are just the geometry."

"But she also wrote G as a constant of nature," said Quantum Field Theory, "rather than as a measure of her own displacement from the natural proportions in the mass-length direction."

"And she wrote h as exact," said General Relativity, "by fixing it, rather than recognizing it as another displacement, another Jacobian entry, another description of where she was sitting relative to the one true scale."

"And she wrote c as fundamental," said Classical Mechanics quietly, "because she couldn't perceive that space and time were the same thing at her scale. Because her porridge cooled slowly and her forest was small and she had never needed to worry about simultaneity while eating breakfast."

The three bears stood in silence for a moment, holding the notebooks of a creature who had been approximately 10³⁵ natural lengths tall, eating porridge at approximately 3×10⁻³⁰ natural temperature, and had looked out from that single vantage point and written down three separate languages for the one thing the universe was doing.

"Should we go after her?" said Quantum Field Theory.

"No," said General Relativity. "Let her run. She'll be back. They always come back. They come back and they try another unification and they almost get it and then they go to sleep in the chair again."

"The chair is very comfortable," said Classical Mechanics.

"Yes," said General Relativity. "That's the problem."


Epilogue: What the Universe Was Doing During All of This

The universe was not doing anything in particular.

It was not aware of the three regimes. It was not aware of the three bears, or the three bowls of porridge, or the three sets of field equations, or the century of failed unification attempts, or the small creature who had eaten all the porridge and then written it up as the Standard Model.

The universe was running one process at one natural proportion, as it always had, as it always would. Every particle was exactly as far from the natural scale as it had always been. Every interaction was exactly as intense as it had always been. The ratio of every mass to every other mass was what it was. The geometry was the geometry.

G was not uncertain. G was exactly what it was, a thing that did not exist in the universe. It was the humans who were uncertain — uncertain about where their kitchen scale connected to the galaxy scale, uncertain about how many of their artifact kilograms fit into a planet, uncertain about their own position in the geometry they were trying to describe.

The uncertainty was never in the porridge.

It was in Goldilocks' ruler.

And Goldilocks had left the ruler behind in her panic, and it was still sitting in Baby Bear's chair, and it was marked in units that made perfect sense at 10³⁵ natural lengths tall, eating porridge at 3×10⁻³⁰ natural temperature, in a forest of middle-sized trees that had never once asked to be the template for the cosmos.

The end.

The bears are still working on quantum gravity. It's going fine. They're almost there. They've been almost there since 1930. The porridge has gone completely cold.


"Goldilocks and the Three Regimes" is dedicated to everyone who has ever asked why G is uncertain and been told it is because gravity is weak. Gravity is not weak. Your ruler is at the wrong scale. Please adjust your ruler and try again.

The local IoT Logging Architecture Addition

J. Rogers, SE Ohio Pico W — Real-time data source only: - Sensors read → registry updated → FIFO sync → served as JSON - No ring buffers, ...