from watashi no mitchi

1. 1941. La France métropolitaine avait perdu la guerre. Les Japonais commençaient à occuper l’Indochine. Mauvais moment assurément. Ils n’étaient pas drôles, les Japonais. En urgence, toute la famille, beaux-parents, enfants, gendre et même domestique s’embarqua sur un navire pour la France…

 
Lire la suite...

from blog//x2600.cc

A malevolent force, desire (beyond craving), a will from a thing that is the will unto itself – I feel this way about writing. Something that is deep in character. My upbringing, bringing myself up. A kid who had little at home by way of emotio al support, so I wrote and searched, found, my true voice.

And now again, I always sustain this

 
Read more...

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

🤗

 
Read more... Discuss...

from clippingwork

What Is Photo Color Correction? A Simple Guide to Accurate Product Colors

Photo color correction is the process of fixing colors in an image so they look accurate and natural. Camera lighting, white balance settings, and even the room you shoot in can all shift the true colors of a product. Color correction brings those colors back to what they really look like, so shoppers see exactly what they're buying.

Why Color Correction Matters So Much

Cameras don't always capture colors the way our eyes see them. A white shirt might come out looking slightly blue or yellow. A red bag might appear too orange under warm studio lights. These small shifts can confuse shoppers and lead to disappointment when the product arrives looking different from the photo.

Color correction fixes these issues before the image goes live. It's not about making a product look better than it is, but about making it look exactly as it is. This honesty builds trust with customers and reduces the chance of returns or complaints.

For online stores, accurate colors also matter for consistency. If ten photos of the same product show slightly different shades, shoppers may think something is wrong with the listing. Color correction keeps every photo matching, no matter when or where it was shot.

Common Color Problems in Product Photos White Balance Issues

Different light sources, like sunlight, LED bulbs, or studio flashes, carry different color tones. If the camera's white balance isn't set correctly, the whole photo can look too warm (orange) or too cool (blue).

Uneven Lighting

Shadows or bright spots caused by uneven lighting can make parts of a product look darker or lighter than they really are. This creates an inconsistent look across the image.

Color Cast

A color cast happens when one color takes over the whole image, often from a colored background or reflective surface nearby. For example, a green wall behind a product shoot can cast a slight green tint over the entire photo.

Faded or Dull Colors

Some photos come out looking washed out, with colors that seem duller than the actual product. This can happen due to poor lighting or camera settings that don't capture enough contrast.

Inconsistent Colors Across a Batch

When a store shoots dozens or hundreds of products in one session, lighting can shift slightly between shots. Without correction, the same product line might show slightly different shades from photo to photo.

How Photo Color Correction Works

Professional editors usually follow a careful process to fix these issues:

Compare with the real product. Editors check the photo against the actual item, or a reference color, to spot differences. Adjust white balance. This step corrects any overall warm or cool tint in the image. Fix exposure and contrast. Editors balance light and dark areas so details aren't lost in shadows or highlights. Correct specific color channels. Tools like curves and hue adjustments target exact colors that need fixing, without affecting the rest of the image. Match across a batch. For product catalogs, editors make sure every photo in a set has the same color tone and brightness.

This process takes a trained eye, since small adjustments can easily overcorrect and make colors look unnatural in the opposite direction.

Benefits of Professional Color Correction Accurate representation. Customers see the true color of the product, which builds trust. Fewer returns. When photos match the real item, buyers are less likely to be disappointed and send products back. Consistent catalog look. A matching color style across all your photos makes your store look organized and professional. Better brand image. Clean, accurate colors reflect a business that pays attention to detail. Improved conversion rates. Shoppers are more likely to buy when they trust what they see in the photo. Photo Color Correction vs. Color Grading

These two terms often get mixed up, but they serve different purposes. Color correction is about fixing a photo to look natural and accurate. Color grading, on the other hand, is a creative choice, used to give a photo a certain mood or style, like the warm tones in a lifestyle photo shoot.

For product photography, color correction usually comes first, since accuracy matters most. Color grading might be added afterward for marketing images, but the product listing photo itself should always show true-to-life colors.

Who Needs Photo Color Correction?

Color correction is useful for almost anyone selling products online, but it's especially important for:

E-commerce stores with large product catalogs Fashion and apparel brands, where fabric color must be exact Jewelry and accessories, where subtle color differences matter Photographers delivering client work that needs polish Brands shooting in batches with changing lighting conditions

