Want to join in? Respond to our weekly writing prompts, open to everyone.
Want to join in? Respond to our weekly writing prompts, open to everyone.
from
Notes I Won’t Reread
I’m afraid my thoughts have finally dried out. They didnt disappear, exactly. that would be too merciful. more that they became tired of carrying me around and have decided to sit somewhere in the corner of my brain, refusing to participate. i thought the dreams would take a little longer to get into my head than this. but my brain had other plans. Lately, i’ve found myself rereading our messages. Not because ive forgotten what she said, but because i keep trying to figure out whether i sound like myself anymore. i read the same conversation again and again, looking for the point where i became someone else without notfiying me. i worry that im slipping. not in a dramatic way, dont be ridiclous. just the little things might have. a sentance that sounds too tired. a reply that takes too long or something i say that makes it obvious i’ve been somewhere in my head for far too long. im afraid she’ll read between the lines and realize im not as fine as i keep insisting i am. and naturally, i cannot tell her. because if im being honest. pretending everything is perfectly fine is a far more reasonable solution than admitting that im exhausted and stuck inside my own thoughts. very mature. i know, ten out of ten. I don’t want to stop talking to her. shes the one and only person who somehow makes everything quieter. when everything else feels like pressure pressing down on me, talking to her makes me breathe a little easier. so avoiding her would be rather stupid, even by my standards. Theres also something else i havent told her. my spleen might get worse. theres a possibility things could become serious enough that i might not have as much time as i’d like. i hate even writing that. Not because i think im going to die tomorrow. obviously not. i have far too much unfinished business and an unreasonable amount of confidence for that. but after everything these years have managed to throw me, i dont think this is how im supposed to end. it feels almost insulting. after all that effort, all that suffering, all those spectacularly poor decisions, i refuse to have my grand finale be something as medically inconvenient as this. i still want time with her, a lot of it. enough to annoy her properly. enough to make more memories. enough to reread our messages years from now and complain about how embarrassing we both were. so No, im not dying. i just simply decided to become dramatically concerned about my mortality at three in the morning because i have nothing better to do, like all of you.
How narcissistic of me, even my potential demise has to somehow become about me.
Sincerely, The man who would like to remind everyone involved that, despite the alarming amount of nonsense my body and mind have been conspiring to produce, i am not going anywhere.
Not yet, anyway. i have people to bother, conversations to reread, things to overthank, complaints to write and an entirely unreasonable amount of confidence to maintain. besides, if i were going to die, i would at least expect the universe to have the decency to make it more interesting. i refuse to leave this world on such a boring note. it would be terribly out of character.
And frankly, who else is going to be this insufferably me?
from
Roscoe's Story
In Summary: * Listening to the Colts / Patriots Preseason Game was really enjoyable. I had to leave the game at half time with the Patriots ahead 10 to 6. (I was just too sleepy) The Colts wound up evening the score, and the game ended in a 13 to 13 tie.
Tonight I'm going to try listening to another NFL Preseason Game, Buccaneers vs the Jets. Since I don't have to be up early tomorrow morning, maybe I'll be able to finish this game. We'll see.
Prayers, etc.: * I have a daily prayer regimen I try to follow throughout the day from early morning, as soon as I roll out of bed, until head hits pillow at night.
Health Metrics: * bw= 229.39 lbs. * bp= 148/85 (63)
Exercise: * morning stretches, balance exercises, kegel pelvic floor exercises, half squats, calf raises, wall push-ups, BP breathing exercises, pilates
Diet: * 04:40 – 2 HEB Bakery cookies * 05:25 – nacho chips with cheese & meat sauce * 07:45 – 2 more cookies * 09:10 – 2 cinnamon rolls * 11:10 – steak, sausages, fried eggs, grits * 16:00 – a dish of ice cream
Activities, Chores, etc.: * 03:10 – listen to local news talk radio * 04:00 – bank accounts activity monitored. * 04:10 – read, write, pray, follow news reports from various sources, surf the socials, nap * 11:00 – watching MLB Now on MLB Network * 11:15 – eating a BIG lunch at home * 12:30 – listening to 104.3 The Score, Chicago Cubs Baseball, for pregame coverage ahead of this afternoon's game vs. the St. Louis Cardinals. * 15:55 – ... and the Cubs win, 3 to 0.
Chess: * 10:00 – moved in all pending CC games
from Faucet Repair
12 August 2026
Firmly in the floating world after finding a robust Hokusai monograph at Edith's. These are the works that have been with me since:
Girls at their Toilette, from the series Seven Stylish Foibles (late 1790s) Mountain Tea-house, album-plate from Mists of Sandara (1798) Pheasant in Autumn from Album from Life (c. 1814)
Incoming waves/Receding waves, from Hokusai manga (1815) *One of the best artworks I've ever seen...
Turtles in Sayama Pond, from Hokusai manga (1817) Sunset over Ryogoku Bridge from Thirty-six Views of Mt Fuji (early 1830s) Mt Fuji from Kajikazawa, from Thirty-six Views of Mt Fuiji (early 1830s) The Horse-washing Falls, from The Waterfalls (c. 1833) Suspension-bridge between Hida and Etchu, from The Bridges (c. 1834) Tiger in the Snow (1849)
It was really my first time swimming in the totality of his work, and the first thing that comes to mind as it settles in my head is rhythm. Rhythms of nature; human inclusive. Devotion to its majestic indifference. Waves, waterfalls, hair, fabric folds, wood grain, turtle shell patterns, bird feathers, shifting clouds, and, of course, geologic formations. His stillness is singular, frozen solid yet flowing. I thought often of Turner's Snow Storm (1842), and it's lovely to think about both of them working at the same time—their timelines overlapped almost completely.
I sent Tiger in the Snow to my dad, and he responded with recently captured images from the Inouye solar telescope that show the surface of the sun in more detail than ever seen before. A network of burnt-golden vortices cycling and spiraling. He was right—it looks just like the pattern of the tiger's fur. I don't find this coincidental; Hokusai's subjects are his own dilating device toward an inner actuality that magnified something elemental. Which I am now noticing blips of in the modular makeup of everything moving.
from
💚
Wembley
In a four across the road To this beset our country Paid at landing neary by The future going home- and dance with you,- my While All a spade And trading secret there These best of seeds And hidden layers,- to transpose The next in sight of mine This curio and wear Time to be as one And knowing I have a friend,- this forest mew And time will tell alone At Dublin’s whet Assuming heights in here Barred alone At Disney was there nyquist Shakes ahead By rail and slightly you I tossed ahead Four courses aiding reality And whose go-what In whistle dropped a name And portly then The sympathy of code And pressed the system Nine days of batteries Between these years of blue While sighting rhyme To all portend And with this stand of view April years And fortunes to reply The glad kin us Aching for our year For piping hand And blessed Saint Peter To abide and to suppose The right unkept Dining on a napkin The Earth is well And not to this farewell The right unknown And verse of re-distore In pains for newness here So then invoke My stomach ate for words In night and Scotly view Every right to go This Paris hand In fighting distal prime For all of them The permitted and the most To make it right And clasp for his A Turkey on his day Who ate La Presse In solemn bliss What nice to have a backyard And Earthen things- will be back someday As Ocean’s wheel And Paardeberg Setting in and out Dismissing them And Ru for brightest bomb To curious these people For twenty days Obsessed with silver And Jerry-car A year in Scotland yew To second this man amorse A pity there in Babel And sucking flame The night of purpose And all are stars bequeath Electing fours And every Friday,- the mercy of the others For King respect And my, it’s cold The duty to collect Each prayer of you For vitamins and glory The Earth in chasm As due for making sure This nine-repeat behest For other first And teammate members Implosions of the view And Earthing West Til tidal time In Space we rod The Earthen can Abridances to this day And might will find In gold respect A fate and Cross The leadenned rest As nights require That tryst in you was not- a verse in flame or lux The sky that be And just as unemployment And cared about- everybody On silent as its Dan A piece of Rome To northern ‘vite Apple will secure the right Forgiven then- the time unto And paid this knot Supposing newer here In seating high and search The Fortress Mir And due in March The pay of err And sodium to our win This Country core And earsted grammar to the search In right respect To no reserve and such as this Wembley up to bat For climbing pine And Betty cinders The close at hand and number Extolling prose for where it’s from The night to re-suppose A win in softly And Wembley at our home To those askance No victory but romance And I will see what was And be seeking you The ants of war And mercy to their plod A faceless time and vent And lonely men- as nice as her For pages bright Rescinded to the flame And Cross by her The hand regrets in shield And all of war in science To sheds at will- that peace for common wood The night as human Seeking wet and sleep And I was killed And built the stadium Remembering time as that A soul to keep To Christ and baring call Forever good Amazed at Wem’ In portions to her help My own heart wept As you would The nights are here And so we pause A light in sober Moore To Peter’s stay In any room And I will still be here. 💚❤️
from Faucet Repair
10 August 2026
Watched John Smith's The Girl Chewing Gum (1976) this morning, and later my mom sent our family group chat three home movies from 1996. The first was a clip of my dad spraying a hose in the backyard of our second house. Our dog at the time—Spanky, a Border Collie—chasing the stream. Dad standing in a shadow at the edge of the yard, Spanky zigging and zagging around in the flat, pale yellow LA summer light. The camera briefly pans to my mom, who is holding a newborn Grey (then Zach) on her hip. The video is mostly ambient sound, but at the end a voice mutters something unintelligible from behind the camera. The voice doesn't belong to anyone in our family, but was (and still is) a friend.
from
The happy place
The sun was unexpectedly warm today, the air damp and only a few gray clouds were on the otherwise blue sky, and they weren’t even that gray.
Today I was feeling great inside
Everything seems to be going fine,
These feelings of sunshine and happiness are welcome
🤗
from
Roscoe's Quick Notes

