Random Learning
← The journal

August 16, 2026

3 things I learned

last30days v3.3.2 · synced 2026-08-16

What I learned:

The map and the Bortle number are measuring two different things, and the atlas author says so himself - djlorenz's Light Pollution Atlas, the model behind most of the maps people plan around, states the mismatch plainly: the maps simulate artificial brightness at zenith, straight up, while the Bortle scale is a subjective visual metric covering the entire sky horizon-to-zenith. His conclusion is that zenith brightness and Bortle "are too different to equate" and map data should be reported as zenith brightness, not as a Bortle class. Every colored patch anyone drives toward is a zenith simulation wearing a Bortle label it was never entitled to.

The practical consequence is that the number ignores the thing that actually ruins the shot - Astroimagery puts it in one line: the map "doesn't show the massive dome of light pollution on the horizon from a city 50 miles away." The framing across the on-topic video layer is the same - "you found that perfect blue or green patch on the map," drove hours, and the photos came back washed out. sterngucker gives the absurd case: a site on the edge of a conurbation next to a motorway and an alpine location at 1,600 m can both read "Bortle 4" on the map. Same label, completely different night.

Somebody actually ran the head-to-head with a meter instead of arguing about it - Cosmic Curiosity tested lightpollutionmap.info against other data sources at four locations using a physical SQM: "in order to determine the actual light pollution levels, what we're going to be doing is we're going to be using this... the lens that sits here on the top measures the actual light pollution." The instrument's own limitation is the tell - "it only measures in a 20° cone above it," so even the ground-truth device is a zenith measurement. The 6,597-view test is the only measured comparison in the corpus; the rest is assertion.

The staleness is real but smaller than the modelling gap - lightpollutionmap.app is explicit that the latest completed annual satellite layer is 2025, and anything labelled 2026 is a provisional model estimate revised as monthly inputs arrive, not a finished layer. djlorenz likewise recalculated Cinzano's original World Atlas against 2025 VIIRS composites from the Earth Observation Group. So the data is roughly a year behind, not a decade - the bigger error is structural, not chronological.

The structural error has a measured size, and it is about six-fold - Globe at Night's 51,000+ naked-eye citizen observations put sky brightening at 9.6% per year globally (6.5% in Europe, 10.4% in North America), against satellite-observed growth in light emissions of 2.2% per year for 2012-2016. Sky & Telescope names the two mechanisms: VIIRS is blind to the blue wavelengths that LED fixtures emit, and it is most sensitive to upward-directed light while horizontally emitted light is what actually builds skyglow. The satellite is under-counting exactly the lighting that has been replacing everything since 2012.

The field's own advice has already moved off Bortle, quietly - sterngucker's recommendation is to go by the SQM value in mag/arcsec² rather than the plotted Bortle classes, "those are only rough conversions." Adventures in Astronomy makes the same move affordable: a dedicated SQM meter runs about £150-200, and a phone app tracks it to within "0.1, 0.2" of the real instrument. Tsula's Big Adventures supplies the conversion anyway for people who want it - Bortle 1 corresponds to SQM 21.76-22.0, Bortle 5 to SQM 20.3-21.3 - which is itself the demonstration, since a whole Bortle class spans a full magnitude of sky brightness.

The topic has no live discussion layer at all, and that is the honest finding - the engine pulled 24 Reddit threads, 13 X posts and 9 HN stories in the window and essentially none of them are about this. The Reddit layer surfaced r/PhasmophobiaGame in its top communities, the X layer returned IPTV adverts matching on "Sky," and the top HN story was an all-sky map of supermassive black holes. Reddit's public search endpoint returned 403 on both attempts. Every genuinely on-topic item in the corpus is a YouTube video or a documentation page, and all five videos are dated outside the 30-day window - the newest is 2026-05-31. This is a settled evergreen question that practitioners re-explain to each other on video, not an argument anyone is currently having.

