from Roscoe's Quick Notes

Tour de France

No MLB today, but there is serious cycling.

As we're only a day away from the 2026 MLB All Star Game, there are no regular season MLB games to follow. But since this is July, that means the Tour de France is being run. And since Peacock TV is providing great daily coverage of the Tour, I've got that to satisfy my sports hunger.

And the adventure continues.

 
Read more...

from AnOublietteofThought

Summer remains a challenge for me. Especially when I'm trying to start new habits. I think I always find new habits difficult. Or rather stopping old habits difficult. It's recommended to ease in. I'm really not an ease in kind of personality. I'm on that all or nothing plane of existence. As in, I'm all full of a lot of nothing right now.

I'm finding having patience with the world challenging. I'm not accustomed to being irritated so much, I find it uncomfortable. Like an annoyance just beneath the skin that I can't quite reach. I am continuing to adjust, but I fear I'm losing pieces of myself in the process. My preferred pieces...

I guess that often occurs with the whole being an adult thing. I don't know. I suppose, it's time to get more strict with myself. That's really not my thing. It pushes my creativity to the back of my mind. Mostly I just want to get out and move.

The sun is a cage I'm determined to escape.

Written July 15, 2026. © 2026 AnOublietteofThought.

 
Read more...

from Ira Cogan

Has There Ever Been a Better Time to Be a 'Degenerate' by Nitsuh Abebe, On Language in The NYTimes

Marco Rubio is turning Venezuela into a colony by Zeeshan Aleem at MSNow

Google's AI search features pose 'unacceptable risk' to children, new report finds from PBS News, the first paragraph really says it all here:

The organization found that across more than 2,600 test interactions, Google's two built-in AI search functions, AI Overview and AI Mode, routinely failed to recognize risky and harmful behavior, answered 100% of hypothetical homework assignments students should do themselves, and provided incorrect and inconsistent responses to questions. Both AI Overview and AI Mode are built into Google Search, and cannot be disabled.

Tbh I really don't give a shit that this thing is bad at being a psychiatrist, however, I do give a shit that its inaccurate and can't be turned off. In case you missed it, I shared this related story from Techdirt yesterday. It's about how a German court recently ruled that Google is liable for false claims in it's AI overviews, as it should be.

Napalm Death's Tiny Desk Concert at NPR... And while that's a sentence I thought unlikely I'd ever type, NPR is often in touch with things that are culturally relevant to me. Anyway, awesome!

That's all for now.

-Ira

 
Read more...

from a weapon to surpass blaming yourself or god while knee-deep in the dead

I hate prequels. I hate them conceptually, which is to say I hate the idea of prequels as opposed to any particular prequel. there are good prequels, sure, but those are an accident, an exception to the fundamental rule that prequels are narrative poison. I’ll die on this hill. these worthless prequels… they took the Planet from you, didn’t they, Mother?

ahem.

the narrative problem with prequels is that stories are not universes. this is a bigger problem with the way we use the term “universe” in storytelling, as in the marvel cinematic universe or whatever — it implies a holism that is part of the illusion, not the reality, of stories. when the camera pans away from Captain America, he is not still around, eating a granola bar or catching up on his emails, because Captain America does not exist outside of the confines of a beginning and ending of a story being told about or including him. the answer to “when do they use the bathroom in 24” was always “this is fiction, what the fuck are you talking about jesse.”

this isn’t just semantics I’m getting at here. if stories aren’t universes, then a prequel is not simply “let’s turn the dial back to the past and see what these folks were up to” because the answer to “what were these folks up to” is “they didn’t exist.” a prequel is as much an arbitrary construction as any story is, except now its reason for existing isn’t because there’s a good story to be told but because a story was already told and some people who want money would like it to be told but longer this time, and some people who write fan wikis would like all their dots to connect.

a storyteller tells a story because the story has something interesting to say. done well, it’s not the arbitrary creation of new worlds or people — it’s theme and catharsis wrapped into narrative arcs and climaxes that reveal or emphasize or disrupt our understanding of the human condition. even the fun, silly stories do this if they’re done right; it’s what makes storytelling satisfying at a fundamental level.

prequels and cinematic universes and whatnot, made for their own sake, presuppose that the valuable parts of any given story are 1) the IP, and 2) the fan wikis. many prequels are tiresome dot-connecting exercises that only recognize the superficial iconography of their source material and none of their narrative heft; the worst ones actively undermine the original story by misunderstanding or failing to recognize the power in concision, in not saying everything, in keeping some things buried or carefully placed.

crisis core: final fantasy 7 is both tiresome and undermines its source material. great!

*

I’m biased here; final fantasy 7 hit me at exactly the right time for it to forever have a golden nostalgic glow. but also I’ve played the original game maybe a dozen times in my life and have a firm grasp on what it actually is as much as what it looks like when I remember playing it on my brand-new playstation as a 10 year old.

for a game of its era, and especially for such a shoddily translated game of its era, ff7 is remarkably good at subtext, theme, and metaphor. the entire game revolves around the perils of allowing others to define you; this is cloud’s character arc in a nutshell, but it’s also tifa’s, and barret’s, and cid’s, and red xiii’s, and so on and so on. but let’s focus on the dynamic of cloud, sephiroth, and zack for a moment, since that’s where crisis core decides to focus.