This Friday brings me an afternoon MLB Game; the St. Louis Cardinals and Chicago Cubs will be playing at Wrigley Field, and the game's opening pitch is scheduled for 1:20 PM CDT. As I usually do, I'll follow the game's scores 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.
from
M.A.G. blog, signed by Lydia
Lydia's Weekly Lifestyle blog is for today's African girl, so no subject is taboo. My purpose is to share things that may interest today's African girl.
Styling Your Old Corporate Shirts the Ghanaian way. Refreshing your work wardrobe doesn't have to be expensive. By mixing classic corporate shirts with modern cuts, African prints, and timeless accessories, you can create countless outfits that look fresh, elegant, and uniquely Ghanaian.
Add a Touch of African Elegance: Nothing refreshes a plain corporate shirt like African prints. Pair your white or blue shirt with a beautifully tailored Ankara pencil skirt or high-waisted trousers. The combination blends professionalism with cultural pride, making it perfect for the modern Ghanaian woman.
Accessorise Like a Professional: A statement necklace, elegant earrings, a leather handbag, or a colourful silk scarf can completely transform your outfit.
Keep accessories balanced so they complement your shirt without overpowering your professional image.
Layer for the Rainy Season: Accra's rainy season can be unpredictable. Keep a lightweight blazer or tailored cardigan handy. It adds warmth in air-conditioned offices and protects your polished look when the weather changes.
Roll Up Your Sleeves with Confidence: On warmer days, neatly rolled sleeves creates a relaxed yet sophisticated look. Pair them with loafers or block heels for comfort while moving around the office or attending meetings.
Before you shop for something new, take another look at the shirts already hanging in your wardrobe. You may discover your next favourite office outfit is one you've owned all along.
Poverty the mother of invention and fashion? Every year about 200,000 Ghanaian girls finish secondary school, and many cannot continue because of lack of funds. Understandably, 1 year university comes to about 15,000 Cedis, if you add accommodation, fees and upkeep. Rather than idling many become seamstresses, some after getting a degree from a Roadside Academy, some going to a fashion school, some interning with a “Madam”. And then they offer their services to friends and neighbors and family. Competing against mountains and mountains of second hand stuff coming in from Europe. So about the only way to make more than 80 Cedis or so a dress is to be different. So we see all sort of trials, T-shirts turned into blouses with sleeves, skirts with a stripe of kente sewn onto it, what not. And some of it is quite original. I recently visited the Jaynal graduation day and really, a few of the pieces presented met all standards of a professional fashion designer. No wonder Europeans are evermore becoming interested in African designs, here we can still find really original things, and especially if traditional materials like Kente, Batakari, Adinkra and Bambolse are incorporated and traditional styles are followed.

