from Kevin Turby

Eliminer.

Garder ce qui fait sens.

Rester fidèle à mes valeurs.

Et même au-delà de ça, rester fidèle aux choses auxquelles je crois malgré mes peurs, mes scénarios négatifs.

Dépasser mes schémas. Ceux qui me freinent. Les comprendre d’abord, et avoir le courage de les affronter.

Un jour après l’autre.

 
Lire la suite... Discuss...

from Nomina Numina

Having answered the first and second questions, the third and last question remains: how. How do I explain the inexplicable? How do I describe the indescribable? How do I share the unsharable? This may at first glance appear to be just a superficial, craft, or logistical question, but that assumption would be far from correct. The very question about how is, in fact, the most difficult question of the three. There are several reasons for this that I believe are intrinsic to the sharing of anomalous experiences.

First is the nature of method. Selecting the method to share your anomalous experience is shaped in part by the medium itself. The medium is, after all, the message. How we deliver a message, any message, shapes and determines the form and scale of human connection, cramming the actual content of the message itself into a small conceptual corner. For example, a short simple story, when told three ways, is no longer a single story but three that once told escape the confines of the witness, the teller, and the lived experience itself.

When we speak of an experience to a single listener from the comfort of a living room or coffee shop, the account stays rather soft as it can be corrected mid-sentence, laughed away, or even denied by the speaker the next day. When we write it down, the experience then hardens into narrative and message. The ink, whether physical or digital, solidifies that which memory held fluid and amorphous. Once written, the experience becomes a non-negotiable record. And when shared publicly, either online or in print, it is completely surrendered by the author, metabolized into the body of the internet, where it becomes indexed, searchable, logged, and permanent—passed to readers the author-witness never imagined, including the indifferent and malicious ones, to be interpreted and manipulated in whatever way the receiver chooses. Meaning is, after all, subjective and meaning-making is quentessentially human. In this way, the method isn’t just a container or mode of conveyance, it is also the dice roll that decides the experience-turned-narrative’s fate.

The method may provide some degree of shelter, such as the anonymity of a pen name or the veil of fiction, which try to screen the witness from exposure and likely ridicule or censure, particularly online. But this kind of shelter isn’t free, and usually costs the author-witness a degree of credibility and immediacy, forfeiting the raw power of direct testimony. Most witnesses, I suspect, once they’ve decided to share their anomalous experience, never consciously think through these costs and the chain of consequences resulting from them.

There is also the matter of closure. A journal, for example, is to some degree always unfinished as it is an ongoing record that follows the witness until their passing and never quite completes their integration. A published book, however, demands an ending that the experience likely never provided. Thus, choosing the method is also choosing which truth is told and the degree of completeness that truth embodies. It presents a paradox where the story goes on through the author-witness even as it has ended with publication. And neither is ever totally true.

Second is the nature of narrative. Selecting the narrative model is really a choice of form which, in turn, helps decide what claims the narrative makes about itself. Point of view, for example, shapes whether the narrative says “this happened to me” versus “this happened to someone else” versus “I’m just sharing what I heard.” None of these are correct or incorrect, but each has different weights and impacts on the receiver that the author-witness may or may not be aware of. This goes beyond simply stylistic choices since each one hides an epistemology without the author-witness’s knowledge or consent. So no matter the choice of POV, fact or fiction, diary or drama, the lived experience is always left incomplete and inexact in its telling.

One of the main reasons the question of how is the hardest of the three is that narrative models force the author-witness to commit to a particular truth among several possible truths that are each and all not wholly true. For example, first-person non-fiction must make a declaration of what the events actually were insofar as the author-witness understands them at the time of telling. Fiction lacks this obligation by holding the uncanny experience as both psychological and spiritual without collapsing one into the other. It can, I hope, honor the possibility that the truth is enigmatic and elusive beyond the witness, and perhaps even to the witness himself. Whether the witness is diarist, memoirist, or novelist, he is trapped in the reality of having to choose how to tell his lived experience knowing that his way of telling is itself an ontology inherent to the method. Three different narratives then become three different ontologies from the very same experience — a dynamic, I feel, that is far stranger than the anomalous experience itself.

Finally comes the cumulative domino effect. Having already answered questions one and two doesn’t mean that there aren’t impacts on the way one shares their experience. In fact, the way one answers questions one and two, and the underlying motivations behind them, have a direct impact on the way one will share their experience, and leave an indelible mark on the final output one shares. This is in many ways unavoidable and, in turn, can be viewed as a feature, a flaw, or both of the decision to share the anomalous experience fully or in part.

Though I’ve presented the three questions in a sequence, the reality is that all three are interconnected, creating a loop where any change to one has a domino effect on the others, and, as a result, the final output. The sequence is subjective and once undertaken becomes unimportant.

Because of this, I find myself frequently getting lost in the labyrinth of my responses to each of these questions and the dynamic it creates among them. And I’ll admit that I’m continually struggling with my responses. I recently answered questions one and two completely, only to get mired in question three, falling deep into a rabbit hole I still can find no way out of.

And I’m certain that the more complex one’s anomalous experience, the more difficult each of these questions becomes. But for those who have integrated their experiences, even somewhat, they’ve come to realize in their own individual way that none of this is simple or straightforward, and I would doubt the testimony of anyone who presents their story as such. Not because the narrative of their experience isn’t simple, it may very well be, but any contact with the anomalous is far from simple both in terms of its substance and its effects on the witness, both short and long term.