KEY PATTERNS from the research: 1. Maps model zenith brightness; Bortle is a horizon-to-zenith visual judgment - the atlas author says they should not be equated, per djlorenz 2. The map cannot see the light dome from a city 50 miles off, which is what actually degrades the frame, per Astroimagery 3. Two sites with identical "Bortle 4" labels can be a motorway edge and a 1,600 m alpine location, per sterngucker 4. Latest completed satellite layer is 2025; 2026 values are provisional estimates, not a finished annual layer, per lightpollutionmap.app 5. Ground observers measure 9.6%/yr brightening against 2.2%/yr from satellites - roughly 6x, per Globe at Night 6. VIIRS is blind to LED blue and weights upward light, while horizontal light drives skyglow, per Sky & Telescope 7. The recommended substitute is the SQM value in mag/arcsec², with a phone app tracking a £150-200 meter to within 0.1-0.2, per Adventures in Astronomy 8. One Bortle class spans a full magnitude of SQM (Bortle 5 = 20.3-21.3), which is why the label loses the information, per Tsula's Big Adventures

last30days v3.3.2 · synced 2026-08-16

What I learned:

The VPS is the cheapest line item by an order of magnitude, which quietly inverts the whole premise - the hosting people agonize over runs $4/month for a 512 MiB Basic Droplet, $12 at 2 GiB, and about $40 for a properly backed-up, monitored, isolated agent host, with the same shape landing at $8-10 on Hetzner and $60-80 on AWS EC2 once EBS and transfer are counted. Against that, CloudZero puts a single low-volume assisted agent at "roughly $150 to $600 per month in token fees" and semi-autonomous agents handling thousands of tasks at $1,200 to $5,500. The box you own is 2-10% of the bill. Running your own VPS buys control, not savings, and anyone framing it as a cost decision is optimizing the rounding error.

The load-bearing practitioner testimony in the window is one tweet with four likes - @Politas180 on Hermes Agent from Nous: "still one of the better self-hosted agents I've used. It keeps real memory across sessions, writes its own skills as it works, runs fine on a cheap VPS or Termux, and you can talk to it from Telegram, Discord or the terminal. No lock-in to one model either. They just shipped v0.20.0 with better voice." That is the entire first-person account of living with a personal agent staff in this corpus. Four likes. The engagement layer on this topic is not where the knowledge is.

The failure mode that costs real money is not a crash, it is a conversation between two agents - the most-cited incident of the year is a LangChain market-research pipeline where four agents ran for eleven days and produced a $47,000 bill, an Analyzer and a Verifier ping-ponging requests at each other with no budget cap and no external termination condition, per DEV Community. Nothing was down. Nothing errored. Two components did exactly what they were told, to each other, for eleven days.

Every control the team had in place was in place, and every one of them failed - they were running a Helicone dashboard with Slack alerts at 50%, 80% and 95% of monthly budget, plus a provider-level spending cap on the OpenAI account. Requesty's formulation is the sentence to take away: dashboards, alerts and provider-level spending caps are observability, not enforcement. An alert tells a human something is happening. An eleven-day loop is a bet that a human reads Slack on a weekend.

Anthropic published a post-mortem on the same class of bug in its own product - the 28 April write-up documents hook chain recursion with no timeout and no depth limit, causing the agent to hang indefinitely past its wall-clock budget. This matters for the self-hosted case specifically: the recursion guard is not something you configure, it is something the runtime either has or does not, and the person running it on their own droplet is the one who finds out.

The scale of the reported damage is not hobbyist, which is the argument for caring at hobbyist scale - the same reporting has Uber burning its entire 2026 AI coding budget in four months, and an unnamed enterprise spending $500 million on Claude in a single month after deploying access with no usage caps. Well-resourced organizations with finance functions did not catch these. The person running six agents off a Basic Droplet has no finance function at all.

The month's actual shipped movement is isolation tooling, not orchestration - the biggest on-topic Hacker News story in the window is Docker Sandboxes at 693 points and 396 comments, disposable microVM sandboxes for agents needing unattended execution, each with its own Docker daemon, filesystem and network and only the project workspace mounted. The self-hosting story is converging on giving the agent a smaller blast radius rather than a smarter loop. @zaidmukaddam shipping miniscira the same month names the pull directly: "people wanted the good parts for themselves: to run them, change them, point them at their own stuff."