If your photos ever look slightly off compared to the real product, color correction is likely the fix you need.

Final Thoughts

Photo color correction might seem like a small technical step, but it plays a big role in how customers perceive your products. Accurate colors build trust, reduce returns, and give your online store a clean, professional look. Whether you're fixing a single image or an entire catalog, getting the color right is one of the simplest ways to improve how your products are seen. lear more clippingwork.com .

Frequently Asked Questions

  1. What is photo color correction? Photo color correction is the process of adjusting colors in an image so they accurately match the real product. It fixes issues like white balance shifts, color casts, and uneven lighting.

  2. How is color correction different from color grading? Color correction focuses on making colors look natural and accurate, while color grading is a creative style choice used to set a mood or tone. Product photos usually need correction first, before any grading is applied.

  3. Why do product photos need color correction? Cameras and lighting setups often shift colors slightly from how they appear in real life. Color correction fixes these shifts so shoppers see the product's true color, which helps reduce returns and builds trust.

  4. Can color correction fix photos taken in bad lighting? Yes, to a good extent. Editors can adjust white balance, exposure, and specific color channels to correct many lighting issues, though extremely poor lighting may limit how much can be fixed.

  5. Is color correction needed for every product photo? Not always, but it's especially useful for e-commerce photos, batch shoots, and any images where color accuracy affects buying decisions, such as clothing, jewelry, or home goods.

 
Read more...

from Roscoe's Quick Notes

Cardinals vs Cubs

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.

 
Read more...

from Blog of Sand

Starcraft Co 6- Space Pirate

This was the first mission where you are fighting fellow Terrans instead of Zerg. Represents a step up in prestige for the fledgling interstellar PMC:


Mark Tarson had been embarrassing sector authorities for nearly a decade. Pirate, smuggler, extortionist and occasional arms dealer, he operated less like a single criminal than the chief executive of a decentralized criminal enterprise. Tarson maintained safehouses on dozens of worlds, financed independent raiding fleets and employed enough smugglers that even his own people rarely knew where he was. Whenever government forces located one of his operations, they arrived to find warehouses full of contraband, abandoned ships and expendable subordinates. Tarson himself would already be in warp space. He had no sentimental attachment to his men, his equipment or his bases. If abandoning ten million credits of hardware bought him ten minutes, he considered it money well spent.

That habit had made the bounty on him enormous. More importantly for StarCraft Co., it had made the bounty famous. Several established mercenary companies had tried collecting it. None had succeeded. When one of the contacts StarCraft Co. had accumulated during its recent expansion produced reliable intelligence placing Tarson at a fortified asteroid station near the edge of the Carthage system, the commander saw something more valuable than money. Killing ultralisks on Ardea had earned StarCraft Co. a reputation among corporations and private clients. Capturing Mark Tarson could put their name on government procurement lists across the sector.

The government representative was considerably less enthusiastic when the commander offered to accomplish in seven days what its own forces had failed to do for years. “Double the posted bounty,” the commander said. “Tarson captured or confirmed dead within one week.” The representative almost laughed. “The bounty is already generous.” “Then keep waiting.” The government countered with twenty-five percent above the bounty and placement on its preferred private military contractor list. The commander wanted the latter almost as much as the money, but didn't show it. Negotiations continued for most of an hour before they settled at one hundred fifty percent of the posted bounty, payable for Tarson alive or dead. If StarCraft Co. succeeded, it would also be moved near the top of the government's trusted PMC roster. The representative made the reason for that concession clear: other mercenary groups had promised results before. StarCraft Co. would receive the status only when Tarson was actually in custody or a morgue.

Finding him was only the first problem. Attacking him was worse. Tarson's current hideout bristled with defensive turrets and maintained its own fighter complement. StarCraft Co. could assemble enough ships to assault it, but doing so would accomplish nothing. The moment hostile fighters appeared on long-range sensors, Tarson would run. He would happily leave his entire garrison behind, launch in a fast ship and disappear into warp space before the attackers reached weapons range. A conventional assault therefore had almost no chance of collecting the bounty. The commander needed Tarson to believe he was safe until StarCraft Co. was already inside.