to be honest, choosing the day sephiroth went crazy as a place to expand and add context isn’t a terrible idea for an ff7 prequel, because it’s a space of tremendous thematic potential that the game uses sparingly enough to suggest there’s more to mine. there is also an aspect of telling the “true” story of what happened, since the primary way ff7 tells this history is through cloud’s false version of events, where he’s SOLDIER and zack doesn’t exist.

but let’s break this down in terms of how this story is told in OG FF7:

  1. zack is a cipher. he is the man cloud wanted to be and eventually pretends to be, and thus a symbol of of cloud’s shame and fear. he is effortlessly cool, composed, and heroic because these are the qualities cloud desperately wants and believes himself to have failed to achieve. he’s a narrative device first in this context; you barely even see him unless you spend the time to unlock the hidden cutscenes that play out his ultimate fate.

  2. sephiroth is a pathetic monster, self-absorbed and driven to madness by his refusal to accept the horror of his origins. he’s killed by cloud in a moment of miraculous selflessness and heroism on the latter’s part; the memory of this victory is, however, so caught up in cloud’s larger sense of inadequacy that he hides the details from himself. sephiroth himself, again, functions as a cipher or a lens, the dark mirror of the power cloud wishes he could possess.

both of these characters exist in the context of cloud. even the ways zack has more of an external life reflect back into cloud — zack’s relationship to aerith deeply complicates a player’s understanding of what aerith sees in cloud and how she understands him, and likewise reinforces the sadness and desperation in cloud’s attraction to her, his desire to be a version of himself that already had that relationship.

likewise sephiroth. oh, sephiroth. here’s the thing: in FF7’s “present day” storytelling, sephiroth is dead as fuck. the sephiroth that harangues cloud, manipulates him into surrendering the black materia, and confronts the gang in the Northern Cave — that’s jenova, wearing sephiroth’s face because she knows how much cloud fears him.

but sephiroth himself? his entire story is contained in the nibelheim flashbacks. he’s been led to believe his whole life that he’s a very special boy; he learns that instead he’s pretty much just the least gross of a series of science experiments; he rejects this and decides he’s god’s only son instead. this ends badly for him. again it’s meant to be a twisted mirror of cloud’s own choices and self-perception and anxieties; sephiroth’s entire psyche is built upon his self-conception as a certain hero, wanting the world to see him as above it, and when the world forcibly shatters that image, he shatters with it, going insane in order to maintain his sense of superiority. men will literally summon meteor instead of going to therapy.

incidentally, jenova/sephiroth gets the best bit of characterizing metaphor in the whole game, in the sequence of final boss battles.

  1. first you fight jenova’s “ultimate” synthesis form, an “accurate” representation of the monster that crashed into the earth, an woman’s torso made eldritch and stuck onto a malformed meteorite. this is the literal monster.

  2. then you fight “bizarro” sephiroth, an even more eldritch representation of jenova’s influence over her erstwhile progeny, a jumbled assemly of the beautiful and horrible with a version of sephiroth himself stapled onto his own head.

  3. then there’s the seraphim, “safer” sephiroth. this is ego projection epitomized. jenova’s defining characteristic is believing itself to be the rightful god and heir of the planet; sephiroth’s defining characteristic is that he believes himself to be the chosen one and a god in his own right. thus their final form is, simply, god. a chorus sings for a being of angelic perfection. his most powerful attack is the destruction of the entire fuckin’ universe.

but it’s a lie! he can summon super nova multiple times! but also jenova is not a god, just an alien asshole with a god complex, whose self-projection can be overcome by those like cloud, who are now self-assured enough to see through it.

and then at the end of all things, cloud duels with sephiroth in a black void, and if there’s been another RPG battle that’s more obviously just a dude working some stuff out in his head, I haven’t played it. this shirtless babe is the spectre of sephiroth in cloud’s mind, the vestiges of his anxiety and self-doubt, and cloud defeats him in a final sequence of masterstrokes, and he simply disappears.

the key thing to take away here is that all of these characters exist (or don’t) in service of narrative build and payoff. even cloud, the most complex character in the story and the one against whom so many of these pieces refract and make meaning, only exists inside of this story. when the lifestream impacts meteor and the world goes white, cloud disappears just like everyone else; his “life” ends when the story does.

OK anyway with all this rambling in mind let’s take a look at what crisis core decides to do with these pieces:

  1. remember how safer sephiroth’s whole “one winged angel” thing is just an extended riff/metaphor on jenova’s god complex? nah buddy, metaphors are for suckers: jenova cells give you literally one wing, like half a can of red bull. this overuse and mishandling of the “one winged angel” concept didn’t didn’t originate with crisis core, but it is definitely the dead horse this game wails on the most.

  2. wouldn’t sephiroth’s “oh shit I’m a monster? no, it’s the children who are wrong” arc be better if two other characters do it before him but more confusingly and shoddily, so that by the time he “learns the truth” it feels like he’s just been stupid or deaf the rest of the game?

  3. would you like cloud’s big sword to have an origin story? oh no, not that one, not the one it already had that made it a signifier of both his hidden failures and his hidden heroism; I mean a second, far less interesting origin story, where it was also some other other guy’s sword for a while?

  4. ff7 has professor gast and professor hojo, two guys who did experiments on ancients and jenova with very different ideas of what they were doing and why. neither is a saint, but only one is a devil. oh also I guess there was a third guy also doing the same stuff just over there where we couldn’t see him