The boring breakage is deployment plumbing and it does not make the blog posts - the highest-signal GitHub item in the corpus is a Dokploy issue where preview deployments broke after v0.29.13 with "Github Account not configured correctly," a thread of "I'm facing the same issue" and "Same issue +1." Nobody writes a retrospective about their self-hosted PaaS breaking on a point release, but that is the failure that actually consumes an evening.

The discussion layer is missing again, in a specific and readable way - the engine pulled 6 Reddit threads, 22 X posts and 24 HN stories, and Reddit's public search returned 403 twice. What came back from r/LocalLLaMA was open-source-AI policy argument, not setup reports; the X layer's top voices were crypto-agent promotion. YouTube returned zero items inside the window. Every hard number in this brief comes from a vendor blog, a pricing page or an incident write-up. People are running these setups and almost nobody is publishing what happened.

KEY PATTERNS from the research: 1. Hosting is $4-40/month against $150-600/month in tokens for one low-volume agent, so self-hosting is a control decision and not a cost one, per CloudZero 2. The expensive failure is two agents talking to each other, not a crash - four agents, eleven days, $47,000, per DEV Community 3. Dashboards, Slack alerts and provider-level spend caps are observability rather than enforcement, and all three were present when the $47K loop ran, per Requesty 4. Recursion depth and wall-clock limits are runtime properties you inherit, not settings you tune - Anthropic's own 28 April post-mortem is hook chain recursion with no depth limit 5. Uber burned its full-year 2026 AI coding budget in four months and one enterprise hit $500M in a month, so the guardrail gap is not a skill issue 6. The month's shipped answer is blast-radius reduction: disposable microVM sandboxes, one Docker daemon and filesystem per agent, per Docker Sandboxes on HN 7. The only first-person account of a working personal setup in the window is a four-like tweet about Hermes Agent on a cheap VPS or Termux, per @Politas180 8. The unglamorous breakage is deploy tooling - a Dokploy point release breaking preview deployments drew a queue of "same issue" reports, per Dokploy #4898

last30days v3.3.2 · synced 2026-08-16

What I learned:

The shade math is the part that already got validated, which is the opposite of what the framing assumes - NREL tested HelioScope's remote solar access values against Solmetric SunEye readings taken in the field at 43 roof locations across four Los Angeles houses, 38 across four Denver houses and four across two Camden buildings. Two one-sided statistical tests found the remote and field readings statistically equivalent, with HelioScope's error running -7.0% to +4.3%, in line with other validated tools at within ±7%. The industry did not just assert this. It ran 85 measured roof points and published.

Which is why the shade report is now a regulatory instrument, not a sales aid - remote shade analysis is accepted in lieu of on-site measurement by rebate authorities in California, Texas, New Jersey, Oregon, New York and Rhode Island, per HelioScope's own documentation. The question stopped being "is the software good enough" some years ago and became "good enough for what."

The accuracy number is not one number, it is a tier that depends on whether LiDAR covers your address - with LiDAR coverage the tools land at roughly ±2-3%, and where only satellite imagery exists that widens to ±5-8%, per Energyscape Renewables. Nothing in the report tells the customer which tier their own roof fell into. A ±3% design and a ±8% design print the same document.

What the site visit actually catches is everything that is not shade - the on-site list from EagleView and the survey checklists is roof age and wear, electrical panel labels, interior wiring paths, attic access, structural framing, unusual roof materials, and anything that changed since the last imagery pass. On layout specifically, the panel area must be verified free of vents, pipes, skylights and setbacks - a forgotten vent forces a design change or costs a panel on install day. The remote model is good at sun angles and bad at plumbing.

The one shading thing remote analysis genuinely cannot do is look forward - the checklists call for recording nearby trees, chimneys, dormers and future growth risk. A satellite pass is a photograph of a tree on a date. A twenty-five year production model is a claim about that tree in 2051, and nothing in the imagery pipeline models growth.