Tarson's greatest strength provided the answer. An organization built around smuggling needed smugglers. A battered commercial rig approached the asteroid station two days later broadcasting credentials belonging to a minor criminal syndicate with occasional business dealings with Tarson's organization. Its captain claimed to be carrying six stolen industrial fusion cores and wanted a buyer before the authorities traced them. The price was low enough to be tempting and high enough not to look ridiculous. Tarson's people scanned the cargo hold, found the fusion cores exactly where they were supposed to be, and authorized the ship to dock. Nobody noticed that several maintenance compartments had been modified since the vessel's last legitimate inspection.

StarCraft Co. had not sent an army. It had sent some of the best personnel it now employed. An elite marine detachment occupied one compartment with medics and enough ammunition for a sustained engagement. In another waited a small team of ghosts, specialists expensive enough that the commander would not have dreamed of hiring them a few contracts earlier. Their job was not to conquer the entire station. They only needed to create a path to Tarson before he realized what was happening.

The first pirates died without ever knowing there had been an attack. As cargo handlers began unloading the fusion cores, the ghosts slipped invisibly from the ship and moved into the station. One guard disappeared into a maintenance alcove. Another collapsed behind a security console. A communications technician reached for an alarm and died before his hand touched it. Within minutes the ghosts had disabled the docking bay's local communications and opened an internal service hatch. Then the marines came out.

The alarm eventually sounded, but by then StarCraft Co. was well inside the defensive perimeter. Tarson's exterior turrets and fighters—the weapons that made a direct assault suicidal—were useless against enemies already walking through his corridors. The station's internal defenses were another matter. Automated gun emplacements dropped from ceilings, security doors slammed shut and armored response teams began converging on the docking sector. That was where the division of labor mattered. Marines destroyed detectors and fixed defenses while the ghosts moved ahead under cloak, appearing only long enough to kill officers, disable communications or eliminate anyone attempting to organize resistance.

Mechanical opposition proved particularly vulnerable. At the first major junction, two automated combat units rolled into position behind a reinforced barricade and began pinning the marines down. One of the ghosts leaned around the corner just long enough to acquire the first machine and triggered lockdown. The unit froze instantly, systems trapped beneath the electromagnetic disruption. A second ghost disabled the other. The marines walked forward and destroyed both at point-blank range. The same trick worked on security vehicles, automated loaders being used as improvised barricades and even a pair of goliaths Tarson's people tried deploying deeper in the facility. By the time the defenders understood that StarCraft Co. had ghosts, several of their most valuable machines were wreckage.

Tarson responded exactly as the commander expected. He didn't rally his men. He began retreating toward his private hangar. The problem was everything between StarCraft Co. and him. The station's outer sections had been staffed lightly because the turrets and fighters were supposed to prevent anyone from reaching them. The central complex was different. Hundreds of pirates, smugglers and hired soldiers lived there. As StarCraft Co. approached the inner sectors, resistance thickened. Corridors became kill zones. Every intersection had another barricade behind it. Detectors forced the ghosts to remain visible for longer stretches, and the marines began accumulating wounded faster than the medics could return them to combat.

The advance finally stopped outside the central habitation ring. The commander studied helmet feeds while ammunition counters fell. There were simply too many defenders. StarCraft Co. could continue pushing, but the elite team would eventually be ground down, and every minute they spent fighting was another minute for Tarson to reach a ship. Retreating would save the team and lose the contract. Neither option was acceptable.

One of the ghosts noticed the alternative on the station schematic. “Mech bay.”

It was three sectors away from Tarson, in the wrong direction. It was also considerably less defended than the central ring. The commander made the decision immediately. StarCraft Co. disengaged, giving Tarson's people the impression that the assault had finally been stopped, then disappeared into maintenance corridors leading toward the industrial decks. Pirates pursued for several minutes before losing them. By the time Tarson's lieutenants realized where the mercenaries had gone, the first guards in the mech bay were already dead.

The facility contained exactly what StarCraft Co. needed. Several goliaths stood in maintenance racks alongside SCVs used for station construction and cargo handling. The ghosts disabled the active machines before their crews could react. Marines killed or drove off the mechanics, then StarCraft Co. personnel climbed into whatever they could operate. The commander wasn't interested in preserving Tarson's property. If a machine could walk and shoot, they took it. If it could walk but not shoot, they took that too.

They found the prisoners while searching the adjoining maintenance spaces. Tarson kept captives for ransom, forced labor and occasionally leverage against competitors. Some had been there for months. A few were former crewmen from ships his raiders had seized. Others were merchants or security personnel whose employers had refused to pay. StarCraft Co. didn't have time to evacuate them, but it did have weapons. The commander gave them a choice: remain locked inside until the fighting ended, or take Gauss rifles from the mech bay and help make sure Tarson never put them in cages again.