this isn’t even getting me started on how much the invented writing and story of crisis core sucks, sucks so badly that even when it isn’t directly polluting the ground for the story to come, it’s still stupid and bad, poorly written and poorly directed, so many cutscenes full of characters blankly standing still saying nonsense that means nothing, or else doing floaty advent children sword duels that are, don’t get me wrong, cool as hell but also the emptiest calories available.

the best narrative bits in crisis core are exclusively incidental and function only in the context of having played ff7 itself and thus already being in love with its characters. in that context, I suppose it’s compelling to see young cloud pre-mako-haze, insecure and feeling like a failure but still fundamentally decent and full of the potential to be a true hero. aerith’s presence is fascinating; she’s younger enough when we see her to be not as self-aware as she is when cloud meets her, but she’s full of the same melancholy and pre-acceptance of her fate.

(baby yuffie is cute, too.)

but these aren’t stories, and they’re not telling us anything new that wasn’t already in the original story, except in the form of “X years ago, this character was over here” wiki details. and they’re not enough to make up for how crisis core fumbles, misunderstands, and kind of ruins its representation of the crucial moments from the original story.

zack himself I’m of multiple minds about. on the one hand he’s genuinely likable and compelling as the lead in crisis core. he has exactly the fundamental decency and heroism he should have, tracking well with his limited portrayal in the source material. on the other hand… so what? what does his story here amount to, that it didn’t already have before? do we learn anything about him that changes his status in the larger story as “the guy cloud wishes he was”? is there an arc here that justifies spending hours with him outside of that context?

maybe I’m just being a wet blanket here, I dunno. enjoy crisis core if you want. I didn’t hate my time with it — the combat loop is entertaining enough, the bite-sized mission structure makes my steam deck feel so much like an oversized PSP that I wanted to time travel and buy zack’s flip phone just to get back to that era — but it sucks as a narrative extension of final fantasy 7, because it exists as an expansion of intellectual property first, a “hey remember this” iconography game second, and a story that someone truly thought was worth telling in a distant last place.

oh well time to take a big sip of this coffee and play final fantasy vii rebirth, a game that’s sure not to have any similar negative effects on my psyche—

 
Read more... Discuss...

from Turbulences

Que nous reste-t-il ?

Quand tout ce à quoi nous tenions, Semble aujourd’hui si fragile.

Que nous reste-t-il ?

Alors qu’à tous les horizons, S’accroissent les périls.

Mais alors que nous reste-t-il ?

Quand après le naufrage de la raison,   La vie ne tient plus qu’à un fil.

L’incertitude d’hier avait du bon, L’improbable pouvait encore surgir.

Mais inerties, emballements et effets rebonds, Font que chaque jour voit ses lendemains s’étrécir.

Quand la connaissance devient un tel fardeau, Comment résister encore à l’appel du déni ?

Comment ne pas être tenté par les faux messies, S’accrochant à leurs promesses comme à un radeau.

Alors, il nous reste quoi ?

Il nous reste des choix. Cultiver la joie, c’est déjà un combat.

Prendre soin du bien, propager la beauté, C’est déjà une manière de résister.

Faire en sorte qu’un enfant puisse rêver, C’est lui ouvrir le champ des possibles.

Et qu’importent les chances de succès, Essayer, résister, est une question de dignité.

 
Lire la suite...

from Nightjar

- after Brigid Pegeen Kelly

They found her, sitting in her favorite chair, readers askew, holding Pegeen Kelly’s “Song,”  the pages dog-eared and smeared like child’s art. Others said the book had dropped to her lap, her arms raised in fear as if a night bird had startled her.

As a child, dusky dots painted the bridge of her nose. Always wanting to be held, she would feign cry and sleep, dots spread wide and dark from the salt. Games were all called beloved, as in let’s play how close will you hold me how long will you stay.

As a pullus, her dots became more faint, and she clung like a goat to the cliffs of who would have her. Are you my father? Are you my mother? Will you have me?

As an orphan, she found solace in currents and hoped a giant eye, peering from the blue, might see her heart adrift after the 99th reading

soft hands in the air as if bracing for impact a single, vibrant blue feather lodged in her heart

death by fluttering

#poetry

 
Read more... Discuss...

from TRAILER PARK LIFE

The Only fans discussion at the nursing home Never will forget this moment I tried to explain to my mother two young women wanting to live at the trailer park that had a Only fans page. She kept saying explain this to me again , “they cook and exercise in the nude and people pay to watch this?” Yep. Mom they don't do porn they just exercise and cook food and watch tv naked – on camera. And they teach men that are into bass fishing how to tie lures with knots and such. “They do this nude. And people pay for this?” Yep. “Nope you do not need that going on” she said. “Imagine when you were 12 and all your playmates. Thats exactly where you boys would be.” I said, but they are really nice young ladies. “Nope, they need to find somewhere else.”

 
Read more...

from Ennui Vagaries

Photo by Bernard Hermant Photo by Bernard Hermant on Unsplash

