from Plain Sight

By Publius (of the 21st Century) — No. 8

The danger confronting the Trump administration is no longer merely that the war with Iran may have gone badly. It is that the war may refuse to end at all—at least not on terms Washington can define, deliver, or politically survive.

The analogy to the Roman emperor Valerian who was captured in battle by the Persians is not literal. President Trump is unlikely to be physically paraded before an Iranian Ayatollah. The humiliation would rather be subtler, more modern, but perhaps more consequential: the spectacle of the world’s strongest military power unable to convert overwhelming destructive capacity into a usable political outcome. Iran does not need to defeat the United States. It needs only to deny it victory, closure, and control over the timetable.

This is the Valerian trap.

The administration’s objectives have ranged from unconditional surrender, regime change, to the destruction of Iran’s nuclear capacity, the reopening of the Strait of Hormuz, the protection of Israel, and the restoration of deterrence. Each can be stated plausibly in isolation. Together, however, they form no clear hierarchy and offer no obvious stopping point. What constitutes victory? Reopened shipping lanes? A nuclear inspection agreement? A weakened regime? An Iran stripped of missiles, proxies, and regional influence? The administration can announce success only when others agree to behave as though success has been achieved.

Iran’s objectives appear more comprehensive and aligned. Regime survival comes first. That objective has already been tested directly: Israeli and, in part, American strikes killed Khamenei along with much of Iran's religious, military, and scientific leadership on February 28, and his son Mojtaba assumed the succession within days. That the regime absorbed the loss of its supreme leader and still chose escalation over accommodation is the strongest evidence yet that Tehran can play the waiting game even when hit hardest.

Beyond that, Tehran seeks to preserve enough military, nuclear, and regional capacity to make another attack costly; force an end to Israeli operations; establish leverage over the Strait of Hormuz; protect Hezbollah and other aligned forces; and, ultimately, reduce the American military presence in the region. Iran does not have to accomplish all of this immediately. It can wait.

That waiting game is the heart of the scenario.

This waiting game, however, rests on a fragile premise: Tehran’s ability to survive its own internal decay, public unrest, and economic collapse. So far though that weakness has not produced caution. Hardliners within the Islamic Revolutionary Guard Corps (IRGC) have apparently convinced the supreme leadership that time and asymmetric capability remain on their side. By treating internal dissent as a threat to be crushed rather than managed, the IRGC has forged a rigid ruling consensus: that the domestic risks of strategic retreat far outweigh the external costs of an endless war of attrition.

Time works differently for the two sides. For Iran, delay demonstrates endurance. Every week without surrender refutes Washington’s promise of rapid coercive success. Every interruption of Gulf shipping raises insurance, transportation, energy, and consumer costs far beyond Iran’s borders. Every American casualty weakens the administration domestically. Every failed ceasefire makes the next announcement less credible.

For President Trump, by contrast, time is expensive. Oil prices feed gasoline prices; gasoline prices feed inflation; inflation constrains the Federal Reserve; higher interest rates deepen the affordability crisis and expose an already weakening economy. A recession does not have to arrive before the November midterms. Voters need only see its outline: slower hiring, rising debt stress, weaker housing, shrinking entry-level opportunity, and a government insisting that prosperity remains just around the corner.

Yet even a bilateral agreement with Iran would not necessarily provide an exit. Israel is not a subordinate actor waiting for Washington’s instructions. It has its own war aims: the lasting incapacitation of Iran’s nuclear and missile infrastructure, the weakening or disarmament of Hezbollah, and continued freedom to strike whenever it perceives an emerging threat. On the second aim Israel has already made substantial progress: Hezbollah's disarmament was a term of the Lebanon ceasefire, and the IDF has continued near-daily strikes against what remains of its arsenal — leaving Tehran with a weaker proxy to protect than the “aligned objectives” framing above implies. An agreement sufficient for President Trump to declare the war over may be insufficient for Israel to consider itself secure.

This creates the central trap within the trap. Washington cannot promise Tehran that Israel will cease military action. Tehran cannot promise Washington that Hezbollah, the Houthis, Iraqi militias, or every faction within Iran will remain quiet. Israel cannot destroy the knowledge and industrial capacity required to rebuild what it has bombed. The Houthis may continue their own war even if Iran prefers tactical calm. Gulf governments, exposed to retaliation and economic disruption, will increasingly seek separate accommodations rather than entrust their survival entirely to American strategy.

There is, therefore, no single switch that turns the conflict off. There are several wars, negotiating tables, and actors capable of spoiling the result. A ceasefire may halt American strikes while Israeli operations continue. A Hormuz agreement may reopen one maritime artery while the Red Sea remains contested. A nuclear understanding may leave missiles, Hezbollah, Gaza, sanctions, and regional basing unresolved. Each partial settlement carries within it the mechanism of its own collapse.

The political effect could be devastating. The administration’s claim of strength would gradually invert itself. The president would appear unable to compel Iran, restrain Israel, control escalation, protect shipping, lower energy prices, or explain what further sacrifice is supposed to achieve. His declarations of imminent success would lose value with every reversal. The problem would no longer be merely that the United States entered an ill-defined war. It would be that the president surrendered control of American domestic conditions to the calculations of allies, adversaries, proxies, and oil markets.

The trap described above is structural and well evidenced; what follows is forecast, not certainty—an administration that can point to Khamenei's death as a decisive blow may yet convert that into a political asset regardless of how the broader war resolves.

That could shape the midterms by joining foreign-policy failure to the household economy. War, inflation, interest rates, employment anxiety, and affordability would no longer appear as separate issues. They would become one story: strategic disorder abroad producing material insecurity at home. Democrats would not need a grand theory of the Middle East. They would need only to ask why American families are paying more, borrowing at higher rates, and facing a weaker labor market for a war whose objectives keep changing.

A Democratic House would constrain the administration through investigations, appropriations, and renewed war-powers challenges. A Democratic Senate, though harder to achieve, would magnify the confrontation. But the deeper consequences would extend far beyond November. The remainder of the Trump presidency could become consumed by an unwinnable contest between escalation and withdrawal. Escalation would increase casualties, inflation, and alliance fracture. Withdrawal without an enforceable settlement would look like defeat. A partial agreement would remain vulnerable to the next Israeli strike, Houthi attack, Iranian seizure, or militia rocket.

The waiting game, then, is not passive. It is Iran’s strategic weapon. The United States must continually act, spend, reassure, deter, negotiate, and explain. Iran and the other veto players need only prevent the system from settling.

Valerian’s humiliation was personal and visible. The modern version would be institutional: an American presidency trapped inside its own promises, unable to win, unable to leave, and increasingly unable to govern anything else.

 
Read more... Discuss...

from Lastige Gevallen in de Rede

Het Hoopvol Menstruatie Marslied versus De Dagelijkse Teloorgang van De Werkende Man

