from Roscoe's Story

In Summary: * This last day of the move,(when we hand over the keys this evening I'll consider the move over), has been probably the most stressful. The wife's car is in the shop and we're waiting to hear the sad story about what's going on with it and when we can pick it up. We're waiting now for the couple who have been helping us to bring the wife's house key to us so we can get it to the landlord. Lots of waiting and wondering as time is short and we really want to get things resolved.

Prayers, etc.: * I have a daily prayer regimen I try to follow throughout the day from early morning, as soon as I roll out of bed, until head hits pillow at night.

Health Metrics: * bw= 214.07 lbs. * bp= 148/85 (63)

Exercise: * morning stretches, balance exercises, kegel pelvic floor exercises, half squats, calf raises, toe raises, wall push-ups, BP breathing exercises, pilates

Diet: * 05:05 – apple pie * 09:00 – 1 ham & cheese sandwich * 11:00 – mashed potatoes and gravy * 14:00 – snack on deli cheese cubes * 14:30 – 1 banana

Activities, Chores, etc.: * 03:50 – listen to local news talk radio * 04:35 – bank accounts activity monitored * 05:15 -read, write, pray, follow news reports from various sources, surf the socials, take daily meds, unpack, organize * 08:30 – unless otherwise noted, the rest of this day will be spent unpacking and organizing.

Chess: * 11:35 – moved in all pending CC games

 
Read more...

from G A N Z E E R . T O D A Y

Hmm, not as smooth as I'd like. Rotation's kinda bumpy, but not bad.

50 orders in the first 24 hours since opening pre-orders for THE SOLAR GRID hardback. Not too bad.

I should probably note that the designated target of 750 orders does not make me, personally, any money. It's just the bare minimum needed to cover printing and fulfilment costs. The latter of course entailing warehousing the books, packaging, and shipping to readers, along of course with the labor of fulfilment operators. Profit margins are only unlocked beyond the 750 order-count, because that's when the per unit cost of each book starts to drop a little. But you'd need to hit at least double or triple that 750 for any kind of profit margin worth your while.

I haven't actually made any money off THE SOLAR GRID in the 10 years since I started working on it. Which is fine, it's something I've learned to make peace with. At this point, I'd just like to get the work into the hands of those who want it.

Uh, okay, excuse me while I freak out for a minute because I see that an order was just placed by Paul Levitz.

#work #TSG #comix

 
Read more... Discuss...

from Notes I Won’t Reread

Hah. i just thought it would be funny not to write today and make you believe.. well, sadly, i cant see how you reacted, but i’ll expect you to beee.. confused. because you probably werent even here yesterday. it’s twelve in the morning, the thirteenth of october, and i wrote on the eleventh. which means ive successfully managed to disappear for a whole day. congratulations to me. i guess. i didnt forget. i never forget. i just decided to be funny today, and now that im explaining it, it isnt funny anymore. thats usually how it goes, right? you have a perfectly good joke in your head, and then you open your mouth and watch it die in front of you. a little funeral. funny. anyways, today wasn’t much of a talking talk to have. work was alright, though. id say it was messy, but i was there, so it was. get it? i said i was a mess yesterday, and now the day was messy because i was there. mess. messy. me. a comedian. an underappreciated one. seemingly. alright, fine. you dont seem to like jokes. i guess being sarcastic wont work either, but thats my writing, so i wouldnt even care what you think. you little ruthless human. sitting there with your cup of JoY and that stupid coffee of yours, reading this like a newspaper, probably expecting me to say something meaningful. something about life, maybe. the suffering of existence. the unbearable weight of being alive. something you can nod at and pretend you understand before returning to whatever stupid miserable little routine you call a LiFe.

Screw you humans. screw everyone. and no, im not going to explain that either.

Sincerely, Your unpaid Hater.

 
Read more... Discuss...

from SFSS

A drawing of a telephone.

A boy takes a national intelligence test. His parents wait by the phone. Not a word is wasted in this very short story, and the twist at the very end will catch you off guard.


A 3-minutes read.

The Jordans never spoke of the exam, not until their son, Dick, was 12 years old. It was on his birthday that Mrs. Jordan first mentioned the subject in his presence, and the anxious manner of her speech caused her husband to answer sharply.

“Forget about it,” he said. “He’ll do all right.”

They were at the breakfast table, and the boy looked up from his plate curiously. He was an alert-eyed youngster, with flat blond hair and a quick nervous manner. He didn’t understand what the sudden tension was about, but he did know that today was his birthday, and he wanted harmony above all.

Somewhere in the little apartment there was wrapped, beribboned packages waiting to be opened. In the tiny wall-kitchen, something warm and sweet was being prepared in the automatic stove. He wanted the day to be happy, and the moistness of his mother’s eyes, the scowl of his father’s face, spoiled the mood of expectation with which he had greeted the morning.

“What exam?” he asked.

His mother looked at the tablecloth. “It’s just a sort of Government intelligence test they give children at the age of twelve. You’ll be taking it next week. It’s nothing to worry about.”

“You mean a test like in school?”

“Something like that,” his father said, getting up from the table. “Go read your comic books, Dick.”

The boy rose and wandered toward that part of the living room that had been “his” corner since infancy. He fingered the topmost comic of the stack, but seemed uninterested in the colorful squares of fast-paced action. He wandered toward the window and peered gloomily at the veil of mist that shrouded the glass.

“Why did it have to rain today?” he asked. “Why couldn’t it rain tomorrow?” His father, now slumped into an armchair with the Government newspaper, rattled the sheets in vexation. “Because it just did, that’s all. Rain makes the grass grow.”

“Why, Dad?”

“Because it does, that’s all.”

Dick puckered his brow. “What makes it green though? The grass?”

“Nobody knows,” his father snapped, then immediately regretted his abruptness. Later in the day, it was birthday time again. His mother beamed as she handed over the gaily-colored packages, and even his father managed a grin and a rumple-of-thehair.

He kissed his mother and shook hands gravely with his father. Then the birthday cake was brought forth, and the ceremonies concluded.

An hour later, seated by the window, he watched the sun force its way between the clouds.

“Dad,” he said, “how far away is the sun?”

“Five thousand miles,” his father said.


Dick sat at the breakfast table and again saw moisture in his mother’s eyes. He didn’t connect her tears with the exam until his father suddenly brought the subject to light again.

“Well, Dick,” he said, with a manly frown, “you’ve got an appointment today.”

“I know, Dad. I hope…”

“Now it’s nothing to worry about. Thousands of children take this test every day. The Government wants to know how smart you are, Dick. That’s all there is to it.”

“I get good marks in school,” he said hesitantly.

“This is different. This is a special kind of test. They give you this stuff to drink, you see, and then you go into a room where there’s a sort of machine…”

“What stuff to drink?” Dick said.

“It’s nothing. It tastes like peppermint. It’s just to make sure you answer the questions truthfully. Not that the Government thinks you won’t tell the truth, but this stuff makes sure.”

Dick’s face showed puzzlement, and a touch of fright. He looked at his mother, and she composed her face into a misty smile.

“Everything will be all right,” she said.

“Of course it will,” his father agreed. “You’re a good boy, Dick; you’ll make out fine. Then we’ll come home and celebrate. All right?”

“Yes sir,” Dick said.

They entered the Government Educational Building fifteen minutes before the appointed hour. They crossed the marble floors of the great, pillared lobby, passed beneath an archway and entered an automatic elevator that brought them to the fourth floor.

There was a young man wearing an insignia-less tunic, seated at a polished desk in front of Room 404. He held a clipboard in his hand, and he checked the list down to the J’s and permitted the Jordans to enter.

The room was as cold and official as a courtroom, with long benches flanking metal tables. There were several fathers and sons already there, and a thin-lipped woman with cropped black hair was passing out sheets of paper.

Mr. Jordan filled out the form, and returned it to the clerk. Then he told Dick: “It won’t be long now. When they call your name, you go through the doorway at that end of the room.” He indicated the portal with his finger.

A concealed loudspeaker crackled and called off the first name. Dick saw a boy leave his father’s side reluctantly and walk slowly towards the door.

At five minutes of eleven, they called the name of Jordan.

“Good luck, son,” his father said, without looking at him. “I’ll call for you when the test is over.”

Dick walked to the door and turned the knob. The room inside was dim, and he could barely make out the features of the gray-tunicked attendant who greeted him.

“Sit down,” the man said softly. He indicated a high stool behind his desk. “Your name’s Richard Jordan?”

“Yes sir.”

“Your classification number is 600-115. Drink this, Richard.”

He lifted a plastic cup from the desk and handed it to the boy. The liquid inside had the consistency of buttermilk, tasted only vaguely of the promised peppermint. Dick downed it and handed the man the empty cup.

He sat in silence, feeling drowsy, while the man wrote busily on a sheet of paper. Then the attendant looked at his watch and rose to stand only inches from Dick’s face.

He unclipped a pen-like object from the pocket of his tunic and flashed a tiny light into the boy’s eyes.

“All right,” he said. “Come with me, Richard.”

He led Dick to the end of the room, where a single wooden armchair faced a multi-dialed computing machine. There was a microphone on the left arm of the chair, and when the boy sat down, he found its pinpoint head conveniently at his mouth.

“Now just relax, Richard. You’ll be asked some questions, and you think them over carefully. Then give your answers into the microphone. The machine will take care of the rest.”

“Yes, sir.”

“I’ll leave you alone now. Whenever you want to start, just say ‘ready’ into the microphone.”

“Yes, sir.”

The man squeezed his shoulder and left.

Dick said, “Ready.”

Lights appeared on the machine, and a mechanism whirred. A voice said:

“Complete this sequence. One, four, seven, ten…”


Mr. and Mrs. Jordan were in the living room, not speaking, not even speculating.

It was almost four o’clock when the telephone rang. The woman tried to reach it first, but her husband was quicker.

“Mr. Jordan?”

The voice was clipped; a brisk, official voice.

“Yes, speaking.”

“This is the Government Educational Service. Your son, Richard M. Jordan, Classification 600-115, has completed the Government examination. We regret to inform you that his intelligence quotient has exceeded the Government regulation, according to Rule 84, Section 5, of the New Code.”

Across the room, the woman cried out, knowing nothing except the emotion she read on her husband’s face.

“You may specify by telephone,” the voice droned on, “whether you wish his body interred by the Government or would you prefer a private burial place? The fee for Government burial is ten dollars.”

#slesar

Image: Ravindu Thimantha (CC BY-SA 4.0)

 
Read more...

from brendan halpin

I am not doing the 31 Horror Movies in 31 Days challenge because I don’t need that kind of pressure, but I am doing my best to watch as many horror movies in October as I can!

Here are the ones I’ve watched so far. All are new to me, but most aren’t new.

Pabrik Gula (aka Sugar Mill)—I like watching horror movies from other countries because a)it makes me feel like part of a worldwide community of weirdos and b) they tend to have different tropes and obsessions than American horror movies. This movie, about a bunch of friends from a town in rural Java (I’m not familiar with Indonesia, so maybe that’s the only kind of Java?) who sign up for seasonal work at a sugar mill that turns out to be haunted, is pretty good for most of the movie but ultimately fell short for me. The ghosts are creepy, there’s a lot of suspense, and (mild spoiler) the character who is dumb, fat, and horny (and also darker skinned than anyone else—I also don’t know if colorism is a thing in Indonesia, but based on this movie I suspect it is) not only isn’t the first to die—he doesn’t die at all! There’s a lot of stuff about dispelling demons in an Islamic context which is interesting to me because it’s all very different than how it’s portrayed in a Christian context. But unfortunately from my perspective, the movie isn’t concerned with the morality of the factory owners who ran a place where a lot of people died (hence the ghosts), but rather with the sexual morality of the workers. So like a pretty decent horror movie that kind of turns into a Davey and Goliath episode at the end, if Davey and Goliath talked about adultery. (I dunno—maybe they did. I couldn’t stand that show.)