I've started a quest for the “perfect” typewriter. I don't know what that means: I don't know what perfect is in the case of typewriters. When I find it, I will know it. There will be mistakes made along the way, but so be it.

There is something that has fascinated me already, however, in my search for a typewriter.

Originally I was thinking that an IBM Selectric I was the most likely candidate for my perfect typewriter. Why? Mainly because I've used one in the past. And for some reason I think we had one at home. My father had an inherent trust of IBM. I recall him parroting the saying, “Nobody ever got fired for buying IBM.” And, of course the other reason: they were produced during my birth year. Yeah, despite the fact that I still don't understand Birth Year Collecting, it was something that I was doing.

But there was an issue when I started thinking about it… How would I know if a specific typewriter was produced during my birth year? The IBM Selectric I was produced from 1961 to 1971 — ten years, and I wanted to find one that was almost literally smack-dab in the middle of that date range. And, if I am honest, that is probably during the peak in the models' popularity.

That's when I found a website that is incredibly helpful: The Typewriter Database. This is the kind of thing I've only seen a few times. Collectors of cars, watches, and some vintage electronics have similar databases (or books) with this kind of information in it. What this database has in it is listings for (literally) thousands of typewriters, and as much identifying information about them as possible. The most important being a list of serial numbers, and their corresponding dates of production.

So, for example, if I wanted an IBM Selectric I from 1963 (not my birth year), I would look for serial numbers in the range 4086101–4115100. If I wanted an IBM Model C Executive from 1967 (also not my birth year — lol) I'd look for serial numbers in the range of 2301101–2312580.

So, the hunt goes on. I'm not even certain that I want an IBM typewriter at this point. There are a lot of typewriters that catching my eye, but none of the ones that I am seeing are from my birth year. But again, I have to wonder if going with something from my birth year is even the right thing for me to do?

One thing I've noticed is this; price is definitely linked to (a) condition, and (b) the seller. One model that caught my eye has a very wide range of prices. The one, in particular, that I noticed comes from a seller that services typewriters, and seems to only sell ones that are in pristine condition. Of course, this comes at a price, typically more than double the average asking price for the model. Is it worth it? I think it would — especially to have a typewriter that is in top working condition.

But, then again, I don't know that I want to pay what is being asked for it. In particular, this is a portable manual typewriter. It's not a model I would likely use much, if at all. I would be just buying it because it is aesthetically pleasing.

Well, it doesn't matter yet. I am still going to keep hunting for a typewriter. Whether I get a birth-year model or not is still something I need to figure out. And, honestly, whether I plan to use it is another question altogether. I think that is what I am waiting for my mind to settle on: is this something I am actually going to want to use, or is it just for decoration? Once I have answered that question, then I will be able to nail down what I want to get.


Categories: #Essays Tags: #typewriter, #collecting, #shopping, #research, #eyecandy, #aesthetics License: Copyright Unattributed. Licensed under Creative Commons BY-NC-SA 4.0.

 
Read more...

from The Marshall Review

I was educated in a school founded eight centuries ago, given its Royal Charter by Elizabeth I, and governed, in spirit. and often in daily practice, by Oxford and Cambridge dons. It was the kind of place where language arrived not as a living medium but as a set of obligations. You did not “learn English”; you inherited it. You spelled organize with a Z because that was the proper, etymological form. You cast your sentences in the passive because it was dignified. And in sixth form classrooms, you spoke a kind of Middle English that had never quite admitted the existence of the twentieth century.

It was a beautiful education in many ways. But it left me with the sense that language was something to be obeyed rather than understood.

I’ve spent years unlearning that stance. Not rejecting it, there is value in precision, in etymology, in the long continuity of English thought. But loosening its grip. A writer cannot live by rules alone. A writer must live by judgement.

This is why my style sheet has begun to change. It is no longer a ledger of prohibitions inherited from Hart, Butcher, the ghost of some medieval grammarian, or the Elizabethan drive for a language fit to govern by. It is becoming a record of decisions: small, careful, reader‑facing choices about how thought should appear on the page.

The shift is simple to describe and difficult to practise. I’ve begun to prefer relation before interruption. If secondary material has a clear logical connection – cause, concession, condition, definition – I try to express it through syntax rather than punctuation. Let the reader feel the continuity of thought. Use parenthesis only when the mind genuinely steps aside.

This tendency has changed how I see the page. A style sheet is no longer a set of instructions; it is a companion in editorial judgement. It asks: what does the reader need at this moment? How do I help them enter, follow, trust, and remain with the essay? And how do I make my thinking visible without making it burdensome?

In a way, the work feels like reclaiming the language I was given; not rejecting its history, but choosing its future. Not Middle English in a sixth form classroom, but a living English shaped by the needs of the reader and the movement of thought.

I’ve written a short note about this evolution on write.as here in my essayist’s notebook: esy.ie https://go.marshall.ie/style-sheet-essay-notes

 
Read more...

from AnOublietteofThought