I’m uncertain how long I’ll remain lost in the labyrinth of my own reasoning, but I hope that there is an end soon. The cognitive overhead is already overwhelming, only making the challenges of living between worlds all the more difficult.

But I also know that buried deep inside these coveats and cautions are my deepest self-doubts and fears of failing to manifest my own experiences in a world that might likely mock and reject them. I guess that is why there is courage, though I do not know how I shall find it.

#Intermundia #Excultio


By D. Bowman | Nomina Numina is a journal of my reflections, moments, and meaning-making between worlds. Reply by email.

 
Read more... Discuss...

from AnOublietteofThought

My throat has been kicking my ass since Friday night, I think. It's all a little unclear. I'm pretty sure it was Friday. All of the things capable of pushing me to the edge have combined together to make me utterly miserable. I'm good until I feel like I can't breathe, then the test of my mental strength begins. I am not enjoying it.

While watching a movie as distraction last night, political ads kept popping on. I wasn't surprised by the brutality nor the lying. What did surprise me was the network airing the nonsense. I don't care what someone's beliefs are as long as they're not harming anyone, but I do care about decency. I'd also like the people in charge to have at least half a brain cell that still works or ever worked to begin with.

OK, brutal honesty here — I think everyone who tries to hold a political office should have to pass a challenging test that covers more than the basic requirements of their job. I don't care if that means Billy, Peg, and Sue aren't qualified. They can educate themselves on the topics if they wish to be qualified. Furthermore, they need to demonstrate the ability to be able to separate church and state in their mind. I do not think billionaires should be allowed to hold such positions because they do not live in the same reality as everyone else. Nor do millionaires for that matter. What would be the cut off? Maybe around $10 million. Senators and Congressmen could hold two terms max on rotation. Don't get me started on Supreme Court appointments. Most on it now wouldn't qualify under how very strict my policy on that particular branch of service would be.

There wouldn't be known donors. You want to donate to the cause? Great! It's anonymous and all goes to the same place...to help your fellow citizens. How incredibly disgusting is it the amount of money being spent on ads and campaigning that equals the idiocy of an elementary school bully.