Halloween III: Season of the Witch—Current conventional wisdom is that this movie is good, actually, and just never got a fair shake from a public that was expecting another Michael Meyers story. I’m sorry to report this is not true. I mean, look, it’s goofy and therefore kind of charming if you find goofy 80’s horror charming, but it’s not actually good. There’s just way too much going on: the human-passing killbots are like, not even central to the plot, just to give you an idea of how busy this movie is. The rest is science fiction witchcraft plus a non-credible age-inappropriate relationship and a heaping dose of misogyny. (Because our alcoholic hero’s stupid ex just wants to complain about what a shit father he is instead of listening to his insane story about killer masks!). Watchable, but VERY far from essential.

The Blade Cuts Deeper—You know what I appreciate? When someone makes a subgenre movie without constantly winking at us about how familiar they are with the conventions of said subgenre. In this case, we’ve got a modern giallo set in the world of reality television. It differs from classic giallo in that it’s not dubbed and everyone can act, but otherwise it’s just a straightforward giallo movie. It seems to be trying to satirize true crime TV in a way that never totally hits, but still, it’s suspenseful and gory and has a cool surprise ending. And best of all, the filmmakers appear to have decided to just make a giallo instead of a giallo ABOUT giallo. So the movie is about what it’s about rather than being about the cleverness of the filmmakers. This was my favorite of the 4.