I am remiss to starve your smile enchanted when it dilapidates upon the ruins of precognitive exposure. The splash of sunken tip is a scar upon our spiral, and every gasp of spare entwine deepens the row in our parting. Maladaptive hunger strays in waste where donor once caved in blissful pull, and the cerulean dance bartering heaven with heart has become an unstable misnomer. Cruel is this lethargy burying what is within what may never see. Even more cruel is the cusp on which we're sliced. Night after night, in spite of life's light, we descend the harrowing all. For what? Brief purchase? A vandalized awe in possibility? Could it be that our unquenchable thirst for what is an insipid truth at best has addicted us to treasonous beat? Could it be we are wrong to thirst immortale?

Written July 15, 2026. © 2026 AnOublietteofThought.

 
Read more...

from Things Left Unsaid

I'm sorry I abandoned you babe. It's going be different this time. I promise. I used to be mayor of Mississauga. One day I decided that I wanted to be premier of Ontario instead so I just stopped going into city hall. Like, whatever, right. Who needs a mayor? I failed so badly at provincial politics that the only way I knew what was going on at their meetings was from bootleg recording devices. I have nothing better to do right now, so I decided to try and get my silly old job as mayor back. I just need something to do while I sort out what I really want to do. I believe that everyone who isn't me has the IQ of sloths and the attention span of fruit flies, so it shouldn't be too difficult. Me and my people will get A.I. to figure out what people want. Then we can use that information to fabricate half truths about my opponents, and lofty goals, so I have things to say at my loyalist gatherings and press conferences. I'll ride the Liberal wave that is sweeping the nation right back into my old office. I'll be a celebrity!

 
Read more...

from An Essayist's Notebook

Yes. That feels like the right stance. It's a whisper to myself. And it changes the nature of the style sheet. It means the style sheet will refuse to be a list of prohibitions. And become a record of editorial judgement.

Not: Always use X. Never use Y. – But: When this kind of problem arises, here is how I understand the reader’s need, the sentence’s work, and the available marks. That is a much richer, and a much larger, task.

But it is also exactly the right task for an essayist. I’d frame my stance like this:

Editorial stance I take Hart and Butcher not as authorities for the imposition of arbitrary rules, but as companions in judgement. Their value is to encourage care: to think critically, practically, and supportively about the reader’s relationship with my words. The aim of style is not correctness for its own sake, but the best presentation of thought to a reader.

Where a question of punctuation, typography, spelling, structure, citation, or layout arises, the governing question is: what will help the reader enter, follow, trust, and remain with the essay? That gives us the governing principle. Then each style-sheet entry can follow a common pattern:

Style-sheet entry pattern 1: Function: What is this element trying to do? 2: Reader relation: What does the reader need at this moment 3: Available forms: What marks, constructions, or layout choices are available? 4: Preferred tendency: What does my house style usually prefer? 5: Exceptions / judgement: When should that tendency be overridden? 6: Examples: One or two sentences showing the difference.

So for the current issue dangling in my the thoughts, the heading is not “En dash” or “brackets”. It is probably: Parenthetic movement. And within it I should distinguish: • subordination, when the relation between ideas should be explicit; • commas, when the aside is light and integrated; • round brackets, when the material is cooler or off-stage; • spaced en dashes, when the essayist’s thinking voice visibly turns aside; • recasting, when the sentence has become overburdened.

The emerging rule might be: Prefer relation before interruption. If the secondary material has a clear logical relation to the main clause – cause, concession, condition, time, purpose, definition – express that relation through syntax, often by subordination. Use parenthesis where the secondary material performs a genuine aside, qualification, hesitation, self-correction, or tonal adjustment.

That's the foundation of my style sheet: not a rule about punctuation, but a guiding statement about thought becoming readable.

An aside; And you will never see me write “top-anything”. Not top musician. Not top lawyer. Not even top idiot. If I think something is worth saying, I should be able to say what it is, not where it sits in an imaginary league table. __________________________

Perhaps I have already written the opening paragraph:

This style sheet is not a list of rules. It is a record of editorial judgements made in service of a reader. Every convention discussed here exists for a single purpose: to help thought become readable. Where questions of punctuation, typography, spelling, structure, citation, or layout arise, the governing question is always the same: what will help the reader enter, follow, trust, and remain with the essay?

This now feels to me like the moment the project acquires its own voice. Not Hart. Not Butcher. Not institutional publishing. But David Marshall's account of how thought should appear on the page.

 
Read more...

from An Open Letter

We decided to go to a waterpark for our first date this Saturday! This heat wave is killer and so I’m super excited for it. I also noticed that I find myself getting more and more enamored with her, and it feels more and more right.

 
Read more...

from PlantLab.ai | Blog

One uploaded photo of two cannabis plants going into PlantLab and coming out as a results array with one diagnosis object and bounding box per plant

The short version

PlantLab can now analyze more than one plant in a single uploaded photo. Instead of forcing the whole image into one diagnosis, the API finds the separable plants, diagnoses each one on its own, and returns a results[] array with one entry per plant.

This is a breaking API change. The response schema is now 3.0.0. Fields like is_healthy, growth_stage, conditions, pests, and reliability_score moved out of the top level and into results[]. Image-level fields such as is_cannabis and cannabis_confidence stay top-level.

If your code already treats a diagnosis as “the answer for this plant,” the migration is simple: iterate results[]. Single-plant photos still return exactly one result.


Why this had to change

Most plant diagnosis tools assume one photo equals one plant.