Most chose rifles.

When StarCraft Co. returned to the central ring, it no longer looked like an infiltration team. Goliaths led the advance, their autocannons turning barricades into clouds of metal fragments. SCVs followed behind, using industrial tools to rip open security doors or physically shove obstacles out of the corridors. Marines advanced between the machines while ghosts moved along the flanks, locking down mechanical defenders as soon as they appeared. Behind them came the former prisoners with captured rifles. They lacked the discipline of the mercenaries, but they knew the station and hated the people defending it.

The breakthrough became a rout. Tarson's men had organized themselves to stop infantry advancing through narrow corridors. They had not expected their own goliaths to come walking back toward them. One defensive position surrendered when an SCV tore the entire barricade out of the floor. Another tried deploying two goliaths of its own, only for both machines to freeze under lockdown before firing a shot. The former prisoners knew shortcuts through habitation blocks and maintenance spaces, allowing ghosts to bypass several fortified positions entirely. For the first time in years, Mark Tarson was running out of places to retreat. He abandoned the station.

By the time StarCraft Co. reached his private hangar, a sleek Wraith fighter was already moving toward the launch aperture. Tarson had left dozens of his own men fighting and dying behind him without so much as warning them that he was leaving. The hangar doors were opening. Beyond them was open space. If the Wraith cleared the station and entered warp, the entire operation would become another entry in the long history of people almost catching Mark Tarson. “Stop that ship.”

The marines opened fire, but rifle rounds sparked uselessly from the fighter's armor. One of the captured goliaths tried bringing its weapons around, but the Wraith was too close to the launch aperture. Firing heavier ordnance risked destroying the hangar around them. Tarson's engines flared. Then one of the ghosts stepped into the open. The lockdown round struck the Wraith just before it reached the aperture.Every system on the fighter seized.

The engines died. Control surfaces froze. The Wraith continued forward on momentum, drifted several meters and struck the edge of the launch guide hard enough to spin sideways. It came to rest against the hangar wall. For several seconds nobody moved. Then the marines surrounded it.

Tarson refused the first order to open the cockpit. He refused the second. The commander authorized the SCV crew to remove him. An industrial manipulator closed around the cockpit canopy and tore the entire assembly from the fighter. Mark Tarson stared out at the mercenaries surrounding him. He looked smaller than his reputation. “You StarCraft?” he asked. One of the marines nodded. Tarson laughed. “Never heard of you.” The marine pulled him out of the cockpit. “You will.”

The operation ended forty-three hours before the contractual deadline. StarCraft Co. transferred Tarson alive, along with station records identifying several of his secondary bases, financial accounts and affiliated smuggling operations. The intelligence alone was worth more to the government than the bounty. Within days, raids began across the sector. Tarson's decentralized empire did not disappear, but without the man at its center, parts of it began turning on one another almost immediately.

The government paid one hundred fifty percent of the bounty exactly as agreed. More importantly, StarCraft Co. was elevated near the top of its trusted private military contractor list. The story traveled quickly. Mark Tarson had escaped naval task forces, bounty hunters and mercenary companies for years. StarCraft Co. had taken him alive with an infiltration team, stolen his own war machines and delivered him ahead of schedule.

The commander returned to an inbox even more crowded than the one he had left after Ardea. Some messages were from corporations. Others came from colonial governments, shipping combines and military procurement officers. Several established mercenary outfits wanted subcontracting agreements. The surviving Harrier Group personnel had sent another referral. People who would not have returned StarCraft Co.'s calls months earlier were now asking for meetings.

Buried among those offers were more reports of Zerg. Too many.

The commander had noticed the pattern after Ardea. Now it was becoming impossible to dismiss. Settlements disappearing. Shipping lanes reporting attacks. Isolated organisms appearing on worlds where no Zerg presence had ever been recorded. Corporations quietly looking for extermination teams before governments noticed. StarCraft Co. had built its reputation by being in exactly the right business at exactly the right moment.

Mark Tarson had proven that they could do more than kill Zerg. The contracts waiting for them suggested that killing Zerg was nevertheless going to remain very good business.

 
Read more...

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.