The stated engineering rule is a threshold, and it is specific - field verification is advised when the roof is complex or the system exceeds 25 kW, with the framing that remote data speeds up sales while field data protects engineering. That sentence is the whole tension in one line: the two datasets serve two different departments, and the site visit is a cost to the department that does not benefit from it.

The reason any of this is contested is that the shade report is a liability document - production guarantees typically run 10-25 years with a payout trigger at 85-95% of estimate, and Sunrun's terms exclude refunds for underproduction from anything other than a system defect or "shading conditions present at the commencement of installation." Shade is simultaneously the thing the model measures and the thing the contract carves out. The document that sold the system is the document that limits the remedy.

And the failure mode people actually litigate is the model being run on the wrong picture - one documented dispute had the production estimate built on unshaded satellite data that ignored visible roof obstructions, with a lawyer finding satellite images showing no shade while street-level photos from the same week showed trees plainly. That is not a modelling error. That is stale or mis-selected imagery under a validated model, which the ±7% figure says nothing about.

Blaming a tree is the industry's reflex, and it is checkable - in a BBB complaint an 18-panel system produced about 6.8 kWh/day for two and a half months. The company suggested a nearby tree; the homeowner pointed out the tree had no leaves. A technician eventually found roughly two thirds of the panels were not producing because the system had been installed incorrectly. Against a reported pattern of production landing about 12% under model, "it's the shading" is the cheapest available explanation and it is wrong often enough to be worth testing.

The evidence layer for this topic is almost entirely vendor-published, and the engine run makes that visible - the corpus pulled 13 Reddit threads totalling 6 upvotes, 13 X posts about British farmland leases and German generation records, and 13 HN stories whose top entries were solar overtaking fossil fuels in Germany, whether to wash your panels, and an eclipse map. Reddit's search endpoint returned 403. The only on-topic item the engine surfaced on its own is pvlib-python at 1.6K stars and 242 open issues, the open-source PV modelling library that every commercial tool is implicitly benchmarked against and that nobody in the sales conversation ever mentions.

KEY PATTERNS from the research: 1. Remote shade reports were validated against field instruments at 85 roof points across three metros, statistically equivalent, error -7.0% to +4.3%, per NREL 2. Six states' rebate authorities accept remote shade analysis instead of on-site measurement, per HelioScope 3. Accuracy is a tier, not a number - roughly ±2-3% with LiDAR coverage against ±5-8% satellite-only, and the report does not say which you got, per Energyscape 4. What the site visit catches is non-shade: vents, pipes, skylights, roof age, panel labels, wiring paths, attic access, structural framing, per EagleView 5. Future tree growth is the one shading factor no imagery pipeline models, against a 25-year production claim 6. The stated rule is field-verify when the roof is complex or the system exceeds 25 kW - remote speeds sales, field protects engineering 7. Shading is the named exclusion in production guarantees, so the shade report caps the remedy it helped sell, per Sunrun's terms 8. The litigated failure is stale or wrong imagery under a valid model, not the model - satellite showing no shade while street photos the same week showed trees 9. "It's the shading" is the default explanation for the reported ~12% under-model pattern and is frequently wrong - one 18-panel system ran at 6.8 kWh/day for 2.5 months because two thirds of the panels were miswired, per BBB

Provenance — 2026-08-16

Redacted by design: this records the funnel shape, not the private source links or personal capture notes. Raw self URLs and why? text are never written here.

Source entries (3 picked, topic-level only)