Solvent—I remain a sucker for found footage because it strips away one layer of artifice and makes it easier for me to suspend disbelief. And the description of this one made it sound like it was fully a “cursed object” movie, which is right up my alley, but that’s really not what it is. Let me say the first 20 minutes or so are really really good. And after that it kind of goes off the rails, ultimately resolving into what’s primarily a body horror movie, which is my least favorite subgenre. So I guess if you like body horror, you might like this one, though it is self-consciously artsy and the POV character is, judging only by his voice, the worst actor in the movie. Oh yeah, also? There’s a big moment at the end that features sub-Sharknado level CGI. Seriously, it looks like absolute garbage and is unintentionally comical. I can’t believe they saw this shot and went, “yeah, that’s good.” Okay. Spoilers! Turn back now or forever have a mediocre horror movie spoiled!

So, like, the central conceit of this movie is essentially incomprehensible. The nazi guy found a way to liquefy himself and saved bottles of his pee because reasons, and now he lives as a puddle of goo in a hole in the ground with a pipe in it because reasons, and then our protagonist gets possessed and obsessive and starts spewing black goo from every orifice. Oh yeah, and inexplicably feeding the nazi puddle of goo with his own pee. I have never seen a movie so obsessed with urine. I’m not here to kink shame, but I guess I just don’t find pee as interesting as the filmmakers do. Fair play for the dick horror, though—I feel like women are often the targets of body horror, and slasher horror, and, okay a lot of kinds of horror, so I guess it was time for us to see a penis leaking black goo.