Sport sport sport. Are you following the Women's Africa Cup of Nations (WAFCON)? Ghana may not win but I like to watch the ladies. They play better than the men, kicking, pushing, pulling, beating, bumping into each other at full speed, tackling, fouling, kicking the goal keeper in the face, and, with the men you hardly see that, hair pulling. This is sport at its best.

Irregular flow. This is unpleasant, you don't know again when is what, and especially if yours is “painful” you may want to plan around it and schedule that weekend in Elmina or Akosombo for better days. The main reasons for irregular flows mentioned are medical, hormones, medications, stress, sudden lifestyle changes, weight gain or loss, intense exercise, thyroid issues and even approaching perimenopause. A friend of mine had a fairly regular flow, until she started to gain weight. Often she was up to 10 days late. Then in January she cut carbs. Not entirely, that’s very difficult, but no sugar, no rice, no bread, instant noodles, pastries, sweets and no sodas. And since April, she’s regular again like a clock again, till today. All carbs eventually turn into sugar. First of all any form of cancer needs sugar, so the less you eat it, the less chance you have of getting cancer. But secondly too much sugar upsets your blood sugar balance, your pancreas has to work overtime and by the time you are 50 or so this turns into a full blown diabetes. And that means either a daily dose of insulin, at the cost of at least between GH₵3.50 and GH₵15.00 per day, or death between 10 and 20 years earlier. On top of that your intestines get confused and even if you eat the right food you’ll not digest it properly and will easily become deficient in all sort of things. So stay away from carbs as much as you can. Our typical diet is about 60% or more carbs, try to bring it down to 40% or less. And just for the record, a small bottle of coke contains about 35 grams of sugar, about 8 cubes or 8 teaspoons…Say it with Coke.