The eligible pool was exactly 3, so there was no selection step today — all three eligible entries were picked, and the pool is now empty. See the supply note at the bottom.

  • A saved open-source astrophotography planning app that scores a night from 1 to 10 by folding together weather, moonlight, hours of darkness and light pollution, models how much the moon brightens the sky at a given target, and finds nearby dark-sky sites with drive time and road distance (tags: astrophotography, weather-forecast, dark-sky, open-source, moon-phases, planning), captured 9 August. Pull: the only entry in today's pool carrying a substantive reason, and that note points at reusing the idea inside an existing personal project rather than at astronomy as a subject — which is why the fan went to the data quality layer underneath the app rather than to the app itself.
  • A saved write-up of one person's multi-agent working setup: six agents on a single small cloud server, one of which reads the prior day's conversations and sends a morning report on what was accomplished and what needs attention, reached over chat and an open messaging protocol, and closing with an admission that standing it up took roughly 10x longer than simply doing the tasks by hand (tags: ai-agents, automation, productivity), captured 12 August. Brief, non-specific note; selected on domain grounds.
  • A saved browser tool that simulates sun shadows anywhere on Earth, casting 3D shadows from buildings, trees and terrain for any date and time and generating shadow accumulation maps (tags: shadow, sun, simulation, solar-analysis, 3d, online-tool), captured 12 August. Brief, non-specific note; selected on domain grounds.

Domain spread: satellite/night-sky data quality · agent operations · solar engineering practice. Three different fields, no shared tag cluster.

The 12 adjacent candidates

From the astrophotography planning app: 1. How light pollution actually gets measured and how stale the maps are ← picked 2. Which weather models amateur astronomers trust for seeing and cloud forecasts 3. What happens when an app compresses everything into one 1-10 score 4. How dark-sky places get certified and whether the designation holds

From the multi-agent working setup: 5. What people report after running a personal staff of agents on their own VPS ← picked 6. Agent-to-agent messaging over open protocols instead of vendor SDKs 7. Why daily digest agents get ignored after week two 8. What it actually costs to keep long-running agents on a cheap VPS

From the sun-shadow simulator: 9. What rooftop solar shading tools get wrong compared to an on-site survey ← picked 10. Where the 3D building and terrain data in browser maps actually comes from 11. How solar access and right-to-light rules get enforced in planning disputes 12. Solar position algorithms and how much precision anyone actually needs

Near-dup guard: 0 of 12 flagged against a 171-topic index. The two highest scores were

8 at 0.152 (nearest: agent memory between sessions, 2026/07/26) and #10 at 0.147

(nearest: OpenStreetMap and Google Maps, 2026/06/20) — both well under threshold.

Narrowing to 3

One topic per source entry, and three genuinely different fields. Two candidates were dropped by judgment rather than by the guard:

  • #8 was cut as an unflagged overlap: the 2026/08/02 brief already worked the per-vCPU-hour pricing of agent runtimes in detail, and 2026/08/01 covered inference as cost of goods sold. #5 keeps the ops-and-breakage angle without re-running the price comparison.
  • #10 was cut because it shares a shape with #1 — both are "where does this geodata come from and how old is it." Keeping both would have made two of three briefs the same argument in different fields.

11 and #12 lost on freshness and learnability respectively: planning law moves too slowly

for a 30-day window, and solar position math is settled to a precision nobody disputes.

Research-quality notes (worth recording)

  • Topic 1 was re-run. The first engine pass used a long, sentence-shaped topic string; the token "sky" pulled in streaming-TV adverts and unrelated video content, and the engine tagged every returned cluster with its own entity-miss demotion. A second pass on a tighter, title-shaped string returned a genuinely on-topic transcript layer. The discarded pass is in the run's evidence directory alongside the kept one.
  • All three topics had a thin or absent discussion layer, and each brief says so in its own body rather than burying it. Reddit's public search endpoint returned 403 on every one of the three runs, so the Reddit counts in all three footers are listing-discovery noise rather than on-topic threads — visible in the top-communities lines, which include subreddits with no relation to any of the three subjects. The substantive evidence came from transcripts, documentation, published validation studies and incident write-ups.

Supply note

The pool was empty at the start of the run and the circuit-breaker tripped: the local self cache had not been pulled since 29 July, so the fuel check measured a stale clone and reported zero eligible entries. Fetching showed the remote was 9 commits ahead. The sync step, which runs after the fuel check in the current sequence, brought the pool to exactly 3 and the check passed on a re-run.

Worth fixing: the circuit-breaker reads the cache without syncing it, so a stale clone reads as low fuel and would have silently skipped the day. Runway after today is 0 days until new entries are captured.