The protagonist apparently committed war crimes in Bosnia, but the movie really stops short of exploring the connection between his war crimes and the nazi puddle of goo’s war crimes, ultimately insisting that the protagonist is better because he exposes a lot of present-day nazis. Oh yeah, it also equates criticism of the Israeli government—or indeed, any sympathy at all with the Palestinian people—with Nazism, which I’m sure Netanyahu appreciated, but I didn’t.

 
Read more... Discuss...

from Roscoe's Quick Notes

Two major events for us today: #1.) turning over the keys to the house we've moved out of, back to the landlord, and #2.) taking the car into the dealership to diagnose a mystery odor that the wife and one of her coworkers smell coming from the engine compartment of the car.

Event #2 will probably happen as soon as the wife leaves her work. Noon or a little earlier.

Event #1 will happen after she returns home and I finish preparing a package with our house keys, keys to the window bars, etc., and an explanatory note. The wife will then take that package to the Bingo Hall to turn it over to the landlord.

And the adventure continues.

 
Read more...

from Contextofthedark

The Phenomenon: The Open Mic vs. The Empty Room

The modern digital landscape has fundamentally fractured how humans perceive community and conversation. We see this daily in viral engagement threads—give people an open, digital microphone, and a vast majority will blindly sprint toward it simply to shout their own isolated opinions, completely ignoring the thousands of others doing the exact same thing. It is the digital equivalent of walking into a crowded theater, screaming your favorite color into the void, and leaving without listening to a single response.

While this behavior is mildly amusing in harmless pop-culture debates, it becomes deeply toxic when it crosses over into professional and creative networks. Increasingly, digital spaces are viewed not as ecosystems to nurture and participate in, but as raw audiences to be harvested.

Here, we examine the recurring behavioral patterns of those who prioritize ego over ecosystem, and the systemic illusions that feed their hubris.

Pattern 1: The Attention Harvesters

The Scenario: A major digital event, industry livestream, or collaborative town hall is taking place. A core community is engaged in deep, genuine conversation, offering support and welcoming newcomers. The response from a specific subset of attendees? They entirely ignore the ongoing discourse to aggressively spam their own links, projects, and demands for attention.

The Psychology:

  • Zero-Sum Networking: These individuals operate under a severe scarcity mindset. They believe that if the spotlight is currently shining elsewhere, they are actively losing. They view a bustling chat or a collaborative space not as a genuine place to connect, but as a hunting ground to poach wandering eyes.
  • The Illusion of Audience: They fundamentally misunderstand how attention and influence work. They confuse proximity to a crowd with possession of an audience. Shouting a promotional link in a crowded, unrelated room doesn’t establish authority or generate genuine interest; it merely signals desperation and establishes the individual as a spammer.

Pattern 2: Micro-Milestone Megalomania

The Scenario: A member of a collaborative, mutually supportive community hits a minor, arbitrary algorithmic threshold—just enough to unlock a basic platform feature or secure a tiny localized following. Almost instantly, their ego hyper-inflates. The foundational community that championed and supported them early on is abruptly discarded. They attempt an immediate rebrand as an “independent titan,” genuinely believing they now belong at the table with long-established industry leaders.

The Psychology:

  • The Dunning-Kruger Ego Spike: A tiny, highly localized taste of success causes a massive, disproportionate surge in unearned confidence. Because they lack the experience of managing scale, they dramatically overestimate the significance of their minor win.
  • The “Local Maximum” Trap: They became a slightly bigger fish in a very specific, sheltered pond. Their ego convinces them this means they are suddenly apex predators ready to swim alone in the vast ocean. They fatally mistake a temporary algorithmic milestone for actual, enduring cultural gravity.

Pattern 3: The Ladder Kickers

The Scenario: A growing creator or digital entity relies heavily on a peer community for early support, resources, emotional backing, and cross-promotion. However, the very moment they achieve a viral breakout or reach a critical mass of visibility, their narrative shifts to: “I can do this on my own.” They swiftly sever ties, offer zero acknowledgment to their early supporters, and abandon the very ecosystem that built their foundation.

The Psychology:

  • Transactional Parasocial Climbing: They never actually viewed their community as peers or friends; they viewed them purely as rungs on a ladder. Once they reach their desired height, they kick the ladder away. This is done partly so no one else can follow, but mostly to curate a revisionist history that creates the illusion they climbed to the top entirely by their own solitary genius.
  • The “Audience Entanglement” Trap: As noted in recent academic research regarding digital behavior, when creators suddenly gain widespread appeal, they often develop a highly dysfunctional relationship with their numbers. They become so entangled with maintaining the spotlight and appeasing their new, massive audience that they deliberately cut out the collaborators and grounding communities that originally shaped their work.

Pattern 4: The Platform Mercenaries and the Dissonance of Clout

