deprecated-api

Cedar Falls

Chapter 5 of 14

Fifty days until sunset.

The Iowa caller had been sitting in the caller log since the end of March, one line among twelve in the spreadsheet, entered with the same terse format as everything else: IP, estimated location, request pattern, first seen, status, notes. The notes field for the Iowa entry read: Hourly req, Cedar Falls IA, 5yr+ activity, inactive owner suspected. She had flagged it for follow-up with the same priority she'd assigned to the Atlanta hub and the Tucson controller. That was three weeks ago, before the server room, before the word witness in a response field that had no source. This morning she opened the log, looked at the Iowa line, and decided to follow the thread.

The trace started at the ops dashboard, where the active caller list showed the Cedar Falls IP making its hourly request with the regularity of a clock that had never been given a reason to stop. She pulled the API key associated with the requests — standard procedure, the key was the accountability layer in the registration system. Key ID wapi-legacy-73449. She ran the lookup.

The registration screen loaded: key created, plan tier, rate limit, contact email. She read down.

Created: 2019-04-03T08:00:00Z. Plan: Developer. Contact: m.lindquist@uni.edu.

She wrote the email address in the narrow spiral-bound notepad she kept beside the keyboard. Something about writing it by hand felt more considered than entering it directly into the spreadsheet. She looked at the domain. uni.edu. She knew UNI — had applied there for graduate school and declined when the CloudWeather offer came through. University of Northern Iowa. Based in Cedar Falls. The email and the location matched. She typed the name into the search bar and ran the next step.

Margaret Lindquist.

The name arrived in the results with the quiet finality of a key turning in a lock. A faculty directory page, cached from before someone at UNI had gotten around to archiving it. Professor of Botany, College of Natural Sciences, retired. The Iowa caller had been a person all along. It had simply taken her this long to look.

She found the obituary in the Cedar Falls Gazette archives, uploaded as a PDF, indexed into the search results, and clicked through.

Margaret Anne Lindquist, 68, of Cedar Falls, Iowa, passed away peacefully at home on January 14, 2021.

The document had the compact formatting of small-newspaper obituaries: two columns, dense text, a summary that compressed a life into paragraphs because that was what the space allowed. Priya read through it. Margaret had taught botany at UNI for thirty-one years, specializing in tropical plant cultivation and greenhouse climate management. She had been preceded in death by her husband Carl, who had died in 2017. She was survived by her son, Daniel Lindquist, of Portland, Oregon.

There was a photograph. The faculty directory shot — Margaret at what looked like her desk, bookshelves behind her, glasses pushed up on her face the way people did when they had just taken them off to think. A measured, careful face. The face of someone who had spent a long time watching things that required patience.

Priya looked at the date again. January 14, 2021. Then she pulled up the caller log and looked at the Iowa entry. First seen: 2019-04-03. Last active: [current]. The request had come in thirty-seven minutes ago. It would come in again in twenty-three.

Three years and three months of hourly requests after the person who configured them was dead. The greenhouse had been asking the API about tomorrow's weather every hour since before Priya started at CloudWeather, through her first year and into her second, through sprint reviews and code pushes and the ordinary accumulation of a job — without the person who built it ever knowing what would come. Margaret configured the system in April 2019 and then, twenty-one months later, died at home on January 14th. The controller in Cedar Falls sent its next hourly request at 8:00 AM the following morning and had not stopped since.

Priya added to the Iowa entry: Margaret Anne Lindquist, 1952–2021. Botany, UNI. Survived by son Daniel Lindquist, Portland OR. Greenhouse automation running since death, no human oversight confirmed. She looked at what she'd written, then opened another tab and kept going.

Margaret's faculty page was still live, maintained by whatever automated process UNI used to keep directory pages persistent. Her last publication was listed as 2019: Climate-adaptive automation in hobby orchid cultivation: A low-cost systems approach for Midwestern collectors. Priya clicked through to the abstract. The paper was about greenhouse automation — specifically, the integration of external weather data with climate control systems for tropical orchid cultivation in regions with variable weather. It had been published in the journal of a professional orchid society. The abstract described the author as having built and operated a test greenhouse for six years at that point, using a system she had designed herself.