het merendeel van de deeltijd multitask ik er op los van iedere aanwezige baat ken ik ook zijn kost er is niks waarover ik me onnodig verbaas raak niet van streek door het geraas van de dwaas onze onbesnaarde baas het is fijn dat ik ondanks hun eindeloos gezever in puike mentale conditie verkeer maar dus niet als ik menstrueer dan wil ik geen gezeur aan mijn kop en dit moet zo blijven tot en met de druppelstop dan is elk antwoord bondiger dan kort verlang je toch een aantal extra reken maar dat het met die promotie niets wordt want ik breek ijzer af met handen en dat kletterend spetterend bewerkt metaal komt rechtstreeks uit mijn vagina maar verder heb je niks te vrezen ik ben snel van begrip, leef me in, ik regel het vlot en netjes zelfs met tegenzin leer het in de praktijk alleen door de theorie te lezen en hier en daar te onderstrepen of arceren met een compliment kan je loopbaantje weer ten goede keren ik kan in een ruimte vol vrouwen mijn mannetje staan een plantje of geschenk op zijn tijd doet het meestal goed maar niet als ik baad in menstrueel bloed knoop dit in je oren ook al wil je het nooit horen dat wij zelfs maar overwegen onderdeel te zijn van je bedrijfsleven is geen vaststaand feit zeker niet onze beweegreden niet de kern van ons bestaan dat bedrijf is niet de reden om aan de slag te gaan het is een gunst die we ondanks beter weten aan u, mannetjes verlenen omdat we het niet kunnen verdragen dat u anders u godganse leven loopt te zeuren, zeiken, jammeren en wenen omdat u zonder onze aanwezigheid in u bestaan zelf niet eens zou denken aan het verzinnen van de betaalde baan nog geen tuinhuisje was gaan bouwen geen enkel steekwapen ter hand zou nemen geen levenslust verdovende drankjes brouwen geen letters rammen in harde grijze stenen u zou zinloos voor u uit zitten staren zelfs vergeten voldoende eten te vergaren overlijden in een tuin vol vruchten en noten alleen door het gebrek aan leven in beide kloten dus als u nog eenmaal de bek opentrekt terwijl ik vrij uit bloed lek dan ontnemen wij u al uw gefabuleerde redenen om energie aan wat er nu ook is te besteden aan denken aan kijken aan wenken aan prijken aan programmeren aan voorraadbeheren aan praatjes maken aan vuren staken aan camera voeren aan in campers toeren aan trekkers trekken en aan pseudo heldinnen verhalen eindeloos herhalen over heen gaan en vermenigvuldigen zonder vlekken donder toch een keer op man als je voor je zelf niet leven kan waarom dan wel voor mij dus bekken dicht anders maak ik me vrij want ik ben tot niets verplicht en dan verlies jij alles waarvoor je vanochtend gemutst en wel bent opgestaan kleerjes aan, ontbijten, instappen, rijen gaan achter andere manne zoals jij aan, inparkeren, inklokken en inloggen, en weer terug naar huis, tuin en opberghok gaan, dat vaste aardse uit het niks inkomende kringloop bestaan

Aapropos ; Sexcuses deernen, Ik kon het sexperiment niet laten en aangezien er bij mijn weten waarschijnlijk maar een paar lezers mijn oorblog notities bekijken kan het mijn toch al niet bestaande loopbaan, de opgang, niet kosten, het kan ook niet verder kelderen volgens mij, lang leve Van Voorbijgaande Aard, hopelijk nog een dagje erbij...

 
Lees verder...

from The happy place

I’m having vacation. Received a mug from my colleagues the other day. It was a parting gift. I got it through the mail.

It made me happy, knowing they each thought of me like that.

Small gestures of kindness mean a lot, I think.

Knowing someone cares enough to send a big red mug, when they don’t have to, knowing we probably will never meet again, is very heartwarming.

I think it’s: they add the raisins to the Müsli which would’ve otherwise been just oats.

 
Read more... Discuss...

from Tuesdays in Autumn

Newly-arrived this week: more ‘90s jazz, in the shape of two secondhand CDs ordered via ebay.

First, from ‘98, A Go Go by John Scofield. On it, Scofield (guitar) is ably supported by John Medeski (keys), Billy Martin (drums) and Chris Wood (bass). This is an infectious collection of groove-based numbers blending funk, soul and jazz without sounding like jazz-funk as I’d encountered it elsewhere. It begins with the title track which sets out its stall in admirably forthright fashion. It all sounds marvellous, though I’d single out the way Martin’s snare drum is played and recorded for a special commendation.

Second, from ‘94, MoodSwing by the Joshua Redman Quartet. Here. Redman on tenor and soprano saxophone is joined by Brad Mehldau (piano), Christian McBride (bass) and Brian Blade (drums). The playing and recording here again are excellent. It seems that some reckoned it a tad unadventurous when it came out (and there may be something to that), but it’s a deluxe production done with evident love – I think I’ll be spending plenty of time with it. Hear for example the opening number ‘Sweet Sorrow’.


I was intrigued enough by the premise of M. John Harrison’s recently-published novel The End of Everything to buy it, despite having been left with mixed feelings by his previous effort The Sunken Land Begins to Rise Again. The new book takes place in a near-future England stricken by a sort of slow-motion apocalypse brought about by the arrival of inscrutable alien entities from some adjacent plane of existence. Alas, I liked it less than The Sunken Land... Where the latter excelled, for me, was in the vividly clammy strangeness of the atmosphere it conjured up. I didn’t think that the former, seemingly striving for a more elusively liminal mood, succeeded as well in that respect. Nor was its plot the strongest, or its characters the most interesting. It does have its merits: there were some moments that impressed me, and it has returned to weakly haunt my mind a few times since I finished it.

Also finished this week, Richard Dadd: Beyond Bedlam. This is the catalogue for newly-opened exhibition of Dadd’s paintings and drawings at the Royal Academy in London. His work isn’t new to me: I’ve owned Patricia Allderidge’s book The Late Richard Dadd for the better part of thirty years, and have seen (albeit far from recently) a number of his works in person. It’s great to have a more up-to-date volume about the man and his art. The new catalogue includes a number of works I hadn’t seen before, and others reproduced in colour that I’d only hitherto only seen in black and white. As well as the catalogue itself, the book contains four essays: a biographical overview; a study of Dadd’s deeply unnerving watercolour ‘The Child’s Problem’; an account of the painter’s influences and artistic precursors; and a discussion of the mental illness that afflicted him.


Booze of the week: Ardbeg 10-year-old single malt whisky. My drinking problem these days that I can only seem to get a little alcohol down me every once in a while without risking unwelcome digestive repercussions. A case in point: I was given a bottle of Ardbeg as a Christmas gift in 2023, finally polishing off the last dram of it only on Saturday. The notes about the whisky’s aroma at the Ardbeg website are a marvel of their kind: “A burst of intense smoky fruit escapes into the atmosphere of peat infused with zesty lemon and lime, wrapped in waxy dark chocolate. Bold menthol and black pepper slice through the sweet smoke followed by tarry ropes and graphite. Savour the aroma of smoked fish and crispy bacon alongside green bell peppers, baked pineapple and pear juice...”. And so it goes on: I shall have to take their word for it! There’s no denying it’s a good whisky though.

 
Read more... Discuss...

from PlantLab.ai | Blog

Powdery mildew on cannabis leaf - white powdery patches spreading across upper leaf surface, botanical illustration

It looks like your plant is getting frosty. White powder spreading across the leaves, that pale shimmer catching the grow light. Then you touch it, and your finger comes away white.

That's not trichome development. That's powdery mildew – and if you're seeing it now, the infection has been active inside your plant for up to two weeks already.

Powdery mildew is one of the most misidentified conditions in cannabis cultivation – not because the advanced stage is hard to recognize, but because early-stage colonies genuinely look like trichome buildup to the untrained eye. Growers see white on their leaves and feel reassured rather than alarmed. By the time the mistake is obvious, the fungus has spread.

This guide covers visual identification at every stage, how to distinguish PM from trichomes and other lookalikes, and what to do when you find it.


Quick Identification

Powdery mildew on cannabis appears as white, flour-like patches on leaf surfaces that transfer to your finger when touched. Unlike trichomes – which are crystalline, sticky, and firmly attached – powdery mildew is fuzzy, powdery, and wipes off. It typically starts on older, lower leaves and can spread from a single infected plant to your entire grow within 5-10 days under favorable conditions.

Quick checklist: – White powdery patches on leaf surfaces (usually upper side) – Fuzzy texture, not crystalline or glittery – Transfers to your finger when touched – Wipes off with cloth (trichomes stay attached) – Started on older, lower leaves – Circular colony patterns, expanding outward


Why Powdery Mildew Is So Destructive

The Timing Problem

Powdery mildew is caused by obligate biotrophic fungi – primarily Golovinomyces species (formerly classified as Erysiphe) – that require a living plant host to survive. As an obligate biotroph, the fungus spends its first 7-10 days growing inside plant tissue, establishing a mycelial network before producing the visible white sporulation on the surface.

The practical implication: by the time you see powdery mildew, you're already two weeks behind.

This timing overlaps with the worst possible moment in the grow cycle. PM typically produces visible symptoms approximately two weeks into flowering – when plants are at their most developed and most valuable. A disease that becomes visible at week two of a nine-week flower has seven weeks to damage a mature crop.

The Spread Problem

Once sporulating, powdery mildew spreads through airborne spores called conidia. Unlike many fungal diseases that require water droplets to spread, PM spores travel through air and remain viable in typical grow room conditions. A single infected plant can contaminate an entire facility within 5-10 days.

This is not a slow disease. It spends two weeks being invisible, then spreads rapidly.


Visual Symptoms by Stage