This week's contributors: Lydia, Pépé Pépinière, Titi. This week's subjects: Styling Your Old Corporate Shirts the Ghanaian way, Poverty the mother of invention and fashion? Sport sport sport, Irregular flow, and +233 Jazz Bar & Grill

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.

Lydia...

Do not forget to hit the subscribe button and confirm in your email inbox to get notified about our posts.
I have received requests about leaving comments/replies. For security and privacy reasons my blog is not associated with major media giants like Facebook or Twitter. I am talking with the host about a solution. for the time being, you can mail me at wunimi@proton.me
I accept invitations and payments to write about certain products or events, things, and people, but I may refuse to accept and if my comments are negative then that's what I will publish, despite your payment. This is not a political newsletter. I do not discriminate on any basis whatsoever.

 
Read more... Discuss...

from PlantLab.ai | Blog

Three antique botanical study plates side by side - two vigorous cannabis specimens and one with drooping, ochre-faded lower leaves - above a fine ink rule punctuated with engraved tick marks like a season of logged entries

The Short Version

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.


One Photo, Several Plants

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.


It Admits When It's Unsure

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.


Model Upgrades Are Visible Now

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.


The Upload Bug That Took Three Tries

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.


Quieter Things

  • The API no longer dies at boot on a transient database hiccup. It used to try once and exit, so a DNS blip during a deploy could take the service down until someone noticed.
  • There's a partners page now for hardware and platform companies who want plant health inside their own products.
  • /usage returns your counts, limits and remaining quota, and doesn't itself consume quota.
  • I measured what ruins a diagnosis photo. Tight close-ups and overexposure hurt far more than blur or purple light, which is the opposite of what most people assume.
  • Infrastructure runs in Europe. That happened earlier in the year, and here's why.

What's Next

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.

 
Read more...

from PlantLab.ai | Blog

A herbarium specimen sheet in antique botanical style - a pressed cannabis leaf drawn in fine engraved ink on the left, joined by a single ruled line to a naturalist's record card of neat abstract pen strokes on the right

What It Does

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.


One Call

curl -X POST https://api.plantlab.ai/diagnose \
  -H "X-API-Key: $PLANTLAB_API_KEY" \
  -F "image=@canopy.jpg"

Multipart upload, one required field.


What Comes Back

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.


The Fields

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

The field people get wrong

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_group

suspected: 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.

Also in the response

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.


The Rest of the Surface

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.


Limits and Errors

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.


What It Doesn't Do

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.


Getting Started

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.

 
Read more...

from PlantLab.ai | Blog

An antique bellows plate camera on a tripod studying a cannabis specimen framed by hand-inked corner brackets, with two faded rejected alternatives in the corners: the plant lost in an oversized frame, and a single leaf overflowing a too-tight crop

How to Photograph a Cannabis Plant for Diagnosis

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.

The One That Surprises Everyone

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.

But Don't Go Too Far Back

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.

Light Level Beats Light Color

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.

Blur Is More Forgiving Than You Think

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.

The Checklist

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

How I Tested

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.

If You're Automating

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.

 
Read more...

from Blog of Sand

Starcraft Co 5- Nature Preserve

This mission involved hunting ultralisks in a planet dedicated as a nature preserve.


The contract came from the Elysian Conservancy, a planetary trust responsible for maintaining one of the sector's largest privately managed nature preserves. The planet, Ardea, had no permanent cities, no mines and almost no industry. Its single orbital station existed primarily to receive researchers and wealthy tourists willing to pay obscene amounts of money to spend two weeks looking at animals from behind polarized glass. Almost ninety percent of the surface was protected wilderness. The Conservancy's promotional material described it as one of humanity's great conservation successes. The financial records described something less romantic: declining donations, deferred maintenance, aging equipment and a government subsidy that hadn't increased in eleven years. Now something was eating the wildlife.

“We thought they were isolated incidents at first,” Director Halden explained. Satellite images appeared beside him, showing enormous carcasses scattered across a grassland. “Our larger herbivores migrate. Animals die. Scavengers strip the remains. It took several weeks before anyone realized the pattern.” The commander enlarged one image. Something had torn an animal the size of a terrestrial elephant nearly in half. “Ultralisk?” Halden nodded. “Confirmed twelve days ago.” The commander moved to the next image. “One?” Halden hesitated. “No.” The current estimate was eighteen to twenty-five animals, although nobody could say where they had come from. That uncertainty was becoming familiar. There was no established Zerg hive on Ardea, no recorded infestation and no reason for a population of ultralisks to exist there. Yet they were spreading across several hundred kilometers of preserve, devouring virtually every large animal they encountered. Halden's people estimated that another month of predation could permanently damage several already-fragile populations.