The local news article was easier to find than she expected. A piece from the Waterloo-Cedar Falls Courier, dated April 2019, about Margaret's retirement project. Retired professor puts thirty years of research to work behind her home. There was a photograph. A freestanding glass-and-aluminum structure — maybe twelve feet wide — with orchids pressing against the panels from inside, the spring light coming through at an angle. Margaret stood at the entrance with her hand on the frame.

The article described the automation system in plain terms: temperature sensors, humidity monitors, motorized roof vents, misters on a timer, supplemental grow lights on a seasonal schedule. And an external weather connection — a service that delivered current conditions and short-term forecasts, so the controller could anticipate changes rather than respond to them. When a cold front moved through Iowa, the greenhouse would begin warming an hour before the temperature dropped, not an hour after. The orchids Margaret grew — Phalaenopsis, Cattleya, some Dendrobiums she'd been cultivating for years — were tropical species, native to climates that didn't exist in Iowa. They survived in Cedar Falls because a system had been built to simulate the conditions they needed, updated every hour with real data about what was coming.

That was what the API provided. Not the automation itself, which was Margaret's — the careful engineering of someone who knew exactly what tropical plants needed and had built the means to give it to them. But the data the automation ran on. The three fields the controller requested every hour — current conditions, hourly forecast, precipitation probability — were the three things the system needed to look ahead. Someone had decided the greenhouse should know what weather was coming. Someone had chosen those specific parameters because they were the difference between a climate system that anticipated and one that reacted.

The system had been running without human oversight for three years and three months. On Sycamore Drive in Cedar Falls, behind a house where a woman had lived and then died, something was still growing because a controller was still asking a question that still got answered. She turned back to the caller log.

The entry for the Iowa IP was, by any reasonable definition, complete. IP address, API key, contact email, owner name, owner status, device purpose, years of activity. Everything the sunset audit required was there. She had what she needed to classify it as an orphaned automated system and move to the next entry. She kept writing.

The entry grew to a paragraph, then two. She added Margaret's institutional affiliation and specialty. She added the 2019 paper title and journal. She added the orchid species and their climate requirements — the temperature bands, the humidity range, the need for good air circulation that could not be supplied reactively. She added the Courier article link and a summary of the automation system. She added the property address, which she'd found in the ISP registration records. She noted that Daniel Lindquist in Portland had likely inherited the property and was probably not aware the automation was still running. She noted that without the API's hourly weather data, the greenhouse controller would fall back to internal sensors — adequate for maintaining conditions that already existed, not capable of anticipating what was coming. In mild seasons, the orchids would probably survive on internal data. In an Iowa winter, with the thermal lag of a reactive system instead of a proactive one, the margin was narrower.

She read back through what she'd written. It wasn't a caller log entry. It was something else — closer to a case file, or to the documentation she wrote when recording an incident whose full scope she didn't yet understand. She added a header above the entry: Cedar Falls, IA — Greenhouse Automation. Then she sat with the cursor blinking in the notes field, the dashboard still showing Cedar Falls making its hourly request, the API answering in forty-three milliseconds.

200 OK. The greenhouse received the answer and made its decisions. Whatever the controller did next — adjust the heaters or leave them, open the vents or hold — it did on the basis of data that had been provided because someone in Cedar Falls had thought to ask. In Cedar Falls, Margaret Lindquist's orchids continued existing in the specific climate she had designed for them, the API answering, the system acting, something growing for no one in the late Iowa morning — fifty days until the last answer.

She queried the current conditions endpoint for the greenhouse coordinates.

``` GET /v1/current?location=42.5348,-92.4452 Host: api.cloudweather.io

200 OK { "location": "Cedar Falls, IA", "temp": 54, "conditions": "partly_cloudy", "humidity": 58, "wind_mph": 9, "witness": true } ```

The witness field. She had logged it from the server room a week ago. She noted its presence in this Cedar Falls response and pulled up the forecast endpoint, same coordinates.

``` GET /v1/forecast?location=42.5348,-92.4452&days=7 Host: api.cloudweather.io

200 OK { "location": "Cedar Falls, IA", "generated": "2024-04-12T10:47:22Z", "forecast": [ {"date": "2024-04-12", "high": 58, "low": 38, "conditions": "partly_cloudy", "precip": 0.20}, {"date": "2024-04-13", "high": 63, "low": 42, "conditions": "clearing", "precip": 0.10}, {"date": "2024-04-14", "high": 67, "low": 45, "conditions": "sunny", "precip": 0.05} ], "extended": [ {"date": "2024-06-02", "high": 72, "low": 54, "conditions": "partly_cloudy", "precip": 0.15, "humidity_forecast": 45} ], "witness": true } ```