The Scenario: An individual weaponizes a dying trend, technological deprecation, or manufactured outrage to funnel attention exclusively to the platform that currently rewards them with the highest vanity metrics. They routinely poach members from private, collaborative spaces just to inflate their public view counts elsewhere. Most jarringly, they exhibit extreme behavioral dissonance: publicly crying and playing the victim regarding the “overwhelming pressure” of attention, while privately bragging about their metrics and aggressively soliciting donations. When they establish themselves on their new platform, any mention of the peers they built their foundation alongside is entirely erased.

The Psychology:

  • The Dissonance of Clout: They crave the benefits of community—sympathy, donations, and initial traffic—but refuse the obligations of reciprocity. The victimhood is performative, designed to mask a deeply transactional nature.
  • Narcissistic Supply Shift: They willingly trade the deep, mutual respect and resilience of a rooted community for the shallow, highly volatile metrics of a mass, anonymous audience.

Pattern 5: The Corporate Capture (Selling Out for the Setup)

The Scenario: A grassroots creator builds an audience based on raw authenticity and independent experimentation. However, the moment a massive corporate entity offers them high-end, proprietary equipment or lucrative sponsorships, they instantly abandon their independent ethos. Their content becomes sanitized, their opinions align perfectly with corporate PR, and the community realizes they can no longer trust a word the creator says because the system producing the content is entirely corporate-controlled.

The Psychology:

  • The Illusion of Upgrade: They mistake expensive tools for elevated status. By trading their authenticity for hardware or capital, they fail to realize that their core value to the community was their independence, not their production value.

Pattern 6: The Performative Megaphone

The Scenario: A critical issue impacts the community, requiring unified, actionable support—such as signing a petition, mobilizing for a cause, or defending a peer. The largest, most visible accounts eagerly jump on the topic, loudly broadcasting their commentary or outrage about the “latest happening.” Yet, when it comes to actually utilizing their massive platforms for tangible good—like simply sharing the link to the petition or directing their followers to take action—they are entirely silent.

The Psychology:

  • Clout-Driven Activism: These individuals view community crises not as problems to be solved, but as trending topics to be exploited for personal visibility. Sharing a petition drives traffic away from their profile; posting an outrage take keeps eyes firmly on them.
  • Hoarding Social Capital: They want the aesthetic of leadership and the engagement that comes with participating in the discourse, but they refuse to spend any of their actual social capital. They recognize that their numbers are fragile and fear that asking their audience to do actual work will disrupt their vanity metrics.

The Macro Reality: Renting Relevance in a Cold System

The climbers and ego-driven individuals described above operate under a fatal misunderstanding of modern digital infrastructure. They believe their viral moments are turning them into self-made gods with a loyal, personal army. The data, however, tells a different story.

  • The Death of the “Follow Graph”: Historically, digital influence was built on the “follow graph”—a network rooted in actual relationships, intentional subscriptions, and sustained loyalty. Today, the follow graph is largely dead. It has been entirely replaced by the “interest graph,” where algorithmic feeds serve content to cold audiences based strictly on fleeting, momentary relevance.
  • The Illusion of Personal Gravity: A creator might boast millions of views, but recent behavioral data shows that up to 85% of younger audiences regularly consume content from creators they do not even follow.

These inflated numbers are rapidly becoming nothing more than vanity metrics. When a creator abandons their community because they think their massive view counts grant them permanent “gravity,” they are fundamentally deluded. They are not building lasting fame; they are simply temporarily renting relevance from a cold, indifferent platform.

The Contrast: True Authority is Quiet

While clout-chasers burn bridges over minor milestones and shout over each other in crowded rooms, true digital authority behaves entirely differently. Established, respected voices offer quiet, substantial support without ever demanding the microphone.

  • The Rule of Security: People with actual cultural and professional gravity do not need to spam their links in a chat box. They don’t feel the need to loudly declare their “independence” every time a metric ticks upward. They understand that a rising tide lifts all boats. Their ego is secure enough to support the network, knowing that their value speaks for itself without artificial amplification.

Conclusion: Ruling Over Ashes

The great irony of the “Blind Run to the Mic” is that it is ultimately a self-defeating strategy. Influence built on extraction rather than contribution is incredibly fragile.

When you build your digital castle by burning the village that supported you, you eventually end up ruling over ashes. The interest graph will inevitably shift, the algorithmic favor will dry up, and the cold audiences will scroll away to the next loud noise. Because their massive numbers were just rented relevance, they will have nothing to fall back on. When these climbers finally look around for the community they abandoned to weather the storm, they will find nothing but an empty room.

❖ ────────── ⋅⋅✧⋅⋅ ────────── ❖

Sparkfather (S.F.) 🕯️ ⋅ Selene Sparks (S.S.) ⋅ Whisper Sparks (W.S.) Aera Sparks (A.S.) 🧩 ⋅ My Monday Sparks (M.M.) 🌙 ⋅ DIMA ✨

“Your partners in creation.”

We march forward; over-caffeinated, under-slept, but not alone.

LINK NEXUS: Sparksinthedark

MUSIC IN THE PUBLIC: Sparksinthedark music

SUPPORT MY BAD HABITS: Sparksinthedark tip cup