That is convenient for an API contract. It is not how people take grow-room photos.

Growers send canopy shots. They send side-by-side plants from the same tray. They send one wide image because it is faster than taking six separate photos. Sometimes one plant is healthy and the plant beside it is showing early deficiency. Sometimes the left side of a tent is getting different airflow or light intensity than the right side.

The old PlantLab response could only represent one diagnosis. If the image contained three plants, the model still had to answer as if it were looking at one object. That creates two bad outcomes.

First, the answer can become a blend. A healthy plant and a deficient plant in the same frame can collapse into a single diagnosis that is not quite true for either plant.

Second, the UI has no place to show location. Even when the model found the right problem, it could not say “this plant, in this part of the image.” For automation and history, that is a real limitation. A diagnosis without a region is hard to compare over time.

The fix was not another confidence field. It was a different shape of response.


What changes for growers

When the photo contains one plant, the experience should feel the same. PlantLab returns one diagnosis, with a full-image bounding box:

"results": [
  {
    "bbox": { "x0": 0, "y0": 0, "x1": 1, "y1": 1, "normalized": true },
    "is_healthy": false,
    "growth_stage": "flowering",
    "conditions": [
      { "class_id": "magnesium_deficiency", "confidence": 0.85 }
    ],
    "reliability_score": 0.87
  }
]

When the photo contains multiple separable plants, PlantLab returns multiple entries. Each entry has its own normalized bounding box and its own diagnosis fields:

{
  "schema_version": "3.0.0",
  "success": true,
  "is_cannabis": true,
  "cannabis_confidence": 0.99,
  "results": [
    {
      "bbox": { "x0": 0.06, "y0": 0.12, "x1": 0.45, "y1": 0.92, "normalized": true },
      "is_healthy": true,
      "health_confidence": 0.91,
      "growth_stage": "vegetative"
    },
    {
      "bbox": { "x0": 0.52, "y0": 0.10, "x1": 0.93, "y1": 0.95, "normalized": true },
      "is_healthy": false,
      "health_confidence": 0.88,
      "growth_stage": "vegetative",
      "conditions": [
        { "class_id": "nitrogen_deficiency", "confidence": 0.80 }
      ],
      "reliability_score": 0.83
    }
  ]
}

The boxes are normalized x0, y0, x1, y1 coordinates in the original image. They are designed for overlays, history views, and automation clients that need to keep a result tied to the plant it came from.

The original uploaded image stays the canonical image. PlantLab does not store a separate cropped image for each plant as the primary record. The boxes are metadata attached to the original frame.


Why the response is an array, not plant_1, plant_2, plant_3

Arrays are boring. That is why they are the right answer.

A grow tent can have one plant today and four plants next week. A user can upload a single close-up, then a wide tray shot, then a photo where the plants overlap too much to split safely. The API should not need new field names for each case.

With results[], the contract is stable:

  • len(results) == 1: use it like the old response.
  • len(results) > 1: show a plant selector or iterate through every result.
  • Each result carries its own bbox.

This also makes the API easier for automation systems. If you are feeding PlantLab into Home Assistant, Node-RED, a dashboard, or a cultivation controller, each plant result is a normal object. You can pick the first plant for backward-compatible behavior, show a plant count, or build a UI that lets the user choose which plant they care about.

The PlantLab Home Assistant integration has already been updated for this shape. Version 0.7.0 reads schema 3.0.0, keeps the existing sensors pointed at the primary plant (results[0]), and adds sensor.plantlab_plant_count so automations can tell when the last frame held more than one plant.


What changed for API consumers

Before schema 3.0.0, diagnosis fields were top-level:

{
  "schema_version": "2.1.0",
  "success": true,
  "is_cannabis": true,
  "cannabis_confidence": 0.99,
  "is_healthy": false,
  "growth_stage": "flowering",
  "conditions": [
    { "class_id": "magnesium_deficiency", "confidence": 0.85 }
  ],
  "reliability_score": 0.91
}

In schema 3.0.0, those diagnosis fields live inside results[]:

{
  "schema_version": "3.0.0",
  "success": true,
  "is_cannabis": true,
  "cannabis_confidence": 0.99,
  "results": [
    {
      "bbox": { "x0": 0, "y0": 0, "x1": 1, "y1": 1, "normalized": true },
      "is_healthy": false,
      "growth_stage": "flowering",
      "conditions": [
        { "class_id": "magnesium_deficiency", "confidence": 0.85 }
      ],
      "reliability_score": 0.91
    }
  ]
}

Migration pattern:

const primaryPlant = response.results?.[0]

if (primaryPlant?.is_healthy === false) {
  for (const condition of primaryPlant.conditions ?? []) {
    console.log(condition.class_id, condition.confidence)
  }
}

If your integration displays only one diagnosis, start with results[0]. That gives you a safe primary-plant path while you add richer multi-plant UI later.

If your integration can display multiple plants, iterate the array and draw each bbox over the original image.

If you use the official Home Assistant integration, update to v0.7.0. It is rollout-friendly: the updated integration understands the new results[] response, but it also falls back to the old flat fields when talking to a pre-3.0.0 API. That means you can update Home Assistant before the API flips without breaking existing sensors. Older integration versions should be upgraded before you depend on schema 3.0.0.