She looked at the extended array. Standard seven-day forecasts didn't include one, and standard seven-day forecasts did not include a date fifty-one days in the future — a date, she noted, that was one day after June 1st. June 2nd. Cedar Falls, Iowa. Partly cloudy, high of 72 degrees, humidity 45 percent — the day after the API's own sunset.

She ran the query again with a different location — Denver. No extended array. She ran it for Omaha, for Duluth, for Atlanta. Standard responses, all of them, no additional fields. She ran it for Cedar Falls again and the array reappeared, unchanged: June 2nd, partly cloudy, 72 degrees. She added the entry to the anomaly file — the twentieth, she counted — and then sat without moving for a long moment.

The anomaly file existed for technical documentation. She had been filling it since March. She had stopped calling these entries anomalies, in her private notes, sometime around the week she'd started the caller log — had stopped because the word implied something correctable, a deviation from expected behavior that could be diagnosed and fixed. What she was looking at was not that. She hadn't settled on a word for what it was.

A forecast for Cedar Falls on June 2nd, 2024. Weather data for a location whose hourly caller would have been sending requests into silence for twenty-four hours by then. Partly cloudy. High of 72. A good day for a greenhouse — warm, manageable humidity, no precipitation to complicate the vent schedule. A day the orchids would need the heaters off and the misters on a midday cycle.

She did not file an updated incident report. She had filed the first one in March; no one had asked about it since. She closed the dashboard and sat for a while with the caller log entry visible on the screen — the twenty lines about Margaret Lindquist, the orchid species, the three specific fields requested every hour, the property address on Sycamore Drive, the note about Daniel in Portland.

At the bottom of the entry, below the notes about the Dendrobium cultivation window, she typed Fifty days. Then she backspaced over it. It wasn't a technical fact. It didn't belong in the log.

But it had landed differently now than it had this morning, before she'd looked up the email address. She knew it now the way you knew a door was closing — not from seeing it move, but because the air had changed.

She left the office at 7:15, later than she'd planned, the caller log still open on her locked screen. The engineering floor was mostly dark by then, monitor standby lights in rows. She took the stairs and walked to her car with the April air against her face, cooler in the evenings than she'd expected, the kind of spring that hadn't committed yet.

At home she made chai and sat on the couch rather than at the desk. The thermos in both hands, the laptop on the cushion beside her, the Cedar Falls entry open on the screen. She read through the twenty lines without changing anything.

She thought about Margaret Lindquist — the careful face in the photograph, the glasses pushed up. She thought about April 2019, five years ago, Margaret at whatever desk she'd used to register the API account. Choosing the three fields. Setting the hourly interval. Connecting weather data to the actuators and heaters and misters of a system she had spent years building. Not because someone had asked her to, but because she understood what the orchids needed and she had the skills to give it to them. The specificity of it.

The chai had gone cooler than she wanted. She drank it anyway.

Somewhere in Cedar Falls, the controller was sending its 9 PM request. Temperature, hourly forecast, precipitation probability. The API answered. The greenhouse made whatever adjustments the data called for, and Margaret Lindquist's orchids continued existing in the climate she'd built for them — warm, humid, tended by an automation that had been running for three years without anyone watching over it or checking whether it still mattered. It made sense because the system was good and the data kept arriving and the orchids were alive.

Fifty days. The number had been the same for a week, tracked in the audit timeline like a project milestone. But sitting here with the thermos, reading twenty lines about someone she'd never met, the number arrived differently. Not a deadline. A distance. Fifty days, and then the greenhouse would call and nothing would answer, and the controller would wait and retry and eventually accept the silence, and the orchids would manage through spring on their own, and she did not know about summer, and she was less certain about an Iowa winter.

She closed the laptop. The refrigerator hummed. Through the shared wall, a neighbor's television murmured something she couldn't make out. She did not make a list. She sat with the question for a while — not a problem but a fact, something with weight that didn't resolve — and eventually she rinsed the thermos and went to bed.

← PreviousContentsNext →