Days 1-7: No Visible Symptoms

The fungal network is developing inside plant tissue. Nothing is visible externally. The only detection method during this phase is molecular PCR testing – available commercially but not practical for most growers as a daily routine.

What to do: Prevention only. No reactive treatment exists for pre-symptomatic infection.

Days 7-14: Early Visible Stage

Early powdery mildew on cannabis - small white chalk-dust spots on older leaf, botanical illustration

What you see: – Fine white coating on upper leaf surface, often concentrated near veins – Circular “chalk-dust rings” as colonies grow radially from infection points – Small, discrete white spots (1-5mm diameter) resembling flour or powdered sugar – Patches separated by healthy-looking green tissue initially

This is when intervention is most effective. Catching PM at this stage – and responding within 48 hours – gives you the best chance of containing the infection before airborne spread reaches other plants.

Days 14+: Advanced Stage

Advanced powdery mildew - merged colonies covering cannabis leaf with yellowing, botanical illustration

What you see: – Spots grow larger and merge into confluent white coverage – Thick, prominent coating across entire leaf surfaces – Fuzzy, hair-like texture that can resemble spider webs or white cotton candy in severe cases – Affected leaves turn yellow (chlorosis) as photosynthetic capacity is reduced – Leaf death and necrosis in severely affected tissue – Contamination of flower bracts and bud sites

At this stage, individual plant treatment may still limit damage, but facility-wide spread is likely already underway.


Where to Look: Detection Hotspots

Not all areas are equally at risk. Focus visual inspections here:

Check first: – Upper surfaces of older, lower leaves – Corners with poor airflow – Areas where leaves touch each other – Near the base of the plant

Check second: – Lower leaf surfaces – Leaf petioles and stems – Flower bracts and bud sites – Plants adjacent to any previously infected individual

High-risk conditions: – Humidity above 60% (optimal for PM at 95%+) – Temperature 68-86°F (20-30°C) – Poor air circulation or stagnant air pockets – Overcrowded plants with leaf-on-leaf contact – Recently introduced plant material (a common entry point)

One counterintuitive note: many growers assume low humidity prevents powdery mildew. It slows initial infection, but once PM is established, the fungus can continue growing even below 50% relative humidity. Humidity reduction is a preventive tool, not a cure.


Powdery Mildew vs. Trichomes: The Critical Distinction

This comparison matters because the error goes in both directions – growers see PM and think “good frost,” and they sometimes see heavy trichome coverage and worry it's disease.

Feature Powdery Mildew Trichomes
Texture Fuzzy, powdery, matte Crystalline, glittery
Color White to gray (can look dirty) Translucent to milky white
Touch test Transfers to finger, feels dusty Sticky, doesn't transfer
Wipe test Wipes off as powder Firmly attached
Shape Irregular patches with fuzzy edges Distinct mushroom stalks (under magnification)
Location Any leaf surface, starts on older lower leaves Concentrated on flowers and sugar leaves
Distribution Random colonies expanding outward Uniform coating across surface
Smell Musty in advanced infection Resinous, aromatic

Side by side botanical illustration: powdery mildew vs. trichomes on cannabis

Three Tests to Confirm

Touch test. Lightly rub the white area with your finger. PM transfers as a dusty powder. Trichomes are sticky and stay on the plant.

Wipe test. Try to wipe the coating with a cloth. PM wipes off cleanly. Trichomes remain attached.

Magnification (10x loupe). Under magnification, trichomes show distinct mushroom-shaped heads on uniform stalks. PM looks like fuzzy, irregular filaments with no consistent structure.

If you're unsure after all three tests, assume it's PM and treat accordingly. The cost of a false positive – treating a healthy plant – is much lower than the cost of a false negative.


Distinguishing From Other Conditions

Powdery Mildew vs. Bud Rot (Botrytis)

Both can appear during flowering, but they start in different places and look different up close.

  • PM: Starts on leaf surfaces as white powder, spreads outward
  • Bud rot: Starts inside dense bud tissue as gray-brown mold, spreads inward
  • PM: Dry, wipes off as powder
  • Bud rot: Slimy, penetrates tissue, leaves mushy gray-brown areas when probed

Powdery Mildew vs. Spider Mite Webbing

Heavy spider mite webbing can be confused with PM in advanced stages.

  • PM: Powdery coating directly on leaf surfaces, no web structure
  • Webbing: Actual filamentous strands connecting leaves and stems, visible as a network with tiny mites present
  • PM: Surface phenomenon on the leaf
  • Webbing: Spans between plant structures

Powdery Mildew vs. Fertilizer Residue

Spray residue and fertilizer salt deposits are a common false positive.

  • PM: Fuzzy texture, grows and expands over days
  • Residue: Crystalline, stays fixed, doesn't spread
  • PM: Circular colonies from infection points
  • Residue: Irregular splatter pattern matching where spray landed

Treatment and Prevention

If You've Found It: Immediate Steps

  1. Isolate the infected plant. Remove it from the grow space carefully – don't shake the leaves, which disperses spores.
  2. Remove heavily infected leaves. Seal them in a bag before removal. Dispose of, don't compost.
  3. Increase airflow immediately. Run oscillating fans, check that exhaust is adequate.
  4. Apply treatment to the infected plant and all immediate neighbors:

    • Potassium bicarbonate spray (effective at any stage, flower-safe)
    • Copper-based fungicides (veg stage only)
    • Neem oil (veg stage only – off-gasses problematically in flower)
    • Commercial PM treatments labeled as flower-safe for late-stage infections
  5. Inspect every other plant in the grow. Assume airborne spread has already occurred. Look for early colonies on older lower leaves of adjacent plants.

Prevention

Environmental control (most effective): – Maintain humidity below 60%, below 45% in late flower – Install oscillating fans for continuous air movement – Prevent leaf-on-leaf contact through spacing and selective defoliation – Maintain stable temperature – fluctuations create favorable infection windows – Consider HEPA filtration between grow cycles to reduce ambient spore load

Cultural practices: – Inspect plants daily, particularly lower leaves and poor-airflow corners – Quarantine any new plant material for at least two weeks before introducing to your grow – Sterilize tools between plants – Remove dead leaves promptly – they create moisture pockets

Preventive treatments (before symptoms appear): – UV-C light treatment between grow cycles kills residual spores – Preventive potassium bicarbonate or copper sprays provide significantly better protection than reactive treatment after symptoms appear – IPM programs that address PM as a standing preventive protocol, not a reactive one


How AI Detection Works

Powdery mildew is fundamentally a texture classification problem – distinguishing the powdery, irregular surface of PM colonies from the crystalline structure of trichomes and the smooth surface of healthy leaf tissue.

PlantLab's model analyzes:

  • Color contrast: White patches against green leaf tissue create a high-contrast signal the model identifies reliably
  • Texture signature: PM colonies have a granular, matte surface texture measurably distinct from trichomes (crystalline) and healthy leaf (smooth with natural sheen)
  • Colony geometry: PM grows in circular patterns from infection points with fuzzy, irregular edges – different from the uniform distribution of trichome coverage
  • Location context: Where on the plant the pattern appears matters; PM preferentially affects older, lower leaves in early infection

Early-stage detection – colonies as small as 5mm – catches infection when treatment options are broadest. Automated daily scanning catches what manual inspection misses when you're managing more than a few plants.

Try it free at plantlab.ai – 3 diagnoses per day, no credit card required.


FAQ

Can I smoke buds with powdery mildew? No. PM spores and fungal material can cause respiratory issues, particularly for anyone with lung conditions or compromised immunity. Infected flower should be disposed of, not consumed.

Does powdery mildew spread to other plants? Yes, rapidly. Airborne spores can reach every plant in a contained grow space within 5-10 days under favorable conditions. Isolate infected plants immediately and inspect everything nearby.

Can plants recover from powdery mildew? Mildly infected plants can survive and produce with aggressive treatment, but affected tissue doesn't recover. The goal is to stop the spread. Heavily infected plants in late flowering are usually a loss.

Does lowering humidity kill powdery mildew? It inhibits new infection but doesn't eliminate established colonies. PM can remain active even below 50% relative humidity once established. Humidity reduction is a prevention tool, not a cure for active infection.