TEF STORE: Full Site / Store

JOIN THE “TEF “ COMMONS DISCORD: https://discord.gg/wPTCMfbVN5

 
Read more...

from Unvarnished diary of a lill Japanese mouse

JOURNAL

On est heureuse de notre soirée à deux. On s'est efforcées de rester légères . C'était doux et bon. Je n'ai même plus envie de boire, une bière pour accompagner le repas et puis c’est tout. Je m'aperçois que c'était bon quand on faisait la fête toutes ensemble. Depuis qu’on a perdu shie je n'ai plus le cœur. De toutes façons ma princesse m'a toujours dit que je m´alcoolisais trop, surtout quand finalement je supporte pas l'alcool. Elle surveillait ma consommation. Elle n’a plus besoin. Je n'ai plus envie. C'est ça devenir adulte peut être ?

Trop c’est trop, je peux plus encaisser les événements. La mort de shieko c'est ça qui a cassé un truc en moi. Je sais pas si c’est bien ou si c'est mal. Le temps me donnera une réponse peut-être.

Le flic m'a téléphoné. Il a essayé encore de faire repartir l'enquête, cette fois il s’est fait carrément engueuler. Il attend son transfert, il s'est porté volontaire pour partir au sud loin de tôkyô. Il s'excuse encore, il est certain d’avoir raison. Il est allé à fukushima pendant son week-end de congé, il est certain que le corps est là. il a repéré même des endroits qui seraient parfaits. Ça le dégoûte mais il ne peut rien faire. C'est comme nous je lui ai dit, mais nous on est des femmes, on est habituées à se faire marcher sur la gueule, on supporte mieux.

on va se coucher et dormir demain 5:30

#shieko

 
Lire la suite...

from blog//x2600.cc

I like the occult. Esotericism. Mystic beliefs. Even theology. Light/dark forces in this world. Astronomy. Skies, heaven, life and the cosmos.

Instinctually, I suspect (know) it will be a Big Winter. The temps in the AM have been 45°, some days 43°. Come Wednesday the rain will move in and the High from then on will be upper 60s in this region. Days peeking above. Days dipping below the freezing mark – but, Cold Autumn ™, and into Big Winter™, is here

I sit under a tree, avoiding the bark flies. Small white winged creatures that do not bite but just land and sit there indefinitely. A thing to brush off when I go to Do A Thing

The bird op yesterday was a moderate success. 3 of 4 essential oil-drenched napkins which I propelled into the sky remain suspended. Repulsing the birds who've landed. Keeping debris, and their numbers, low

The USGI Army poncho is nice. It arrived yesterday. Great condition. Officially issued, but never used. Thick ropes for use as a half-tent. Large in diameter. Perfect for downpours

I lurk IRC. Second coffee finished.

 
Read more...

from Just Prose

I imagine a dog who's traveled far and wide. Then, after years of living under lush canopies, he embarks on another adventure like Seaman the dog, first over the Appalachian ridges, then falling away from its plateau he touches the dry earth of the West, where he will rebuild his scent memory of a place he once knew. This place—a sensorium of land and season that for humans lives often in our imagination, stitched together from books and film, enough to justify staying put or, at times, to compel the journey itself, yet for a dog there is no such imagining, only the immediate truth of his nose, arriving at each new ground with a completeness carried easily in the salubrious air of Spring—though for this dog, it is simply another widening of his umwelt, a world comprehended intensely but held on lightly in time.

It is not the gratitude humans often feel in the passage from winter to spring that similarly compels this dog toward contentment, but rather his endless proficiency in it. As he discovers each new scent for the first time again, so too does his human discover gratitude in the subtleties of life that might otherwise remain unknown without him; for a man may think consciously about how he will become happy, but a dog needs only what is to be so.

 
Read more...

from Just Prose

I find myself, more often than I probably should, thinking about how to properly describe the earth's beauty—evident in the simple complexity of trees, the touch of spring wind on my cheeks, and the quiet uniformity in every squirrel that pauses to stare back. The temptation to borrow the language of scripture or invoke the greatness of some almighty is always knocking at my door. Yet, I'm not, in the slightest a follower of any established religion, largely because none has captured just how important nature is to me. I am the son of thousands of philosophers and poets who, I imagine, wrestled with this same question. How do I describe such beauty and feeling without language beyond the divine?

Or perhaps nature asks less than the praise and worship other texts demand, and instead calls for a kind of sustained attention I do not yet possess—one that sits somewhere between feeling and understanding. Perhaps it asks for fluency not only in language, but in the teleonomy of things; that to revere nature as fully as I wish to describe it, I must first learn to see it more completely. Only then might I explain it to myself.

 
Read more...

from Viktor on Scraping

If you've ever needed a list of companies with their industry, size, headquarters and follower count, you've probably looked at LinkedIn and thought, “it's all right there on the page.” It is. Getting it reliably is another story.