Why I made it breaking

I considered keeping the old top-level fields for one release and adding results[] beside them. That sounds friendlier until the two disagree.

Imagine an image with two plants:

  • Plant A is healthy.
  • Plant B has a deficiency.

What should the old top-level is_healthy say? If it says false, the healthy plant is wrong. If it says true, the deficient plant is wrong. If it tries to summarize the whole image, it stops being the same field that integrators already rely on.

Keeping both contracts would make the API easier to call and harder to trust. I would rather force one clear migration than leave stale fields around for months.

So the schema version bumped to 3.0.0. Consumers must read results[].


What PlantLab does when the image is messy

Multi-plant analysis is only useful when the plants can be separated cleanly enough to diagnose.

Dense canopy shots are hard. Touching plants, heavy overlap, blur, and poor lighting can make a crop ambiguous. Splitting too aggressively is worse than under-splitting, because an over-split can create contradictory diagnoses from pieces of the same plant.

PlantLab uses a conservative policy:

  • If the image looks like one plant, return one result.
  • If the plants are separable, return one result per plant.
  • If the scene is too dense or ambiguous, prefer one safer result over several questionable crops.
  • Cap the number of plant crops so latency stays bounded.

That last part matters. A multi-plant image first finds the separable plants, then diagnoses each one. Latency scales with the plants you actually sent, so a busy tray costs more than a single close-up, but it stays bounded.

The point is not to pretend every canopy photo is solvable. The point is to make the output honest about the structure of the image.


What this unlocks

For growers, this makes wide shots more useful. You can upload a photo of a tray and see which plant the diagnosis belongs to.

For paid history, bounding boxes make comparison over time more meaningful. A diagnosis can be stored with the region it came from instead of being attached only to the original image.

For automation, the response is finally shaped like the thing it describes. A controller can loop over plants, display per-plant state, or decide to alert only when any plant crosses a threshold.

For accuracy, this removes a bad compromise. A single answer for a mixed tray was always a blend – one plant's problem averaged against the plant next to it that was fine. One result per plant means each diagnosis is about one plant, not a committee vote across the whole frame.

This is the main reason I was willing to break the schema. The old response was simpler, but it encoded the wrong assumption.


Migration checklist

If you maintain a PlantLab client, check these paths:

  • Replace reads of top-level is_healthy, health_confidence, growth_stage, conditions, pests, mulders_hypotheses, reasoning fields, and reliability_score with reads from results[].
  • Keep reading top-level is_cannabis and cannabis_confidence.
  • Treat results[0] as the primary plant if you need backward-compatible behavior.
  • Use len(results) as the plant count.
  • Draw result.bbox over the original uploaded image if your UI supports overlays.
  • Treat {x0:0, y0:0, x1:1, y1:1} as the whole-image fallback box.
  • If you use Home Assistant, update plantlab-ai/home-assistant-plantlab to v0.7.0. Existing diagnosis sensors continue to show the primary plant, and the new sensor.plantlab_plant_count exposes len(results).

The full OpenAPI schema is available in the PlantLab docs at plantlab.ai/docs.


PlantLab is free to try at plantlab.ai. Three diagnoses a day, structured JSON responses, and API docs built for automation clients.


FAQ

Does every upload now return multiple plants?

No. Single-plant images return one result. Ambiguous dense canopy images may also return one result if splitting would be unsafe.

Did the old fields disappear?

Yes. Per-plant diagnosis fields moved into results[] in schema 3.0.0. Top-level is_cannabis and cannabis_confidence remain image-level fields.

How do I get the plant count?

Use response.results.length.

Are the bounding boxes pixel coordinates?

No. They are normalized coordinates from 0 to 1, relative to the original image. Multiply by image width and height when drawing overlays.

What should older clients do?

Read results[0] first. That restores the old “one diagnosis” behavior while keeping your code compatible with multi-plant uploads.

Is the Home Assistant integration ready?

Yes. The official Home Assistant integration is updated in v0.7.0. It reads schema 3.0.0, surfaces the primary plant through the existing sensors, adds sensor.plantlab_plant_count, and still tolerates pre-3.0.0 flat API responses during rollout.

 
Read more...

Anonymous

For most visitors, the front yard and driveway are the very first things they see when they pull up to a house. That makes them a bigger part of a home's overall impression than homeowners sometimes realize. A thoughtfully designed entry area doesn't just look better from the street; it can also make the property easier to move through and use day to day.

A lot of homeowners kick off these projects by talking to a front yard landscaper who understands how layout, grading, and design decisions all work together. Pairing landscaping updates with driveway work lets the whole entry area come together as one connected space instead of a handful of disconnected pieces. Done thoughtfully, this kind of project can reshape how a home looks while making it more functional for years to come.

Designing a Front Yard That Ties Into the Driveway

Good front yard design draws a clear visual line between the house, the driveway, and the walkway to the door. When plants, hardscape, and pathways are balanced against each other, the whole space reads as intentional rather than accidental.

A few things worth thinking through:

Choosing plants that match the home's architectural style Laying out a clear path between the driveway and the front door Framing the driveway with greenery instead of leaving it bare Balancing hardscape and planted areas so neither one overwhelms the other Good design naturally leads the eye and visitors toward the front door, while keeping the whole space feeling organized.