“Call the military,” the commander said. Halden explained that they had. The military's proposed solution involved aerial reconnaissance, armored forces and authorization for orbital strikes if the infestation proved larger than expected. “Which would solve your ultralisk problem.” Halden nodded. “By turning approximately twelve thousand square kilometers of protected habitat into a military operations zone.” There was another problem. Ardea couldn't afford it. The Conservancy wanted the ultralisks removed cheaply, with as little disturbance as possible and preferably without tourists learning that enormous Zerg organisms were currently eating their way through the planet's most famous wildlife reserve. No battlecruisers. No tanks. No orbital bombardment. Even aircraft were restricted around several sensitive nesting regions. StarCraft Co. had begun receiving contracts precisely because it had developed a reputation for solving problems without destroying everything surrounding them.

The commander studied the proposed fee and named a higher one. Halden protested that the Conservancy was a nonprofit. The commander pointed out that ultralisks did not offer nonprofit rates. They eventually found a number both could tolerate. Compared with the Horizons Beyond contracts, the money wasn't extraordinary. The opportunity was. StarCraft Co. had spent much of its existence fighting in corridors. Ardea would prove whether it could operate as a genuine field force. The deployment reflected what the company had learned. They didn't flood the planet with cheap infantry. Several detachments of experienced marines landed with dedicated medic support, carrying upgraded rifles and armor-piercing ammunition purchased specifically for the contract. Every squad carried tracking equipment, remote cameras and enough supplies to remain in the field for days. They weren't there to fight twenty ultralisks. They were there to fight one ultralisk twenty times.

The first hunt took almost fourteen hours. Conservancy trackers followed a trail of destroyed vegetation into a broad valley where one of the creatures had been feeding on a herd of six-legged grazers. The commander refused to let the marines approach until they understood the terrain. They spent three hours placing firing positions along a rocky slope overlooking a narrow ravine. One squad eventually descended far enough to attract the ultralisk's attention, fired several rounds into its hide, then ran. The animal followed. The scale of it was difficult to appreciate until it was moving toward them. An ultralisk outweighed a marine by roughly two hundred times. Its armored body shook the ground as it charged, enormous kaiser blades cutting through vegetation that would have stopped a vehicle. The bait squad barely reached the ravine before the creature caught them. Then armor-piercing fire erupted from both slopes.

The rounds worked. Not quickly, but they worked. Marines fired into joints, eyes and the softer tissue beneath the creature's armored plates. The ultralisk tried climbing toward one firing position, forcing that squad to withdraw while the others continued shooting into its exposed flank. It changed direction. Another squad retreated. The creature spent nearly five minutes chasing enemies it could never quite reach while concentrated fire gradually tore it apart. Eventually one foreleg buckled. The ultralisk collapsed against the ravine wall and still tried to rise. The marines continued firing until it stopped. Nobody celebrated much. They had used almost three times the ammunition projected for a single kill.

The second went more smoothly. The third nearly killed eight people when it abandoned the bait squad and charged directly through a patch of forest the commander had assumed was impassable. Trees snapped in front of it like grass. Marines scattered while medics dragged one man with a shattered leg behind a boulder seconds before the ultralisk reached him. It took concentrated fire from three directions to bring the creature down. Afterward the commander revised every terrain assumption on the operation map. If an ultralisk could physically fit between two objects, the route was considered passable. By the fourth hunt, the mercenaries had developed a system. Scouts located an animal and tracked it without engaging. The commander selected terrain that limited its movement. Firing teams established positions before anyone deliberately attracted its attention. Marines never tried to hold ground. If the ultralisk chose their position, they withdrew while everyone else fired. The object was not bravery. The object was making several tons of enraged Zerg repeatedly turn around while armor-piercing rounds accumulated inside it.

It worked until the sixth ultralisk. The creature had been tracked into a canyon bordered by dense woodland. Everything indicated it was alone. The first shots struck exactly where intended, and the ultralisk charged toward the bait squad. Then trees began falling behind the western firing position. A second ultralisk emerged. There was no time to withdraw cleanly. The second animal hit the flank before the marines could reposition, catching one squad in the open. Its first sweep killed two men. Another marine disappeared beneath one of its feet. The formation fragmented as both creatures charged independently through the canyon. Fire discipline vanished. Squads fired at whichever target was closest while medics tried to reach wounded personnel without being crushed.