I'm really just over the adults with so much power behaving like absolute and complete imbeciles. In fact, keeping this totally real, if you can support MAGA anything after listening to the hateful bullshit coming from the horse's mouth, it is impossible for me to have any respect for you because condoning the most hideous and disrespectful of actions out there. It's as simple as that. At first, I gave leniency because most people are uneducated and ignorant on the various topics of government. At this point, if someone's still supporting all of that, they have some serious mental health and hatefulness issues as far as I'm concerned. And if someone dares to tell me they support it because they're Christian, I will laugh in their face. Sure you are. Sure you are. Rocking that old testament hate and bigotry, are you? Who am I kidding? MAGA looks very much like the Christian world I've known. It's nice to see the true colors flying. (There's exceptions to this, though few and far between. They do shinewhen seen.)

Those commercials really annoyed me. I muted them each time, but it's not the point.

I am trying to motivate myself to be busy today. It's challenging at the moment. I should go take a cold shower. That would pep me right up. I had high hopes my allergies weren't going to ride me too hard this season. The season has barely started and I've already cut and blunted my nails. That's ok. At least it's a familiar fight. Time to go make some bone broth.

© 2026 AnOublietteofThought. All rights reserved.

Not proofread nor edited.

 
Read more...

from Roscoe's Quick Notes

RBN Checkmate

Rook, Bishop, Knight Combination Checkmate

One of the Correspondence Chess games I won playing as Black over this past weekend finished with my h3 Rook, f4 Knight, and b6 Bishop combining forces to Checkmate the White King. Position of pieces at game's end is shown above, and our full move record follows: 1. d4 h6 2. e4 a6 3. b4 e5 4. c3 Nf6 5. Nf3 Nc6 6. h4 exd4 7. cxd4 Bxb4+ 8. Nfd2 Nxe4 9. f3 Ng3 10. Rh3 Nf5 11. a3 Ba5 12. Bb2 O-O 13. g4 Nd6 14. d5 Re8+ 15. Kf2 Bb6+ 16. Kg3 Ne5 17. f4 Ng6 18. h5 Re3+ 19. Kf2 Rxh3+ 20. Kg2 Nxf4#

And the adventure continues.

 
Read more...

from The happy place

There is a powerful image in the shape of: maimed dove feet in Paris, due to the hostility infrastructure towards birds, so that people below won’t get shat on! It’s the same faceless evil as these benches made unable to sleep on, to ward of poor people.

And the thing with doves, is that they carry the message of, and are the symbols of peace!

I know that is no coincidence, having experienced this first-hand

In Gamla Stan, I was having an argument with my wife. I’m sure I was being an ass.

Before the situation could escalate, I was shat on the head by a dove however, and the argument was brought to an abrupt stop.

This would never have happened in Paris.

 
Read more... Discuss...

from Nothing Is Unstable

In the discussions over whether the chatbot is “intelligent” or “super intelligent” or “artificially intelligent” (No.), let's not overlook the actual conclusion: “Intelligence” has always been a mostly useless concept, since it is so poorly defined and overwhelmingly a social construct of white supremacy. We should have gotten rid of it long ago, and everyone using “intelligence” as a concept should be viewed with suspicion.

 
Read more... Discuss...

from Taking Thoughts Captive

It is an interesting speculation by what means the Book lost its old position in this country. This is not only an interesting speculation, but one which nearly concerns a vital matter. For if men fall into the habit of neglecting true books in an old and traditional civilization, the inaccuracy of their judgments and the illusions to which they will be subject, must increase.

To take but one example: history. The less the true historical book is read and the more men depend upon ephemeral statement, the more will legend crystallize, the harder will it be to destroy in the general mind some comforting lie, and the great object-lesson of politics (which is an accurate knowledge of how men have acted in the past) will become at last unknown.

— Hilaire Belloc, “On the Decline of the Book”

#history #reading

 
Read more...

from Lohtulauluja

Arvoisa Kirjailijaliiton hallitus,

Yksi suhteellisen tuoreen kirjailijanurani huojentavimmista ja onnellisimmista hetkistä oli se, jolloin sain postilaatikkooni Kirjailijaliiton hyväksymiskirjeen. Se tuntui viralliselta leimalta passiin, jolla alan ovet oikeasti aukenivat: nyt minä olin ammattimainen kirjailija. Sain päätöksen alkukesästä 2025, kolmen julkaistun kirjan jälkeen.

Hain itse liittoon kahdella korkeafantasiateoksella ja yhdellä viihdekirjalla. Kävin toimittamassa kirjat henkilökohtaisesti ja sain ovella kuulla ystävälliseen sävyyn, että hakemustani oltiin jo odoteltu. Se ilahdutti, ja koin tulleeni kohdatuksi, vaikka missään nimessä mitään takeita siitä ei annettu, tultaisiinko hakemusta hyväksymään. Hakeminen itsessään otettiin kuitenkin ilolla vastaan, ja niinpä odottelin päätöstä levollisin mielin. Vähän kuukautta myöhemmin se tulikin postissa tiedoksi, ja koska olin kuullut huhuja liittoon pääsemisen vaikeudesta, nosti tieto kyyneleet silmiin: minäkin olin oikea kirjailija.

Sittemmin mielikuvani on valitettavasti muuttunut, sillä kun kriteerit ovat salaiset, olen joutunut hämmentyneenä seuraamaan useaan otteeseen, kuinka lahjakkaat ja minua rutkasti pidempään alalla olleet kollegat ovat jääneet ulkopuolelle. Yksi heistä on esimerkiksi asiasta julkisesti puhunut Pontus Purokuru, jonka Haavamaa ja Keskeytysten arkisto ovat kumpikin kaunokirjallisina teoksina inspiroineet omaa kirjoittamistani suuresti.

Toinen kollegani puolestaan opettaa työkseen kirjoittamista yliopistossa ja on kirjoittanut jo useamman erinomaisen lasten- ja nuortenkirjan, mutta hänellekään ovet eivät ole auenneet.

Tästä aiheesta on vaikea puhua julkisesti, sillä kukapa meistä tahtoisi kirjailijana polttaa siltoja järjestöön, joka pitää puoliamme, on arvostettu toimija, ja väsymättä nostaa yhä uudelleen ja uudelleen esiin kirjailijan työhön liittyviä haasteita, jotta ne eivät pääse päättäjiltä ja lukijoilta unohtumaan? Kuka tällä alalla tahtoisi tai uskaltaisi olla hankala, kun apurahoista, kustannussopimuksista ja työkeikoista pitää muutenkin kilpailla kollegoiden kanssa? Kenellä meistä on siihen varaa?

Ei minulla ainakaan, sillä olen vasta urani alussa, ja kirjoitan fantasiaa ja viihdettä, joita ei kirjallisuusalalla Suomessa perinteisesti usein pidetä korkeakirjallisuutena. Kirjoitan pienehkölle kustantamolle (joka tosin on ihana, enkä sitä hevillä vaihtaisi), eivätkä kirjallisesta työstäni saamani tulot riitä elämiseen, joten teen kirjallista työtä päivätyön ohessa. Vaikka olen siinä mielessä onnekkaassa asemassa, että minulla on paljon sitoutuneita lukijoita, hyvät verkostot ja paljon pieniä keikkatöitä, onpa jopa ensimmäinen puolivuotinen apurahakin, kirjoittamisella en mitenkään tule (vielä) toimeen.

Tarvitsen siis ehdottomasti Kirjailijaliittoa, aivan kuten tarvitsee kirjallisuuskenttä ylipäätään. Koen silti, että ei ole oikeudenmukaista, että jollakin myyttisellä tavalla olen onnistunut luikertelemaan sen sisään, vaikka samaan aikaan kokeneemmat ja vähintäänkin yhtä pätevät kollegat ovat jääneet ulkopuolelle. Ajattelen, että arviointiperusteissa tarvitaan lisää läpinäkyvyyttä, jotta liiton toiminta on aidosti oikeudenmukaista.

Yksi taiteen tärkeimmistä tehtävistä on rohkaista ihmisiä ajattelemaan ja keskustelemaan. Sen tehtävänä on herättää kysymyksiä ja kyseenalaistaa. Kirjailijaliiton jäsenarviointikriteerien sen sijaan ei kuitenkaan pitäisi tuntua mystisiltä tai monitulkintaisilta, vaan sääntöjen pitäisi olla selkeät, yhdenmukaiset ja reilut – ja samat kaikille.

Suhtaudun Kirjailijaliiton toimintaan mitä suurimmalla arvostuksella ja kunnioituksella, mutta haluan olla jatkossakin ylpeä jäsenyydestäni, ja jotta niin voi olla, jonkin on muututtava. Haluan kuulua sellaiseen liittoon, jossa koen jäsenyyteni olevan aidosti ansaittua – ja niin en voi kokea, mikäli vaikuttaa siltä, että minua aiemmin alalle tulleet, aivan yhtä pätevät kollegat eivät pääse ovista sisään.

Kunnioittavin terveisin,

Vehka Kurjenmiekka kirjailija

 
Read more... Discuss...

from The Essayist's Notebook

The essayist's task is not merely to notice what is broken or uncertain. It is also to recognise those rare moments when the world quietly discloses that things are, for now, enough.

 
Read more...

from Unvarnished diary of a lill Japanese mouse

JOURNAL 26 octobre 2026

Pas d'alerte pour le moment. On a bien dormi quand même. La pluie n'a pas cessé de la nuit et ça continue.

On a un gentil message de T chan. Elle est contente de sa rentrée au collège, elle s'est fait des amies. deux sœurs qui habitent à côté elles vont au collège ensemble Les garçons sont gentils mais elle se méfie d'eux “maintenant qu’elle sait ce qu'ils ont dans la tête” Elle envoie plein de cœurs “à toutes ses grandes sœurs”. C’est très touchant.

J'ai commencé à écrire mon dernier message que je n'aurai qu’à restaurer pour l'envoyer rapidement quand on échangera nos téléphones au moment du départ. C’est pratique . On est un peu désœuvrées, forcément. En attendant le début de la pièce, on évite de trop penser, ça sert à rien. On verra bien.

Toujours pas d'alerte. On tourne un peu en rond. On n’ose pas commencer un truc de peur de devoir interrompre. Dans une action le plus dur c'est l'attente du début. Yoko izumi midori et hayame vont venir dîner. Comme on fait maintenant chacune apporte un truc c’est très amusant. Si on doit partir on leur laisse les clefs. D'ailleurs il n’y en a pas.

Les filles sont parties ça ressemblait à une soirée d'adieu. Dommage que Asu et ka chan pouvaient pas venir. On les a eues avec le téléphone. Toujours pas d'alerte on va se coucher ici il est 22 : on fait des calculs si on part cette nuit ça pourra pas être de narita, il y a pas de vols de nuit à partir de 0:00 donc ça serait haneda c’est 1:½ d'ici ça me laissera largement le temps de vous dire à bientôt. De toute façon j’ai déjà écrit mon message final j'ai qu'à le restaurer et l'envoyer. Vous aurez une relation jusque-là. C’est pas du beau travail ça mesdames messieurs ?

#Ukraine #Tchan

 
Lire la suite...

from Lastige Gevallen in de Rede

Het Werpro666

Welkom studenten van de VVA academie voor universele handelingen overal op ons grondgebied. Vandaag bestuderen we het werkpro666 van alle bedrijven overal op aard bezig met winnen van alles overal uit. Waar begint het en waarom houdt het nooit een keer op, nou dat eerste is een stuk eenvoudiger dan het laatste.

Het begint met de wil, het maken er van, het tonen er van, het laten zien, horen, voelen, ruiken en proeven van de wil, bijvoorbeeld de vrije. Hier heb je niks en dan is het er in eens, het is daar voor je, een totaal compleet product. Zo zit je te zitten met je zelf in je lijf en zo zie je iemand iets doen, laten met iets erbij, krijg je te horen dat je dit ook kan doen, mag en dan wil je het ook nog. Net zo, bijna automatisch maar toch net wat anders, automatisch mogelijk met promotie, de wil achter de wil.

Op deze manier leer je dingen te willen, ik noem een aantal dingen op die je zou moeten willen volgens de pro-motoren, je wil geld, auto, mobiele smartphone, een data centrale, wapens (en dus munitie), invloed hebben op anderen, een verzekering, spaarrekening, gezondheid, boek met hardcover, een applicatie op je telefoon, fiets met 70 versnellingen, een fatbike op dieet, inzet, een archief, tempel, en nog veel meer dat er nu is, een succesvol gebied, gevuld met dat eens op een zekere moment in je setje werd gepromoot, datgeen om te willen, moeten, doen, hebben en dergelijke. Het is er, het is ontstaan vanuit dat ene. De oerbron van het willen, de controle over een anders hebben en houden, angst voor de ander controleren met middelen, iemand in de gaten kunnen houden, binnen de perken, met bepalen, het vrezen voor verlies, kwijting, de alom door afwezigheid en monumentale herhaling aanwezige dood, iets missen tijdens je lange leven rondom draaien om de zondagen, alles wat er al was en wat er daardoor weer bij kwam en wat er vervolgens bij komt vanuit het setje in het andere setje via de setting. Het eeuwige, altijd leven in aanpassing van die eerder aanwezige zaken, sneller, hoger, dieper, langer, verder en dergelijke woorden nodig om de verandering van hetzelfde te accepeteren als beter of beter nog nodig te betitelen en dat geloven, loven van de behouden vaartjes in vaatjes en vatjes.

Goed, het is er, we hebben het al, dus moeten we verdienen aan de veranderingen, dat verdienen, belonen, reguleren met middelen via een inkomend bericht, is zo'n eerder met succes gepromoveerd handels model. Je mag zonder niet zomaar ergens leven, ademen, eten, drinken, dan laten andere mensen als straf verhongeren, langs vuilnisbakken eten, dat vinden ze heel goed, hun verdiende loon naar niet verdienen aan hetzelfde middel dat zij dag in dag uit dienen, slaven en verslaafden van het inkomen, handelingen gelinkt aan salaris, uitkering, de gunst geleverd door te doen zoals je gezegd is, opgedragen, de vakken vervuld. Zeker wel, vast ook. Dus dan bouw je dingen voor anderen niet uit vrije wil maar omdat je anders geen wc en bijbehorend papier kunt aanschaffen zodat je met een schone bips verder gaat met wonen in je vaste goed. Dat is dan ook weer nodig zodat jij je eten kan aanschaffen op een plek waar andere mensen de kost ook al verdienen en daarmee die kost niet alleen verdienen ook weer aanschaffen met dat zelfde middel waarom ze daar gaan zitten hun tijd en leven verdoen rondom in plastic gewikkeld spul, dat ons eten, mensen voer, moet voorstellen en waarvoor weer andere mensen hun leven besteden ter fabricage van de waarheden in grote en kleine fabrieken aan lopende banden allen gelinkt aan de stroom opgewekt uit de oudheid, aangepast natuurlijk, stroom der verandering, zonder verandering, doet produceren en houdt het daad bewerkelijk gaande. De wil aan het werk, het grote aardse humane, persoonsgebonden, geknecht, de doe/laat zoals is opgedragen door herhalen van de zin pro666.

Goed, je hebt het, het is er, de realiteit is succesvol aangepast. Stap 1 van het werkpro666 stap 2, je laat het aan anderen zien, Kijk ik heb iets en ik doe dit er mee, nu kan ik twee keer zo snel van a naar b, later c, maar dan hardloop ik op deze zaak te snel te ver vooruit, Eureka, ik heb het object voor sneller gaan en kijk mij eens rap voortbewegen, veel sneller dan jullie onder alles kruipen, maar weet je, ik gun jullie ook wel wat als jullie dan in ruil voor dit gedoe levenslang voor mij zorgen, me voeding geven, liefde, een lapje grond en dan nog een lap, en nog eentje, lap erop, en jullie gemeenschap in ruil voor dit schitterende voertuig. Ergens op een zeker soort dag is dit dan een succes, de anderen schaffen in ruil voor heel veel meer dit unieke speed object aan om dan twee keer zo snel van a naar b te gaan, ze beginnen te wennen aan de versnellingen, gaan twee keer zo snel naar posities elders, c, d, e, stap drie is dan de vermenigvuldiging van de eerste handeling, de mobiele eenheid vloeit in verhoogde vaart naar die posities elders, de mogelijk gelovige erin gemeenschappen, en doen daar wat hun eerder is aangedaan, dat ze met effect is aangeleerd, leren is herhalen en herhalen en herhalen tot je een ton weegt..

Goed, drie stappen, 6.1, het object 'wil', 6.2 'het object wil' aan de andere brengen, 6.3 de ander herhaald dit, feitelijk is dat je van het, dit is de totale cultuur in de notendop terug in je blikveld. Daarmee kan ik jullie met opgelucht hart een poosje verlaten met de intentie om later terug te keren op dit broeinest, het beste educatie, informatie orkestratie en complete deformatie oorblog Van Voorbijgaande Aard 'Lastige gevallen in de Rede' echt een plek waar je voor de duivel niet bang hoeft te zijn net alsook zijn tegenpool vrezen, de upgrade en de downgrade, in wil_lekeurige volgorde gepresenteerd in het blikjes veld vol kleine en grote pupillen.

Daag huis, tuin en opbergschuur bewoners, daaaag. Tot de volgende macabere demon_stratie.

 
Lees verder...

from The Kintners Music

Boots on the Ground is a cool protest band

About a year ago, Keri and I went down to Houston to record protest music at the studio of bkbirge. We made two songs and ate great food. We will do it again. I wanted to reflect a bit on those two songs. I just listened to them again and I still love them. So I thought, being an election cycle, it would be fun to bellow some interest in them if I could. I am still proud of them. They still hit, for me.

Chosen by Boots on the Ground

This is an ICE protest. The three of us are different characters. We all wrote our own parts for this project. So we each wrote our own characters here. The video highlights the words of each character in a different color. I think it came out effective. Let me know what you think. Also, fuck ICE.

Pill Party by Boots on the Ground

A friend called this tune a “sad fiesta.” This song is truly a soundtrack for end times. What do you do? Party? To me, this song is validating. If you don’t think anything is wrong, perhaps you should be the one on medication.

Doc is having a sale!

I love both of these tunes a lot, still. I love working with the doc. (I call bkbirge “the doc” because I watched “Back to the Future” too much.) I’d like to tell you the doc has a great collection of gear for his studio. He is selling some off at the moment. I am shopping, and a couple of friends are shopping. You are welcome to join us here on Reverb. 

Here is the Boots on the Ground Bandcamp

I hope you get a chance to hear these tunes. We recorded all analog, had fun together, made some points, and got some of the poison out. I think the lead on “Chosen” still vibes hard with me. I think the mood on “Pill Party” is perfect for right now. I think these songs have relevance still. They are still my mood. 

Kelly Kintner

The Horses Mouth

Djembe Funk

The Kintners

 
Read more... Discuss...

from Viktor on Scraping

If you run a developer community, sponsor events, or just want to know which Python, AI, or data meetups in your city are actually growing, Meetup is the obvious source. The catch is that Meetup closed its free public API to most people years ago. Today the practical options are a paid Pro account with GraphQL access, or reading the same data the website already sends to every logged-out visitor.

This guide takes the second route. We build a small Python Meetup scraper that:

  1. Searches events by keyword and city
  2. Reads a group's member count, rating, and past events
  3. Saves RSVP counts to SQLite on every run
  4. Shows which upcoming events are filling up fastest

Everything here works without logging in, and that's where it stops. Member lists, attendee names, and private groups need an account, and they're off limits for this kind of tool anyway.

A quick note on manners: stick to public pages, keep the request rate low, cache what you fetch, and don't collect personal data about attendees. Meetup's terms apply to you, not to me.

Where the data actually lives

Meetup's website is a Next.js app. Every server-rendered page ships a <script id="__NEXT_DATA__"> tag, and inside it sits __APOLLO_STATE__: the Apollo GraphQL client cache the page was rendered from. That means you don't parse HTML at all. You get the same normalized objects the frontend uses:

  • ROOT_QUERY holds the query results, keyed by the query and its variables, for example eventSearch:{...} or groupByUrlname:{...}
  • Event:317054890, Group:14064142, Venue:..., and Member:... hold the actual records
  • Records point to each other with {"__ref": "Group:14064142"} instead of nesting

Event pages also carry schema.org Event JSON-LD, which is handy for name, start and end time, and status. But the JSON-LD has no RSVP counts and a truncated description, so the Apollo cache is the better source.

Three URLs cover most needs:

  • Search: https://www.meetup.com/find/?keywords=python&location=gb--london&source=EVENTS
  • Group upcoming events: https://www.meetup.com/<urlname>/events/
  • Group past events: https://www.meetup.com/<urlname>/events/?type=past

The location value is a slug like gb--london or us--ny--new-york. Open the search page in a browser, pick a city, and copy it from the address bar.

Setup

You only need requests:

pip install requests

Fetching a page and unpacking the Apollo cache

import json
import random
import re
import sqlite3
import sys
import time
from datetime import datetime, timezone

import requests

HEADERS = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/130.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
}
NEXT_DATA = re.compile(
    r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>', re.S)

session = requests.Session()
session.headers.update(HEADERS)


def get(url, params=None, tries=4):
    for attempt in range(tries):
        res = session.get(url, params=params, timeout=30)
        if res.status_code == 200:
            return res.text
        if res.status_code in (429, 500, 502, 503, 504):
            time.sleep(2 ** attempt + random.random())
            continue
        res.raise_for_status()
    raise RuntimeError(f"gave up on {url} after {tries} tries")


def apollo_state(html):
    m = NEXT_DATA.search(html)
    if not m:
        raise ValueError("no __NEXT_DATA__ on page (blocked, or layout changed)")
    data = json.loads(m.group(1))
    state = data["props"]["pageProps"].get("__APOLLO_STATE__")
    if not state:
        raise ValueError("page has no Apollo cache")
    return state


def deref(state, value):
    """Follow {"__ref": "Group:123"} pointers into the cache."""
    if isinstance(value, dict) and "__ref" in value:
        return state.get(value["__ref"], {})
    return value or {}


def root_field(state, prefix):
    for key, value in state["ROOT_QUERY"].items():
        if key.startswith(prefix):
            return value
    return None

The deref() helper is the important part. Without it you end up with half your fields as {"__ref": ...} dicts and you'll wonder where the group name went.

root_field() matches keys by prefix because the full key includes the variables Meetup used, including a timestamp and a guessed lat/lon. That key changes on every request, so never hard-code it.

Searching events

def search_events(keywords, location):
    html = get("https://www.meetup.com/find/",
               {"keywords": keywords, "location": location, "source": "EVENTS"})
    state = apollo_state(html)
    conn = root_field(state, "eventSearch")
    if conn is None:
        return [], None
    rows = []
    for edge in conn["edges"]:
        ev = deref(state, edge["node"])
        group = deref(state, ev.get("group"))
        rows.append({
            "event_id": ev["id"],
            "title": ev.get("title"),
            "starts_at": ev.get("dateTime"),
            "type": ev.get("eventType"),
            "url": ev.get("eventUrl"),
            "going": (ev.get("rsvps") or {}).get("totalCount"),
            "max_tickets": ev.get("maxTickets"),
            "group": group.get("urlname"),
            "group_rating": ((group.get("stats") or {}).get("eventRatings") or {}).get("average"),
        })
    return rows, conn.get("totalCount")

When I ran this for python in London it returned 14 events, led by a PyData London meetup with 201 people going. It also returned a badminton session and a social media event. Search is ranked by relevance across titles, descriptions, and group topics, and it's loose. If you're building a list of tech events, filter on title or group name afterward instead of trusting the keyword.

Two other things to know:

  • Only the first page is server-rendered. The cache includes pageInfo.hasNextPage and an endCursor, but loading page two happens in the browser through Meetup's internal GraphQL endpoint. You can replay those calls, but it's undocumented and changes without warning. For a weekly “what's on in my city” check, page one, sorted by date, is often enough.
  • dateTime formats vary. Search results come back in UTC with a Z, while group pages use the group's local offset, like +01:00. Parse with datetime.fromisoformat() and compare as aware datetimes.

Group stats and past events

def group_summary(urlname, past=False):
    url = f"https://www.meetup.com/{urlname}/events/"
    html = get(url, {"type": "past"} if past else None)
    state = apollo_state(html)
    group = next(v for k, v in state.items()
                 if k.startswith("Group:") and v.get("urlname") == urlname)
    stats = group.get("stats") or {}
    events = []
    for key, ev in state.items():
        if not key.startswith("Event:"):
            continue
        going = (ev.get("going") or {}).get("totalCount")
        events.append({
            "event_id": ev["id"],
            "title": ev.get("title"),
            "starts_at": ev.get("dateTime"),
            "status": ev.get("status"),
            "going": going,
            "max_tickets": ev.get("maxTickets"),
            "url": ev.get("eventUrl"),
        })
    return {
        "urlname": urlname,
        "name": group.get("name"),
        "city": group.get("city"),
        "members": (stats.get("memberCounts") or {}).get("all"),
        "rating": (stats.get("eventRatings") or {}).get("average"),
        "ratings": (stats.get("eventRatings") or {}).get("total"),
    }, events

For PyData London this returns 16,599 members, a 4.74 average rating from 2,750 ratings, and 10 past events on the first page, each with a going count. Note the field name changes: on the search page the RSVP total is under rsvps.totalCount, on group pages it's going.totalCount. Same number, different query, different cache shape. Expect this kind of thing anywhere you read a frontend cache.

Past events are the most useful part for analysis. Turnout compared with maxTickets across the last year tells you more about a community's health than the member count, which only ever goes up.

Tracking RSVPs over time

A single snapshot says little. Running the search daily and storing counts shows which events are filling up:

SCHEMA = """
CREATE TABLE IF NOT EXISTS rsvp_snapshots (
    event_id   TEXT NOT NULL,
    seen_at    TEXT NOT NULL,
    title      TEXT,
    starts_at  TEXT,
    going      INTEGER,
    max_tickets INTEGER,
    PRIMARY KEY (event_id, seen_at)
);
"""


def save(db, rows):
    now = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M")
    db.executemany(
        "INSERT OR IGNORE INTO rsvp_snapshots VALUES (?,?,?,?,?,?)",
        [(r["event_id"], now, r["title"], r["starts_at"], r["going"], r["max_tickets"])
         for r in rows])
    db.commit()


def movers(db):
    return db.execute("""
        SELECT title, MIN(going), MAX(going), MAX(going) - MIN(going) AS delta,
               MAX(max_tickets)
        FROM rsvp_snapshots
        GROUP BY event_id
        HAVING COUNT(*) > 1
        ORDER BY delta DESC
        LIMIT 10
    """).fetchall()

The primary key on (event_id, seen_at) with minute precision makes reruns harmless. Run it from cron once or twice a day. Meetup RSVP counts don't change fast enough to justify more, and fewer requests keep you well clear of rate limits.

Putting it together

if __name__ == "__main__":
    keywords = sys.argv[1] if len(sys.argv) > 1 else "python"
    location = sys.argv[2] if len(sys.argv) > 2 else "gb--london"
    rows, total = search_events(keywords, location)
    print(f"{len(rows)} of {total} events on page 1")
    for r in rows[:5]:
        print(f'{r["starts_at"]}  {r["going"]:>4} going  {r["title"]}')
    db = sqlite3.connect("meetup.db")
    db.executescript(SCHEMA)
    save(db, rows)
    for title, first, last, delta, cap in movers(db):
        print(f"+{delta:<4} {first} -> {last} (cap {cap})  {title}")
    if rows:
        info, past = group_summary(rows[0]["group"], past=True)
        print(info)
        print(len(past), "past events on the first page")
python meetup_scraper.py python gb--london
python meetup_scraper.py "machine learning" us--ny--new-york

Pitfalls I hit

  • No __NEXT_DATA__ means you were blocked, not that the layout changed. Meetup sits behind a bot filter. A plain browser User-Agent and a slow request rate work for small jobs. Hammer it and you'll get challenge pages, so back off instead of retrying in a loop.
  • Query keys contain timestamps. Match by prefix, as above.
  • Field names differ between pages for the same concept (rsvps against going).
  • Group status: PAID means the organizer pays for the group. It doesn't mean the events cost money. Check feeSettings on the event for that.
  • Online events have eventType: ONLINE and a placeholder venue. Filter them out before plotting anything on a map.
  • Cancelled events stay in past listings with status: CANCELLED. Exclude them, or your turnout averages will dip for no real reason.

When the DIY version stops being enough

For one city and a handful of groups, this script is fine. It gets tedious when you need many cities, deeper pagination, or member profiles, because then you're maintaining a GraphQL replay client against an API that was never meant for you.

At that point I'd use a hosted API. I use ScrapeAtlas* for this. GET /v1/meetup/search takes query and location plus optional category_id, distance, start_date/end_date, event_type (online or inPerson), sort, and a cursor for the next page:

import os
import requests

def api_search(query, location, cursor=None):
    params = {"query": query, "location": location, "sort": "DATETIME"}
    if cursor:
        params["cursor"] = cursor
    res = requests.get(
        "https://api.scrapeatlas.com/v1/meetup/search",
        params=params,
        headers={"x-api-key": os.environ["SCRAPEATLAS_API_KEY"]},
        timeout=60,
    )
    res.raise_for_status()
    data = res.json()
    # data["status"] is "success" or "partial"; data["coverage"]["warnings"] explains gaps
    return data.get("events", []), data.get("nextCursor")

There are also /v1/meetup/locations to turn a city name into a location slug, /v1/meetup/categories, /v1/meetup/search/groups, /v1/meetup/group, /v1/meetup/group/events (with status=upcoming or past and a cursor), and /v1/meetup/event.

Wrapping up

  • Skip the HTML. Meetup pages carry their full Apollo cache in __NEXT_DATA__.
  • Follow __ref pointers and match ROOT_QUERY keys by prefix.
  • Search is loose. Filter results yourself.
  • Only page one is server-rendered. Deeper pages mean replaying internal GraphQL calls.
  • Snapshot RSVPs over time. Change over time is where the useful signal is.

If you find a field I missed, or Meetup moves something, leave a note and I'll update the script.


*I build it.

 
Read more...

from EpicMind

Illustration eines antiken Philosophen in Toga, der erschöpft an einem modernen Büroarbeitsplatz vor einem Computer sitzt, umgeben von leeren Bürostühlen und urbaner Architektur.

Freundinnen & Freunde der Weisheit! Wer regelmässig kulturelle Aktivitäten in den Alltag integriert, tut offenbar nicht nur etwas für die Stimmung, sondern möglicherweise auch für die langfristige Gesundheit.

Neue Forschung deutet darauf hin, dass Menschen, die häufig Musik hören, tanzen, malen, Museen besuchen oder kreativ tätig sind, biologisch langsamer altern könnten als Personen ohne solche Aktivitäten.

Besonders interessant ist dabei, dass nicht nur aktives Kunstschaffen positive Effekte zeigt. Auch der regelmässige Besuch von Konzerten, Ausstellungen, historischen Orten oder kulturellen Veranstaltungen scheint mit besserer körperlicher und mentaler Gesundheit zusammenzuhängen. Forschende vermuten, dass dabei verschiedene Faktoren zusammenspielen: geistige Aktivierung, emotionale Anregung, soziale Kontakte und teilweise auch körperliche Bewegung.

Auffällig war zudem, dass die Vielfalt der Aktivitäten offenbar eine Rolle spielt. Menschen, die unterschiedliche kulturelle Interessen pflegen, schnitten besonders gut ab. Jede Aktivität scheint dabei andere Bereiche des Gehirns und des emotionalen Erlebens anzusprechen. Musik kann etwa emotionale und neurologische Prozesse stimulieren, während kreative Tätigkeiten Konzentration, Feinmotorik und Selbstwirksamkeit fördern.

Die Ergebnisse passen zu einer breiteren Entwicklung in der Gesundheitsforschung: Wohlbefinden wird zunehmend nicht mehr nur über Ernährung, Schlaf und Sport definiert. Auch Sinn, Kreativität, soziale Teilhabe und geistige Anregung gelten immer stärker als wichtige Faktoren eines gesunden Lebens. Kultur erscheint damit weniger als Luxus oder Freizeitbeschäftigung — sondern eher als Teil einer langfristigen geistigen und körperlichen Gesundheitspflege.

Denkanstoss zum Wochenbeginn

„Eine Kultur ist das Treibhaus, das es den menschlichen Fähigkeiten erlaubt, sich zu entwickeln, und zugleich das Gefängnis, das sie einengt.“ – Aldous Huxley (1894–1963)

ProductivityPorn-Tipp der Woche: Stress bewusst managen

Plane gezielt „Stresszeit“ ein, um schwierige Themen oder anstrengende Phasen bewusst zu verarbeiten. So bleibt der Stress unter Kontrolle.

Aus dem Archiv: Wie wir weniger vergessen – fünf einfache Wege, Wissen dauerhaft zu verankern

Du kennst das vielleicht: Nach einem intensiven Kurstag gehst Du mit einem guten Gefühl nach Hause. Die Inhalte waren spannend, die Übungen sinnvoll, die Gruppe engagiert. Doch eine Woche später, beim Wiederholen der Unterlagen, ist vieles verschwunden. Du erkennst Schlagworte, aber der Zusammenhang ist weg. Und schon stellt sich die leise Frage: Wieso bleibt so wenig hängen, obwohl ich mich doch wirklich konzentriert habe? Dieses Erlebnis ist ganz normal. Unser Gehirn vergisst schnell – nicht, weil es schlecht arbeitet, sondern weil es effizient ist.

weiterlesen …

Vielen Dank, dass Du Dir die Zeit genommen hast, diesen Newsletter zu lesen. Ich hoffe, die Inhalte konnten Dich inspirieren und Dir wertvolle Impulse für Dein (digitales) Leben geben. Bleib neugierig und hinterfrage, was Dir begegnet!


EpicMind – Weisheiten für das digitale Leben „EpicMind“ (kurz für „Epicurean Mindset“) ist mein Blog und Newsletter, der sich den Themen Lernen, Produktivität, Selbstmanagement und Technologie widmet – alles gewürzt mit einer Prise Philosophie.


Disclaimer Teile dieses Texts wurden mit Deepl Write (Korrektorat und Lektorat) überarbeitet. Für die Recherche in den erwähnten Werken/Quellen und in meinen Notizen wurde NotebookLM von Google verwendet. Das Artikel-Bild wurde mit ChatGPT erstellt und anschliessend nachbearbeitet.

Topic #Newsletter

 
Weiterlesen... Discuss...

from An Open Letter

This cold has been around for a while and yesterday was nightmare, slowly miserable, but it seems like after doing basically nothing today because it hurts so much to even stand up, it seems like I’m slowly starting to feel a little bit better. I just really hope everything smoothens out soon enough.

 
Read more...

Join the writers on Write.as.

Start writing or create a blog