When is powdery mildew most likely to appear? Typically around two weeks into flowering, when dense bud sites create microclimates with trapped humidity and reduced airflow. It can appear at any life stage given favorable conditions, but flowering onset is the highest-risk window.


PlantLab's AI detects 31 cannabis conditions – including powdery mildew, bud rot, and 7 specific nutrient deficiencies. Start diagnosing free at plantlab.ai.


 
Read more...

from brendan halpin

I’ve been thinking a lot recently about which albums I return to again and again as full albums. Since streaming has made it trivially easy to only listen to songs you like, I think many of us listen to playlists rather than albums. I do listen to albums I’ve bought on Bandcamp as full albums, but otherwise, I mostly listen to Sirius radio or playlists.

But there are some albums I like to listen to in their complete form. So I thought I’d share them with you not to show how cool I am (I mean, sure, that too) , but also because I’m always interested in music recommendations from real people, so maybe you will be too.

Caveat: I’m not representing this as the “best albums of all time” or anything like that because that’s entirely subjective, and also my affection for some of these albums is definitely colored by the associations I have with them. So your mileage may vary, but I’m confident there are no clunkers here.

I’m presenting them in chronological order by release date, and I’m stopping in 2012, mostly because I’m lazy and also I’m not sure which albums from the last 15 years I’ll still be listening to in 15 years.

1965- The Beatles, Rubber Soul

1966- The Beatles, Revolver

1967- The Velvet Underground, The Velvet Underground and Nico

1969-Creedence Clearwater Revival, Willy and the Poor Boys

1970- MC5, Back in the USA

1972- Donny Hathaway, Donny Hathaway Live

1975- Parliament, One Nation Under a Groove

1977- Ramones, Rocket to Russia

1978- Ramones, Road to Ruin

1978- Funkadelic, One Nation Under a Groove

1978- The Dictators, Bloodbrothers

1979- Graham Parker and the Rumour, Squeezing Out Sparks

1979- The Clash, The Clash (US Version. Yeah, I said it)

1979- Roky Erickson and the Aliens, The Evil One

1980- The Clash, London Calling

1980- Prince, Dirty Mind

1980- The Damned, The Black Album

1982- Utopia, Utopia

1982- X, Under the Big Black Sun

1984- Hüsker Dü, Zen Arcade

1984- Minutemen, Double Nickels on the Dime

1984- Ramones, Too Tough To Die

1984- The Go-Gos Talk Show

1985- The Velvet Underground, VU

1986- The Edge, From the Middle of Nowhere (Original Title: Johnny Cuba & The Edge)

1986- Human Zoo, Human Zoo

1986- Midnight Oil, Diesel and Dust

1986- Paul Simon, Graceland

1987- Prince, Sign O’ The Times

1987- John Mellencamp, The Lonesome Jubilee

1988- Billy Bragg, Workers Playtime

1994- Johny Cash, American Recordings

1995- Prince, The Gold Experience

1996- Belle and Sebastian, Tigermilk

1996- Belle and Sebastian If You’re Feeling Sinister

1997- Afro-Cuban All Stars, A Todo Cuba La Gusta

1998- Belle and Sebastian, The Boy With the Arab Strap

2002- Caesars, Love For the Streets

2002- Zombina and the Skeletones, Taste the Blood Of

2002- The Donnas, Spend the Night

2003- John Mellencamp, Trouble No More

2004- Hawaii Mud Bombers, Mondo Primo

2004- Loretta Lynn, Van Lear Rose

2004- Sahara Hotnights, Kiss & Tell

2007- Shonen Knife, Fun! Fun! Fun!

2008- Nada Surf, Lucky

2010- Harley Poe, Wretched, Filthy, Ugly.

2012- The Hives, Lex Hives

 
Read more... Discuss...

from Faucet Repair

27 July 2026

“The General” by Bernadette Mayer, from The Old Style Is Finding out Something about a Whole New Set of Possibilities (1966-70)

Later in secret Later in secret the general Bends to remove something To lean against a fresco. The rules which run Around the walls The walls of court Determine a course, Declare if he had not:

Sulphur and pitch, sulphur and lead, sulphur and gum mastic, sulphur and varnish, mixed with the husks of pine-kernels, sawdust, isinglass, shells of snails, husks of beans, and seed of myrtle.

From here any direction is shown. The woods must be razed — resumption of growth The market growing, profusion, the question To hold — to hold Parts or acts in the act of disintegrating wholly. A sign over the hull — the evening In a complex of other evenings Behind the intervening ledge, the general.

 
Read more...

from Attronarch's Athenaeum

Adventurers

Character Race Class Description
Alaric Human Paladin level 3 Big, doe eyed country boy with wavy blond hair and willingness to do the right thing. Paladin of Tyr.
Ambros Human Cleric level 7 Follower of Aniu, Lord of Time.
Drokh Human Monk level 3 A tall, lean human monk with piercing eyes, weathered skin, and a warrior’s poise—calm and charismatic, he speaks with purpose and strikes with precision, wielding spear, bow, and blade.
Heinrik Human Magic-user level 2 Muscular mage with short blonde hair and piercing blue eyes.
Ignaeus Elf Fighter level 4 / magic-user level 5 An arrogant and self-assured sellsword wandering Wilderlands to prove he can best anyone.
Jacob Vin Human Assassin level 3 Slick black hair, inconspicuous dress, youthful for his age, and of keen instincts.
Julius Human Ranger level 1 A short king covered in bushy hair and green moss.
Kenso San Human Fighter level 2 An arrogant and self-assured sellsword wandering Wilderlands to prove he can best anyone.
Kho Rimbo Human Magic-user level 3 A knife throwing wizard extraordinaire. Covered in ritual knife scars. Cuts himself whilst casting. Prone to being sarcastic.
Minako Konishi Human Monk level 3 Pretty Karakan with grace of a panther and shrewdness of a fox. Silk sash holds here loose trousers in place, while loose jacket rounds up her exotic look.
Syd Grundy Human Fighter level 3 Tall, middle aged and scruffy looking man of the wilderness.
Tam o' Shanter Human Cleric level 4 A boisterous wine-lover of Losborst on a Great Crusade of the Grape.
Thorinda Bung Human Monk level 3 She has blonde hair done up in a tight pony tail and wears light, loose suit.
Thorm Dwarf Dighter level 2 / thief level 3 Ashen hair, beard, and eyes. Left his own clan due to financial trouble.
Tosk Human Fighter level 1 Extremely large muscular man with pot belly; cagey about his intentions and past; seeking fortune.
Warmund Abendeurer Human Fighter level 2 A burly blonde barbarian; Wilbalt's older brother and the stronger of the two.
Wilbalt Abendeurer Human Fighter level 2 A burly blonde barbarian; Warmund's younger brother and a better swordsman of the two.

Gloomfrost 20th, Spiritday

It was noon. Last day of the last month of the year. Entire population of Ironburg, a mining thorp sitting at the northern border of Kingdom of Hara, crowded in the newly built longhouse.

Baron of Ironburg, a large, muscle-bound man called Sig of Dostrogoths, sat in his wooden throne. He was sullen and of ill mood. His muscles were tense. Next to him sat people he trusted most: Rupert Ironwill, a bishop of Tyr; Bertha of Dostrogoths, Sig's shadow; Vimaro, a vicar of Mitra; and his two trusted seers, Lamprecht and Daltz. Red Wizard Crus was given a special seat.

Across the baron, at the end of a long table, stood Ambros. He stood there, for he was brought here to hear his sentencing. He had submitted himself to fate; whatever it might bring. He had time to prepare. He had time to meditate. He had time to pray.

Ironwill stood up, and cleared his throat. Masses went quiet.

“We have gathered today, on this fine day, to share three proclamations from the Benevolent Wizard-King Klekess Racoba! First, we shall deal with the man standing before us, Ambros ap Mortain. By his own admission, Ambros is guilty of treason against the King, and the people!”

Ironwill went on and on. Ambros listened in silence. He and others had a moment to catch-up with Heinrik, whom had returned from Hara around midnight. “From what I understood, Ambros will get to live. Something will happen, but he will live. That is what Crus told me. Sig is unhappy about something, but I do not know what.”

“Ambros, by great mercy of our Wizard-King Klekess Racoba, you are exiled from the Kingdom of Hara! Anyone can kill you, facing no consequences! In fact, they would do our Kingdom a great favour!” Ironwill spoke loudly, each word uttered with great conviction and passion.