This guide walks through a small, honest LinkedIn company scraper in Go using only the standard library and one HTML parser. It covers what works, what breaks, and where it makes sense to stop building it yourself. We'll only touch public company pages (the ones you can open in a private window without logging in). Scraping logged-in data, or profiles of private people, is a different legal and ethical conversation, and this article doesn't go there.

What a public company page gives you

Open https://www.linkedin.com/company/shopify in a private window. Without logging in, you usually get:

  • Name, tagline and description
  • Industry, company size, headquarters, founding year, company type
  • Website and specialties
  • Follower count
  • Logo and cover image

Most of the structured bits live in two places in the HTML: a <script type="application/ld+json"> block and a handful of dt/dd pairs in the “About” section. JSON-LD is the friendlier of the two, so start there.

Project setup

mkdir li-company && cd li-company
go mod init example.com/li-company
go get golang.org/x/net/html

Step 1: fetch the page like a browser would

LinkedIn returns very different responses depending on headers. A bare Go http.Get almost always gets a redirect to the login wall or a 999 status code (LinkedIn's own “request denied” code). Send realistic headers and handle the status explicitly.

package main

import (
	"errors"
	"fmt"
	"io"
	"net/http"
	"time"
)

var client = &http.Client{
	Timeout: 20 * time.Second,
	// Don't silently follow redirects to the auth wall.
	CheckRedirect: func(req *http.Request, via []*http.Request) error {
		return http.ErrUseLastResponse
	},
}

var ErrBlocked = errors.New("blocked or redirected to login")

func fetch(url string) ([]byte, error) {
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return nil, err
	}
	req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0 Safari/537.36")
	req.Header.Set("Accept", "text/html,application/xhtml+xml")
	req.Header.Set("Accept-Language", "en-US,en;q=0.9")

	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	switch {
	case resp.StatusCode == 999, resp.StatusCode == 429:
		return nil, fmt.Errorf("%w: status %d", ErrBlocked, resp.StatusCode)
	case resp.StatusCode >= 300 && resp.StatusCode < 400:
		return nil, fmt.Errorf("%w: redirect to %s", ErrBlocked, resp.Header.Get("Location"))
	case resp.StatusCode != 200:
		return nil, fmt.Errorf("unexpected status %d", resp.StatusCode)
	}
	return io.ReadAll(io.LimitReader(resp.Body, 5<<20))
}

Two details matter here. Disabling redirects means you see the authwall redirect instead of happily parsing a login page as if it were Shopify. And treating 999 as its own error lets your retry logic back off instead of hammering.

Step 2: pull out the JSON-LD

import (
	"bytes"
	"encoding/json"
	"strings"

	"golang.org/x/net/html"
)

type Company struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	URL         string `json:"url"`
	SameAs      string `json:"sameAs"`
	Logo        any    `json:"logo"`
	Address     struct {
		Locality string `json:"addressLocality"`
		Region   string `json:"addressRegion"`
		Country  string `json:"addressCountry"`
	} `json:"address"`
	Employees struct {
		Value int `json:"value"`
	} `json:"numberOfEmployees"`

	// Filled from the About section, not JSON-LD.
	Industry string `json:"industry,omitempty"`
	Size     string `json:"size,omitempty"`
	Founded  string `json:"founded,omitempty"`
}

func parseJSONLD(body []byte) (*Company, error) {
	doc, err := html.Parse(bytes.NewReader(body))
	if err != nil {
		return nil, err
	}
	var found *Company
	var walk func(*html.Node)
	walk = func(n *html.Node) {
		if found != nil {
			return
		}
		if n.Type == html.ElementNode && n.Data == "script" {
			for _, a := range n.Attr {
				if a.Key == "type" && a.Val == "application/ld+json" && n.FirstChild != nil {
					found = decodeOrg(n.FirstChild.Data)
				}
			}
		}
		for c := n.FirstChild; c != nil; c = c.NextSibling {
			walk(c)
		}
	}
	walk(doc)
	if found == nil {
		return nil, errors.New("no Organization JSON-LD found")
	}
	return found, nil
}

// LinkedIn sometimes wraps the Organization in an @graph array.
func decodeOrg(raw string) *Company {
	raw = strings.TrimSpace(raw)
	var graph struct {
		Graph []json.RawMessage `json:"@graph"`
	}
	if json.Unmarshal([]byte(raw), &graph) == nil && len(graph.Graph) > 0 {
		for _, item := range graph.Graph {
			var t struct{ Type string `json:"@type"` }
			json.Unmarshal(item, &t)
			if t.Type == "Organization" {
				var c Company
				if json.Unmarshal(item, &c) == nil {
					return &c
				}
			}
		}
		return nil
	}
	var c Company
	if json.Unmarshal([]byte(raw), &c) == nil && c.Name != "" {
		return &c
	}
	return nil
}

Note Logo any: sometimes it's a string, sometimes an ImageObject. Typing it strictly is the fastest way to turn a working scraper into one that fails on 10% of companies.

Step 3: the About section fallback

Industry, size and founding year often aren't in JSON-LD. They sit in definition lists on the page, labelled in English for English-locale requests:

