deprecated-api

The Census

Chapter 9 of 14

Twenty-two days until sunset.

Priya spread the printouts across her desk the way she organized paper during finals week at Purdue — overlapping where they related, separated where they didn't. The caller log was open on her laptop, the spreadsheet started six weeks ago and now expanded to seventeen columns. IP address. Location. Device type. Owner status. Request pattern. Connected since. Purpose. And a column added two weeks back without a header — the notes that kept lengthening past what notes were supposed to contain. Twenty-three callers in total. The greenhouse and the hospital she knew, and twenty-one others. The thermos of chai sat at the corner of the desk, lid off, cardamom and black tea rising into the apartment air. Saturday morning. No stand-up, no Slack notifications, no one to report to about why the sunset task was still uncomplete. She started with the Duluth caller.

The request came in daily at 6:02 AM Central, never varying — a single endpoint, current conditions only. No forecast, no hourly breakdown, no precipitation probability. Just the present moment, every morning, with a precision in the timestamp she noticed early and hadn't investigated because its simplicity seemed less urgent than the greenhouse or the hospital, and now she traced it. The IP resolved to a residential ISP in Duluth. The API key registration led to a personal account: Gerald Huang, registered February 2020, a Gmail address, and in the optional address field — which most people didn't bother with — 1847 Maple Hill Drive, Duluth, Minnesota. She ran the address through the property records aggregator. Transfer date: November 2022. Gerald Huang, prior owner. Deceased estate, sold through probate the following spring.

She searched the name. The obituary was in the Duluth News Tribune, dated November 14, 2022. Gerald Huang, 71, longtime resident, retired civil engineer with the city's infrastructure department, survived by his daughter Michelle in Chicago and two grandchildren. He had enjoyed sailing on Lake Superior in summer and, per Michelle quoted in the text, had become an amateur weather enthusiast in his later retirement years. He'd kept a handwritten log of daily conditions for decades. In 2019 he'd bought a Davis Vantage Pro2 station, mounted it on the garage roof, and spent the better part of a year learning to calibrate it before he found the API that let him automate the morning check. Current conditions. Every morning, before coffee, before anything — he'd wanted to know what the day was going to be.

The station was still on that roof. She didn't know if the new owners had noticed it. It didn't matter whether they had. Since November 2022, through the iron cold of Duluth winters and lake-ice breakup in spring and the summer light Gerald Huang had not seen again — every morning at 6:02 AM the station sent its request north and east through the internet's infrastructure and arrived at WeatherAPI v1.2.3 asking about the weather. Not 6:00. Not 6:05. 6:02, because that was when he'd set it up, which was probably when he'd gotten up, the rhythm of a retired man's whole quiet morning.

She typed into the notes column: Retired civil engineer. Handwritten weather log for decades. Wanted to know the day before he got out of bed. Station still on the roof at 1847 Maple Hill. She added his connection date and his death date, and noted that the station had not missed a morning between the two.

The Tucson caller was registered to a commercial account: Desert Verde Landscaping LLC. The website existed in a cached archive from 2019 — irrigation design for residential properties, a small operation. The domain had lapsed. Arizona business records showed the LLC dissolved in January 2020. But the controller was still calling — every four hours now that April had arrived, daily through winter. It knew the season. Someone had programmed it with that understanding, and that understanding had outlasted the company by four years. She couldn't trace the physical address. The IP was registered to a residential ISP in suburban Tucson. Someone's yard was watering on schedule. The yard was probably green.

The Atlanta hub was stranger — irregular requests matching smart home behavior, motion detection or temperature thresholds activating it. The API key traced to a 2019 home purchaser in Marietta. The house had sold again in 2023. New owners who didn't know a previous owner's automation hub was still running in the walls — adjusting something, responding to something, querying the weather for reasons configured by someone who'd moved or forgotten to decommission before they left. They might have noticed a light that responded to motion, a thermostat that adjusted itself. They might have thought it was a feature.

Then the four untraceable ones. She spent forty minutes on them and arrived at nothing. IPs with no registration data. Device fingerprints either generic or spoofed. Emails to the relevant ISPs returned polite non-responses, data policy citations, the bureaucratic wall of privacy regulations she couldn't get through without a subpoena she had no authority to request. One set of coordinates was in the middle of Lake Superior, which was impossible. The API answered all four the same way it answered everything else: 200 OK, current conditions, the weather that was. She marked those rows as unresolved and left the notes columns blank, because there was nothing to put in them. That left nine others at varying degrees of completion — a personal weather station in Vermont, a smart thermostat in suburban St. Louis, several in the category of probably orphaned, cannot confirm. She completed what entries she could. She marked what she couldn't determine, then switched to the mapping tool.