“Paladin of Tyr!” Ironwill turned to Alaric “It is only fitting you deliver justice!” A bowl of thick, black liquid was brought forth. Alaric was given a sharpened tusk. “Tattoo a mark of traitor upon the forehead of that animal over there.”

Alaric took both and went over to Ambros. “Forgive me.” he whispered, as he penetrated the skin of former High Priest of Forseti again, and again, and again. Blood and ink flew down the cleric's forehead, down his face, down his neck, and onto his chest.

“Men! Women! Children! Behold this animal before us! Yes, animal! Debased and rightsless, no better than a rabid dog!”

Loud coughs interrupted Ironwill. It was Old Crus.

“Oh, yes. Animal known as Ambros is now a slave to the Red Wizard Crus.”

Ambros spoke up “Ahem. How can I be both exiled and enslaved to Crus? I mean, Crus lives right here, in Ironburg?”

“Silence, cur!” Ironwill muttered “Chase him out! Chase him out like a rabid dog he is!” and to that the crowd booed Ambros, and threw stones, and hit him with clubs and sticks. Ambros attempted to maintain composure, and some semblance of dignity. Alas, his attempts failed them, but the scribe could not bear to write down the details.

Adventurers were mixed in with the crowd. Nearly twenty of them, ready to cause hell, and die for their friend should such fate befall them. But they stood in the silence of crowd cheering and chanting at the bloody spectacle.

Rupert continued speaking. There were two more proclamations for the king. Iron ore production must double by the summer. Barony was granted a coat of arms. Kho Rimbo slurred something along the lines of “ghhhlyy” while slobbering saliva and blood over himself. He too was treated no better than Ambros, having been sentenced to brank's bridle.

As evening came, Sig stood up and announced that a week-long Year's End celebration shall begin. This was welcomed with uproarious approval from all those present. Wilbalt and Warmund went hard on drinks, food, and games; Tosk kept up; Julius opted to focus on the food and games; Thorm, Ignaeus, Minako, tracked Ambros down and then hung out with him; Alaric orbited Sig to get to know the man better; Thorinda mopped a bit but then got down to party; Jacob spent time writing notes on specific cruelties of the region; Tam got pissed big; Kho hid in a hole and wept.

Thawmist 1st, Airday

Ambros learned the price of his life from Old Crus.

“I have no use of you as a slave. This was merely need to humiliate you further. You are free, I don't care for you being here. For my services I want just one thing. Yukanthur's spell book.”

Ambros communed with his god Aniu, the Lord of Time.

He prepared three questions.

He received five answers.

That is between him and his god.

Thawmist 2nd, Airday

A party of seven—Wilbalt, Tosk, Julius, Alaric, Ignaeus, Jacob Vim, and Tam—returned to the ruins of Castle Yukanthur. They did not return to seek what Ambros needed. No, they came back for the secret chamber full of stone jars filled with delightful treasure and deadly gas.

It took them a full day, but they managed to extract everything that was worth it: two thousand silver pieces, one thousand gold pieces, a jar filled to the top with spiced honey, a jar—jealously guarded by Tam—filled to the top with red wine, three vials filled with pus-like substance, and three golden necklaces adorned with gems.

Adventurers returned, with no losses, to Ironburg by noon of Thawmist 3rd, Earthday.

Thawmist 8th, Earthday

Immediately after returning, Tam began organising a huge house warming party. After all, adventurers' humble townhouse had just been built. Roughly three thousand square feet of home! Some were suspicious—will people be interested in more festivities after the biggest festival of the year?

“Leave it to the vicar of Losborst!”

Everyone was invited. And everyone showed up! Well, nearly everyone. Old Crus refused but sent a little gift via Heinrik “A single drop of this will make you drunk within seconds. No headache, no hangover. But only a single drop!” Ambros remained hiding in Crus's tower, much to the wizard's annoyance. Ignaeus kept him company. Kho Rimbo was hiding somewhere in the bushes around Ironburg.

The party was a total toss up. Everyone had amazing time. Heinrik took a drop of Crus's drink, by mixing it into his wine. Within moments he felt like he was cruising on people. Tam, seeing that, drank the whole vial, just like that. Losborst himself materialised next to him, and they continued to party like gods do. Alas, to others, Tam crumpled to the ground, soiling his finest toga.

Tosk and Thorm once more focused on mingling with Sig. That paid off as the dwarf began working on a potential deal with the baron.

Nobody died.

Adventures began dreaming of all the supplies they could procure from New Hara. They assembled a wishlist. Their bellies were full, house warm, and coffers full.

But the question remains—will their new home burn down to the ground as well? Or they have learned something from their past deeds that will allow them to create a different future for themselves?

Poster by Lord Jubalon Flux.

Discuss at Dragonsfoot forum.

#Wilderlands #SessionReport

 
Read more...

from PlantLab.ai | Blog

What You'll Build

A Node-RED flow that captures a photo on a schedule, sends it to PlantLab for diagnosis, and takes action based on the result. Push notifications, dashboard updates, MQTT messages to your controller, log lines into InfluxDB, or whatever combination you want. No Python. No YAML. Nodes and wires.

Setup runs about 25 minutes on a Node-RED instance that's already up. The cost is whatever camera you own plus PlantLab's free tier at 3 diagnoses a day. The output is a structured JSON result: 31 possible conditions, a growth stage, nutrient antagonism hypotheses, and confidence scores, all ready to feed into whatever comes next.

Node-RED suits growers who already have their tent wired up with visual flows. If you've got temp sensors piping into an InfluxDB dashboard, MQTT switches on a power strip, or a Telegram bot that announces fan speed changes, you already know the pattern. Plant health diagnosis is just another node in the chain.

Coming from Home Assistant? There's a tutorial for that too. Node-RED gives you more granular flow control and broader protocol support. HA gives you a cleaner device-and-entity model. Both work. Pick whichever one matches the rest of your setup.


Prerequisites

Before we start:

  • Node-RED running (Docker, Pi, bare metal, or the Home Assistant add-on – any of them works)
  • A camera that can deliver a JPEG – IP camera with snapshot URL, Frigate, ESP32-CAM, Wyze with RTSP bridge, Reolink, anything that responds to an HTTP GET with a JPEG or that you can shell out to ffmpeg for
  • A PlantLab account – sign up free at plantlab.ai, copy your API key from the dashboard
  • Optional but recommended: node-red-dashboard for a visual panel, node-red-contrib-image-tools if you want to resize photos before sending, an MQTT broker if your grow controllers talk MQTT

Camera tip: shoot the canopy from above or at a slight angle, with neutral light. Blurple grow lights throw the model off because everything comes out tinted purple. Either schedule the check during a lights-off window or use the camera's built-in flash. PlantLab wants to see actual leaf color, not a magenta smear.


Step 1: The Basic Flow

Here's the smallest flow that actually does something useful. Four nodes. Inject on a schedule, pull an image from the camera, POST to PlantLab, debug-log the result.

[inject: cron 08:00] -> [http request: GET camera.jpg] -> [http request: POST plantlab] -> [debug]

Open Node-RED, drag these four nodes in, and wire them together.

The inject node

  • Repeat: at a specific time, 08:00:00
  • Payload: empty (we only need the trigger)

The camera snapshot node (HTTP request)

  • Method: GET
  • URL: your camera's snapshot endpoint, e.g. http://192.168.1.50/snapshot.jpg or your Frigate http://frigate:5000/api/grow_tent/latest.jpg
  • Return: a binary buffer

If your camera needs auth, add a basic auth header. If it's RTSP-only, use an exec node running ffmpeg -i rtsp://... -frames:v 1 -f image2pipe - and pipe the stdout through.