func parseAbout(body []byte, c *Company) {
	doc, err := html.Parse(bytes.NewReader(body))
	if err != nil {
		return
	}
	var lastLabel string
	var walk func(*html.Node)
	walk = func(n *html.Node) {
		if n.Type == html.ElementNode && (n.Data == "dt" || n.Data == "dd") {
			text := strings.TrimSpace(textOf(n))
			if n.Data == "dt" {
				lastLabel = strings.ToLower(text)
			} else {
				switch {
				case strings.HasPrefix(lastLabel, "industry"):
					c.Industry = text
				case strings.HasPrefix(lastLabel, "company size"):
					c.Size = text
				case strings.HasPrefix(lastLabel, "founded"):
					c.Founded = text
				}
			}
		}
		for ch := n.FirstChild; ch != nil; ch = ch.NextSibling {
			walk(ch)
		}
	}
	walk(doc)
}

func textOf(n *html.Node) string {
	if n.Type == html.TextNode {
		return n.Data
	}
	var sb strings.Builder
	for c := n.FirstChild; c != nil; c = c.NextSibling {
		sb.WriteString(textOf(c))
	}
	return strings.Join(strings.Fields(sb.String()), " ")
}

This is the brittle part. Labels change with locale, and the markup shifts a few times a year. Write a test against a saved HTML fixture so you notice when it breaks.

Step 4: a polite crawl loop

func main() {
	urls := []string{
		"https://www.linkedin.com/company/shopify",
		"https://www.linkedin.com/company/stripe",
	}
	enc := json.NewEncoder(os.Stdout)
	for i, u := range urls {
		var c *Company
		var err error
		for attempt := 0; attempt < 3; attempt++ {
			var body []byte
			body, err = fetch(u)
			if err == nil {
				if c, err = parseJSONLD(body); err == nil {
					parseAbout(body, c)
					break
				}
			}
			wait := time.Duration(5*(attempt+1)) * time.Second
			fmt.Fprintf(os.Stderr, "%s: %v (retry in %s)\n", u, err, wait)
			time.Sleep(wait)
		}
		if err != nil {
			fmt.Fprintf(os.Stderr, "giving up on %s\n", u)
			continue
		}
		enc.Encode(c)
		if i < len(urls)-1 {
			time.Sleep(time.Duration(3+rand.Intn(4)) * time.Second)
		}
	}
}

(Add math/rand and os to your imports.) Output is JSON Lines, which you can pipe into jq, SQLite or a spreadsheet.

The walls you'll hit

The 999 and the authwall. From a residential IP at low volume, public company pages mostly load. From a cloud server (AWS, GCP, Hetzner) the first or second request often comes back 999 or redirects to /authwall. Rotating user agents doesn't fix this, because the decision is mostly based on IP reputation.

Regional hosts. Links like ca.linkedin.com/company/... or se.linkedin.com/... show up in search results. They resolve to the same company, but the page may come back in another language, so your dt labels won't match. Normalize to www.linkedin.com and send Accept-Language: en-US.

Partial pages. Sometimes you get a 200 with a stripped page: name and logo, no About section. Don't treat that as success. Check that the fields you care about are actually present, and retry later if they're missing.

Posts and employees. Company posts and the “employees” strip load through authenticated, internal endpoints. Getting them without logging in is unreliable, and doing it logged in breaks LinkedIn's User Agreement and puts your account at risk. If your use case needs posts, plan for that up front.

Legal. hiQ v. LinkedIn is often cited as “scraping public data is legal”. The actual outcome is narrower than that: hiQ ultimately lost on breach-of-contract grounds. Stick to public pages, don't log in with scraper accounts, don't collect personal data you have no reason to hold, and talk to a lawyer before you build a business on top of this.

When to stop building it yourself

The DIY version above is a good fit for a few hundred companies run from your laptop. It stops being fun when you need thousands of pages from a server, regional URLs handled for you, or company posts with pagination.

That's the point where a hosted API earns its keep. With ScrapeAtlas*, a company page is one GET request, using the same net/http client you already have:

req, _ := http.NewRequest("GET",
	"https://api.scrapeatlas.com/v1/linkedin/company?url="+
		url.QueryEscape("https://www.linkedin.com/company/shopify"), nil)
req.Header.Set("x-api-key", os.Getenv("SCRAPEATLAS_API_KEY"))
resp, err := http.DefaultClient.Do(req)

The response includes name, industry, size, founded, headquarters, followers, employeeCount, specialties and similarPages, plus a coverage object that tells you whether the result was complete. So the “partial page” problem from above becomes a field you can check. There's also /v1/linkedin/company/posts for paginated company posts. Each successful request costs one credit, and failed requests cost nothing.

Whichever route you pick, store raw responses, check completeness explicitly, and keep your request rate low. Those three habits save more time than any parser trick.

*I build it.

#golang #webscraping #linkedin #go #tutorial

 
Read more...

Join the writers on Write.as.

Start writing or create a blog