The commander stopped trying to control the entire battlefield and divided it instead. Half the force concentrated on the original ultralisk while the rest drew the second away. The first was already wounded. Every available rifle focused on one foreleg until the limb finally failed. The creature crashed forward, carving a trench through the earth with its blades, and the marines poured AP rounds into its exposed underside until it died. Then everyone turned on the second. It took another eleven minutes. When it was over, six ultralisks lay dead across Ardea. So did too many mercenaries. The commander requested reinforcements.

A dropship arrived the following morning carrying fresh marines, ammunition and replacement medical supplies. The new soldiers walked past stretchers heading in the opposite direction. Nobody needed to explain what they were hunting. The operation continued. Most of the remaining ultralisks were successfully isolated. Some were drawn into rocky gullies where they could not maneuver effectively. One was lured onto marshy ground and sank deep enough that its enormous mass became a liability. Marines stood outside the mud and methodically shot it to pieces while it struggled to free itself. Another was tracked into a forest recovering from an old wildfire, where the mercenaries used fallen trunks and steep terrain to force it through a winding route while firing from elevated positions.

Not every plan survived contact. Twice more they encountered pairs. The first pair cost them four marines. The second almost destroyed an entire detachment when one ultralisk circled around a ridge instead of following the expected route. A medic spotted it first and screamed a warning seconds before it hit. The squad scattered. Two weren't fast enough. Every casualty taught them something. They learned how ultralisks turned. They learned which movements preceded a charge and which meant the creature was preparing to change direction. They learned that damaging one leg was more useful than spreading fire across the entire body. They learned to place medics where terrain prevented a direct charge. They learned never to trust forests, never to trust ridgelines and never to assume the creature they could see was the only creature nearby.

Most importantly, they learned patience. Some hunts lasted days. StarCraft Co. would locate an ultralisk and simply follow it. Marines slept in shifts while drones and trackers maintained contact. They waited until the creature entered favorable terrain. Sometimes it took six hours. Sometimes twenty. Once they tracked an animal for nearly three days before it wandered into a dry river system narrow enough to create overlapping fields of fire. Then they killed it in seven minutes. The Conservancy initially worried that the operation was moving too slowly. The commander showed Halden the casualty projections for attacking the creatures wherever they happened to be found. Halden stopped asking.

Weeks passed. The numbers accumulated. Nine. Twelve. Fifteen. Eighteen. The surviving marines became extraordinarily good at killing something that should have been able to tear a squad apart. New arrivals learned from veterans. Squads that had once panicked when an ultralisk changed direction began reacting almost automatically, peeling away from the charge while adjacent units shifted fire toward exposed joints.

The final hunt began near dawn. Two ultralisks had been tracked into open savanna together. Separating them proved impossible. Whenever one moved, the other followed. The commander considered waiting another day, then another, but reconnaissance suggested the animals were approaching one of Ardea's largest remaining herds of native grazers. They would have to take both. The mercenaries prepared the ground through the night. Marines dug shallow firing positions behind natural stone formations. Ammunition caches were distributed so no squad would need to carry its entire supply. Medics established two treatment stations on opposite sides of the engagement area. The commander divided the force into independent teams and gave each the same instruction: once the ultralisks committed, nobody tried to stand against them.

At sunrise, the bait team fired. Both ultralisks charged. The savanna erupted. Armor-piercing rounds struck the lead creature from three directions. It turned toward one squad, which immediately withdrew. The second ultralisk continued straight and forced another team from its position. For several minutes the entire battle became movement—humans scattering between rocks while the two enormous creatures tried to close the distance. Then one marine stumbled. The ultralisk reached him before anyone could help. Nobody stopped firing. The commander concentrated every squad with a clean angle onto the creature's right foreleg. Hundreds of rounds struck the same region. Armor fractured. Tissue shredded. The limb collapsed.

The ultralisk went down. The second charged directly through the firing line trying to reach the wounded animal. Three more marines died. Then the surviving squads surrounded it. The first ultralisk was still alive, dragging itself forward with its remaining limbs. A marine squad finished it while everyone else concentrated on the second. The last ultralisk on Ardea died less than twenty meters from the first.