The PlantLab request node (HTTP request)

  • Method: POST
  • URL: https://api.plantlab.ai/diagnose
  • Return: a parsed JSON object
  • Headers: set in the function node below (not in the HTTP request node's UI)

Before this node, drop in a small function node to wrap the binary image as multipart form data and attach the API key header:

const boundary = '----NodeRedBoundary' + Date.now();
const bodyStart = Buffer.from(
    `--${boundary}\r\n` +
    `Content-Disposition: form-data; name="image"; filename="plant.jpg"\r\n` +
    `Content-Type: image/jpeg\r\n\r\n`, 'utf8');
const bodyEnd = Buffer.from(`\r\n--${boundary}--\r\n`, 'utf8');

msg.headers = {
    'X-API-Key': 'YOUR_API_KEY',
    'Content-Type': `multipart/form-data; boundary=${boundary}`
};
msg.payload = Buffer.concat([bodyStart, msg.payload, bodyEnd]);
return msg;

Put your API key in a Node-RED env variable or credentials node instead of hardcoding it. I wrote it inline for clarity.

The debug node

Hook this up to see the full response. You'll get something like this:

{
  "request_id": "req_abc123",
  "schema_version": "1.1.0",
  "success": true,
  "is_cannabis": true,
  "cannabis_confidence": 0.95,
  "is_healthy": false,
  "health_confidence": 0.87,
  "growth_stage": "flowering",
  "growth_stage_confidence": 0.9,
  "conditions": [
    {
      "class_id": "calcium_deficiency",
      "display_name": "Calcium Deficiency",
      "confidence": 0.92
    }
  ],
  "pests": [],
  "mulders_hypotheses": [
    {
      "excess": "potassium_excess",
      "explains": ["calcium_deficiency"],
      "evidence": 0.92,
      "evidence_count": 1
    }
  ]
}

The response can also include diagnostic_confidence, safety_classification, uncertainty_factors, environmental_patterns, and progression_risks. You can ignore the ones you do not need.

One thing worth knowing: the response is trimmed by omission. On a clearly healthy plant, you will NOT see a conditions: [] array – the field is left out entirely. Same with pests and mulders_hypotheses. Always guard with payload.conditions && payload.conditions.length before indexing.

Deploy. Click the inject node's button once to run it manually. If the debug panel shows a response with success: true, the plumbing is done.


Step 2: Branch on the Result

Now it gets interesting. You want different things to happen depending on what the diagnosis came back with. Drop in a switch node right after the PlantLab response, three outputs:

  • Property: msg.payload.is_healthy
  • Output 1: equals false (problem detected)
  • Output 2: equals true (all good)
  • Output 3: otherwise (covers the case where the image is not cannabis – is_healthy is omitted)

Always wire the third branch. If you accidentally point the camera at the lens cap, the wall, or your cat, the API returns is_cannabis: false with is_healthy left undefined. A two-output switch drops those silently. The third output catches them so you can log or send a “check your camera” notification instead.

Most of the work lives on the false branch.

A second switch for confidence

Inside the problem branch, add another switch:

  • Property: msg.payload.conditions[0].confidence
  • Output 1: >= 0.75 (high confidence – alert)
  • Output 2: < 0.75 (marginal – log only)

Early-stage symptoms produce lower confidences. You don't want every 0.4 nitrogen-deficiency blip triggering a Telegram ping at 3 AM.


Step 3: Notifications

Telegram

If you have a Telegram bot set up, drop a telegram sender node on the high-confidence branch. Use a template node before it to format the message:

[ALERT] Plant issue detected

Condition: {{payload.conditions.0.class_id}}
Confidence: {{payload.conditions.0.confidence}}
Growth stage: {{payload.growth_stage}}

Mulder's hypothesis: {{payload.mulders_hypotheses.0.excess}}

Discord

Swap the Telegram node for node-red-contrib-discord-advanced and point it at a webhook. Same template works.

Home Assistant (via webhook)

If you run both HA and Node-RED, Node-RED can fire an HA webhook that triggers a mobile notification with the snapshot attached:

[http request POST: http://homeassistant:8123/api/webhook/plantlab_alert]

The webhook handler in HA does the actual notification. Useful if you already have notification channels, templates, and quiet hours configured over there.


Step 4: Close the Loop

This is where Node-RED pays for itself over a static dashboard. You can fire automations directly from the diagnosis.

Auto-dose Cal-Mag on calcium deficiency

Add a switch on the condition class:

  • Property: msg.payload.conditions[0].class_id
  • Output 1: equals calcium_deficiency

Then wire a change node to set the MQTT payload and publish to your dosing pump:

[mqtt out]
  topic: grow/pumps/calmag/set
  payload: ON

Then a delay node (5 seconds), then another MQTT message flipping it back OFF. Always notify yourself when a dosing automation fires. A false positive that dumps nutrients is a bad morning to wake up to.

[set pump ON] -> [delay 5s] -> [set pump OFF] -> [notify]

Ramp up fan speed on fungal detection

If the diagnosis returns powdery_mildew or similar with high confidence, push the fan speed up and drop target humidity in your environmental controller. Same pattern – switch on class_id, change node for the new setpoint, MQTT publish.

Log everything to InfluxDB

Regardless of what happened, log every diagnosis to a time-series database so you can build dashboards later. Drop an influxdb out node on the main line, before the switches. A function node preps the fields:

msg.payload = [{
    is_healthy: msg.payload.is_healthy ? 1 : 0,
    health_confidence: msg.payload.health_confidence,
    top_condition: msg.payload.conditions[0]?.class_id || 'none',
    top_confidence: msg.payload.conditions[0]?.confidence || 0,
    growth_stage: msg.payload.growth_stage
}];
return msg;

Now you have a Grafana dashboard of plant health over time. Symptoms drift slowly over days. Watching a confidence line trending up on one specific condition is more useful than catching the single moment it crosses 0.75.


Step 5: Dashboard

With node-red-dashboard installed, you get a web UI for free. A simple panel:

  • ui_template showing the latest snapshot
  • ui_text nodes for condition, confidence, growth stage
  • ui_gauge for overall health confidence
  • A manual ui_button wired back to the inject node so you can trigger a check on demand

Drop them all in a group called “Plant Health” and they render in a grid at /ui. Pretty enough for the tablet stuck to the kitchen wall.


Putting It Together

Complete Node-RED flow: three triggers fan into GET camera, wrap multipart, POST plantlab, then is_healthy switch routes to confidence, healthy, and not-cannabis branches; confidence routes further into Telegram, HA webhook, class_id switch for cal-mag pump and fan up, plus log-only

The whole flow described in prose:

Three triggers feed the same pipeline. Two scheduled injects (morning, evening) and one manual dashboard button. Each trigger pulls a camera snapshot, wraps it as multipart, POSTs to PlantLab, and parses the JSON response. From there the signal fans out. One branch writes every result to InfluxDB so you can graph drift over time. The other branch hits switch: is_healthy. The true side logs and stops. The false side continues into a confidence switch. Low-confidence detections only log. High-confidence detections fan out into Telegram, an HA webhook, and a switch: class_id that routes specific conditions into downstream automations (cal-mag pump on calcium deficiency, fan bump on mildew, whatever you wire up).

One diagnosis call in. One structured log entry. Two scheduled checks, one manual button. Zero or more notifications, zero or more automations fired. All from five node types: inject, http request, function, switch, change.


Troubleshooting

Problem Likely cause Fix
is_cannabis: false Camera angle, blurple lights, lens cap Adjust position, use white light or flash
401 Unauthorized Missing or wrong API key Check the X-API-Key header in the wrap-multipart function node
503 Service Unavailable on upload Image over 10 MB hits the upstream limit before reaching the API Resize with node-red-contrib-image-tools before the POST. Target under 8 MB to be safe.
429 Rate Limit More than 3 requests/day or 90/month on free tier Space out injects or upgrade to Pro (500/month)
Request hangs Camera or API unreachable Add a catch node on the flow; set HTTP request timeout to 15s
conditions field absent Plant is healthy, or the image isn't cannabis, so no condition was detected Expected. Guard with payload.conditions && payload.conditions.length – the field is omitted entirely on healthy plants, not returned as an empty array.

Add a catch node wired to your alerting. When the flow itself breaks, you hear about it. Two weeks of silent green checkmarks on a flow that quietly stopped running is worse than a flow that never ran at all.


Why Node-RED Instead of Writing This in Python

A few reasons.

Protocols come free. MQTT, HTTP, WebSockets, Modbus, CoAP, serial, SNMP – all one node away. Your dosing pump speaks MQTT, your camera speaks RTSP, your logger speaks InfluxDB line protocol, alerts go to Telegram or Discord. Doing that same glue in Python means pulling in four libraries and maintaining them yourself.

Visual flows match the mental model. “When the camera sees X, send Y to the pump and notify me on Z” is already a diagram in your head. Node-RED lets you lay it out on a canvas instead of translating between code and back.

You can change a running flow. Deploy swaps it in place, no restart. Handy for grow-room automation where you tune thresholds based on what the plants actually end up doing, not what you assumed they would.

If you prefer code, the same flow is about 40 lines of Python with requests, paho-mqtt, and a cron entry. Use whichever fits.


What the API Actually Gives You

The response has every field you need for automation. The ones that matter most:

Field Type Notes
is_healthy bool The simplest switch
is_cannabis bool Guard against pointing the camera at the wrong thing
conditions array Sorted by confidence, top result first
conditions[].class_id string One of 31 possible values
conditions[].confidence float 0.0 to 1.0, maps empirically to real correctness
growth_stage string seedling / vegetative / flowering
mulders_hypotheses array Nutrient antagonism explanations

mulders_hypotheses is the block most growers end up leaning on. If the diagnosis is calcium deficiency but the hypothesis says the real cause is potassium excess, adding more cal-mag makes things worse. That's the kind of tip that saves you a week of chasing the wrong fix. More on nutrient antagonism here.


FAQ

Do I need a dedicated PlantLab Node-RED node?

Not yet. The standard http request node handles it fine. A node-red-contrib-plantlab package is on the roadmap and will collapse the multipart wrapping into one node. Until then, the function snippet above does the job.

How does this compare to the Home Assistant integration?

HA gives you entities and a config flow. Node-RED gives you wires and broader protocol reach. If your setup is already Node-RED-centric, don't force HA into the middle just for this. If you have both, let Node-RED handle the flow logic and use HA webhooks for the notifications that already work well there.

Rate limits?

Free tier: 3 per day, 90 per month. Pro: 500 per month. A home grow with morning and evening checks fits the free tier with a spare daily slot. If you're monitoring multiple tents or running high-frequency checks during flower, Pro is probably what you want.

Does 0.80 confidence really mean 80% certain?

Close to it. Over our evaluation data, a score of 0.80 lines up empirically with about 80% correctness. Worth knowing when you set automation thresholds – a 0.60 threshold fires more often than a 0.80 one, at a predictable cost in false positives. More on how we diagnose here.

Does it handle images from plant apps?

The endpoint accepts any JPEG or PNG. Grow-log app, phone gallery, file drop on a NAS – same POST, same result.


PlantLab detects 31 cannabis conditions – nutrient deficiencies, pests, diseases, environmental stress – at 99%+ accuracy in 18ms. Structured JSON out, works with anything that speaks HTTP. Free tier at plantlab.ai. HA integration is open source at github.com/plantlab-ai/home-assistant-plantlab.


 
Read more...

from Roscoe's Quick Notes

TX_Rangers

Texas Rangers vs Tampa Bay Rays.

Tuesday's MLB Game of Choice has my Rangers playing the Rays. This game is scheduled to start at 5:40 PM CDT. As I usually do, I'll follow the game's score and stats in real time via MLB's Gameday Service where we can also find links to the radio-call of the game provided by announcers of either team we choose.

And the adventure continues.

 
Read more...

from zbridges

ADHD and the lies we tell ourselves

I recently finished a book, 12 principles of raising a child with ADHD. In general I don’t like this science-based self-help genre but I am entering a phase where I am truly out of my depth. My son is moving into middle school, I’ve got a newborn on the way, and I cannot drop the ball on supporting my son or myself during this time. It’s more important for me to model good coping skills than it is for me to do anything else.

This book was kind of a wash for me. Living with pretty severe adhd as an adult has made it so my coping skills are not terrible. It did put into words the experience of a child who does not understand what is occurring inside their head though, which I appreciate.

 
Read more... Discuss...

from Lastige Gevallen in de Rede

Van Voorbijgaande Aard in Natuurlijke Omstandigheden ; De Aapropos

Vandaag ben ik, Pre Centator, in een wel heel bijzonder deel van Smægmå, het verregende woud waarin alleen soorten leven die heel erg graag nat zijn, worden en zo willen worden gehouden, het moet zo nat mogelijk zijn maar dan weer geen oceaan of stuwmeer zijn, voor mij en mijn medeklinkers en dergelijke medewerkers is het er vrij lastig vertoeven, het wifi netwerk is niet al te best, alleen in hoge bomen zie je wel eens een streepje hoop op bereik.

Wij zij hier samen opgehoopt voor een reportage over een bijzondere apensoort, de Aapropos, in gewone schrift taal de Post Scriptum aap of de Voorikhetvergeet Aap. Deze Aapropos komt uit de Aapostrofe über soort die uiteindelijk uitkomt onder de stapel waar wij ook bij horen, de (gecultiveerde, aangeklede, geknipt en geschoren, met een mobiele telefoon omhopsende) mensapen type. De Homo Zakiëns, ex Ludens, Leuk weetje toch.

Aaproposeurs en Aapropositie, de namen van het mannetje en het vrouwtje, leven hoog en laag in de bomen van het verregende woud, ze besteden hun tijd voornamelijk met elkaar in de rede vallen, tijdens de vele debatten op de takken van enorme lof houwende bomen geworteld in die glibberig natte aardbodem, de stammen eigenlijk altijd omring door rustig of wild kabbelend water. Er is nooit een Aapropos die als laatste klanken uitstoot, een debat gaat voor zover ik weet door en door tot in het oneindige van het alsmaar nieuwe verdiepingen aanbouwende heelal.

De Aaproposeur klinkt zwaarder dan de Aapropositie, ze doen zich voor als hoger in rang, om dat beeld te bestendigen zitten ze op hogere ranken van de geloofde bomen tijdens het oneindige gebabbel. Het is voor een buitenstaander onmogelijk om te weten waarover ze zo druk speculeren aangezien ze daarmee nooit stoppen, behalve heel even voor voortplanten en voeden, handelingen blijkbaar alleen nodig voor meer speculaties en altijd genoeg deelnemers aan het gesprek in de verre, verre toekomst. U begrijpt wel dat het niet moeilijk was deze soort te ontdekken, ze deden er zelfs alles aan om het te worden. Gezien, gehoord, te worden ervaren door alle andere verregende wouden bewoners, het merendeel vertrokken naar posities heel ergens elders, zo ver_mogelijk bij de ellendig rumoerige Aapropos vandaan, helaas voor hen en ons heeft deze soort bedroevig weinig vijanden.

Door onfortuinlijke toevalligheden verdwenen hun grootste vijanden, de hoop van de overige verregende inwoners is daarom gevestigd op geruchten, wanhoop eigenlijk, die geruchten zijn ook waarom wij hier zijn toeschouwen op film en in items, Het lijkt er op dat deze snel naar onze droger gelegen delen van Smægmå oprukkende soort zichzelf steeds harder en harder tegenspreekt, tot dood bloedens toe op elkaars klankkast inhoud ingaat ten bate van het eigen geluid, nou ja, lawaai, herrie, kabaal.

Wij, de mensen van de redactie van Van Voorbijgaande Aard in Natuurlijke Omstandigheden, zijn er op uit om beelden van dergelijke in geweld uitlopende communicatie pogingen te filmen, allemaal voor de wetenschap en natuurlijk voor het vermaak. De bron van onze omroepleider is entertainment tot aan de dood en daar voorbij bezorgen aan de fans van entertainment en entertainers overal op Smægmå, waar zouden we zijn zonder al die miljoenen vermakelijke bijdragen via alle juist daarvoor ontwikkelde methodes en technieken, onze AI.

We dachten dat geruchten zoals deze loos waren en waren er derhalve van uitgegaan dat we ze in scene zouden moeten zetten of met list en bedrog moesten veroorzaken binnen de Aapropos stam maar tot onze eigen verbazing bleek het gezegde waar. Deze soort kon elkaars beeld en geluid niet verdragen, ze gunden elkaar geen klinker, geen teken van lezen, helemaal niks en zichzelf juist alle rumoer op hun immer toenemend terrein. Hun klankkleur boven al het andere, met name boven dat van de andere lagere ranken toeten en blazende Aaproposeur en hun Aaproposities. Sterker nog het in serene stilte schieten van deze bijzonder afschuwelijke, schrikwekkende reportage vonden we het, weliswaar heel even, beter om de beelden van elkaar met hand en tand bestrijdende apen niet aan u te tonen, maar aangezien we u toch moeten entertainen met de werkelijk wonderlijke wereld van moeder natuur in samenwerking met moeder taal in vader land Smægmå ziet u nu toch voor u de eindeloze strijd tussen de Aaproposeurs, Aapropositie aan alle kanten tegen de andere Aaproposeurs en Aapropodities, een bloedige strijd over iets van hoorbaar belang wat ons echter is ontgaan maar des ondanks er duidelijk toe doet dat ziet u nu, twee uur lang en daarna een week in de uitzend loop, en daarna altijd oproepbaar vanuit de cloud, we hebben ook speciaal voor u bijna overal vaste webcams in het verregende woud opgehangen zodat u op ieder moment van de dag kunt zien hoe de strijd verloopt en wie wint en wie het pleit heeft verloren. Als dat niet leuk is dan weten wij het ook niet meer.

Tot de volgende keer maar weer bij Van Voorbijgaande Aard in Natuurlijke Omstandigheden.

 
Lees verder...

from Life according to 𝑺igi

Rule #5 : a tilt of perception the world remains what it is; the self tilts

On the value of a signpost

You asked me about the origin of Sigi's Rule #4. I recall that I told you a related story, but omitted the birth of the notion itself. Forgive me. I was trying to protect you. I realize now there is no protection available. I should have explained earlier the circumstances in which the idea first occurred to me.

I was walking through unfamiliar country when I came to a signpost that was clearly not sitting comfortably in its role along side the fork in the footpath. But trusting it, I followed the direction it indicated. It was a, more than gentle, ascent but the beauty of the landscape drew me onwards. I paused occasionally to gaze upon the scenery or stoop to admire the collision of colours among a display of wild flowers. So I cannot say that I soon realised it was leading me entirely the wrong way. Rather that I had been so pre-occupied with being in the landscape that I walked a considerable way, to the summit of a hill. It was only when I reached the summit, and found no obvious way onward, that I became annoyed.

And yet, as I my eyes danced from field to cottage from road to river, tracing the whole valley now arranged below me, the annoyance must have melted away, for I was no longer aware of it. Only the delight at being there. I continued along in a make-shift direction to regain the valley further along in my journey and reflected. Had the sign been obedient to its office, I would have remained on the lower road and never seen the landscape before me. The mistake revealed a truth.

Years later, passing that way again, and now wholly familiar with the route, I noticed the old sign still leaning at its disproportionate angle, but obscured from casual view by a perfectly accurate modern directional system. Visitors could now reach their destination efficiently and without confusion. Yet nobody ever climbed the hill. Nobody saw the valley. The truth of the sign concealed a mistake: navigation had become confused with arrival. I concluded:

A mistake may fail in relation to its object while succeeding in relation to an horizon.

A truth may succeed in relation to its object while failing in relation to an horizon.

I rather value this lesson. Not every wrong turn is an error, and not every correct direction reveals where one is. And I, I have never been entirely certain whether the discomfort of the sign, as I originally encountered it, revealed a deeper history. ✒️ Sigi

 
Read more...

from An Open Letter

I’ve started a powerlifting program again and I’m so excited! Also, there’s this one girl at the gym that is really pretty, but looks absolutely terrifying like i’ve started a powerlifting program again and I’m so excited! Also, there’s this one girl at the gym that is really pretty, but looks absolutely terrifying like an insane death glare. At the end of our gym session J and I went to the posing room and she was there, and I asked her for advice on something and she was such an incredibly bubbly, friendly person. We exchanged Instagram’s and I don’t know. I think it’s just insane how much things can change if I give them the chance.

 
Read more...

from eivindtraedal

De mange forsøkene fra profilerte Høyre-politikere på å klistre venstresida til islamisme fremstår som en klønete forsøk på å «speile» argumenter folk på høyresida blir møtt med. Men dette kommer aldri til å bli en symmetrisk diskusjon, av en enkel grunn: høyreekstremisme er en ekstrem ytterkant av høyrevridd ideologi, men islamisme er ikke en ekstrem ytterkant av hverken sosialisme eller sosialdemokrati.

Vi finner ytterst få, om noen, eksempler på at profilerte politikere på venstresida lefler med islamisme eller adopterer argumenter fra radikal islam. Det ville være absurd. Radikalt islam er jo en reaksjonær ultra-konservativ ideologi. Men vi finner mange eksempler på at folk på høyresida lefler med høyreradikalt tankegods.

PST trekker fram “ekstrem islamisme” og høyreekstremisme som de to store truslene på terrorfronten i 2026. Bare en av disse to truslene har en berøringsflate med det etablerte norske partilandskapet. Om man trekker høyrevridde standpunkter, f.eks. mot innvandring og flerkultur, til et ekstremt ytterpunkt, kan du havne i høyreekstremisme. Men du trekker venstrevridde standpunkter til sitt ekstreme ytterpunkt, havner du ikke i radikalt islam.

For de på høyresida som skulle være forvirra over hvorfor det er mest snakk om å “ta avstand” fra høyreradikalt tankegods og mindre om å ta avstand fra ekstrem islamisme, så finner du også svaret her. Det er en fjollete øvelse å be noen om å ta avstand til noe de aldri har har vært nær, eller nærmet seg. Avstanden mellom ekstrem islamisme og norsk venstreside er stor og konstant. Du kan like gjerne be oss ta avstand til Bouvetøya.

Men å sørge for at det er tilstrekkelig avstand mellom høyresida og deres radikale og ekstreme ytterfløy, krever åpenbart stor og kontinuerlig innsats. De siste årene har jo høyresida kollapset til autoritære og rasistiske partier i mange vestlige land, noe som truer både menneskerettigheter, demokrati og rettsstat. Deres ideologiske svakhet er en trussel mot oss alle.

Hvis islamistiske partier tok over vestlige land med venstresidas støtte i land etter land, så kunne vi snakket om behov for avstandtagen, men sånt foregår jo bare i fiksjonen, i rasistiske feberfantasier som den norske kulturmiddelklassen koser seg med.

Ironisk nok er den eneste måten høyresida kan forsøke å «speile» denne debatten på, nettopp å omfavne høyreradikale konspirasjonsteorier. Ideen om at islam og innvandrere egentlig bare er et verktøy for venstresida, som «importerer» mennesker for å bytte ut befolkninga, også kalt «den store utskiftningen», var sentral i Breiviks tankeverden.

Om man adopterer denne store løgnen kan man skape en skrudd kobling mellom venstresida og radikalt islam. Men da har man blitt en høyreradikal konspirasjonsteoretiker på veien.

Derfor føles det siste døgns desperate forsøk på å slå politisk mynt på pride-terroren i Berlin fra høyresiden både dumt og destruktivt.

 
Read more... Discuss...

from Notes I Won’t Reread

Good morning. Against everyone’s best interests, im back. while i thought this would’ve taken longer, it didnt. which is. unfortunate for us all, but anyway. im back now. sitting here like i never left. life really does have a strange sense of humor. so do i. the twenty-fifth, the twenty-sixth, the twenty-seventh. waiting. most people arent very good at that, a lot of waiting. not so exciting, i know. but anyway, the little situation is over. i would explain, but i have a feeling people enjoy making up their own vesions more. humans do love that. give the half a picture and suddenly they’re experts. always, always very confident about things they’re usually wrong at. its almost impressive, considering being wrong is probably the one thing they practice every day. As for my little guest. a very determined person. ill give them that. the confidence they had was impressive while their decisions were questionable, their attempt at changing the story was almost charming, almost. Everyone likes to believe they’re the exception, the one person who will somehow be different from everyone else, and thats very ambitious. As how the trip back home was peaceful, and nobody was around asking questions they didnt actually want answered. finally, some silence is what i deserve after all that. now its early in the morning i would say, and im home, back to writing again. disappearing for a while and returning just to complain about people is my version of a hobby. could be worse. i could have a normal one. but anyway, im sure someone will try to make sense of this. Good luck with that.

Now im back to the important things, writing nonsense, complaining about everything around me, and pretending that my terrible opinions are somehow valuable observations. Until the next inconvenience decides to introduce itself, i suppose you’ll have to survive my usual collection of thoughts. How unfortunate for you.

Sincerely, Until i get bored again.

 
Read more... Discuss...

Join the writers on Write.as.

Start writing or create a blog