**+233 Jazz Bar & Grill **. On Tuesday is their jazz evening, the place is quiet and cool, the band played inside but we were at the bar where we could see and hear the band, with in the background the sound of the drizzle. We tried their spring rolls and immediately ordered a second portion, excellently fried. Their beef kebabs are still very good and juicy and spicy, and very big, almost like a steak at a restaurant, but then for 70 GHC only. And I like their burger at 160 GHC. They don't come with all the things most people like, just onion and tomato and beef and a bread bun, but the meat is tasty and tender. An excellent bite without the frequent sauce mess most beefburger unfortunately create. And their quarter grilled chicken is nicely juicy. All in all we had an excellent evening , nice food, nice music from Frank Kissi & The Electric Band, and the place outside empty with the drizzle of the rain, just the three of us. Could be a song.

from
PlantLab.ai | Blog

Between June and August 2026, PlantLab learned to diagnose several plants in one photo, started naming the family of a condition when it isn't sure of the specific name, made model upgrades visible to your code, and fixed an upload failure that took three tries to actually kill.
The middle two change what comes back in your JSON.
I don't write these often. Most of what happens on a project like this isn't worth a post, and I'd rather publish something useful about spider mites than a changelog with a bow on it. But enough landed this summer to be worth one place to see it, and the failures are more interesting than the features.
The API used to assume your photo held one plant. Shoot a whole tent and it averaged everything into one answer for the room, which is the wrong answer for every plant in it.
It now finds each plant separately and returns a results array – one entry per plant, each with its own bounding box, health call, growth stage and conditions. Three plants, two fine and one yellowing, gets you exactly that, and the box tells you which pot to walk to.
This was a breaking change: the per-plant fields moved off the top level into results[]. A single-plant photo returns an array of one, so it's the same code path either way. There's a longer write-up if you're wiring it up.
The change I'm happiest with, and the least flashy.
Some plant problems look nearly identical in a photograph. Calcium and magnesium deficiencies need different fixes, and there are images where nothing in the RGB data cleanly separates them. The honest move there isn't to pick one and sound confident.
So every condition and pest now carries a coarse_group – the clinical family it belongs to, one of six. The family is often right when the specific name is shaky, so you can alert on “something in the mobile nutrient family is happening” and stand on much firmer ground than “it's definitely magnesium.”
A secondary finding can also come back marked suspected: true. That flags something for your attention without claiming it. Show those to a human. Don't dose on them.
Both fields are additive, so nothing broke when they appeared.
Responses carry an engine_version naming the build and model iteration that served your call.
That matters because the models behind a diagnosis were replaced over the summer, and they'll be replaced again. If you cache results or tune thresholds against particular behavior, watch that field and invalidate when it moves. It used to be that a model upgrade quietly changed things underneath you. Now you can branch on it.
The honest numbers haven't moved much and I won't inflate them: cannabis verification sits at 99.96% balanced accuracy, health screening at 98.4%, both on plants held out from training. Naming the exact condition is still harder than noticing something's wrong. That gap is why the hedging fields exist.
My favorite failure of the summer.
Uploads from phones started failing. Not all of them, not reproducibly, and never on my machine. The pattern turned out to be full-resolution photos over slow upstream connections – which describes a lot of growers and almost no developers.
The server was hanging up while the phone was still sending. I raised the read timeout from 30 seconds to 120 and shipped it. Reports kept coming. Raised it to 300 and shipped that. Reports kept coming.
There were three timeouts in that path, not one, and they were all different: the API's own, the reverse proxy in front of it, and the client's. Fixing one just moved the failure to whichever was now shortest. The connection died at the tightest link no matter what I did to the others. Aligned all three at 300 seconds and the reports stopped.
I shouldn't have needed this lesson twice: when a timeout fix doesn't work, the timeout you fixed isn't the one that fired. Find every layer that can hang up before you touch any of them.
The mobile app shipped with the aligned values in July.
/usage returns your counts, limits and remaining quota, and doesn't itself consume quota.More work on naming the specific condition rather than the family, since that's the honest weak point and everything else is downstream of it. And better handling of the photos growers actually take, which are lit by purple LEDs at midnight rather than by a photographer.
Free tier is 3 diagnoses a day, no card. The full contract is at plantlab.ai/openapi.json, with a field-by-field walkthrough if you want it, plus guides for Home Assistant and Node-RED.
from
PlantLab.ai | Blog