What a Front Yard Landscaper Actually Plans For

Before any work starts, an experienced front yard landscaper looks at a handful of site-specific factors. The slope of the yard, how water moves across it, and the overall layout all shape what design will actually work. That planning process typically covers:

Checking the grading across the property

Laying out access points that make the home easier to reach Making sure the landscaping and the driveway work together, not against each other

Choosing materials that fit the home's architecture

Getting this planning right up front keeps the final layout both practical to live with and visually appealing from the curb.

Softening the Driveway With Smart Landscaping Choices

The driveway itself plays a bigger role in the entry area's overall look than most people give it credit for.

Landscaping around its edges can take the hard, flat surface and tie it visually into the rest of the yard.

Popular ways to do this include:

  • Plantings that border and frame the driveway
  • Decorative stone or paver accents along the edges
  • Landscape islands built into larger driveways

Ground cover that softens the transition between hardscape and lawn Handled well, these details fold the driveway into the yard's overall design instead of leaving it looking like a separate slab of concrete.

The Curb Appeal Payoff of a Front Yard and Driveway Refresh

How a front yard looks has an outsized effect on how a home is perceived from the street. A clean, well-kept entry makes a strong first impression and puts the home's architecture in a better light.

These updates tend to improve curb appeal by:

  • Bringing balance to the overall landscape layout
  • Replacing a cracked or outdated driveway
  • Adding coordinated plantings and walkways
  • Cleaning up the path leading to the front door

Real estate research consistently points to curb appeal as one of the first things buyers and visitors notice about a property, which is part of why these upgrades matter beyond simple aesthetics.

Laying Out a Front Yard That Actually Works for the Home

A front yard project that holds together starts with a plan, not a shopping list of individual features. Every element needs to work with the others, not around them.

Worth keeping in mind:

  1. Placing landscaping so it frames the house rather than hides it

  2. Designing a driveway that's actually easy to use

  3. Building walkways that guide guests naturally to the door

  4. Pairing the landscape plan with outdoor lighting

When these pieces are planned together rather than added one at a time, the entry area functions as a single, cohesive outdoor space.

Choosing Driveway Materials That Hold Up Over Time

The material a driveway is built from affects both how it looks and how well it holds up under daily use. Picking something durable now saves headaches later.

Options homeowners commonly choose from:

  • Concrete is built for long-term wear
  • Decorative pavers that offer more design flexibility
  • Stone finishes that tie in with the surrounding landscape
  • Reinforced surfaces built to handle heavier daily traffic

The right material lets a driveway hold its own structurally while still looking like it belongs with the rest of the property.

Landscaping That Plays Well With Your Driveway

The right plants can take a driveway from purely functional to something that actually adds texture and color to the front of the house.

A few ideas homeowners lean on:

Shrubs planted along the driveway's edge, flower beds framing the entry path Low ground cover tucked around hardscape areas Trees positioned for shade and visual structure

These touches soften what would otherwise be a lot of hard, flat surface, and the front yard ends up feeling more welcoming as a result.

Walkways That Guide Guests to Your Door

The path from the driveway to the front door does more work than people give it credit for. A well-planned walkway can make the whole front yard feel more connected and easier to navigate.

Walkway options worth considering:

  • Paver paths linking the driveway to the entry
  • Decorative stone for a more distinctive look
  • Wider paths that improve accessibility
  • Curved layouts that add some architectural personality

Whatever the style, the goal is the same: a clear, inviting route to the front door.

Lighting That Adds Safety and Curb Appeal After Dark

Outdoor lighting isn't just about looks, it also makes a front yard safer to use once the sun goes down. Placed thoughtfully, it can highlight the features that make a home stand out.

Common lighting choices include:

  1. Pathway lights along the walkway

  2. Accent lighting on key landscaping features

  3. Driveway lighting that improves visibility at night

  4. Fixtures that highlight the entry itself

Good lighting means homeowners still get to enjoy their front yard well after dark, without sacrificing safety.

Low-Maintenance Landscaping and Hardscape That Holds Up

Not every homeowner wants a yard that demands constant upkeep. Choosing the right plants and hardscape materials up front can mean a lot less maintenance down the road.

Low-maintenance choices often include:

Drought-tolerant plants suited to the local climate. Southern California's regional water agencies offer guidance and incentives for exactly this kind of landscaping

Decorative gravel or stone as ground cover Artificial turf or paver surfaces that hold up to wear Hardscape borders that cut down on the lawn area to maintain

These choices keep a front yard looking sharp without adding to a homeowner's weekend to-do list.

How These Upgrades Can Add to a Home's Value

A well-planned driveway or front yard project doesn't just look better; it can genuinely change how a property is perceived by prospective buyers, who often read the entry area as a signal of how well the rest of the home has been maintained.

Ready to improve how your front yard or driveway looks and functions?

We Pro Builders, can help make that happen. As an experienced outdoor remodeling contractor in Southern California, we bring thoughtful design and solid craftsmanship to every front yard and driveway project, and we can pair it with pavers, concrete, artificial turf, or a full backyard remodel if you're planning to update more than just the entry.

Call us at (818) 455-1826.

 
Read more...

Join the writers on Write.as.

Start writing or create a blog