When the Conservancy completed its final aerial survey, twenty-three ultralisk carcasses were marked across the preserve. Twenty-three. The photographs were absurd. Marines standing beside the bodies looked like children posing beside construction equipment. Some of the creatures were nearly two hundred times their mass. StarCraft Co. had killed them with rifles. The cost had been substantial. The company had lost enough experienced personnel that the commander immediately suspended new deployments until replacements could be trained. Medical bills were enormous. Ammunition expenditures had consumed a surprising portion of the contract. The Conservancy quietly paid an additional casualty allowance after seeing the final report.

But Ardea's herds survived. There were no orbital craters. No forests flattened by tanks. No ruined ecosystems. Most visitors never learned anything had happened. Director Halden thanked the commander personally. More importantly, he talked. So did the Harrier survivors from the Horizons Beyond. So did Kessler. So did the executives of the research corporation. People who needed unpleasant problems solved quietly began passing around the same contact information.

By the time StarCraft Co. returned from Ardea, the commander had forty-three pending contract requests. Some were ordinary security work. Several involved missing settlements. Others described unexplained Zerg sightings on worlds with no known hives. A mining consortium wanted help clearing hydralisks from an asteroid complex. A colonial government had lost contact with an agricultural district. Two shipping companies reported organisms aboard cargo vessels. Someone claiming to represent a planetary governor wanted an infestation removed without notifying the military. The commander read through them late into the night.

Individually, none seemed extraordinary. Taken together, they were impossible to ignore. The Varga laboratory had seemed like an accident. The Horizons Beyond had seemed negligent. Ardea could have been another isolated outbreak. But the requests kept arriving. Different planets. Different corporations. Different circumstances. The same problem. StarCraft Co. was becoming successful faster than anyone had expected. Unfortunately, it was beginning to look like there was a reason.

 
Read more...

from blog//x2600.cc

The train sings outside, clouded sky shrouds the “dark valley” it travels through. The night is continued by dark clouds, the rain, on and off as the morning moves on.

A coffee is poured, then another. The third one cools as I write on my phone.

82Mhz shared amazing links this AM, how to make a server on an Android phone, AI destroying books, other ephemera to read through the day

I light a cigarette and retreat to water

 
Read more...

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.

 
Read more...

from Things Left Unsaid

Woke became an insult. What does it mean to be not woke? To oppose all the things that could bring humanity to a brighter future, like wisdom, common sense, empathy, acceptance, logic, education, science, etc.. Judge and hate people for the color of their skin, for who they fall in love with, for where they were born, or for no reason at all. Decide who should have and who should have not. Even when presented with solid evidence, deny that more of an iceberg exists beneath the surface than what can be seen. Life is all black or white with no in between. Don't listen to reason, and ignore any inclination to investigate anything. Cancel critical thinking. Don't care about how much suffering closed mindedness, greed and violence causes. Measure success by how much power and The Dollar Almighty a person has taken by manipulation, greed, or brute force. If you haven't achieved this (false) success for yourself, admire those who have, and elect them as leaders.

 
Read more... Discuss...

from An Open Letter

I have been getting a lot more matches on, and there’s this one person that I was talking to a lot today she really matches my energy. I also thought she was funny And she matched my freak. She also mentioned that she has had therapy in the past, and she lives pretty close by which I’m excited for. We have our first date on Saturday. I’m nervous but excited.

 
Read more...

from AnOublietteofThought

He did not settle upon my heart with the coziness of a warm blanket. He clawed his way through terror and rejection, roaring in silent defiance until I granted audience. Until I opened my eyes to see what stood before me.

It is said, that when the leaves blush in longing dance, air and water will unite to set flame to ways long rotting. What they forgot to mention is that the earth must tremble, cracking until mountains rise to spew fire into the heavens. Forever igniting our best minds to blaze in remorse. The unyielding storm holds no syllables in that passage.

Storms do not yield. They flood. They rupture. They clean the slate and leave a debris field of memories for us to learn from. But we haven't learned. Neither have I. Neither has he. We just are. Two victims of a cunning value. Little more. Little less.

We are taught that we must never gaze into the eyes of our heroes. One does not ascend to such great depths by doing what they are told. I dared to peer into the travesty of his gaze, and in that monumental moment of a not-so-insignificant contact—

the world tilted.

© 2026 AnOublietteofThought. All rights reserved.

 
Read more...

Join the writers on Write.as.

Start writing or create a blog