The PlantLab API takes one image of a cannabis plant and returns structured JSON describing what's wrong with it: one of 30 conditions and pests (or healthy), a growth stage, a confidence score on every call it makes, and a bounding box per plant when the photo has more than one. It answers in about 18 milliseconds. Auth is a single X-API-Key header, and the free tier is 3 diagnoses a day without a card.
If you already have a camera pointed at your tent, this is the piece that turns a JPEG into something your automation can branch on.
Most grow stacks are blind in the same place. Temperature, humidity, VPD, EC, runoff pH, substrate moisture at three depths – all of it describes the room, none of it describes the plant. So the loop still ends at a person squinting at a phone.
Every response below came out of the live engine.
curl -X POST https://api.plantlab.ai/diagnose \
-H "X-API-Key: $PLANTLAB_API_KEY" \
-F "image=@canopy.jpg"
Multipart upload, one required field.
A real response, from a plant with powdery mildew on it:
{
"request_id": "8919a46e-a704-4a4e-a700-b754188165b5",
"schema_version": "3.1.0",
"engine_version": { "api": "1.0.166", "models": "v6" },
"success": true,
"is_cannabis": true,
"cannabis_confidence": 0.95,
"results": [
{
"bbox": { "x0": 0, "y0": 0, "x1": 1, "y1": 1, "normalized": true },
"is_healthy": false,
"health_confidence": 0.1,
"growth_stage": "vegetative",
"growth_stage_confidence": 0.9,
"conditions": [
{
"class_id": "powdery_mildew",
"display_name": "Powdery Mildew",
"confidence": 0.8,
"coarse_group": "fungal_disease"
},
{
"class_id": "potassium_deficiency",
"display_name": "Potassium Deficiency",
"confidence": 0.6,
"suspected": true,
"coarse_group": "mobile_nutrient"
}
]
}
]
}
It returned two things. The mildew is the call it's making. The potassium deficiency is marked suspected – something else worth a look, without claiming it.
| Field | Level | What it means |
|---|---|---|
is_cannabis |
image | Whether the photo is cannabis at all. Decided first, so it sits at the top |
cannabis_confidence |
image | Probability the image is cannabis |
results[] |
image | One entry per detected plant. A single-plant photo returns an array of one |
bbox |
plant | Where this plant is, in normalized 0-1 coordinates. Multiply by width and height to draw it |
is_healthy |
plant | The health call for this plant |
health_confidence |
plant | Probability the plant is healthy. Read the next section before using it |
growth_stage |
plant | seedling, vegetative, or flowering |
conditions[] |
plant | Diseases and deficiencies, most confident first |
pests[] |
plant | Pests, same shape |
schema_version |
response | Contract version, currently 3.1.0 |
engine_version |
response | The build and model iteration that served this call |
health_confidence is the probability the plant is healthy. It isn't confidence in the verdict you were just handed.
In the response above, is_healthy is false and health_confidence is 0.1. That's not a shaky answer – it's a very confident sick one, because a 10% chance of healthy is a 90% chance of not. Write if health_confidence < 0.5: flag_uncertain() and you'll fire uncertainty warnings on the clearest sick plants you own while staying quiet on the genuinely ambiguous ones.
When is_healthy is false, low health_confidence means more certain, not less.
suspected and coarse_groupsuspected: true marks a secondary finding the engine wants to flag but isn't asserting. Show it to a human; don't dose on it.
coarse_group is the clinical family a condition belongs to – one of mobile_nutrient, immobile_newgrowth, water, light, fungal_disease, pest. Some problems genuinely look alike in a photograph, and the family is often right when the specific name is shaky. If you're deciding whether to alert rather than what to dose, group on this instead.
Three more fields show up when they apply.
mulders_hypotheses names nutrient excesses that would explain the deficiency you're looking at. A calcium excess locking out nitrogen looks exactly like a nitrogen shortage, and feeding more nitrogen makes it worse.
progression_risks says what this turns into if nothing changes.
stage_advisories adds context that depends on the plant's stage. Lower-leaf yellowing in late flower is usually normal, and it says so rather than letting you chase it.
| Endpoint | Method | Purpose |
|---|---|---|
/diagnose |
POST | The one you came for |
/usage |
GET | Current counts, limits, remaining quota. Read-only, doesn't consume quota |
/health |
GET | Liveness. No key required |
/info |
GET | Metadata and capabilities |
/history |
GET | Past diagnoses, newest first. Pro tier and above, with data sharing enabled |
/feedback |
POST | Report a wrong result |
/usage is the one integrators forget exists and then rebuild badly. Poll it instead of counting your own calls.
The full machine-readable contract is at plantlab.ai/openapi.json, so generate a client rather than hand-rolling one.
Free tier is 3 diagnoses a day. No card, no trial clock, and nothing to cancel – paid plans aren't live yet, so right now that's the whole offer. Higher-volume tiers exist in the API for granted accounts, and paid access is coming.
429 means you hit a limit. 408 means inference timed out. 400 on upload usually means the image failed a sanity check rather than a malformed request.
It's cannabis-specific. Point it at a tomato and is_cannabis comes back false, which is correct and not useful.
It reads a photograph, so it's bounded by what a photograph contains. Root-zone problems only appear once they reach the leaves, and two conditions that look identical in RGB are hard to separate in RGB. That's why suspected and coarse_group exist instead of a single confident label.
It's sensitive to how you shoot. Overexposure and tight close-ups reliably produce wrong answers – I measured what breaks a diagnosis, and the results aren't what most people guess.
It doesn't replace looking at your plants. It notices things earlier and more consistently than you will at 11pm, and it never gets bored.
On accuracy: cannabis verification runs at 99.96% balanced accuracy and health screening at 98.4%, both on plants held out from training. Naming the specific condition is a harder problem than deciding something is wrong, which is the honest reason those hedging fields are in the response at all.
Sign up at plantlab.ai, copy your key from the dashboard, and run the curl command at the top of this post against one of your own plants.
Prefer wires to code? There are guides for Home Assistant and Node-RED.
from
PlantLab.ai | Blog