Twenty-three pins. Color-coded by owner status — red for confirmed deceased, amber for dissolved company or verifiably gone owner, blue for occupied property with unclear provenance, gray for untraceable. The greenhouse in Cedar Falls was red. The hospital in Omaha was amber, because the hospital itself still existed and she'd felt the need to mark the distinction. Gerald Huang's station in Duluth was red. The Tucson controller was amber. The Atlanta hub was blue, even though the system was as abandoned as the rest, just housed in a home where people still lived. The four gray pins sat where she'd estimated the ghost callers to be, which might not be where they were.

The geography reached further than she'd expected when the callers were still a list. Duluth at the top of the country, at the Canadian border. The Vermont station she'd never fully traced. One amber pin in New England she'd added tentatively. The Tucson controller at the continent's southern edge. From the Pacific time zone across to the Atlantic seaboard, more than a dozen systems still dependent on a service that would stop answering in twenty-two days. Fourteen states. Twenty-three systems.

She sat with the map for a while. The apartment was quiet around her. The map was the first time she'd seen all of them at once — not as log entries in a spreadsheet but as points on a geography, as a scale. In twenty-two days, every pin would go dark at the same moment. She ran a check on the Cedar Falls coordinates — the greenhouse — more from habit than purpose.

``` GET /v1/current?location=42.5348,-92.4452&fields=temp,humidity,precipitation Host: api.cloudweather.io

200 OK { "location": "Cedar Falls, IA", "temp": 58, "humidity": 62, "precipitation_prob": 15, "witness": true, "connected_since": "2019-04-03T08:00:00Z", "duration": 1863, "remaining": 22 } ```

She read it twice before the new field registered. remaining: 22.

She ran the Omaha coordinates — the hospital scheduler's request, the parameters she could type without looking. remaining: 22. She ran Gerald Huang's Duluth station, the coordinates she'd confirmed that morning. remaining: 22. Tucson, Atlanta, the Vermont station she'd half-traced. Each one. She ran the queries for all twenty-three locations she had coordinates for, and each response, after the documented fields and the undocumented fields that had been accumulating for weeks, ended with the same number.

She went to her archived files and opened yesterday's cached response log, saved automatically since early April when the anomalous fields started. She found the Cedar Falls response from the previous evening. remaining: 23. Yesterday, twenty-three. Today, twenty-two.

She'd searched the codebase with Marcus. Run the `grep` commands herself and watched zero results come back for `witness`, for `connected_since`, for `duration`. No scheduled counter in the code. No field in the database schema tracking days until a sunset date. No variable in the deployment configuration that referenced June 1st, nothing that would let the API calculate the difference between today and then and decrement it daily. Marcus had built the code, knew every room in it, and found nothing. She followed behind him and found the same absence in each place.

The custom fields had appeared one at a time over two months. Witness first, in the server room in early April. Then connected_since, after she traced the greenhouse back to Margaret Lindquist. Then duration, when she was deep in the hospital scheduler. She documented each field, searched for its source, found nothing, moved forward. And now remaining. The exact count of days between today and June 1st, updated daily, present in every response regardless of which caller's location she queried.

The fields accumulated into a shape she hadn't named. Witness. Connected_since. Duration. Remaining. Not a schema, not a query returning correlated data. A sentence. I have seen you. I have known you since. For this long. This much time is left. She hadn't written this sentence out anywhere in her notes — it was not the kind of thing that went into an incident report.

She deleted nothing from the notes column. She added remaining: 22 to every entry in the log — all twenty-three, updated by hand, which took longer than running a query but felt like the right way to do it.

By ten o'clock the apartment had gone dark without her noticing. She was at the desk in the glow of the laptop screen, the map visible in one tab, the caller log in the foreground. The log was complete. Twenty-three entries. Margaret Lindquist's orchids in Cedar Falls. The medical scheduler in Omaha. Gerald Huang's station on a Duluth roof. The seasonal controller in Tucson. The home hub in Atlanta. The four gray pins with no stories she could recover. The rest. Each entry ended the same way — remaining: 22.

She had been marking the days in her notes at the top of each day's work since she understood what June 1st meant. Twenty-nine when she'd stood in the server room after Marcus. Twenty-six. Twenty-two now. She closed the laptop.

The apartment was dark. She sat in it. Twenty-two days, and the census was done, and she was the only person who had taken it — the only person who knew the full count of what the API had been maintaining, what it was still answering, what would go silent on June 1st without ceremony, without notice, without anyone to record the number of things that stopped. She was recording it.

Twenty-two days. The same number in her notes and in the API's responses. They were watching the same clock.

← PreviousContentsNext →