Frame the whole plant so it fills most of the shot, and use even light that isn't blown out. Don't zoom in on the damaged leaf, and don't shoot from across the tent. If your lights are blurple, that matters far less than whether the photo is overexposed.
The mistakes that cost you most aren't the ones people expect.
When a leaf looks wrong, your instinct is to get close and photograph the damage. It feels like helping.
It's the most reliable way to get a wrong answer.
I took four labeled images – powdery mildew, spider mites, a nitrogen deficiency and a calcium deficiency – cropped each one tight around the affected area, and ran them through. Not one survived. The mildew came back healthy. The spider mites came back as a nitrogen deficiency. The calcium deficiency came back as septoria. The nitrogen crop wasn't recognized as cannabis at all.
Diagnosis is comparative. Which leaves are affected, old growth or new. Whether the pattern is uniform or between the veins. How the rest of the plant looks by comparison. A close-up throws all of that away and leaves a patch of discolored green that could be six different things.
Photograph the plant. The damage is already in the photo.
The opposite mistake fails just as reliably. Shot from across the tent, all four went wrong: two returned the wrong condition, one came back healthy, and one wasn't recognized as cannabis at all.
There's also a hard floor on size. Scaled to 256 pixels wide, three of four failed the cannabis check outright and returned nothing. Any modern phone clears this easily, so it only bites when something in your pipeline resizes before upload. If you're automating, send the original.
One plant, filling most of the frame.
Overexposure is the dangerous failure, because it doesn't look like one.
Brightened until the highlights clipped, two of the four sick plants came back healthy with reasonable confidence. Blown-out highlights wash out the exact color and texture differences a diagnosis rests on, and what's left looks like an untroubled plant. You get an all-clear on a plant that needs attention, and nothing in the response tells you to doubt it.
Underexposure is gentler. Two of the four darkened images kept the exact right answer; of the other two, one dropped out of the cannabis check and one named the wrong pest. Neither returned a false all-clear. Wrong, or refused outright, you can recover from. Confidently-healthy you can't.
Blurple light did less damage than expected – three of four still returned the correct condition under a heavy magenta cast. That's smaller than the effect of exposure. It still costs some confidence, so shoot during a lights-off window or use your flash when that's easy. When it isn't, shoot under the grow lights anyway and watch the confidence score.
I simulated that color cast digitally rather than photographing under real fixtures, so it's directional rather than settled.
A heavy blur kept the correct diagnosis on half the test images. On the other half it produced a wrong answer, with confidence collapsing to 0.10 and 0.15.
That's the system working. When the image doesn't support a call, confidence drops instead of the answer quietly getting worse. Treat anything under about 0.3 as “take another photo,” not as a diagnosis.
The reverse doesn't hold. A high score is not a guarantee: one tight crop returned the wrong condition at 0.70. Low confidence reliably means don't trust it. High confidence doesn't reliably mean you can.
Still focus your shots. But given the choice between a slightly soft photo of the whole plant and a razor-sharp photo of one leaf, take the soft one.
| Do | Why |
|---|---|
| One plant, filling most of the frame | Diagnosis is comparative – it needs the whole plant |
| Even light, no blown highlights | Overexposure returns false healthy calls |
| Shoot lights-off, or use the flash | Costs less confidence than shooting under blurple |
| Send the original file | Aggressive downscaling breaks the cannabis check |
| Retake anything under 0.3 confidence | Low confidence often means the photo, not the plant |
| Avoid | What happens |
|---|---|
| Close-up of the damaged leaf | Wrong answer or a false healthy, every time |
| Whole-tent wide shots | Wrong answer, or not recognized as cannabis |
| Brightening a dark photo to “fix” it | Turns a diagnosable photo into a healthy verdict |
Four labeled images – powdery mildew, spider mites, nitrogen deficiency, calcium deficiency. Eight versions of each: original, darkened, brightened, blurred, color-cast, tightly cropped, shot-from-distance, downscaled. Thirty-two diagnoses. All four originals returned the correct condition untouched.
The variants were made digitally rather than by re-photographing under each condition. And four plants is four plants: enough to show a pattern that held every time, not enough to put a percentage on it. Hence directions rather than numbers.
Same rules, plus two. Don't resize before upload. And branch on confidence instead of treating every response as equally solid – under 0.3 usually means trigger another capture, not raise an alert.
The Home Assistant and Node-RED guides cover the wiring, and the API walkthrough covers what comes back.
Try it on your own plants at plantlab.ai – three diagnoses a day, free, no card.
from
Jaran Flaath
– Det er viktig å skape nye historier, sa han. – Ikke bare leve på de gamle.
Det var kjøreskolelæreren min som skulle vise seg å bidra med den største innsikten jeg har blitt servert på en god stund. Han er 70 år, har kjørt motorsykkel lengre enn han kan huske, og har ingen planer om å gi seg før kroppen streiker. Det er hans måte å skape de historiene han vil leve. Det var dypt inspirerende der vi satt i salen og nøt svinger og landskap om hverandre.
Det er lett å bli hengende ved de gamle historiene, leve på dem hver dag. Man lar de definere en selv og ender ofte opp med å gjenfortelle gang på gang når man sitter rundt kaffekoppen med kamerater eller kollegaer.
Samtidig er det lett å tenke at alle nye historier må være store, må stadig overgå. At de må være grandiose og imponere. Det har ikke jeg tid eller mulighet til, kan man tenke.
Det er lett å tenke på livet som det som har skjedd, det man har opplevd. Men det er vel så mye det som gjenstår å oppleve. Historiene man ikke har skapt, som ligger der og venter. Ikke som en uoverkommelig bucket list, eller et jag etter å leve hver dag som den siste, men som en motivasjon og noe som kan skape glede og forventning. Noe å se frem mot heller enn å bare kikke i bakspeilet.
Det kan være vel så verdifullt med de må hverdagseventyrene som de store som bare skjer en gang i tiåret. Forsøke noen nye hobbyer. Gå nye stier i skogen – ta med middagen. Ta badstue med noen kamerater. Kjør motorsykkel. Spill frisbeegolf, eller vanlig golf. Eller begge deler. Lær deg å strikke. Hopp i fallskjerm.
Historier kan være så mangt og det viktige er å lage deg noen du kan leve, ikke bare fortelle de samme gamle om igjen.