<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Posts on The Personal Blog of Emily Gorcenski</title><link>https://emilygorcenski.com/post/</link><description>Recent content in Posts on The Personal Blog of Emily Gorcenski</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Fri, 27 Feb 2026 12:00:08 -0500</lastBuildDate><atom:link href="https://emilygorcenski.com/post/index.xml" rel="self" type="application/rss+xml"/><item><title>You Are Not Immune to Propaganda</title><link>https://emilygorcenski.com/post/you-are-not-immune-to-propaganda/</link><pubDate>Fri, 27 Feb 2026 12:00:08 -0500</pubDate><guid>https://emilygorcenski.com/post/you-are-not-immune-to-propaganda/</guid><image><url>https://emilygorcenski.com/photo-gallery/talks/yanitp.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/talks/yanitp.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/talks/yanitp.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/talks/yanitp.jpg" width="600"/></media:content><description>&lt;p>Join me this weekend at the Rivanna Area Queer Center for a session on understanding news literacy in the age of algorithmic media. Watch this space for a list of resources and key findings after the session.&lt;/p>
&lt;p>You are a soldier in an information war. Increasingly, politics are becoming participatory affairs played out in the public sphere through media and social media. Their goal is to command your attention, whether it is through outrage, consent, action, or complacency. They rely on algorithms to boost manufactured narratives. But those algorithms depend on your attention and participation. You are not a bystander in this war. You are not a consumer in this market. You are a soldier. You are a merchant. You are the lifeblood of propaganda. This is how you can fight back.&lt;/p>
&lt;h2 id="the-algorithm-is-the-primary-audience-of-any-story">The algorithm is the primary audience of any story&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://blog.tjcx.me/p/new-york-times-ab-testing">How the New York Times A/B tests their headlines&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="the-algorithm-is-us">The algorithm is us&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://academic.oup.com/pnasnexus/article/4/3/pgaf062/8052060?login=false">Engagement, user satisfaction, and the amplification of divisive content on social media&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nature.com/articles/s41586-026-10098-2">The political effects of X’s feed algorithm&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="attention-is-the-most-finite-and-valuable-resource-left-it-is-also-the-last-resource-you-still-control">Attention is the most finite and valuable resource left. It is also the last resource you still control.&lt;/h2>
&lt;ul>
&lt;li>&lt;em>Calm Technology&lt;/em>, Amber Case, O&amp;rsquo;Reilly Media, 2016&lt;/li>
&lt;/ul>
&lt;h2 id="mis--and-dis-information-is-used-by-all-sides">Mis- and dis-information is used by all sides&lt;/h2>
&lt;p>I will refer to this as &amp;ldquo;malinformation&amp;rdquo;.&lt;/p>
&lt;p>The problem is deeper on the radical right&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://journals.sagepub.com/doi/10.1177/19401612241311886">When Do Parties Lie? Misinformation and Radical-Right Populism Across 26 Countries&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>But it&amp;rsquo;s not exclusive to the right&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.theverge.com/2024/3/29/24116156/ai-generated-dnc-lara-trump-song-parody">https://www.theverge.com/2024/3/29/24116156/ai-generated-dnc-lara-trump-song-parody&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="all-effective-malinformation-is-built-around-a-kernel-of-truth">All effective malinformation is built around a kernel of truth&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.youtube.com/watch?v=TXL4SfXH5zM">Debunking Fake News and Fake Science&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="propagandists-prey-on-cognitive-bias">Propagandists prey on cognitive bias&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://mprcenter.org/review/engineering-belief/">Engineering Belief: How Rhetorical Structure Activates Cognitive Bias in Propaganda and Disinformation &lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="every-evil-stands-alone-new-evils-are-meant-to-overwhelm-you-not-distract-you">Every evil stands alone. New evils are meant to overwhelm you, not distract you.&lt;/h2>
&lt;p>The goal of bad faith actors is to keep you emotionally exhausted. This is different from attempts at deflection. Fascists do not distract to draw attention away, because fascists are not concerned with consequences. They distract to keep you exhausted and to generate a distinct form of &amp;ldquo;truth.&amp;rdquo;&lt;/p>
&lt;ul>
&lt;li>&lt;em>A Brief History of Fascist Lies&lt;/em>, Federico Finchelstein, University of California Press, 2020&lt;/li>
&lt;/ul>
&lt;h2 id="you-cannot-reason-with-those-who-do-not-value-reason">You cannot reason with those who do not value reason.&lt;/h2>
&lt;blockquote>
&lt;p>Never believe that anti-Semites are completely unaware of the absurdity of their replies. They know that their remarks are frivolous, open to challenge. But they are amusing themselves, for it is their adversary who is obliged to use words responsibly, since he believes in words. The anti-Semites have the right to play. They even like to play with discourse for, by giving ridiculous reasons, they discredit the seriousness of their interlocutors. They delight in acting in bad faith, since they seek not to persuade by sound argument but to intimidate and disconcert. If you press them too closely, they will abruptly fall silent, loftily indicating by some phrase that the time for argument is past.&lt;/p>
&lt;/blockquote>
&lt;p>― Jean-Paul Sartre&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.nature.com/articles/s41599-021-00930-7">“Don’t confuse me with facts”—how right wing populism affects trust in agencies advocating anthropogenic climate change as a reality&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="malinformation-actors-do-not-care-about-hypocrisy-inconsistency-or-embarrassment">Malinformation actors do not care about hypocrisy, inconsistency or embarrassment.&lt;/h2>
&lt;p>Nor does their audience. They only care about winning.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.cambridge.org/core/journals/international-theory/article/limitations-of-hypocrisy-as-a-strategy-of-critique-in-international-politics/CFB2878DB0BAEE11669F91667EB5B7E5">Limitations of hypocrisy as a strategy of critique in international politics&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="malinformation-campaigns-are-organized">Malinformation campaigns are organized.&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://boingboing.net/2025/04/28/the-influential-signal-chatrooms-where-tech-billionaires-and-their-courtiers-swung-far-right.html">The influential Signal chatrooms where tech billionaires and their courtiers swung far-right&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="it-takes-much-longer-to-debunk-a-lie-than-to-tell-it">It takes much longer to debunk a lie than to tell it.&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Brandolini%27s_law">Brandolini&amp;rsquo;s law&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="bots-exist-you-cannot-reliably-detect-them">Bots exist. You cannot reliably detect them.&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.mdpi.com/2504-2289/8/3/24"> Experimental Evaluation: Can Humans Recognise Social Media Bots?&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="ai-generated-content-exists-you-cannot-reliably-detect-it">AI generated content exists. You cannot reliably detect it.&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://knowledge.wharton.upenn.edu/article/can-we-still-detect-ai-generated-content/">Can We Still Detect AI-generated Content?&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="foreign-influence-exists-you-cannot-reliably-detect-it">Foreign influence exists. You cannot reliably detect it.&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.trails.umd.edu/news/are-influence-campaigns-trolling-your-social-media-feeds">Are Influence Campaigns Trolling Your Social Media Feeds?&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="opinion-is-not-news-analysis-is-not-news">Opinion is not news. Analysis is not news.&lt;/h2>
&lt;p>News makes up less than half of what is on the New York Times&amp;rsquo;s front page.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blog.tjcx.me/p/tracking-front-page-new-york-times">https://blog.tjcx.me/p/tracking-front-page-new-york-times&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="fascism-is-a-politics-of-aesthetics">Fascism is a politics of aesthetics.&lt;/h2>
&lt;ul>
&lt;li>&lt;em>The Work of Art in the Age of Mechanical Reproduction&lt;/em>, Walter Benjamin, 1935&lt;/li>
&lt;/ul></description></item><item><title>Shotguns for the Storytellers</title><link>https://emilygorcenski.com/post/shotguns-for-the-storytellers/</link><pubDate>Sat, 24 Jan 2026 11:50:59 -0500</pubDate><guid>https://emilygorcenski.com/post/shotguns-for-the-storytellers/</guid><image><url>https://emilygorcenski.com/photo-gallery/berlin/Big%20Soldier.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/berlin/Big%20Soldier.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/berlin/Big%20Soldier.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/berlin/Big%20Soldier.jpg" width="600"/></media:content><description>&lt;p>A poem for all victims of secret police.&lt;/p>
&lt;p>Shotguns for the storytellers—&lt;br/>
They kill the poets first—&lt;br/>
Or they won’t wait too long—&lt;br/>
The dictator lives to tell you what abides—&lt;br/>
The poet dies to tell you what could be.&lt;br/>
&lt;br/>
Soon come the truthseekers—&lt;br/>
It’s your memory that must die first—&lt;br/>
Flashbangs for the filmographers—&lt;br/>
Pistols for the protesters—&lt;br/>
The victor doesn’t write history, he edits.&lt;br/>
&lt;br/>
One day this all will end—&lt;br/>
Gallows for the gestapo—&lt;br/>
And when that day comes—&lt;br/>
And I promise that it will come—&lt;br/>
We’ll hang the propagandists first.&lt;/p></description></item><item><title>The Quarter Century</title><link>https://emilygorcenski.com/post/the-quarter-century/</link><pubDate>Wed, 31 Dec 2025 16:15:57 -0500</pubDate><guid>https://emilygorcenski.com/post/the-quarter-century/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/sphere.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/sphere.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/sphere.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/sphere.jpg" width="600"/></media:content><description>&lt;p>Reflections on repatriation, AI, and thriving as the world falls apart.&lt;/p>
&lt;p>The general consensus seems to be that 2025 sucked, particularly among those who find themselves plugged into politics. There are wars and genocides happening around the world, pandemics (plural) raging, and a moribund economy staggering like a concussed quarterback convincing his coach he can make it one more drive. Amidst all of this, I made the peculiar decision this year to leave my fairly secure job as a regional VP of a consulting company and move back &lt;em>to&lt;/em> the United States. The response I get is the same as when I tell people I&amp;rsquo;m learning Romanian on Duolingo: an instant and indelible facial expression of bewilderment and the question &amp;ldquo;&lt;em>why?&lt;/em>&amp;rdquo; so extruded you can see it the italics as it leaves the speaker&amp;rsquo;s mouth. I feel guilty that I don&amp;rsquo;t feel guilty when I say that I&amp;rsquo;ve had a good year.&lt;/p>
&lt;hr>
&lt;p>When you need to refactor or rearchitect a particularly complex piece of software, a perfectly valid approach is to simply turn off some features or services and see who shouts. The last few years, we watched as tech executives took this approach with their organizations, simply deleting entire teams and departments. After years of cheap capital, the entire tech industry was being bled dry. Hundreds of thousands of jobs disappeared, budgets evaporated, and belts tightened. Many things broke, but no one with any real influence screamed loud enough to stop it. It was a tough time for professional services companies and sure enough, in 2024 bony knuckles of the reorg reaper pointed at the company I moved to Germany to join.&lt;/p>
&lt;p>I was naive enough to hope I would be safe. Over the last five years, I had helped build a data team from almost nothing and worked my way into a regional VP role. Despite the so-called &amp;ldquo;economic headwinds&amp;rdquo; my team produced good numbers. I was eager to work with new management and propose my ideas for how to improve a team that was already doing well. Nobody cared. I knew something had to change when I began the year by joining sales planning meetings in Chicago, London, and Bangalore and came home with world-class migraines as souvenirs. It was not a good economy to be job searching in, but every flight I entered into my tracking app felt like ripping another month off the back end of my life&amp;rsquo;s calendar.&lt;/p>
&lt;p>I quit my job, telling my new boss in-person while we were at nVidia GTC. I remember how astonishingly uninspired the conference was as they fed us a stale wrap, an apple, and a bag of off-brand Smartfood for lunch. San Jose sucks, and as I walked around competitors' booths, I took photos of their nearly identical, entirely vapid slogans about how much they excel at unlocking enterprise value by harnessing complexity and executing AI at scale, whatever any of that means. I thought back to the joy I had when I studied computational mathematics and learned how to solve hard problems and wondered how that led to me standing in the background while Jim Cramer shouted from a stage on the conference floor about the world-altering benefits of AI to an audience who can&amp;rsquo;t do algebra. There are a few moments in your life when you realize that you&amp;rsquo;re on the highway to hell, and you have to get off at the next exit. This was one of them.&lt;/p>
&lt;hr>
&lt;p>Already by mid-December of 2024, I had packed what was left of the belongings I had gathered in Berlin into a handful of suitcases and sold what I couldn&amp;rsquo;t for a steal to a newly-independent Moroccan woman moving into her first flat. I was exhausted from watching everything I built be stripped for parts. I had no energy for another brutal apartment search in a culturally-decaying and increasingly expensive Berlin. But mostly I missed my wife. Seven years is a long time to do long distance.&lt;/p>
&lt;p>Culturally, Berlin wishes more than any city I&amp;rsquo;ve ever seen to be frozen in time. It&amp;rsquo;s a city of agelessness, where everyone eternally reaches for the aura of 1990, none moreso than the people who weren&amp;rsquo;t even born yet when the Wall came down. The problem with living in a city of perpetual youth is that you eventually grow old, and trying to stay forever young becomes indistinguishable from stagnation. On my last night in the city, I went to Olympiastadion to see Bruce Springsteen. It was my first time at Olympiastadion (despite living a fifteen minute walk away for three years); Bruce was using his European tour to deliver an impassioned plea to the world that what you see on the news isn&amp;rsquo;t all what America is. That we&amp;rsquo;re enduring a crisis but this crisis isn&amp;rsquo;t the endgame. &amp;ldquo;The American I have sung to you about for the last fifty years &lt;em>is real&lt;/em>,&amp;rdquo; he pleaded, trying to convince himself as much as the audience.&lt;/p>
&lt;p>I didn&amp;rsquo;t have to be convinced. I knew what America I was moving back to.&lt;/p>
&lt;hr>
&lt;p>There are two problems with the current wave of AI. The first of these problems has to do with demand. In the business world, to succeed you either have to make something that people want, or you have to make something that you can convince people that they need. Pretty much every successful data science problem has involved using data and algorithms to develop a solution to a hard problem. As a career data scientist, this is what I&amp;rsquo;ve done for my entire work life, and I was lucky this year to quickly find a new job based in the US where I can continue to do just that. What makes me worry, however, is what I&amp;rsquo;ve seen emerge over the past year in the boardrooms and slide decks from the big name consulting firms that have bastardized the field that I love in a madcap cash grab.&lt;/p>
&lt;p>The pattern goes something like this: CEOs report to a Board of Directors and many if not most CEOs are also board members of other companies themselves. When they all get together for their board meetings or golf dates or whatever it is they do, they&amp;rsquo;re all telling each other how much efficiency they&amp;rsquo;re gaining from generative AI. Or someone they worked with some years ago has a little AI startup and sends an email about their great new AI product. Or they get contacted by an ex-colleague doing a favor for a friend. Whatever the path, what ends up happening is these executives who know truly nothing about the day to day work of a data scientist gas each other up about the (usually extremely overinflated) benefits of generative AI. The CEO believes this, because a CEO&amp;rsquo;s job consists entirely of emails and meetings, and so when he uses ChatGPT to write an email or transcribe a meeting, he projects the tool&amp;rsquo;s ability to do &lt;em>his&lt;/em> job onto everyone else&amp;rsquo;s. So he hires his tennis buddy at McKinsey to cleave an AI strategy onto the company roadmap, where it takes priority over all the other initiatives that will solve actual problems for the business. It doesn&amp;rsquo;t matter if it works or not. He has no choice, because all his board members' companies are doing the same thing. In the world of business, nothing is riskier than being an anomaly.&lt;/p>
&lt;p>AI&amp;rsquo;s demand problem is that far too much of it comes from the sense of &amp;ldquo;command&amp;rdquo; and not &amp;ldquo;desire.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;p>If I have a sense of where we stand at the quarter century mark, it&amp;rsquo;s that everything is given to aesthetic and that not much adds up if you actually do the math. And if you don&amp;rsquo;t want to do the math, then just go out into the real world and leave your phone behind. Ken Klippenstein &lt;a href="https://www.kenklippenstein.com/p/why-i-disappeared">wrote about this&lt;/a> recently, and it&amp;rsquo;s something I&amp;rsquo;ve been saying for a while. The saturated version of reality you read about online doesn&amp;rsquo;t comport with the vastness of the world offline. There&amp;rsquo;s a lot of bad stuff happening, of course, and it&amp;rsquo;s not my intention to minimize the very real impacts felt by people targeted, for instance, by ICE. But our world is huge and diverse and the internet is small and repetitive. When something bad happens in the news, it can be very difficult to avoid it. If ICE arrests an innocent bystander, you&amp;rsquo;ll see video of the incident for days. Or if a public figure is beset by some scandal, it captures our attention for days. But it doesn&amp;rsquo;t have to be like this.&lt;/p>
&lt;p>I drove cross-country this year; I yearned to fulfill my longstanding desire to be a Jeep girl. (I joke to my wife that I had to solve one of those problems first). So I hopped on a flight to Phoenix to pick up a 2011 2-door Wrangler that I bought sight unseen, hoping it would survive a five-night dash across the country back to Virginia. Spoiler alert: it did, and I am very happy. This also let me knock something else off my bucket list: finally doing a cross-country drive, which felt as much my American birthright as anything else. I dreamed of being like Kerouac and those nomadic beat writers when I was younger—believe me when I say I was shamefully flattered when a great writer friend of mine said that &lt;a href="https://emilygorcenski.com/post/the-time-of-cowards/">the poem I wrote in January&lt;/a> was the &amp;ldquo;Howl&amp;rdquo; of this generation, which I refuse to accept—and I wept heavy tears when I got to see the diverse natural beauty of this country.&lt;/p>
&lt;p>I was ready on this trip to be defiant. I bought a big floofy skirt to wear as I drove through Texas and Oklahoma, ready to throw down with anyone who dared stop me from using a bathroom or to give me a hard time. But I encountered none of that. Instead, I found a cute queer art shop in Albuquerque, saw a barista in Amarillo proudly donning Pride wear, had a kind lady in Oklahoma tell me my skirt was caught in the door of my Jeep, and a helpful Autozone staffer in Joplin, Missouri updated my name in his computer system without a second thought. People ask if I regret moving back to the US given the way trans people are being targeted. I don&amp;rsquo;t. I have more and easier access to medicine today than I&amp;rsquo;ve ever had. I have a bigger local network of trans peers here in Charlottesville than I had in Berlin. And I have many more opportunities to advocate for trans rights here than I did in Germany.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> I&amp;rsquo;ve spent a lot of time trying to reconcile this with the anger and fear I sense online.&lt;/p>
&lt;p>Of course, part of it is simply that I&amp;rsquo;m not in a position where I am deeply personally affected by the legislative assaults on trans folks. That is a privilege I enjoy and recognize. But another part of it is that I understand fascism as a politics that operates primarily through aesthetics, even as it causes real harm. (There is another argument here to be made that the harm it causes is both the means and ends of the aesthetics, that to be seen hurting people to give your audience what it demands you have to actually hurt some people.) There are, for instance, more proposed bills targeting transgender collegiate athletes than there are collegiate transgender athletes.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> The Washington Post recently ran &lt;a href="https://www.washingtonpost.com/technology/interactive/2025/ice-social-media-blitz/">a story&lt;/a> about how ICE brings cameras to its raids in order to generate viral social videos, probably with the end goal of making sure Trump sees them. It&amp;rsquo;s been known for a while that Fox News is the ersatz daily presidential briefing, and if you&amp;rsquo;re a savvy little quisling in this administration, it&amp;rsquo;s more important to be seen doing the work than it is to have any impact at scale. In October, ProPublica ran &lt;a href="https://www.propublica.org/article/immigration-dhs-american-citizens-arrested-detained-against-will">a story&lt;/a> about how ICE had arrested and detained 170 US citizens this year. Each one of these arrests is a travesty to democracy, and also if you break this down this amounts to 0.38 such arrests per state per month.&lt;/p>
&lt;p>I&amp;rsquo;m not saying any of these things aren&amp;rsquo;t problems or that we can safely look away. I am saying that when you break down the numbers, they suddenly look like problems solvable by a vast and beautiful land full of 330 million people. I saw this dynamic in Budapest, where a historically large public demonstration showed up in a brilliant act of defiance of the fascist Orban regime. I believe we can do it, too. The America that Bruce Springsteen wrote about is real. Let&amp;rsquo;s just go fucking make it.&lt;/p>
&lt;hr>
&lt;p>The second issue with AI, especially for the managers of all those consulting companies looking doe-eyed at ChatGPT, is that you don&amp;rsquo;t control the supply. Whenever there&amp;rsquo;s a natural disaster or a new video game console release or something like that, there&amp;rsquo;s a certain kind of dickweasel that gets it in his mind that he&amp;rsquo;s going to get to the shop early and buy out all the toilet paper or Playstation 5s or whatnot to sell at a 25x markup. The problem with these market economics, in addition to a failure to understand the modern just-in-time supply chain economy, is that these scalpers don&amp;rsquo;t control the supply. In other words, they can only control the prices so long as they temporarily monopolize the local distribution. But since they don&amp;rsquo;t control the supply, and because they bought at retail and not wholesale prices, there&amp;rsquo;s only so long that they can make that game profitable. Combined with a lack of reputational trust, a careless and greedy scalper will soon find themselves with a bedroom full of toilet paper and no one to sell it to.&lt;/p>
&lt;p>AI is much the same way. Lots of technology executives eagerly want to be the ones to deliver &amp;ldquo;AI transformations&amp;rdquo; to their clients, but eventually the clients will realize that the consultancies don&amp;rsquo;t control the supply of AI, and at best they&amp;rsquo;re only able to temporarily provide a baseline level of talent to know how to use the tools effectively. For a consulting company, &amp;ldquo;supply&amp;rdquo; has long referred to the pool of candidates you can staff and sell to a client. And it will be a foolish executive who will think that they can drive margins by replacing some of this supply with AI. Because these companies rarely own the models, have access to the skills, technology and data needed to train them, and have little real world experience building them, then the only valuable supply &amp;ldquo;add&amp;rdquo; is whatever unique skills or capabilities they bring. In theory, this can be an integration, an interface, or a particular set of subject-matter expertise. In practice, the trend of the past decade to push out any sense of craftmanship in favor of tighter margins and faster delivery has ensured that few crafstpeople remain in the industry and even fewer managers know how to recognize those skills when they see them. This is why everything is so bland and shitty now. You can add ice to water to make it temporarily more refreshing but it won&amp;rsquo;t fix the flavor. When Deloitte deliered &lt;a href="https://fortune.com/2025/10/07/deloitte-ai-australia-government-report-hallucinations-technology-290000-refund/">an AI-generated report full of nonsense&lt;/a> as a deliverable on a AUD$290,000 project, the outrage shouldn&amp;rsquo;t be that they relied on an unreliable technology. It should be that they apparently didn&amp;rsquo;t have anyone a) who knew better and b) was in a position to do something to stop and ask, &amp;ldquo;what the fuck are we even doing here?&amp;rdquo;&lt;/p>
&lt;p>It&amp;rsquo;s this ceaseless and wanton vacuity that inspired me more towards music and art and books and poetry this year, even if I fell short of my reading goal and barely blogged at all. There is soul in imperfection. There is beauty in friction. We have to struggle a little to appreciate anything. It is important to suffer sometimes. You have to let your favorite song move you to tears. You have to break an occasional promise.&lt;/p>
&lt;hr>
&lt;p>I was ruined by Europe but still I&amp;rsquo;m glad to be from the side of the country that&amp;rsquo;s old. One of my forays into limiting the influence of the tech industry on my personal life was to write poetry; a friend organized a poem-a-day sprint in July, and while I wish I wrote anything good enough to publish, there are a few lines that spawned in my head and have rattled around for months, particularly these about how our cities take our continent for granted. I&amp;rsquo;m sharing this now in an embrace of its imperfection.&lt;/p>
&lt;div style="text-align: center;">
&lt;span style="font-weight: 400;">Vjosë&lt;/span>&lt;br>
&lt;br>
the last wild river in europe, they say,&lt;br>
runs its course through Albania&lt;br>
a land too secret and wild,&lt;br>
gjuha shqipe with its xs and qs&lt;br>
too decadent for the member states&lt;br>
except for the iberians, for whom decadence&lt;br>
is the meaning of life, and the french&lt;br>
for whom decadence is butter and the repose&lt;br>
that strident american cities yearn for&lt;br>
as they unfold quadratic and suicidal&lt;br>
into the plains and deserts &lt;br>
&lt;br>
the riverbanks of europe are clean&lt;br>
and straight their courses only run&lt;br>
ragged when they are too wearied&lt;br>
to cover up their sandbar breasts&lt;br>
or when they are replete and fury&lt;br>
&lt;br>
berlin buried the Panke&lt;br>
perhaps they got too carried away with the burying&lt;br>
when you run out of dead&lt;br>
you bury the living and&lt;br>
the lifegiving and&lt;br>
yourself&lt;br>
&lt;/div>&lt;br>
&lt;p>In addition to my cross-country trip (Phoenix, Albuquerque, OKC, St. Louis, Louisville), I traveled to Vegas (vapid, dying strip mall but at leat it has the Sphere), Denver (Portland with responsibilities), Chicago (great architecture), and San Jose and Santa Clara. As much as I was absolutely amazed with the nature throughout the US, I couldn&amp;rsquo;t help but feel a malaise at how these urban spaces are so antithetical to community. Our physical world keeps us separated so we go online to seek community but carry the traumas and burdens of that isolation and find ways to recreate it there. Why is politics so divisive? Because we are so divided.&lt;/p>
&lt;p>One of the things I was invited to publish this year was &lt;a href="https://www.cvilletomorrow.org/shes-been-around-the-world-over-the-last-year-but-came-back-to-charlottesville-because-she-sees-people-ready-to-lead/">a piece on what I hoped Charlottesville would be in 20 years&lt;/a>. It was apparently one of &lt;a href="https://www.cvilletomorrow.org/newsletter/what-you-read-most-in-2025/">the most read pieces of the year on Charlottesville Tomorrow&lt;/a>. In the piece, I remark on how when you live in a city with centuries of history, all of your decisions have to live in a context that brings past, present and future into balance. I think it&amp;rsquo;s the question most on my mind right now. What do we owe to our ancestors? What do we owe to our descendants? And what do we owe to ourselves?&lt;/p>
&lt;p>I&amp;rsquo;m getting older now. I&amp;rsquo;ll turn 44 in 2026. I&amp;rsquo;m probably at the midpoint of my life, if I&amp;rsquo;m lucky. I felt like transitioning in my 30s gave me another decade of youth, but I am paying that debt now. If I&amp;rsquo;m having a midlife crisis, then it is manifesting is through the desperate quest to make memory and experience worthwhile. And so, in a year filled with fear and uncertainty and crisis and catastrophe I found ways to fill it with music and travel and family and love. In a poor attempt to keep memory worthwhile, I&amp;rsquo;ll leave you with my favorite photos I took this year.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/narodni-muzeum.jpg" alt="Interior of the National Museum in Prague">&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/san-marino.jpg" alt="Mountains near San Marino at sunset">&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/budapest.jpg" alt="Budapest Pride crossing the Elizabeth Bridge">&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/sphere.jpg" alt="The Las Vegas Sphere">&lt;/p>
&lt;p>2025, at least:&lt;/p>
&lt;ul>
&lt;li>31 cities&lt;/li>
&lt;li>15 states&lt;/li>
&lt;li>11 countries&lt;/li>
&lt;li>48 books read&lt;/li>
&lt;li>30 poems written&lt;/li>
&lt;li>1 publication&lt;/li>
&lt;li>3 citations&lt;/li>
&lt;li>2 podcast appearances&lt;/li>
&lt;li>20 successful physical therapy appointments&lt;/li>
&lt;li>3 goals scored&lt;/li>
&lt;li>1 new job&lt;/li>
&lt;/ul>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>Watch this space, as I may have a big announcement soon.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2" role="doc-endnote">
&lt;p>Counting proposed legislation as a barometer is misleading and harmful in many ways, but I&amp;rsquo;ll maybe write a future post about that.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description></item><item><title>She’s been around the world over the last year — but came back to Charlottesville because she sees people ready to lead</title><link>https://www.cvilletomorrow.org/shes-been-around-the-world-over-the-last-year-but-came-back-to-charlottesville-because-she-sees-people-ready-to-lead/</link><pubDate>Mon, 24 Nov 2025 22:26:04 -0500</pubDate><guid>https://emilygorcenski.com/post/shes-been-around-the-world-over-the-last-year-but-came-back-to-charlottesville-because-she-sees-people-ready-to-lead/</guid><description>&lt;p>Charlottesville Tomorrow asked me what I hoped to see over the next 20 years. My answer was informed by my last several years abroad and how cities that grow around diverse communities can thrive.&lt;/p></description></item><item><title>Global Warning, Ep. 4</title><link>https://m.youtube.com/watch?v=NvXUnLT-3So</link><pubDate>Mon, 24 Nov 2025 22:24:00 -0500</pubDate><guid>https://emilygorcenski.com/post/global-warning-ep.-4/</guid><description>&lt;p>I was happy to sit down with Awkword to discuss Charlottesville and how the community&amp;rsquo;s experience under the first Truml administration has given it tools to resist the second.&lt;/p></description></item><item><title>What from the Ithakas I learned</title><link>https://emilygorcenski.com/post/what-from-the-ithakas-i-learned/</link><pubDate>Wed, 16 Apr 2025 22:03:19 +0200</pubDate><guid>https://emilygorcenski.com/post/what-from-the-ithakas-i-learned/</guid><image><url>https://emilygorcenski.com/photo-gallery/berlin/Arena%20Berlin-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/berlin/Arena%20Berlin-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/berlin/Arena%20Berlin-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/berlin/Arena%20Berlin-thumb.jpg" width="600"/></media:content><description>&lt;p>A post about coming home.&lt;/p>
&lt;p>Musa Okwonga&amp;rsquo;s astonishing memoir of the city, &lt;em>In the End, It Was All About Love&lt;/em>, describes how Berlin calls her inhabitants home, compelled as if by the gentle contours of some mysterious gradient. I was caught in the well of its gravity years ago, when I first boarded a flight to come here for a conference knowing next to nothing about the city. It makes no sense that this is where I ended up, but reason and sense are not always conjoined.&lt;/p>
&lt;p>The story told so often that it appears on &lt;a href="https://en.wikipedia.org/wiki/Emily_Gorcenski">my Wikipedia page&lt;/a>, which is true but incomplete, is that I came to Berlin for safety reasons after the events in Charlottesville.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> But why &lt;em>Berlin&lt;/em>? is the question, why not Seattle or New York or London?&lt;/p>
&lt;p>The simple answer I&amp;rsquo;ve given is that I happened upon a job at a time when a change sounded good. My best friend, Em, introduced me to a company called Thoughtworks that needed a data scientist even if in hindsight they didn&amp;rsquo;t really know what to do with one at the time. I found myself one day in an interview and before I knew it, boarding a plane, alone, with suitcases in tow setting off for a strange city, wondering how to maintain a marriage long distance, thinking maybe it would be a cooling-off adventure of a year or two. I had no intention or goal; the future was a big empty space.&lt;/p>
&lt;p>That flight was seven years ago less one month. I never imagined it would have lasted this long or been this vast.&lt;/p>
&lt;p>I have aged in these years, as the emerging gray streak in my jet black hair betrays, and I have filled the Spree with the tears I&amp;rsquo;ve shed from missing the rituals of home: birthdays and anniversaries, the deaths of pets, parties and movie nights and more than one community gathering hosted by the people I called comrades once. Charlottesville didn&amp;rsquo;t feel like home until the moment I had to leave it. In that time the &lt;em>Heimweh&lt;/em> never really released its grasp, and the sorrow and the longing of the years I&amp;rsquo;ll never get back—nearly half of the years my wife and I have been together—have etched themselves scarwise into my soul. Though I am calmer now, more measured, there are still those nights when the anger and recrimination flare and a caustic fury rages in my heart against those who took my home from me and me from it.&lt;/p>
&lt;p>I should instead owe them thanks. That big empty space lay out before me I filled with the most fulsome experiences: I have walked beneath the Eiffel Tower on a perfect September day; I have seen the tree-like columns of La Sagrada Familia and climbed the steps up to the Pražký hrad; I have seen the Colosseum, and the Parthenon, and the ancient, prehistorical temple at Mnajdra; I have dived naked into the Baltic sea at a Swedish sauna and relaxed among the hippies in Freetown Christiania; and drove in rickity buses through the mournful sublime of the Balkan Mountains; and the Carpathians; and watched the sun&amp;rsquo;s brilliant, waning light flicker off the minarets of the Hagia Sofia and out over the Golden Horn; and jogged the Thames' South Bank to the gothic reach of Westminster; and drank beer in &lt;em>Maß&lt;/em> on the Wiesn; and lounged on the Zürichsee and watched the silent snow fall in parks in Rīga; I have seen the Slavic fearlessness and decency of Poles and Ukrainians in crisis, and the self-organization of the community of an entire continent to help them; and climbed to a crumbling watchtower on the Irish Sea; and walked the tiered, reclaimed canals of Utrecht; and been alone with Van Gogh, and Caspar David Friedrich, and Dalí, and let Guernica take my breath away; and walked the broad, communist boulevards of Bucharest; and Sofia; and shivered in the frozen Helsinki winters; and rode an old Soviet truck through an abandoned naval mine depot on an Estonian island; and swum in the Mediterrean and gambled beneath the Beaux Arts beauty of Monte Carlo; and struggled in French in Brussels, and in Català in Andorra la Vella, and in Albanian in Tiranë; and a hundred more stories that I am privileged to remember. And Berlin, city of my heart, who called to me, I have seen its ugliness and its beauty and its bewilderment and come to understand it and its pain. Its glamour crawls out from behind its traumas and lurking there, in the graffiti-covered walls, amidst its squats and its cruel coldness, one can find what it means to seek grace despite the calamity of the world, to find pathos despite pointlessness and what it means to endure.&lt;/p>
&lt;p>Berlin showed me that the realness of one&amp;rsquo;s beauty seeps through no matter how many façades are erected to hide it. Berlin taught me to see people in a way that Charlottesville never could. Berlin taught me to see myself and that some tensions are not meant to be resolved.&lt;/p>
&lt;p>In these years I have done and built such incredible things. Building my team at Thoughtworks will stand as one of the few truly great things I have ever done. Learning German in my 30s and 40s required a level of commitment, humility, and discipline I did not know I had in me. And surrendering myself to become forever an outsider required a confidence and self-assuredness I had long thought impossible.&lt;/p>
&lt;p>But it is time now to go. To go back home.&lt;/p>
&lt;p>Why now, with all that is going on in the country? Aren&amp;rsquo;t I less safe now than I ever have been? Maybe. But the years don&amp;rsquo;t make me younger, and if all I get is one more night to fight for my home and to be with my wife and family, then it is worth all the rest of the sunsets watched alone over all of those wonderful foreign places put together. But I will aim for ten thousand more and soon, in these coming days, will be the first of those.&lt;/p>
&lt;p>I&amp;rsquo;ll be saying goodbye to Thoughtworks, taking a chance with a new journey in my career, and lining up a few projects I can&amp;rsquo;t wait to tell you all about. And I&amp;rsquo;ll write more, and read, and renovate the house, and run with the dog at the dog park in that infinite, timeless joy that dogs have that make it impossible to remember all of the acrid brutalities that punctuate life, and take pleasure again in mowing the lawn and listening to country music shamelessly and in public and in drinking beer with hops. Berlin may still lie in my future, but next time it won&amp;rsquo;t be alone.&lt;/p>
&lt;p>So what was it, in the end, that called me to Berlin of all places? I can say it now: it was love. And it&amp;rsquo;s love that brings me home.&lt;/p>
&lt;p>&lt;small>&lt;em>So ein wundersames Abenteuer, für das ich für ewig dankbar sein muss und sein werde.&lt;/em>&lt;/small>&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>This is often confused with an allegation that I left America for political reasons; no, I left because a man was trying to have me killed, doing so even whilst he was in jail. His star has fallen from the sky in these intervening years, and today if he tried with all his might he couldn&amp;rsquo;t have a mouse killed at a cat convention.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description></item><item><title>Owning my own data, part 1: Integrating a self-hosted calendar solution</title><link>https://emilygorcenski.com/post/owning-my-own-data-part-1-integrating-a-self-hosted-calendar-solution/</link><pubDate>Sat, 05 Apr 2025 20:24:41 +0200</pubDate><guid>https://emilygorcenski.com/post/owning-my-own-data-part-1-integrating-a-self-hosted-calendar-solution/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/cal-arch.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/cal-arch.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/cal-arch.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/cal-arch.png" width="600"/></media:content><description>&lt;p>The first part of what I hope to be an ongoing series about repatriating and owning my own data and tech. In this post, I describe how I integrated my own self-hosted calendar solution.&lt;/p>
&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>My calendar is a true nightmare. I travel a lot, some of it for my job, some of it for fun, and some of it because I&amp;rsquo;ve been managing a long distance relationship for years. Traveling a lot means it&amp;rsquo;s always hard for your loved ones or coworkers to know what time zone you&amp;rsquo;re in or when you&amp;rsquo;re on a plane. Managing a relationship across timezones means having to do constant mental math that is way harder than it needs to be. And because I don&amp;rsquo;t have an assistant, I&amp;rsquo;ve become frustrated with double entry of flights, trains, blockers for boarding flights or traveling to the airport, and so on.&lt;/p>
&lt;p>As someone who travels a lot, it&amp;rsquo;s also one of those things where statistically speaking, the chances of me being on a plane whenever some newsworthy event happens is higher than for the average person. I want my wife, friends, coworkers to know what flights I&amp;rsquo;m on and what cities I&amp;rsquo;m in. I&amp;rsquo;ve survived one terror attack, nearly dodged two others and a mass shooting. It&amp;rsquo;s one of those things where I want to make sure people who care about me can check in easily to see where I am.&lt;/p>
&lt;p>The thing is, calendar systems suck. All of them. The standards are a holdover from two computing generations ago, the frontend ecosystem is a mess of rent-seeking monthly subscription mobile apps with dubious features, and the user experience for most systems is pretty much terrible. Just as an example: if I book a flight, my email provider makes a calendar entry, but it often misses the connection flight or gets the timezones wrong, and even if it doens&amp;rsquo;t fail, it doesn&amp;rsquo;t make me the organizer, meaning I can&amp;rsquo;t share or modify it. The entire calendar ecosystem is a nightmare.&lt;/p>
&lt;p>The sad thing is that in the entire space there&amp;rsquo;s really two good products: Google Calendar has basically captured the market for diary entries, and Facebook Events would be an admirable tool if it wasn&amp;rsquo;t attached to a company and service fuelled with undistilled demon blood. I&amp;rsquo;m trying to break off of big tech as much as I can, so I needed some kind of solution.&lt;/p>
&lt;p>So I built my own. Kind of. I intend this to be the first part of a long-running series of how I&amp;rsquo;m building my own tech to regain control of my data.&lt;/p>
&lt;h1 id="requirements">Requirements&lt;/h1>
&lt;p>My core requirements:&lt;/p>
&lt;ul>
&lt;li>Allow events to show up as blockers in my work calendar;&lt;/li>
&lt;li>Allow my wife to subscribe to the calendar;&lt;/li>
&lt;li>Enter events at most once;&lt;/li>
&lt;li>Allow editing from multiple devices;&lt;/li>
&lt;li>Fully control my own data;&lt;/li>
&lt;li>Cannot solve problem by sharing work calendar with my wife.&lt;/li>
&lt;/ul>
&lt;p>Additional requirements:&lt;/p>
&lt;ul>
&lt;li>Import .ics attachments from email;&lt;/li>
&lt;li>Import .ics over HTTP from my &lt;a href="https://emilygorcenski.com/post/lingoda-review/">language school&lt;/a> calendar;&lt;/li>
&lt;li>Import data automatically from my self-hosted flight tracker, &lt;a href="https://github.com/johanohly/AirTrail/">Airtrail&lt;/a>;&lt;/li>
&lt;li>Color code events in my work calendar;&lt;/li>
&lt;li>Allow some events to be flagged as private for my work calendar;&lt;/li>
&lt;li>Refresh frequently;&lt;/li>
&lt;li>Use any front end.&lt;/li>
&lt;/ul>
&lt;h1 id="previous-solution">Previous solution&lt;/h1>
&lt;p>The big problem with existing calendar sharing solutions is that they require everyone to be on a common platform, like the broader Gmail or Outlook.com ecosystems, or share accounts in the same environment, like an Exchange environment, in order to have full functionality. The two common workarounds for this is either to publish a calendar in a &amp;ldquo;read only&amp;rdquo; mode by serving iCal data over HTTP, or to email iCal .ics files to recipients over email.&lt;/p>
&lt;p>For my beta version of this calendar system I chose the former: I would host an .ics file on my website under a public but secret and unguessable URL, or actually multiple URLs for different use cases. I could then share the link or subscribe to it with my work account. To populate the calendar, I started writing out events in YAML and would generate a URL for each person I wanted to share it with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-yaml" data-lang="yaml">- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">World Aviation Festival&lt;/span>
&lt;span style="color:#f92672">begin&lt;/span>: &lt;span style="color:#e6db74">2024-10-07&lt;/span>
&lt;span style="color:#f92672">end&lt;/span>: &lt;span style="color:#e6db74">2024-10-10&lt;/span>
&lt;span style="color:#f92672">city&lt;/span>: &lt;span style="color:#ae81ff">Amsterdam&lt;/span>
&lt;span style="color:#f92672">event&lt;/span>:
&lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">World Aviation Festival Conference Day&lt;/span>
&lt;span style="color:#f92672">type&lt;/span>: &lt;span style="color:#ae81ff">CONFERENCE&lt;/span>
&lt;span style="color:#f92672">begin&lt;/span>: &lt;span style="color:#e6db74">2024-10-08T08:30:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">end&lt;/span>: &lt;span style="color:#e6db74">2024-10-08T18:00:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">location&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> RAI Exhibition and Convention Centre
&lt;/span>&lt;span style="color:#e6db74"> Halls 1 &amp;amp; 5 | Europaplein 24, Amsterdam&lt;/span>
&lt;span style="color:#f92672">repeat&lt;/span>:
&lt;span style="color:#f92672">count&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;span style="color:#f92672">frequency&lt;/span>: &lt;span style="color:#ae81ff">daily&lt;/span>
&lt;span style="color:#f92672">flights&lt;/span>:
- &lt;span style="color:#f92672">flight number&lt;/span>: &lt;span style="color:#ae81ff">LH2310&lt;/span>
&lt;span style="color:#f92672">departure&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">MUC&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-07T20:05:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">arrival&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">AMS&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-07T21:40:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
- &lt;span style="color:#f92672">flight number&lt;/span>: &lt;span style="color:#ae81ff">LH2305&lt;/span>
&lt;span style="color:#f92672">departure&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">AMS&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-10T15:40:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">arrival&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">MUC&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-10T17:05:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
- &lt;span style="color:#f92672">flight number&lt;/span>: &lt;span style="color:#ae81ff">LH1952&lt;/span>
&lt;span style="color:#f92672">departure&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">MUC&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-10T18:00:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">arrival&lt;/span>:
&lt;span style="color:#f92672">airport&lt;/span>: &lt;span style="color:#ae81ff">BER&lt;/span>
&lt;span style="color:#f92672">time&lt;/span>: &lt;span style="color:#e6db74">2024-10-10T19:05:00&lt;/span>&lt;span style="color:#ae81ff">+02&lt;/span>:&lt;span style="color:#ae81ff">00&lt;/span>
&lt;span style="color:#f92672">hotel&lt;/span>:
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Sheraton Amsterdam Airport Hotel And Conference Center&lt;/span>
&lt;span style="color:#f92672">address&lt;/span>: &lt;span style="color:#ae81ff">Schiphol Boulevard 101, Schiphol, 1, Netherlands 1118&lt;/span>
&lt;span style="color:#f92672">share&lt;/span>:
- &lt;span style="color:#ae81ff">Christine&lt;/span>
- &lt;span style="color:#ae81ff">Work&lt;/span>
- &lt;span style="color:#ae81ff">Em&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>I&amp;rsquo;d take this YAML file and wrote a small script to re-serialize it as an ICS file in my CI/CD pipeline.&lt;/p>
&lt;p>This worked for a while, but it got unweildly. Hand-writing YAML is fine for prototyping, but at scale it was too frequent that I would make mistakes, and this was a lot of work for what should be a fairly low-effort exercise. I needed a new solution.&lt;/p>
&lt;h1 id="architecture">Architecture&lt;/h1>
&lt;p>For my new solution, I knew I would need to move away from my static solution and would need to run something hosted. Even though that would cost me more, I&amp;rsquo;ve come to accept that moving off of big tech will eventually require me to host my own solutions for a variety of needs. So I decided to jump into the world of CalDAV.&lt;/p>
&lt;p>CalDAV is an extension of the WebDAV distributed authoring specification with specific functionality relevant to calendar applications. WebDAV was an idea that emerged from the 90s, when web development was still very synchronous and web development felt more like software development. Nevertheless, it&amp;rsquo;s one of the few available solutions for running a self-hosted calendaring system.&lt;/p>
&lt;p>Aside: This is an area begging for disruption. Just look at &lt;a href="https://en.wikipedia.org/wiki/Comparison_of_CalDAV_and_CardDAV_implementations">this list of CalDAV and CardDAV implementations&lt;/a> on Wikipedia. It&amp;rsquo;s bleak out there, folks. No wonder why data aggregators under the guise of third party tools like Calendly and Doodle are so popular. The landscape is flat awful. Anyways.&lt;/p>
&lt;p>With a CalDAV server, I can connect to it with frontend apps of my choosing from multiple devices. This will allow me to view and manage events from my laptop, phone, or whatever. But few CalDAV servers allow authentication-free subscriptions to the calendar with any ease. So I&amp;rsquo;ll need to have a script that regularly polls the server, extracts the events, and publishes them as an iCal file through my website.&lt;/p>
&lt;p>Moreover, I&amp;rsquo;ll want to connect to various other data sources, some of which I control and others I do not. These include my flight tracker (self-hosted), my email (paid hosting), and my language school (external). The flow that I&amp;rsquo;ll build will look something like this:&lt;/p>
&lt;ul>
&lt;li>poll data sources for events&lt;/li>
&lt;li>publish events programmatically to CalDAV&lt;/li>
&lt;li>fetch all events from CalDAV and write to an .ics file&lt;/li>
&lt;li>serve .ics file over HTTP&lt;/li>
&lt;/ul>
&lt;p>To accomplish this, I&amp;rsquo;ve designed an architecture that looks something like this:&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/cal-arch.png" alt="Calendar system architecture">&lt;/p>
&lt;h1 id="setting-up-baïkal">Setting up Baïkal&lt;/h1>
&lt;p>My tool of choice was &lt;a href="https://sabre.io/baikal/">Baïkal&lt;/a>, a lightweight, self-hostable CalDAV (and CardDAV) server for managing calendars and contacts. Setting up the service was easy with Docker Compose:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="color:#f92672">services&lt;/span>:
&lt;span style="color:#f92672">baikal&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">ckulka/baikal:0.9.5&lt;/span>
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;XXXX:80&amp;#34;&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">/mnt/baikal/data:/var/www/baikal/config&lt;/span>
- &lt;span style="color:#ae81ff">/mnt/baikal/data:/var/www/baikal/Specific&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;span style="color:#f92672">config&lt;/span>:
&lt;span style="color:#f92672">data&lt;/span>:
&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can configure Baïkal to use MySQL, but it also works fine with SQLLite, and this simplifies its administration. Set the port and modify the local volume if you want and start this with a simple &lt;code>docker compose up -d&lt;/code>.&lt;/p>
&lt;p>To make this available to the web, I&amp;rsquo;m running an nginx reverse proxy with a pretty basic configuration:&lt;/p>
&lt;pre tabindex="0">&lt;code>server {
server_name MYDOMAIN;
location / {
proxy_pass http://localhost:XXXX;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/caldav {
return 301 https://MYDOMAIN/dav.php;
}
listen 80;
listen [::]:80;
}
&lt;/code>&lt;/pre>&lt;p>Of course, I used Let&amp;rsquo;s Encrypt to get this served securely, but I omitted this for simplicity. If you want to do the same, replace &lt;code>MYDOMAIN&lt;/code> with whatever your subdomain/domain is.&lt;/p>
&lt;p>One note: you&amp;rsquo;ll notice the &lt;code>location&lt;/code> directive that performs a 301 redirect to &lt;code>dav.php&lt;/code>. This &lt;code>/.well-known/caldav&lt;/code> redirect is needed if you want to add this calendar to your iPhone or Mac calendar apps. When eventually setting up your calendar on MacOS or iOS, you&amp;rsquo;ll want to use manual settings, not automatic (and not advanced—I&amp;rsquo;m not sure why I couldn&amp;rsquo;t get the advanced settings to work when the manual settings worked fine).&lt;/p>
&lt;p>I set up DNS and used &lt;code>certbot&lt;/code> to generate a Let&amp;rsquo;s Encrypt certificate for my domain and it updated the nginx config file automatically.&lt;/p>
&lt;p>Once this is up and running, I was able to navigate to my domain in my browser to set up an admin account. From there, I configured a user for myself and created a calendar. Theoretically, I could create multiple calendars if I chose to, for instance if I wanted to have a special calendar for travel or whatnot. But I didn&amp;rsquo;t find that necessary, as my goal is at-most-once data entry. To get the URL for my calendar, I had to navigate through to my user page, click the &amp;ldquo;Calendars&amp;rdquo; button, and then found it under the little info icon.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/baikal.png" alt="Baikal admin page showing calendar icon">&lt;/p>
&lt;p>I hooked this up to my iOS and MacOS default calendar apps and everything went swimmingly.&lt;/p>
&lt;h1 id="setting-up-an-event-taxonomy">Setting up an event taxonomy&lt;/h1>
&lt;p>I&amp;rsquo;ll take a little detour here for another rant. The &lt;a href="https://icalendar.org/RFC-Specifications/iCalendar-RFC-5545/">iCalendar specification&lt;/a> includes a provision for &lt;a href="https://icalendar.org/iCalendar-RFC-5545/3-8-1-2-categories.html">an optional &lt;code>CATEGORIES&lt;/code> property&lt;/a> for the &lt;code>EVENT&lt;/code> component. The intention of this property appears to be to provide the ability for a user to categorize an event, such as an appointment, meeting, etc. This would be a really useful feature in a calendar frontend; I could easily search for and find a doctor appointment in a busy week, for instance. However, most frontends and calendar apps simply do not implement this feature in any way. MacOS Calendar does not. iOS Calendar does not. Google Calendar does not. Every tool I&amp;rsquo;ve used has completely ignored this otherwise useful field.&lt;/p>
&lt;p>I want to use this field.&lt;/p>
&lt;p>But there&amp;rsquo;s an issue with free text taxonimization: it sucks. It&amp;rsquo;s really hard to keep it consistent. It&amp;rsquo;s really hard to make it contextual meaningful while also being unambiguous, let alone universally understandable. So I need to do something about this.&lt;/p>
&lt;p>Since I&amp;rsquo;m going to need to write some python scripts to extract calendar events anyways, it makes sense that I could try to encode these event types in a data model. So I wrote a little data model for this using python enums, an excerpt of which is here, forgive the random German:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-python" data-lang="python">&lt;span style="color:#f92672">from&lt;/span> enum &lt;span style="color:#f92672">import&lt;/span> Enum
&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">TerminType&lt;/span>(Enum):
MEETUP &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>
CONFERENCE &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">2&lt;/span>
CLASS &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">3&lt;/span>
TRAINING &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">4&lt;/span>
APPOINTMENT &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">10&lt;/span> &lt;span style="color:#75715e"># values 10 or higher are set private for my work calendar&lt;/span>
MEETING &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">11&lt;/span>
EXAM &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">12&lt;/span>
HEARING &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">13&lt;/span>
INTERVIEW &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">14&lt;/span>
&lt;span style="color:#66d9ef">def&lt;/span> __str__(self):
&lt;span style="color:#66d9ef">return&lt;/span> self&lt;span style="color:#f92672">.&lt;/span>name
&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">CultureType&lt;/span>(Enum):
MOVIE &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>
CONCERT &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">2&lt;/span>
SPORTS &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">3&lt;/span>
MUSEUM &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">4&lt;/span>
ENTERTAINMENT &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">5&lt;/span>
&lt;span style="color:#66d9ef">def&lt;/span> __str__(self):
&lt;span style="color:#66d9ef">return&lt;/span> self&lt;span style="color:#f92672">.&lt;/span>name
&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">SocialType&lt;/span>(Enum):
&lt;span style="color:#f92672">...&lt;/span>
&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">AwayType&lt;/span>(Enum):
&lt;span style="color:#f92672">...&lt;/span>
&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">TransportType&lt;/span>(Enum):
&lt;span style="color:#f92672">...&lt;/span>
all_event_names &lt;span style="color:#f92672">=&lt;/span> set(TerminType&lt;span style="color:#f92672">.&lt;/span>_member_names_) \
&lt;span style="color:#f92672">.&lt;/span>union(set(CultureType&lt;span style="color:#f92672">.&lt;/span>_member_names_)) \
&lt;span style="color:#f92672">.&lt;/span>union(set(SocialType&lt;span style="color:#f92672">.&lt;/span>_member_names_)) \
&lt;span style="color:#f92672">.&lt;/span>union(set(AwayType&lt;span style="color:#f92672">.&lt;/span>_member_names_)) \
&lt;span style="color:#f92672">.&lt;/span>union(set(TransportType&lt;span style="color:#f92672">.&lt;/span>_member_names_))
&lt;/code>&lt;/pre>&lt;/div>&lt;p>There&amp;rsquo;s no real reason for breaking things down like this, except that it helps conceptually organize the types of events. Moreover, I do implement a little bit of hidden business logic: double-digit enum values are private by default for my work calendar.&lt;/p>
&lt;p>Building this taxonomy will help me to implement an &lt;em>ad hoc&lt;/em> solution to the problem described before: it will help me make events more searchable or visible at a glance for front-ends that allow you to color code events.&lt;/p>
&lt;h1 id="compiling-and-sharing-the-calendar">Compiling and sharing the calendar&lt;/h1>
&lt;p>I&amp;rsquo;ve said a few times that I want to do &amp;ldquo;at most once&amp;rdquo; data entry. This means that there are many events I don&amp;rsquo;t want to have to enter data for at all, such as scheduled classes with my online language school (which hosts an ICS file of my classes) or events extracted from my email. But to automate getting this data I need to poll these endpoints, as they don&amp;rsquo;t really publish events when new ones are added or old ones are deleted. This means I&amp;rsquo;ll need to write a little python script and hook it up to a cron job.&lt;/p>
&lt;p>The python script needs a few components:&lt;/p>
&lt;ul>
&lt;li>a component for fetching events from my email over IMAP;&lt;/li>
&lt;li>a component for extracting events from my flight tracker&amp;rsquo;s API;&lt;/li>
&lt;li>a component for fetching events from my language school&amp;rsquo;s hosted ICS files;&lt;/li>
&lt;li>a component for pushing all of these events to Baïkal; and&lt;/li>
&lt;li>a component for fetching all events from Baïkal and re-serializing them to one or more sharable ICS files published undiscoverably on the web.&lt;/li>
&lt;/ul>
&lt;p>The IMAP part is really nice, this provides Google Calendar-like functionality to this system. If someone emails me a calendar invite, this script fetches it and adds it to my calendar automatically.&lt;/p>
&lt;p>This is a lot of code, most of it ad hoc, I won&amp;rsquo;t share it here all but it&amp;rsquo;s not so hard to write. What I will share is the entrypoint script for the cron job:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-python" data-lang="python">&lt;span style="color:#f92672">from&lt;/span> enum &lt;span style="color:#f92672">import&lt;/span> Enum
&lt;span style="color:#f92672">from&lt;/span> ics &lt;span style="color:#f92672">import&lt;/span> Calendar, Event
&lt;span style="color:#f92672">import&lt;/span> event_types &lt;span style="color:#66d9ef">as&lt;/span> Categories
&lt;span style="color:#f92672">import&lt;/span> airtrail
&lt;span style="color:#f92672">import&lt;/span> baikal
&lt;span style="color:#f92672">import&lt;/span> imap
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">is_work_public&lt;/span>(event : Event) &lt;span style="color:#f92672">-&amp;gt;&lt;/span> bool:
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">get_value&lt;/span>(type : Enum, category):
&lt;span style="color:#66d9ef">try&lt;/span>:
&lt;span style="color:#66d9ef">return&lt;/span> type[category]&lt;span style="color:#f92672">.&lt;/span>value &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">10&lt;/span>
&lt;span style="color:#66d9ef">except&lt;/span>:
&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">False&lt;/span>
&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">not&lt;/span> event&lt;span style="color:#f92672">.&lt;/span>categories:
&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">False&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> all((get_value(Categories&lt;span style="color:#f92672">.&lt;/span>TerminType, c) &lt;span style="color:#f92672">|&lt;/span>
get_value(Categories&lt;span style="color:#f92672">.&lt;/span>AwayType, c) &lt;span style="color:#f92672">|&lt;/span>
get_value(Categories&lt;span style="color:#f92672">.&lt;/span>TransportType, c))
&lt;span style="color:#66d9ef">for&lt;/span> c &lt;span style="color:#f92672">in&lt;/span> event&lt;span style="color:#f92672">.&lt;/span>categories)
&lt;span style="color:#66d9ef">if&lt;/span> __name__ &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;__main__&amp;#34;&lt;/span>:
family &lt;span style="color:#f92672">=&lt;/span> Calendar()
work &lt;span style="color:#f92672">=&lt;/span> Calendar()
&lt;span style="color:#75715e"># these add events to baikal directly&lt;/span>
airtrail&lt;span style="color:#f92672">.&lt;/span>fetch_airtrail_events()
imap&lt;span style="color:#f92672">.&lt;/span>fetch_email_events()
&lt;span style="color:#75715e"># I left out my language school fetcher because it&amp;#39;s not active at the moment&lt;/span>
events &lt;span style="color:#f92672">=&lt;/span> baikal&lt;span style="color:#f92672">.&lt;/span>fetch_remote_events()
&lt;span style="color:#66d9ef">for&lt;/span> event &lt;span style="color:#f92672">in&lt;/span> events:
family&lt;span style="color:#f92672">.&lt;/span>events&lt;span style="color:#f92672">.&lt;/span>add(event)
&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#e6db74">&amp;#34;work.email@example.com&amp;#34;&lt;/span> &lt;span style="color:#f92672">not&lt;/span> &lt;span style="color:#f92672">in&lt;/span> event&lt;span style="color:#f92672">.&lt;/span>serialize():
&lt;span style="color:#66d9ef">if&lt;/span> is_work_public(event):
event&lt;span style="color:#f92672">.&lt;/span>classification &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;PUBLIC&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">else&lt;/span>:
event&lt;span style="color:#f92672">.&lt;/span>classification &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;PRIVATE&amp;#34;&lt;/span>
work&lt;span style="color:#f92672">.&lt;/span>events&lt;span style="color:#f92672">.&lt;/span>add(event)
&lt;span style="color:#66d9ef">try&lt;/span>:
&lt;span style="color:#66d9ef">with&lt;/span> open(&lt;span style="color:#e6db74">&amp;#34;/www/calendar/emilygorcenski.ics&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wt&amp;#34;&lt;/span>) &lt;span style="color:#66d9ef">as&lt;/span> ics_file:
ics_file&lt;span style="color:#f92672">.&lt;/span>write(family&lt;span style="color:#f92672">.&lt;/span>serialize())
&lt;span style="color:#66d9ef">with&lt;/span> open(&lt;span style="color:#e6db74">&amp;#34;/www/calendar/emilygorcenski_work.ics&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wt&amp;#34;&lt;/span>) &lt;span style="color:#66d9ef">as&lt;/span> ics_file:
ics_file&lt;span style="color:#f92672">.&lt;/span>write(work&lt;span style="color:#f92672">.&lt;/span>serialize())
&lt;span style="color:#66d9ef">except&lt;/span>:
&lt;span style="color:#66d9ef">pass&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>And the script to interface with Baïkal:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-python" data-lang="python">&lt;span style="color:#f92672">import&lt;/span> os
&lt;span style="color:#f92672">import&lt;/span> re
&lt;span style="color:#f92672">import&lt;/span> requests
&lt;span style="color:#f92672">import&lt;/span> xml.etree.ElementTree &lt;span style="color:#66d9ef">as&lt;/span> ET
&lt;span style="color:#f92672">from&lt;/span> dotenv &lt;span style="color:#f92672">import&lt;/span> load_dotenv
&lt;span style="color:#f92672">from&lt;/span> ics &lt;span style="color:#f92672">import&lt;/span> Calendar, Event
&lt;span style="color:#f92672">from&lt;/span> requests.auth &lt;span style="color:#f92672">import&lt;/span> HTTPDigestAuth
&lt;span style="color:#f92672">from&lt;/span> event_types &lt;span style="color:#f92672">import&lt;/span> all_event_names
load_dotenv()
&lt;span style="color:#75715e"># Baikal server information&lt;/span>
USERNAME &lt;span style="color:#f92672">=&lt;/span> os&lt;span style="color:#f92672">.&lt;/span>environ[&lt;span style="color:#e6db74">&amp;#34;BAIKAL_USERNAME&amp;#34;&lt;/span>]
PASSWORD &lt;span style="color:#f92672">=&lt;/span> os&lt;span style="color:#f92672">.&lt;/span>environ[&lt;span style="color:#e6db74">&amp;#34;BAIKAL_PASSWORD&amp;#34;&lt;/span>]
BASE_URL &lt;span style="color:#f92672">=&lt;/span> os&lt;span style="color:#f92672">.&lt;/span>environ[&lt;span style="color:#e6db74">&amp;#34;BAIKAL_URL&amp;#34;&lt;/span>]
HEADERS &lt;span style="color:#f92672">=&lt;/span> {
&lt;span style="color:#e6db74">&amp;#34;Content-Type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;application/xml; charset=utf-8&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Depth&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;infinity&amp;#34;&lt;/span>
}
PROPFIND_BODY &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;
&lt;/span>&lt;span style="color:#e6db74">&amp;lt;d:propfind xmlns:d=&amp;#34;DAV:&amp;#34; xmlns:c=&amp;#34;urn:ietf:params:xml:ns:caldav&amp;#34;&amp;gt;
&lt;/span>&lt;span style="color:#e6db74"> &amp;lt;d:prop&amp;gt;
&lt;/span>&lt;span style="color:#e6db74"> &amp;lt;d:displayname/&amp;gt;
&lt;/span>&lt;span style="color:#e6db74"> &amp;lt;c:calendar-data/&amp;gt;
&lt;/span>&lt;span style="color:#e6db74"> &amp;lt;/d:prop&amp;gt;
&lt;/span>&lt;span style="color:#e6db74">&amp;lt;/d:propfind&amp;gt;
&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">categorize&lt;/span>(event : Event) &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Event:
&lt;span style="color:#75715e"># ignores any user-input values that we don&amp;#39;t care about, and focuses on what we do&lt;/span>
&lt;span style="color:#75715e"># this is to convert the description field in an event into categories fields&lt;/span>
&lt;span style="color:#75715e"># this allows manual categorization by editing the event description&lt;/span>
&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">not&lt;/span> event&lt;span style="color:#f92672">.&lt;/span>description:
&lt;span style="color:#66d9ef">return&lt;/span> event
category_match &lt;span style="color:#f92672">=&lt;/span> re&lt;span style="color:#f92672">.&lt;/span>search(&lt;span style="color:#e6db74">r&lt;/span>&lt;span style="color:#e6db74">&amp;#39;\b(CATEGORIES:)(\S+)\b&amp;#39;&lt;/span>, event&lt;span style="color:#f92672">.&lt;/span>description)
&lt;span style="color:#66d9ef">if&lt;/span> category_match:
label &lt;span style="color:#f92672">=&lt;/span> category_match&lt;span style="color:#f92672">.&lt;/span>group(&lt;span style="color:#ae81ff">1&lt;/span>) &lt;span style="color:#75715e"># this should always be &amp;#34;CATEGORIES:&amp;#34;&amp;#34;&lt;/span>
cat_list &lt;span style="color:#f92672">=&lt;/span> category_match&lt;span style="color:#f92672">.&lt;/span>group(&lt;span style="color:#ae81ff">2&lt;/span>)
categories &lt;span style="color:#f92672">=&lt;/span> set(cat_list&lt;span style="color:#f92672">.&lt;/span>split(&lt;span style="color:#e6db74">&amp;#34;,&amp;#34;&lt;/span>))
event&lt;span style="color:#f92672">.&lt;/span>categories &lt;span style="color:#f92672">=&lt;/span> categories&lt;span style="color:#f92672">.&lt;/span>intersection(all_event_names)
event&lt;span style="color:#f92672">.&lt;/span>description &lt;span style="color:#f92672">=&lt;/span> event&lt;span style="color:#f92672">.&lt;/span>description \
&lt;span style="color:#f92672">.&lt;/span>replace(label &lt;span style="color:#f92672">+&lt;/span> cat_list, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>) \
&lt;span style="color:#f92672">.&lt;/span>replace(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>) \
&lt;span style="color:#f92672">.&lt;/span>strip()
&lt;span style="color:#66d9ef">return&lt;/span> event
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">fetch_remote_events&lt;/span>() &lt;span style="color:#f92672">-&amp;gt;&lt;/span> list[Event]:
response &lt;span style="color:#f92672">=&lt;/span> requests&lt;span style="color:#f92672">.&lt;/span>request(&lt;span style="color:#e6db74">&amp;#34;PROPFIND&amp;#34;&lt;/span>,
BASE_URL,
headers&lt;span style="color:#f92672">=&lt;/span>HEADERS,
data&lt;span style="color:#f92672">=&lt;/span>PROPFIND_BODY,
auth&lt;span style="color:#f92672">=&lt;/span>HTTPDigestAuth(USERNAME, PASSWORD))
&lt;span style="color:#66d9ef">if&lt;/span> response&lt;span style="color:#f92672">.&lt;/span>ok:
root &lt;span style="color:#f92672">=&lt;/span> ET&lt;span style="color:#f92672">.&lt;/span>fromstring(response&lt;span style="color:#f92672">.&lt;/span>content)
propstats &lt;span style="color:#f92672">=&lt;/span> [r&lt;span style="color:#f92672">.&lt;/span>find(&lt;span style="color:#e6db74">&amp;#39;&lt;/span>&lt;span style="color:#e6db74">{DAV:}&lt;/span>&lt;span style="color:#e6db74">propstat&amp;#39;&lt;/span>)
&lt;span style="color:#66d9ef">for&lt;/span> r &lt;span style="color:#f92672">in&lt;/span> root&lt;span style="color:#f92672">.&lt;/span>findall(&lt;span style="color:#e6db74">&amp;#39;&lt;/span>&lt;span style="color:#e6db74">{DAV:}&lt;/span>&lt;span style="color:#e6db74">response&amp;#39;&lt;/span>)]
calendar_data &lt;span style="color:#f92672">=&lt;/span> [p
&lt;span style="color:#f92672">.&lt;/span>find(&lt;span style="color:#e6db74">&amp;#39;&lt;/span>&lt;span style="color:#e6db74">{DAV:}&lt;/span>&lt;span style="color:#e6db74">prop&amp;#39;&lt;/span>)
&lt;span style="color:#f92672">.&lt;/span>find(&lt;span style="color:#e6db74">&amp;#39;{urn:ietf:params:xml:ns:caldav}calendar-data&amp;#39;&lt;/span>)
&lt;span style="color:#66d9ef">for&lt;/span> p &lt;span style="color:#f92672">in&lt;/span> filter(&lt;span style="color:#66d9ef">lambda&lt;/span> x: x &lt;span style="color:#f92672">is&lt;/span> &lt;span style="color:#f92672">not&lt;/span> &lt;span style="color:#66d9ef">None&lt;/span>, propstats)]
events &lt;span style="color:#f92672">=&lt;/span> [categorize(event)
&lt;span style="color:#66d9ef">for&lt;/span> data &lt;span style="color:#f92672">in&lt;/span> filter(&lt;span style="color:#66d9ef">lambda&lt;/span> x: x &lt;span style="color:#f92672">is&lt;/span> &lt;span style="color:#f92672">not&lt;/span> &lt;span style="color:#66d9ef">None&lt;/span>, calendar_data)
&lt;span style="color:#66d9ef">for&lt;/span> event &lt;span style="color:#f92672">in&lt;/span> Calendar(data&lt;span style="color:#f92672">.&lt;/span>text)&lt;span style="color:#f92672">.&lt;/span>events]
&lt;span style="color:#66d9ef">return&lt;/span> events
&lt;span style="color:#66d9ef">return&lt;/span> []
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">add_event&lt;/span>(filename : str, event_ics : str):
header &lt;span style="color:#f92672">=&lt;/span> {
&lt;span style="color:#e6db74">&amp;#34;Content-Type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;text/calendar; charset=utf-8&amp;#34;&lt;/span>
}
event_ics &lt;span style="color:#f92672">=&lt;/span> event_ics&lt;span style="color:#f92672">.&lt;/span>replace(&lt;span style="color:#e6db74">&amp;#34;METHOD:REQUEST&lt;/span>&lt;span style="color:#ae81ff">\r\n&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>)
r &lt;span style="color:#f92672">=&lt;/span> requests&lt;span style="color:#f92672">.&lt;/span>put(&lt;span style="color:#e6db74">f&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#e6db74">{&lt;/span>BASE_URL&lt;span style="color:#e6db74">}{&lt;/span>filename&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>,
data&lt;span style="color:#f92672">=&lt;/span>event_ics,
headers&lt;span style="color:#f92672">=&lt;/span>header,
auth&lt;span style="color:#f92672">=&lt;/span>HTTPDigestAuth(USERNAME, PASSWORD))
&lt;span style="color:#66d9ef">return&lt;/span> r&lt;span style="color:#f92672">.&lt;/span>status_code
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note how I make sure that certain kinds of events (e.g. doctor appointments) are marked private and serialized to a separate file in my work calendar.&lt;/p>
&lt;p>I then set up a redirect in nginx for serving these files via an unfindable URL, generated from a random, hashed and salted string.&lt;/p>
&lt;p>I run this via a cron job every 15 minutes.&lt;/p>
&lt;h1 id="sharing-my-events-with-on-my-work-calendar">Sharing my events with on my work calendar&lt;/h1>
&lt;p>The whole point of this exercise wasn&amp;rsquo;t just that &lt;em>I&lt;/em> could see events, but also that any events I put in my calendar will block my work calendar and be visible to coworkers so they know if I&amp;rsquo;m on a flight or traveling in another city. To do that, I need to copy these events to my work calendar.&lt;/p>
&lt;p>This is a bit of an irony, because this whole exercise started when I was trying to &lt;em>reduce&lt;/em> my dependency on Google Calendar. However, in fairness, Google Calendar is a choice of my workplace, and it&amp;rsquo;s not something &lt;em>I&lt;/em> depend on outside of work. I&amp;rsquo;m not thrilled to give the data to Google, but at least I can walk away from them easily if I choose to.&lt;/p>
&lt;p>To accomplish this, I&amp;rsquo;m using Google Script Engine and a modified version of &lt;a href="https://github.com/derekantrican/GAS-ICS-Sync">this open source script&lt;/a>. In all honesty, I struggle with how this Javascript code is organized, but it gets the job done with minimal difficulty. I did modify this to read from the calendar &lt;code>CATEGORIES&lt;/code> property and color code my calendar. The result means it&amp;rsquo;s really easy to parse my calendar at a glance—obviously I&amp;rsquo;m only sharing a small snippet of non-sensitive information.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/cal-colors.png" alt="Color coded blocks on a calendar showing a conference in green, a meeting in blue, and a flight in lavender">&lt;/p>
&lt;p>I have this Google Script running on 30 minute intervals.&lt;/p>
&lt;h1 id="conclusions">Conclusions&lt;/h1>
&lt;p>I&amp;rsquo;ve been hacking around with this system for the last 6 months or so and making small tweaks and additions here or there in the meanwhile. I have to say, it works really great. The lastest update I made was integrating Airtrail via API. Now, when I book a flight, I enter the data into my flight tracker and within 15 minutes it&amp;rsquo;s added to my calendar, and within the hour it&amp;rsquo;s automatically copied to my work calendar. This is a huge quality of life improvement that saves me a ton of time in logistics management with my complicated travel requirements.&lt;/p>
&lt;p>The overall cost of this system is pretty minimal. I&amp;rsquo;d imagine you can set this up and run it easily from a NAS at home if you want, but I opt to keep my data safely protected in Switzerland, so I subscribe to about $100 monthly of server time to run my websites and all my integrations. That&amp;rsquo;s a bit overkill—I can definitely optimize these costs and will do so over time, but the ease of getting everything set up on a docker host in a VM instance on a hosting provider was worth the extra money. And I&amp;rsquo;m easily saving $100 monthly in time just for making managing my schedule easier.&lt;/p>
&lt;p>It&amp;rsquo;s not a perfect solution, but damn if it&amp;rsquo;s better than anything else I&amp;rsquo;ve tried yet.&lt;/p>
&lt;p>Let me know if you ever try something similar!&lt;/p></description></item><item><title>It Could Happen Here: The Age of Cowards and What Happens Next</title><link>https://podcasts.apple.com/au/podcast/the-age-of-cowards-and-what-happens-next/id1449762156?i=1000684794845</link><pubDate>Tue, 21 Jan 2025 07:58:12 -0500</pubDate><guid>https://emilygorcenski.com/post/it-could-happen-here-the-age-of-cowards-and-what-happens-next/</guid><image><url>https://emilygorcenski.com/photo-gallery/malta-2021/Filfla%20at%20Dawn.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/malta-2021/Filfla%20at%20Dawn.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/malta-2021/Filfla%20at%20Dawn.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/malta-2021/Filfla%20at%20Dawn.jpg" width="600"/></media:content><description>&lt;p>Robert Evans invited me to read my poem &amp;ldquo;The Time of Cowards&amp;rdquo; on the episode covering Trump&amp;rsquo;s 2025 inauguration, and I was honored to do so.&lt;/p></description></item><item><title>The Time of Cowards</title><link>https://emilygorcenski.com/post/the-time-of-cowards/</link><pubDate>Mon, 20 Jan 2025 16:07:59 -0500</pubDate><guid>https://emilygorcenski.com/post/the-time-of-cowards/</guid><image><url>https://emilygorcenski.com/photo-gallery/malta-2021/Summer%20Solstice%20%C4%A6a%C4%A1ar%20Qim-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/malta-2021/Summer%20Solstice%20%C4%A6a%C4%A1ar%20Qim-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/malta-2021/Summer%20Solstice%20%C4%A6a%C4%A1ar%20Qim-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/malta-2021/Summer%20Solstice%20%C4%A6a%C4%A1ar%20Qim-thumb.jpg" width="600"/></media:content><description>&lt;p>A poem of our times originally written as a Bluesky thread&lt;/p>
&lt;p>It is the time of the coward.&lt;br />
It is the age of the liar.&lt;br />
And greed, and avarice, and lost boys&lt;br />
and a dopamine hit and fractals&lt;br />
And velocity and velocity and velocity and&lt;br />
go go go don’t stop&lt;br />
don’t stop to realize the indecency,&lt;br />
the disloyalty, the dishonor, the discreditability, the parsimony,&lt;br />
the hoards hoarded behind the gates the gatekeepers keep.&lt;br />
This is the dawn of masculine energy.&lt;br />
Not the energy your father taught you,&lt;br />
about measuring twice and cutting once,&lt;br />
about picking yourself up,&lt;br />
and how the sting of hydrogen peroxide&lt;br />
means it’s working.&lt;br />&lt;/p>
&lt;p>Or your grandfather,&lt;br />
who spent the days you spent smoking weed behind a 7-11 serving on a torpedo boat&lt;br />
waiting for the sharks,&lt;br />
who never failed to stop to lend a hand to those in need&lt;br />
or say grace before dinner&lt;br />
or to help you with your math homework&lt;br />
or teach you not to wear a necktie at a lathe.&lt;br />&lt;/p>
&lt;p>This is the year of cutting once and never measuring,&lt;br />
pencil in the blueprints with whatever comes out,&lt;br />
it’s faster that way.&lt;br />
The season of hypocrites and not of confidence&lt;br />
but confidence men, the masculine energy of the con,&lt;br />
the scam, the bamboozle, the fraud.&lt;br />
The pulling of the rug and the begging of the question.&lt;br />&lt;/p>
&lt;p>Now is the killing hour,&lt;br />
the clock hands float over the blood in the streets&lt;br />
and the rage&lt;br />
and the rage&lt;br />
and the uncorked hatred overflows,&lt;br />
the minutes of impotence expanding, overflowing, fizzling.&lt;br />
Deception gives way to more deception.&lt;br />
Not a single promise is kept.&lt;br />&lt;/p>
&lt;p>Rapaciousness and rape and abandonment&lt;br />
and the cutting of corners and KPIs,&lt;br />
a newborn died in a baby box in Italy&lt;br />
because the alarm sensor didn’t work.&lt;br />&lt;/p>
&lt;p>It is an honorless time. A time of only one question:&lt;br />
not how or may or can or if or whether but when.&lt;br />
How soon.&lt;br />
No legacy, no history, no reputation.&lt;br />
Build the factories then abandon them. The soil keeps the memory.&lt;br />
And the burn scars and the floodwaters and the clear windshields&lt;br />
where the splatters of bug guts used to be and&lt;br />
the images in the twenty year old magazines still in the rack&lt;br />
in the guest bathrooms never used&lt;br />
that showed how children used to go sledding&lt;br />
and maybe the house is too big, no one comes by.&lt;br />&lt;/p>
&lt;p>I shoveled the neighbor’s walk in the snow&lt;br />
and salted it so he didn’t slip on the ice&lt;br />
and could receive his mail; he’s an old man,&lt;br />
one of the few Black men left living in this neighborhood that was theirs once.&lt;br />
He sent me a letter, it went all the way to Richmond to come to my door.&lt;br />&lt;/p>
&lt;p>He’s the last man with dignity.&lt;br />
In the letter he told me he has a new toy,&lt;br />
a laptop which makes him happy because&lt;br />
he is a big lover of history&lt;br />
and he can go online and read about it.&lt;br />
And I weep for this last dignified man&lt;br />
who proudly wears a cap honoring his service&lt;br />
because this is the era of synthesis and generation and revision and&lt;br />
content content content&lt;br />
and inverifiability and manipulation.&lt;br />
This is the pseudocene.&lt;br />&lt;/p>
&lt;p>I bought a bottle of wine from a centuries old vineyard&lt;br />
destroyed in a devastating flood,&lt;br />
an unsellable bottle on the retail market,&lt;br />
a fundraiser souvenir.&lt;br />
I kept it as a memento mori of our changing world,&lt;br />
a mud-covered reminder&lt;br />
of how we all must work&lt;br />
little by little&lt;br />
to give the world forward.&lt;br />
It broke when I tried to move it home&lt;br />
on my seventy-second flight of the year.&lt;br />
It is the decade of hypocrisy&lt;br />
even for those who can see hypocrisy.&lt;br />&lt;/p>
&lt;p>They made me a Vice President and&lt;br />
with every title change I move farther from God,&lt;br />
a God I never believed in;&lt;br />
I was raised in New England towns named for biblical places&lt;br />
by people who thought working the rocky soil brought them closer to God.&lt;br />
The only holy men left are those in the fields.&lt;br />
Bozrah and Lebanon and Gilead and Hebron.&lt;br />
The people who named those towns committed a genocide to name them.&lt;br />
And four hundred years later, in their namesakes, the same.&lt;br />
It is the epoch of cadaverine.&lt;br />&lt;/p>
&lt;p>It is the night of bonfires and Feuersprüche,&lt;br />
the twilight of stories that dared and poems and albums&lt;br />
and I tried to sell a book and&lt;br />
I learned that there&amp;rsquo;s only interest in a book when you put yourself into it to be consumed,&lt;br />
words are calories measured in the amount of heat they give a flame.&lt;br />&lt;/p>
&lt;p>I walked over the Westminster Bridge one night with a journalist&lt;br />
who told me that they can&amp;rsquo;t publish two good stories at a time&lt;br />
because if one goes viral it punishes the other,&lt;br />
the arcane footfalls of the algorithm dance.&lt;br />&lt;/p>
&lt;p>It is the sunset of craft and skills handed down and heritage,&lt;br />
the waxing of a crass and pandering moon,&lt;br />
of pantomime, a frictionless night,&lt;br />
a night where nothing dared, nothing gained.&lt;br />
A night of shutters and locks.&lt;br />
These are dark ages, ages of embarrassing the future.&lt;br />
There is a shame here that penance cannot satisfy.&lt;br />
The sturdy, empty shelves;&lt;br />
the blue hyperlinks to nowhere.&lt;br />
And a generation lost must be lost because profit cannot be taken from an idea.&lt;br />&lt;/p>
&lt;p>I think of the mimeograph machines&lt;br />
stuck under the floorboards of the Solidarność houses&lt;br />
and the punks and the whores who copied radical zines&lt;br />
in public library Xerox machines&lt;br />
and the Yugoslavian Galaksija&lt;br />
and the novels now considered some of the greatest of all time&lt;br />
once banned for obscenity.&lt;br />&lt;/p>
&lt;p>In Ceaușescu&amp;rsquo;s house the original TV remains,&lt;br />
the revolutionaries didn&amp;rsquo;t bother to steal it&lt;br />
because there were only 30 minutes of broadcast TV each day.&lt;br />
In the crepuscular light birds dare to sing&lt;br />
even though they know the cats hunt below.&lt;br />
In Vilnius there is a tile in a square,&lt;br />
they say if you make a wish and spin around it three times&lt;br />
your wish will come true.&lt;br />
At this tile a human chain formed&lt;br />
and spanned three countries&lt;br />
and they sang.&lt;br />
At Ħaġar Qim on the right day the morning light&lt;br />
filters in over the lonesome island of Filfla&lt;br />
and fills in a hole drilled in the sandstone&lt;br />
five thousand years ago, and has done so unfailingly&lt;br />
over the millennia that have seen countless empires&lt;br />
rise and fall. And the solstice of&lt;br />
retribution will come again.&lt;br />&lt;/p></description></item><item><title>On Truth</title><link>https://emilygorcenski.com/post/on-truth/</link><pubDate>Sat, 04 Jan 2025 23:39:59 -0500</pubDate><guid>https://emilygorcenski.com/post/on-truth/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/gunner.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/gunner.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/gunner.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/gunner.jpeg" width="600"/></media:content><description>&lt;p>We are no longer in a culture war, we are fighting instead an epistemological war, where authoritarians seek to replace process with diktat: why truth is a gradient and not a boolean.&lt;/p>
&lt;p>Captain Jay Zeamer, Jr., as aviation historian Martin Caidin tells it, was a barely-competent aviator who struggled to earn his pilot wings and fell asleep in the copilot seat during combat missions. Eventually passing his check flight, he was hardly trusted with a fresh off the line B-17 and cobbled together a flying rig from spare parts, equipping it with a &lt;a href="https://en.wikipedia.org/wiki/Trimetrogon">trimetrogon&lt;/a> camera setup and a heavier-than-normal complement of .50-caliber armaments. Together with an equally ragtag crew, Zeamer&amp;rsquo;s men were known as the Eager Beavers for their willingness to volunteer for difficult reconnaisance missions in the Pacific Theater of World War II.&lt;/p>
&lt;p>Photo recon missions were nasty affairs during the war. The B-17 Flying Fortress was designed with a heavy complement of hand- and turret-operated machine guns for defense. But its real defensive might came during bombing missions, when it was flying in a &lt;a href="https://en.wikipedia.org/wiki/Combat_box">combat box&lt;/a> of dozens of aircraft, each of them with overlapping arcs of fire that would help keep approaching enemy fighters at bay. For a recon mission, aircraft were usually sent up alone without either the benefit of a fighter escort or a combat box, hoping that the single plane would escape enemy notice, even as it flew high over enemy airfields laden with fighter planes. If noticed, the lumbering bomber was usually no match for the faster, more agile fighter planes flown by pilots eager to score a kill.&lt;/p>
&lt;p>It was one such mission in June of 1943 that Zeamer and his crew volunteered for, flying over the Buka airfield on Bougainville Island to take photographs that would help inform a future raid. Zeamer&amp;rsquo;s B-17, serial number 41-2666, was on a course straight and level over the airfield hoping to get high quality photographs when it was noticed by Japanese air defense, and eight fighters raced to intercept the flight.&lt;/p>
&lt;p>Caiden writes thrillingly about how Zeamer&amp;rsquo;s crew with its nonstandard complement of machine guns valiantly held off attack after attack for nearly 40 minutes, the bomber receiving punishing blows of 20mm cannon rounds. Eager Beavers gunners claimed four kills while the pilots, having completed the photo pass, were finally able to maneuver his ramshackle aircraft defensively to avoid further damage. Japanese pilots had done extensive damage to the chin of the aircraft and, not knowing that Zeamer had installed an additional fixed .50-caliber machine gun to fire through the nose of the aircraft, flew lazily in front of the bomber after an attack pass. At one point, Zeamer even pushed the nose downward to gather speed, lined up a passing enemy fighter, and splashed it with his aftermarket modifcation, the fifth of five kills to be credited to &amp;ldquo;Old 666&amp;rdquo; that day. Running out of ammo after forty minutes of combat, the Japanese fighters returned home, unable to bring down the lone B-17.&lt;/p>
&lt;p>Despite the punishment, only bombardier Lt. Joseph Sarnoski was fatally wounded that day. Zeamer and his copilot, however, each were so seriously injured that the turret gunner, Sgt. Johnnie Able, had to fly the aircraft nearly 600 miles to the nearest allied base.&lt;/p>
&lt;p>For their bravery under fire, Sarnoski and Zeamer were awarded the Medal of Honor, and the Eager Beavers would become one of the most decorated flight crews in the history of the US Armed Forces.&lt;/p>
&lt;hr>
&lt;p>This story rattled around my brain for more than two decades, when I first read it in Caidin&amp;rsquo;s book, &lt;em>The B-17: The Flying Forts&lt;/em> as a young aeronautical engineering student. At the start of the COVID-19 pandemic, in a fit of homebound organizing and excessive wokeness, I donated the book along with my entire aviation history collection to Goodwill, an act I regretted almost as soon as I left the parking lot. I&amp;rsquo;d tried casually to find the story again in the last couple years, especially after having watched &lt;em>Masters of the Air&lt;/em> earlier this year. The story wasn&amp;rsquo;t on &lt;a href="https://en.wikipedia.org/wiki/Boeing_B-17_Flying_Fortress">the main Wikipedia entry for the B-17&lt;/a> and I couldn&amp;rsquo;t recall the details well enough to make a meaningful Google search. So I ponied up to buy the book again and just today started re-reading it for the first time in twenty years.&lt;/p>
&lt;p>Wikipedia&amp;rsquo;s been under attack recently. Billionaire narcissist and wannabe oligarch Elon Musk has fuelled his cult following into a frenzy trying to attack the site and its nonprofit owner. The Wikimedia Foundation, for its part, has proudly leaned into these attacks, advertising during its annual fund drive that it is emphatically &lt;em>not for sale&lt;/em>. Or in other words, that it is billionaire proof. Instead, right wing ideologues have renewed attacks&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> against former Wikimedia head and current NPR chief, &lt;a href="https://en.wikipedia.org/wiki/Katherine_Maher">Katherine Maher&lt;/a>,&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> exhuming and selectively clipping an old conference talk she gave where she explains the philosophy that Wikipedia advocates for in deciding what facts meet the standards for community-edited articles. In the clip she explains:&lt;/p>
&lt;blockquote>
&lt;p>But one of the most significant differences critical for moving from polarization to productivity, is that the Wikipedians who write these articles aren&amp;rsquo;t actually focused on finding the truth. They&amp;rsquo;re working for something that&amp;rsquo;s a little more attainable, which is the best of what we can know right now. And after seven years there, I actually believe that they&amp;rsquo;re onto something. That for our most tricky disagreements, that seeking the truth, and seeking to convince others of the truth, isn&amp;rsquo;t necessarily the best place to start. In fact, I think our reverence for the truth might have become a distraction that prevents us from finding a consensus and getting important things done.&lt;/p>
&lt;/blockquote>
&lt;p>She goes on:&lt;/p>
&lt;blockquote>
&lt;p>Now, none of this is to say that the truth isn&amp;rsquo;t important. The truth obviously exists. It&amp;rsquo;s at the core—or the search for the truth—is at the core of some of our greatest human achievements. It can animate and inspire us to do, learn and create great things. But I think in our messy human hearts, we also know that the truth is something of a fickle mistress and that the beauty of the truth is often in the struggle. It&amp;rsquo;s the reason that we have so many sublime chronicles of the human experience, because we have so many different truths to be explored&amp;hellip;. For many of us, truth is what we make when we merge facts about the world with our beliefs about the world. Each of us has our own truth and it&amp;rsquo;s probably a good one.&lt;/p>
&lt;/blockquote>
&lt;p>This excerpt comes from a &lt;a href="https://www.ted.com/talks/katherine_maher_what_wikipedia_teaches_us_about_balancing_truth_and_beliefs?subtitle=en">a TED talk&lt;/a> she gave in 2021, a talk in which Maher addresses the collapse of trust in public institutions due in the face of rising misinformation and disconnect between those institutions' agendas and the public&amp;rsquo;s needs. Her talk addresses how Wikipedia&amp;rsquo;s approach to information trends towards a collaborative model of consensus perspective and seeks to avoid an authoritative and prescriptive determination of fact. Wikipedia&amp;rsquo;s model has many flaws, but I would struggle to rank its epistemological approach near the top. Wikipedia seeks to converge towards a model where the information documented is collectively deemed to be &lt;em>as true as possible&lt;/em>, while leaving the door open for future challenges for these truths to be added, recontextualized, or refocused. While Wikipedia has a long way to go to be more open to various perspectives of truth, the embrace of an idea that truth is inherently incomplete, inherently dynamic, and inherently collaborative is a powerful one that pierces the breastplate of fascist thought. In other words, per the Wikipedian view truth is a &lt;em>process&lt;/em>, whereas to the authoritarian truth is a &lt;em>status&lt;/em>.&lt;/p>
&lt;hr>
&lt;p>Maher&amp;rsquo;s comments and Wikipedia&amp;rsquo;s philosophy challenge the authoritative and fascistic model of truthtelling preferred by Musk and his army of right wing and &amp;ldquo;Libertarian&amp;rdquo; followers. To an authoritarian, truth is a matter of prescription. Truth descends from authority and its perspective on objectivity. Authoritarians demand that there is a single truth and that there is a single source of truth: themselves. Maher&amp;rsquo;s insightful commentary on truth challenges this idea, as do her later comments that Wikipedia&amp;rsquo;s model encourages &lt;em>shared&lt;/em> power, that Wikipedia editors have to &amp;ldquo;let go of power&amp;hellip; you have to trust in their ability to manage the areas of their own expertise and interests.&amp;rdquo; For the American right, this represents a grave threat to their worldview, a worldview dependent on the manufacture of controversy, enemies, and the convenient truths necessary to sustain their authority.&lt;/p>
&lt;p>In his book &lt;em>A Brief History of Fascist Lies&lt;/em>, the Argentinian historian Federico Finchelstein writes in the chapter titled &amp;ldquo;Truth and Power&amp;rdquo;:&lt;/p>
&lt;blockquote>
&lt;p>In fascism, belief was intimately linked to an act of faith in the conductor. Fascism presented its leaders as living myths. While in Germany the &lt;a href="https://en.wikipedia.org/wiki/F%C3%BChrerprinzip">Führerprinzip&lt;/a> featured Hitler as the ultimate source of truth and authority, in Argentina, Spain, and beyond, fascists identified the politics of their leaders with a transcendental mythical truth. The truth of fascism connected the reality of the movement and its leaders with a mythical past of heroism, violence, and subordination. In fascist ideology, the leaders personified a direct link with this epochal continuum, establishing a unitary front with the people and the nation. In turn, the dictator was the definitive source of popular sovereignty, responsible only to himself&amp;hellip;. Fascists were obsessed with the infallibility of their leaders because, for them, the lack of error reflected the core divine truths of the mythical ideology that had incarnated in the heroic conductor of men.&lt;/p>
&lt;/blockquote>
&lt;p>In this sense, it&amp;rsquo;s perhaps more sensible to think of the deportment of the American Right in recent years less as a culture war and more as an epistemological one. Right wing mouthpieces aren&amp;rsquo;t simply trying to ensure that American values remain favorable to the cisgender, heterosexual white man, they are also trying to command the authority to &lt;em>define&lt;/em>. They are here to define what a woman is, how many genders there are, whether the January 6 rioters were terrorists or patriots, and the meaning of due process. This is why the American right cannot be engaged as an intellectual exercise. They are not opponents in a game of chess playing by accepted rules. They are seeking to define the colors of the squares and the rules by which the pieces move. While you&amp;rsquo;re playing the board, they&amp;rsquo;re playing the rulebook.&lt;/p>
&lt;hr>
&lt;p>The course of my professional duties has led me to deep introspection the last few years on what it means for something to be true. As a data consultant, one of the most challenging problems that my clients wish to address is how to reduce massive, decade-spanning enterprise datasets to become a &amp;ldquo;single source of truth.&amp;rdquo; I caution them against this idea, warning that the &lt;em>context&lt;/em> that reflects a truth may be useful for one person but useless or harmful to another. In my definition of data, a datum is nothing more than a measure of a universal process taken at a point in time. Permit me to illustrate with an example.&lt;/p>
&lt;p>Suppose you walk onto the jobsite of a house under construction and you take out your tape measure and measure a stud in a wall being built. The dimensions of that board represent your data for the state of that board at that point in time, which is the output of a process. Specifically, the length of the board emerges from the handiwork of the carpenter. But it also reflects something about the decisions of the architect and the building standards at that time. The data you collect reflects a fragment of several truths pertinent to several perspectives, even if we uncontroversially accept the quality and correctness of the measurement you took.&lt;/p>
&lt;p>Suppose you come back thirty years later and tear out the wall and measure the stud again. Its dimensions may have changed—from wear, from expansion and contraction—and these new measurements reflect the output of a new process and a new truth. Suppose in three decades time you find the board to be two inches shorter than expected. Is this anomaly a reflection of a failed understanding of the contemporary building codes? Perhaps the carpenter cut it wrong. Perhaps the builders received a variance, the record of which has long since been lost in the county archives. Not only has the truth of the board&amp;rsquo;s dimensionality changed, but so too has the truth of the antecedent processes that caused the board to be that length. Or in other words, the more narrowly we try to define truth, the more we necessarily limit the domain to which that truth applies. This example works well in the real world, of course: a standard North American dimensional 2x4 actually measures 1½&amp;quot; by 3½&amp;quot;. Every weekend warrior casually engages with the idea of multiple truths in every Home Depot trip they make.&lt;/p>
&lt;p>When I&amp;rsquo;m consulting my clients, I typically encourage them to spend less time and money attempting to build the canonical system to authoritively contain all truths for the future to come, and more time and money trying to better understand the contexts and optimize processes that create them. I genuinely believe that the more comfortable we get with embracing uncertainty, duality and incompleteness, and the more resistant we become to the urges for stasis and declarative authority, the more resilient we become, rejecting the need for faith in heroic leaders of men to guide us out of the rhetorical morass of our complex, contradictory reality. I am still talking about data platforms, but I am also talking about politics and history and my own relationship with my own past perceptions and beliefs.&lt;/p>
&lt;hr>
&lt;p>I got rid of my aviation collection a few years ago because I had come to recognize that the American mythology I had been brought up with greatly overstated and valorized my country&amp;rsquo;s role in World War II. I became aware of a different truth as I viewed the same history through a more seasoned lens. Nevertheless, I&amp;rsquo;m still the same kid who looks up every time I hear an airplane overhead, and I was thrilled to find the story of Captain Zeamer and his B-17 recounted in the opening chapter of Caidin&amp;rsquo;s 600-page tome.&lt;/p>
&lt;p>Equipped with the details of the mission, I went back to Wikipedia, eager to contribute the story of Zeamer&amp;rsquo;s air-to-air kill against a Zero to &lt;a href="https://en.wikipedia.org/wiki/Boeing_B-17_Flying_Fortress#Operational_history">the Operational History section of the B-17 page&lt;/a>. It&amp;rsquo;s a remarkable story, a salvaged B-17 engaging in a turning dogfight against a much more nimble and ably piloted Japanese Zero and, with an jury rigged machine gun shooting through the nose of the plane, without proper gunsights or training, scoring a kill.&lt;/p>
&lt;p>What I found when I did further research is that the story is told, not quite as Caidin tells it, on a number of other pages across the internet. The story of Zeamer&amp;rsquo;s acts are recounted in &lt;a href="https://www.cmohs.org/recipients/jay-zeamer-jr">his Medal of Honor citation&lt;/a>, on &lt;a href="https://www.afhistory.af.mil/FAQs/Fact-Sheets/Article/639630/zeamer-maj-jay-zeamer/">the Air Force&amp;rsquo;s history page&lt;/a>, on &lt;a href="https://en.wikipedia.org/wiki/Jay_Zeamer_Jr.">his Wikipedia page&lt;/a>, and again on the page dedicated to his aircraft, &lt;a href="https://en.wikipedia.org/wiki/Old_666">Old 666&lt;/a>. It&amp;rsquo;s only on this last page that I found a single sentence that opens the story to multiple versions of truth: &lt;a href="https://www.jacar.archives.go.jp/aj/meta/listPhoto?LANG=eng&amp;amp;BID=F2008061910221229873&amp;amp;ID=M2008061910221229876&amp;amp;REFCODE=C08051658400">Japanese records&lt;/a> also document Zeamer&amp;rsquo;s mission, but do not record any losses among their squadron, certainly not five losses, and not one to a gun mounted on the floor of the flight deck of a wounded four-engine bomber.&lt;/p>
&lt;p>The &lt;a href="https://en.wikipedia.org/wiki/Confirmation_and_overclaiming_of_aerial_victories_during_World_War_II">over-claiming of air-to-air kills&lt;/a> was common throughout the war among parties on all sides. It&amp;rsquo;s entirely possible that Zeamer&amp;rsquo;s crew mistook damaged fighters for destroyed ones or miscounted their totals in the heat of battle. It&amp;rsquo;s possible that they exaggerated their deeds and that the story didn&amp;rsquo;t happen as told. It&amp;rsquo;s also possible that the Japanese commander, shamed and embarassed at the inability to down a single undefended bomber with an entire squadron of crack pilots flying top-of-the-line fighters, simply failed to record the mission&amp;rsquo;s losses. Under authoritarian systems, accurate recapitulation of combat missions only works to the author&amp;rsquo;s benefit if the reported truth serves the authority&amp;rsquo;s goals; the necessity of domestic wartime propaganda emerges exactly from the inability or unwillingness to engage with complexities of the truths on the front. Much like the measurement of a 2x4, these reports are data, measurements of a process at points in time: processes such as the combat mission, but also processes like the pressures put on the soldiers and officers by the ministries and departments that oversee them and the populations that demand to hear that their side is winning. The complete truth of the mission is probably lost to time. What&amp;rsquo;s certain is that Jay Zeamer was badly injured during the mission, that he needed months of rehabilitation to recover from his wounds and walked with a cane for the rest of his life, until his death in 2007. It&amp;rsquo;s certain that he completed this difficult mission heroically regardless of whether or not he accomplished an unlikely air-to-air kill with a fixed machine gun in the nose of his bomber.&lt;/p>
&lt;p>I don&amp;rsquo;t speak Japanese and I can&amp;rsquo;t verify those records myself. As Maher puts it, I have to trust in more capable Wikipedians' &amp;ldquo;ability to manage the areas of their own expertise and interests.&amp;rdquo; In the many stories of Zeamer&amp;rsquo;s feat, it&amp;rsquo;s only on Wikipedia that it was possible for me to find a potentially contradictory narrative. Something happened in the skies over the Solomon Islands that June afternoon, and we may never be able to ascertain the exact details. But as long as we can accept that there are multiple truths to the story, and as long as we resist the belief that we must authoritatively declare only one of them to be the real truth, then we&amp;rsquo;re much more likely to be able to converge over time to the most complete representation of this story.&lt;/p>
&lt;p>The more willing we are to realize that objectivity can only be reflected from the aggregate of &lt;em>all&lt;/em> observations, the stronger our immunities will be to what Finchelstein calls &amp;ldquo;the imbrication of violence, myth, and the fantasy of an eternal truth.&amp;rdquo; To defeat fascism we will have to battle fascists on the fields of epistemology and reject each of their claims to authority over truth.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>Though the initial wave of attacks was months ago, I have seen renewed interest in this form of scaled harassment in the form of well-received posts floating around LinkedIn as recently as last week. This is no surprise, as Elon Musk has renewed his assault on Wikipedia recently.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2" role="doc-endnote">
&lt;p>I had the honor to meet and chat with Katherine over drinks at Mozfest in 2017, and found her to be both sharp and empathetic. The event took place just weeks after Unite the Right and I was still reeling in shock and trauma. I didn&amp;rsquo;t know her well then and don&amp;rsquo;t know her well now, but the brief conversation we had is one of the few positive memories I retained from the latter third of what was a very awful year.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description></item><item><title>The Anti-Trans Hate Machine</title><link>https://translash.org/projects/the-anti-trans-hate-machine/</link><pubDate>Fri, 27 Dec 2024 10:57:39 -0500</pubDate><guid>https://emilygorcenski.com/post/the-anti-trans-hate-machine/</guid><description>&lt;p>I was honored to come on Episode 2 of the new season of The Anti-Trans Hate Machine, looking into far-right paramilitary violence plays into anti-trans hate. Have a listen!&lt;/p></description></item><item><title>Under Luppen 14: Here we go again: Antifascist i Trumps USA</title><link>https://podcasts.apple.com/dk/podcast/14-here-we-go-again-antifascist-i-trumps-usa/id1613710756?i=1000677068431</link><pubDate>Sun, 24 Nov 2024 19:14:40 +0100</pubDate><guid>https://emilygorcenski.com/post/under-luppen-14-here-we-go-again-antifascist-i-trumps-usa/</guid><description>&lt;p>I joined Freja with Redox to talk about the state of US politics and white supremacy following Donald Trump&amp;rsquo;s second election. It&amp;rsquo;s partly in Danish, but my contributions are in English. Have a listen!&lt;/p></description></item><item><title>2024 Travelogue: Trans in Transylvania</title><link>https://emilygorcenski.com/post/2024-travelogue-trans-in-transylvania/</link><pubDate>Fri, 01 Nov 2024 22:57:14 +0100</pubDate><guid>https://emilygorcenski.com/post/2024-travelogue-trans-in-transylvania/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2024/arch.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2024/arch.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2024/arch.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2024/arch.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;ve always wanted to visit Transylvania, the land of my people. Wait&amp;hellip; that&amp;rsquo;s not what that means??&lt;/p>
&lt;p>My company&amp;rsquo;s been changing a lot this year, and one of the impacts of this change was I took on a wonderful team of data scientists and engineers in Romania. I&amp;rsquo;ve been a big fan of Romania, its culture and its language for the past few years, and so when my colleague there suggested it would be good for me to do a meet-and-greet at our three offices this past Spring, I leapt on the opportunity.&lt;/p>
&lt;p>The first leg of the trip took me to Cluj-Napoca. My best friend had visited there a few years prior and enjoyed it, but I had not yet been and wasn&amp;rsquo;t really sure what to expect. I arrived early at the city&amp;rsquo;s small airport which appeared to be under renovations. A big sign along the tarmac indicated that the work was funded as part of a European Union initiative. Off the plane, I headed straight to the exit to try to find a bus to the city. This was not as easy as I had hoped, as the bus stop is a short walk outside the airport&amp;rsquo;s charmingly small parking lot.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2024/opera.jpg" alt="The Cluj-Napoca Opera House">&lt;/p>
&lt;p>Cluj is tucked in between the rolling hills of the Carpathian mountains, and as I rode the bus city inwards, I marveled at how the city reminded me of being in the Shenandoah Valley to some extent. Coming into the city, I walked ten minutes from the bus stop along one of those broad, straight communist boulevards until I found my hotel. Gathering my bearings, I decided to stroll to the city center.&lt;/p>
&lt;p>While I was there, the Transylvanian International Film Festival was taking place, and the classically european city center was bustling. I walked around and soaked in the mixture of Baroque architecture along with well-preserved Brutalist pieces. I got the sense that Cluj prided itself on being a culture center of Romania, and crowds were gathering around street performers and buskers. Bucharest was once called &amp;ldquo;Little Paris of the East,&amp;rdquo; but as I walked around Cluj I couldn&amp;rsquo;t help but think that the Transylvanian city felt more like France than the capital.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2024/brutal.jpg" alt="The Cluj-Napoca Opera House">&lt;/p>
&lt;p>After a visit with my colleagues in our small office in Cluj, I headed off with my coworker to the airport to head over to Bucharest, Romania&amp;rsquo;s primate city. I had visited Bucharest last year and had already done the touristy thing in the city center, but this time my coworker took me around to some of her favorite places and showed me some of the city&amp;rsquo;s hidden gems, the highlight an eclair shop with pastries that make my mouth water even now.&lt;/p>
&lt;p>As a big fan of Art Deco, Bucharest is really a hidden gem. The city is filled with incredible examples of Art Deco buildings constructed during the city&amp;rsquo;s golden era. Though many of the buildings are slowly falling into disrepair, it&amp;rsquo;s easy to see the optimism of the era: not a feeling typically associated with Romania. Bucharest is a city with immense potential, and were I a bit younger, I might have considered spending a few years there.&lt;/p>
&lt;p>After Bucharest, we headed to our third and final city, and one I can&amp;rsquo;t write much about because I simply didn&amp;rsquo;t have enough time there: Iași. The northeastern city reminded me a bit like Portland. We met a friend of my colleague for dinner in a restaurant that looked like a converted house, parked squarely in the middle of an otherwise residential street, the backyard dining area shaded by a tree canopy. Iași is in a region with great wine and the food was spectacular. Good company and conversation took the place of sightseeing, and it was only on my way out of the city that I was able to spy the visually stunning neo-Gothic &lt;a href="https://en.wikipedia.org/wiki/Palace_of_Culture_(Ia%C8%99i)">Palace of Culture&lt;/a>. I have to go back.&lt;/p>
&lt;p>With the trip in the books, I was all set to head back to Berlin. But I had one more stop to make, and its one I was glad to have the opportunity for. This trip was taking place during the Eurocup, which was hosted by Germany. Flights that week were ungodly expensive, so I sought a cheaper option and booked a weekend flight from nearby Chișinău, Moldova. Finding a way to get there was not easy, but with my meager Romanian was able to secure a ticket on the early bus to the east. Up at 4 AM, I headed down to the bus station and got on a small but comfortable private coach headed over the border.&lt;/p>
&lt;p>The trip took about 3 hours through the beautiful eastern hills, and after a short wait at the border crossing, the Moldovan capital was soon reached. Moldova is Europe&amp;rsquo;s poorest country, and there are definitely elements of that poverty that you can see as you drive through the countryside. Shepherds tended sheep along the sides of the road and farmers drove tractors that were already ancient when the Soviet Union fell. Even now, the oppressive effects of Europe&amp;rsquo;s 20th Century are still keenly felt in the places that tourists rarely go.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2024/arch.jpg" alt="The Cluj-Napoca Opera House">&lt;/p>
&lt;p>As we got to the capital, a fellow passenger on the bus helped me navigate getting off, which was a frantic exercise while stopped in the middle of shockingly busy traffic, and I strolled over to my hotel right in the city center. I didn&amp;rsquo;t know what to expect from Chișinău, but I was super glad I got to spend a little bit of time there. Money goes a long way in the city, and I found it to be young and vibrant and energetic. It&amp;rsquo;s a photogenic city, one worth a visit, and a deserving city that belongs among its peers in the European Union.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2024/cafe.jpg" alt="The Cluj-Napoca Opera House">&lt;/p>
&lt;ul>
&lt;li>Airports:
&lt;ul>
&lt;li>BER&lt;/li>
&lt;li>EWR&lt;/li>
&lt;li>IAD&lt;/li>
&lt;li>FRA&lt;/li>
&lt;li>HEL&lt;/li>
&lt;li>MUC&lt;/li>
&lt;li>BRU&lt;/li>
&lt;li>ORD&lt;/li>
&lt;li>LHR&lt;/li>
&lt;li>NCE&lt;/li>
&lt;li>ZRH&lt;/li>
&lt;li>AMS&lt;/li>
&lt;li>LIN&lt;/li>
&lt;li>MXP&lt;/li>
&lt;li>CLJ&lt;/li>
&lt;li>OTP&lt;/li>
&lt;li>IAS&lt;/li>
&lt;li>RMO&lt;/li>
&lt;li>VIE&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Countries:
&lt;ul>
&lt;li>United States&lt;/li>
&lt;li>Germany&lt;/li>
&lt;li>Finland&lt;/li>
&lt;li>Belgium&lt;/li>
&lt;li>United Kingdom&lt;/li>
&lt;li>France&lt;/li>
&lt;li>Monaco&lt;/li>
&lt;li>Netherlands&lt;/li>
&lt;li>Italy&lt;/li>
&lt;li>Romania&lt;/li>
&lt;li>Moldova&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Cities:
&lt;ul>
&lt;li>Charlottesville&lt;/li>
&lt;li>Washington, DC&lt;/li>
&lt;li>Berlin&lt;/li>
&lt;li>Helsinki&lt;/li>
&lt;li>Brussels&lt;/li>
&lt;li>Chicago&lt;/li>
&lt;li>London&lt;/li>
&lt;li>Monte Carlo&lt;/li>
&lt;li>Nice&lt;/li>
&lt;li>Amsterdam&lt;/li>
&lt;li>Passau&lt;/li>
&lt;li>Milan&lt;/li>
&lt;li>Fairfield, CT&lt;/li>
&lt;li>Cluj-Napoca&lt;/li>
&lt;li>Bucharest&lt;/li>
&lt;li>Iași&lt;/li>
&lt;li>Chișinău&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>To Forget is an Ethical Act</title><link>https://emilygorcenski.com/post/to-forget-is-an-ethical-act/</link><pubDate>Tue, 03 Sep 2024 20:55:27 +0200</pubDate><guid>https://emilygorcenski.com/post/to-forget-is-an-ethical-act/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2024/passau.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2024/passau.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2024/passau.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2024/passau.jpg" width="600"/></media:content><description>&lt;p>On and off for the last several years I&amp;rsquo;ve been manually curating my roughly 40,000 lifetime tweets. I recently finished, and in the process embarked on an unexpected journey of self-discovery.&lt;/p>
&lt;p>In &lt;em>Regarding the Pain of Others&lt;/em>, Susan Sonntag concludes with an observation that remembrance is an act with ethical weight and, as a corollary, that in the prevention of future suffering it is also sometimes necessary to choose to forget. The internet is disjointly fragile: some things last forever, and other things break suddenly and permanently. As I enter my middle ages, I&amp;rsquo;ve been contemplating what I leave behind, how I want to be seen, and how I want to be remembered. And, thinking of how Lord Byron had unpublished manuscripts burned after his death, I have similarly been thinking that some cleaning house is long overdue. I think it&amp;rsquo;s important to curate your digital presence, if not in real time, then certainly after the fact.&lt;/p>
&lt;p>Years ago I started undertaking this effort. It was a pass time for the most part: in 20 minutes on the U-Bahn I could delete a handful of tweets here or there. This casual activity got me shockingly halfway or so through the process. (I don&amp;rsquo;t know how many total posts I have lifetime, but my estimate is in the neighborhood of 40k). But I didn&amp;rsquo;t want this to go on another few years. I am entering a turning point in my life, my attitudes on social media have changed dramatically. I wanted to get it done. So I finally coded up a little script to help me out.&lt;/p>
&lt;p>This process was not so simple. I didn&amp;rsquo;t want to delete &lt;em>everything&lt;/em>. Some of my posts have real archival value: my posts around Unite the Right or &lt;em>Sines v. Kessler&lt;/em> I believe will have distinct historical relevance. I&amp;rsquo;ve also worked with biographers and historians who have already found them to be important and useful. So I wanted to be able to preserve those posts. This meant wholesale autodeletion was out. I would have to manually review every post.&lt;/p>
&lt;p>Revisiting every post came with emotional baggage. Many of the posts were cringe; several were from stupid internet arguments. Others were painful to watch, dredging up traumatic experiences or memories of loved ones who&amp;rsquo;ve passed. But reading them was also a unique and worthwhile experience. It gave me the opportunity to reflect on what I&amp;rsquo;ve learned from 10+ years of microblogging and, hopefully, has made me a better person. So that&amp;rsquo;s what this post is about: a litle self-retrospective on what brought me to where I am and, by extension, a little clue of where I might be going. Here&amp;rsquo;s what I&amp;rsquo;ve learned.&lt;/p>
&lt;h3 id="twitter-was-annoying">Twitter was annoying&lt;/h3>
&lt;p>We so belovedly called it the &amp;ldquo;hellsite&amp;rdquo; for good reason: the daily trek through the timeline was like tapdancing in a minefield. Twitter was awful because it rewarded awfulness. I&amp;rsquo;ve &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">written before&lt;/a> about how Twitter was a global chatroom and that meant there was a lot of coal to sift through to find any diamonds, but reflecting on 10 years of posts really highlighted how terrible everything and everyone—myself not excluded—was.&lt;/p>
&lt;p>Twitter users had a preternatural ability to infer context that was never present in a post. They&amp;rsquo;d assume the worst possible intention, they&amp;rsquo;d latch onto an extremely common and benign turn of phrase and then just destroy you over it. Everyday people logged onto the timeline looking for blood and if they didn&amp;rsquo;t find it they would create it themselves. The worst part of it was the self-certain belief that in doing so they were engaged in a legitimate and effective form of activism. If there was ever a valid criticism to be leveled against the perjoratively-designated &amp;ldquo;SJW&amp;rdquo; Twitter (once upon a time, before it was &amp;ldquo;CRT&amp;rdquo;, before it was &amp;ldquo;DEI&amp;rdquo;), it&amp;rsquo;s that people would simply badger someone until they changed the very language they spoke. Most of the time, it was just someone literally making something up thinking it sounded smart and progressive and then suddenly it became a shibboleth. God forbid you logged off to watch, I don&amp;rsquo;t know, a movie or a baseball game, and then logged back on to find that &lt;em>vocabulary&lt;/em> shifted under your feet. Oh, you&amp;rsquo;re using &lt;em>transphobia&lt;/em> instead of &lt;em>transmisia&lt;/em>? Ableist swine. Oh, you&amp;rsquo;re using &amp;ldquo;MtF?&amp;rdquo; It&amp;rsquo;s &amp;ldquo;AMAB.&amp;rdquo; Oh, you&amp;rsquo;re using &amp;ldquo;AMAB?&amp;rdquo; Binarist asshole.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> These battles rage on today, and every time I poke my head back in I see people who by every other measure should be in community with each other tearing each other apart instead over minor invectives that have no analog-world equivalents.&lt;/p>
&lt;p>Having used Twitter for ten years meant being around long enough to have fought for normalizing certain language in everyday speech only to see people suddenly allege it to be bad as &lt;em>literal fascism&lt;/em>. I&amp;rsquo;ve been openly queer for a very long time, and I remember keenly the fights to encourage straight people to use &amp;ldquo;partner&amp;rdquo; for their loved ones because it made social interactions more inclusive to queer people, only to watch a few years later as people would launch hundred tweet invectives about how it was &amp;ldquo;queer appropriation.&amp;rdquo; It was a dizzying experience. A shocking number of posts that I gleefully purged were deep threads about exactly these kind of debates.&lt;/p>
&lt;p>But it wasn&amp;rsquo;t just the micropolitics that made the site unbearable. Twitter had legitimate relevance and that meant it was a proving ground for actual politics. Which meant that few could resist the opportunity to dunk all over Glenn Greenwald or Michael Tracy for some headass take. Of course, this only increased their engagement which made them more culturally relevant and the site rewarded them with this behavior. People literally turned hate into profit, and the Twittersphere gleefully took part. The worst of this was how it turned us all into mean girls, everyone vying for the perfect, incisive burn. To some extent, that was better than engaging directly, giving credibility to awful ideologies, but it was not nearly as good as using the power of the platform to build something new and more powerful. The most power anyone ever had on Twitter wasn&amp;rsquo;t in using it as a laboratory for journalism and research—although many did and it mattered—it was in harassing the everloving bejeezus out of someone, laughing maniacally the whole time.&lt;/p>
&lt;p>Sarah Jeong&amp;rsquo;s &lt;a href="https://www.theverge.com/c/features/23997516/harassment-twitter-sarah-jeong-canceled-social-change">heartrending farewell piece&lt;/a> to the hellsite covers this. Jeong spent her time in conservatives' crosshairs (and, for a scary while, this could have meant literally), her obviously facetious tweets having been willingly taken out of context and used to impugn her. It&amp;rsquo;s not without a sense of irony and guilt that I note that this happened on the heels of her being named the &lt;em>New York Times&lt;/em> technology editor, a post that was vacant because its previous resident, Quinn Norton, was bullied out of a job by left wingers outraged at her ties to the infamous neo-Nazi hacker, Andrew Aurenheimer. I remember this clearly because I was a part of that. Mea culpa.&lt;/p>
&lt;p>The harassment on Twitter often led to a pattern of people trying to defend themselves: I deleted &lt;em>hundreds&lt;/em> of posts trying to defend against libelous claims about my past, which were of course propagated through selectively-cropped screenshots and removed from context. This never worked, this never made any progress. Likewise, the magic &amp;ldquo;accountability&amp;rdquo; people sought, which &lt;a href="https://emilygorcenski.com/post/early-termination-fees-the-necessary-costs-of-cancel-culture/">I wrote about years ago&lt;/a>, was a myth. Recently Alexandria Ocasio-Cortez talked about how someone found her at a restaurant and hecked her, demanding to know when she would call Israel&amp;rsquo;s military interventions in Gaza a genocide. It didn&amp;rsquo;t matter much that she already did so months ago. Twitter brain is a prion disease that spreads offline. We don&amp;rsquo;t want the truth, we want to see your guts on the pavement!&lt;/p>
&lt;p>I deleted all that, oh how it gave me pleasure to do so. These arguments weren&amp;rsquo;t worth having at the time, they&amp;rsquo;re certainly not worth keeping all these years later. Nothing edifying ever came of them, only ruin, and my responsible and self-defensive act is to evaporate them for all time.&lt;/p>
&lt;h3 id="the-process-was-annoying">The process was annoying&lt;/h3>
&lt;p>Let me just say that I definitely gave myself a repetitive strain injury. In the last month I&amp;rsquo;ve curated over twenty-thousand posts and purged almost three-quarters of them. This meant a lot of clicking, but also copying and pasting post IDs. About two-thirds of the way through this process I managed to find some keybindings that made this slightly easier, but it wasn&amp;rsquo;t pleasant at any point.&lt;/p>
&lt;p>The process went something like this: because of Twitter&amp;rsquo;s rate limit—I could load 100 posts every 15 minutes or so—I wrote a script that would parse my Twitter archive calendar week by calendar week and open 50 posts at a time in a browser. Anything I wanted to delete I would delete, and anything I wanted to keep I would copy the ID to a text file. This would help me validate the curation later on, to make sure I didn&amp;rsquo;t miss anything. I arrived at this solution after trying several others.&lt;/p>
&lt;p>Initially, my casual curation relied on Twitter&amp;rsquo;s search. I would simply type &lt;code>from:emilygorcenski until:2018-01-31&lt;/code> into the search bar and go backwards from there, deleting as I went. I could do 100 posts very quickly in this way. But after Elon Musk bought the company to turn into his own little global therapy session, the search indexing simply stopped working. Moreover, I discovered a while ago that this method wouldn&amp;rsquo;t return any quote posts of posts from blocked, suspended, or deleted users, nor quotes from deleted tweets. This was a not-insignificant number of posts.&lt;/p>
&lt;p>The more manual approach I took showed me just how many posts were like that. I would estimate about half of what I deleted were replies to posts from suspended or blocked accounts, or deleted tweets, or accounts that blocked me. There was a huge amount of link rot, a lot of removed context. And while I realize I was contributing to that problem by deleting my posts as well, it felt a little like cleaning up an old battlefield.&lt;/p>
&lt;p>Of course, I also tried with the API. But this was even worse. The free tier allowed for five deletions per fifteen minutes, a comical number. I could have given Musk money (blech) to up this by a couple factors, but it was hardly worth it, since I still needed to manually curate anyways, it was easier to microbatch the process. Of course the site is decaying, it&amp;rsquo;s hostile to anyone trying to do anything interesting on it. After working with the fantastic Bluesky API, the frustration of Twitter&amp;rsquo;s inferior product was palpable. It&amp;rsquo;s impressive to see what the ATProto (Bluesky&amp;rsquo;s underlying protocol) community is doing. It&amp;rsquo;s an early sign of what Twitter could have been.&lt;/p>
&lt;h3 id="time-is-annoying">Time is annoying&lt;/h3>
&lt;p>I was watching &lt;em>Stranger Things&lt;/em> in 2016? I started watching &lt;em>Wheel of Time&lt;/em> in 2021?? This makes no sense. Pandemic time is fake, let&amp;rsquo;s face it, but I remember writing some of these tweets. The linear passage of time has no right to attack me like this.&lt;/p>
&lt;h3 id="i-was-annoying">I was annoying&lt;/h3>
&lt;p>All those indictments I laid out in the first section? I plead guilty, your honor, to those and to crimes not yet charged. I committed every sin in the book. I weaponized identity politics. I bullied the &amp;ldquo;intellectual dark web&amp;rdquo;. I dunked with regularity. I spread awful content because I was angry with it. I wrote irritatingly long threads about stuff I was barely aware of. I am not asking for absolution, here.&lt;/p>
&lt;p>Some of this was intentional. In the summer leading up to Unite the Right, I very deliberately made it all about me, so that the neo-Nazis marching into our town focused on me and not my peers who were doing the real organizing work. I trolled Andy Ngô, because I figured the more time he and his followers spent trying to harass and attack me, the less time they would spend on someone else. But this also empowered them, made his profile bigger, and I would eventually come to realize that the only winning move is to not play. Andy wrote a big chunk of his (in my opinion defamatory) book about me, but he hasn&amp;rsquo;t paid any attention to me in over a year. It turns out the best play was always to let it go—not ignore it, but not engage with it.&lt;/p>
&lt;p>Eventually, trolling right wingers just became who I was. I was good at it—I still laugh at how I got Zuby banned for saying &amp;ldquo;ok dude&amp;rdquo; to me and then him writing his most popular song about it—but eventually I realized I wanted to be more than just someone who clowns on completely replaceable conservatives. I&amp;rsquo;ve said before that there are times for builders and times for breakers and I wanted to stop being a breaker. There are more things I want to be known for. That&amp;rsquo;s why I walked away from the site over a year ago and haven&amp;rsquo;t been back. And that&amp;rsquo;s why I felt like it was time for me to curate what I want to survive from that time, at least publicly. I&amp;rsquo;ll probably keep my archive files around for a bit. I might even load them into a database to search and view on my website, eventually. The tweets aren&amp;rsquo;t &lt;em>forever gone&lt;/em>, they&amp;rsquo;re just now locked in encrypted files that I need to decide what to do with. Maybe a future archivist studying Charlottesville and its impact on early 21st Century US politics will find some value in them. I don&amp;rsquo;t know. Why did people in the past save their letters, if not for the benefit of generations to come? We hardly write letters anymore. These are our letters. Maybe this is my little candle against the digital dark ages. But that&amp;rsquo;s not for the present. For the present, I&amp;rsquo;ve curated what remains. I &lt;em>was&lt;/em> annoying, I still am. But the six-thousand some-odd tweets that I&amp;rsquo;ve retained still have some value to me, and the others do not.&lt;/p>
&lt;p>I may have been irksome but the journey was never boring. I&amp;rsquo;ve come to discover my tweets cited in several books, including several books by right wingers whining about &amp;ldquo;cancel culture.&amp;rdquo; I&amp;rsquo;ve had to explain tweets in court on two occasions (do not recommend—never tweet). My tweets were on the news and in the newspaper, I would see them float around Facebook as viral memes. They made their way into several court filings, even in cases I wasn&amp;rsquo;t party to. I made an actual difference with some of them, and I bought a lot of trouble on my own head with others. Some of them were even genuinely funny. I like to think I refined a sense of humor in this time. I became friends with celebrities, I helped shape front-page stories. I brough hurt and pain and stupidity, but I also like to think I brought a little laughter and wisdom, too. In the end, in ten years of active posting on twitter dot com, I only ever regretted one tweet: a tweet where I, a week before Unite the Right and with an overdose of hyperbole, said I would have punched James Damore in the face. That one was a mistake. I had to explain that one in court this summer. We learn and we continue to learn.&lt;/p>
&lt;h3 id="whats-next">What&amp;rsquo;s next?&lt;/h3>
&lt;p>So what comes next after this grand exercise in after-the-fact prudence? I will keep my account, in case it ever has actual value to me. I still check in on a couple niche communities that haven&amp;rsquo;t migrated to a different social network yet. But I won&amp;rsquo;t be back unless the site radically changes, and I don&amp;rsquo;t think it will. I need to believe that that era of social media is dead. We can&amp;rsquo;t go back. We have to go forward. What that forward looks like, I am still trying to figure out.&lt;/p>
&lt;p>I tried Mastodon for a year, but I found it unbearingly sweltering. Mastodon is not a &lt;em>fun&lt;/em> social network. You cannot have fun there without an endless army of pedants dissecting your every post endlessly in your mentions. Its operating model is inscrutable, its moderation metadrama impenetrable, and its product strategy nonexistant. I eventually rage-blocked the entire mastodon.social domain and then set my posts to autodelete after 7 days. I use it only as an automated relay for my blog content now. The one gem in the ActivityPub (Mastodon&amp;rsquo;s underlying protocol) space is &lt;a href="https://bookwyrm.social">bookwyrm.social&lt;/a>, a federated replacement for Goodreads. The site isn&amp;rsquo;t bad. They need some design love and to fix some performance issues, but it&amp;rsquo;s become my go-to for book management, and I&amp;rsquo;m happy with it.&lt;/p>
&lt;p>My go-to social media now is Bluesky. The site is not without its dramas, but it has the most promising product and technical approach I&amp;rsquo;ve seen yet. The API is very open, which has allowed me to write some easy scripts to megablock bad actors. The &amp;ldquo;Feeds&amp;rdquo; function is fantastic, and the moderation tools aren&amp;rsquo;t perfect but they&amp;rsquo;re way ahead of anyone else&amp;rsquo;s. I&amp;rsquo;ve also made the site auto-curate: all my posts auto-delete after two days, unless I self-like a post. This way, I can still post my whims, but I can choose in real time what I want to endure. I&amp;rsquo;ve been running this way for a couple of months, and I have to say it feels incredibly fresh. Bluesky&amp;rsquo;s community is also much more averse to Twitter brain bullshit. Quote posts are possible but dunking is looked down on. The block function is brilliant—block and move on is the motto of the site. It means that the network there is much more pure and original. The one thing it lacks compared to Mastodon is that Mastodon was always much more receptive and supportive of DIY creation. I wish Bluesky to adopt that culture.&lt;/p>
&lt;p>But I am also trying to figure out what is next &lt;em>for me&lt;/em>. As I write this, I&amp;rsquo;m forty-two, almost ten years after I started my transition process. The decade my transition bought back is coming to a close, and I&amp;rsquo;m finding myself trying to make a decision on what my next big thing is, if I even have one left in me at all. I feel like I&amp;rsquo;m on the edge of reaching the next level. I retired from activism, where I know I made an impact. I left Twitter, which was my means and medium of change. I&amp;rsquo;m even doing ok career-wise: I&amp;rsquo;ve built an amazing team, did some really intense stuff that made a difference in people&amp;rsquo;s lives. I&amp;rsquo;ve helped people write and publish books, seen the world, and left a positive impact on it in ways that have never and will never post about.&lt;/p>
&lt;p>I&amp;rsquo;ve taken the last year or two to step back a bit. I needed to focus on myself, my family, my health. I&amp;rsquo;ve read more books in the last 16 months than I have in the 16 years before them. I&amp;rsquo;ve ran 5k, 8k for the first time in my life. I&amp;rsquo;m able to do more situps now than at any point since I was probably 15 years old. I think I will be ok if the rest of what I do will just be putting around my house, reading books, grumbling about sports. But of all people my wife knows that I&amp;rsquo;ll be restless again before long.&lt;/p>
&lt;p>There&amp;rsquo;s a poem I&amp;rsquo;ve held with me for many years, Tennyson&amp;rsquo;s &amp;ldquo;Ulysses.&amp;rdquo; Everyone knows the famous final lines, &amp;ldquo;one equal temper of heroic hearts, made weak by time and fate&amp;hellip;,&amp;rdquo; but every few years I come back to the poem to see how it speaks to me. It talks of Ulysses becoming restless in his old age, choosing not to fade into memory but to boldly tackle the world he once dared. It&amp;rsquo;s the first verse that speaks to me now:&lt;/p>
&lt;blockquote>
&lt;p>I cannot rest from travel: I will drink&lt;br>
Life to the lees: All times I have enjoy&amp;rsquo;d&lt;br>
Greatly, have suffer&amp;rsquo;d greatly, both with those&lt;br>
That loved me, and alone, on shore, and when&lt;br>
Thro' scudding drifts the rainy Hyades&lt;br>
Vext the dim sea: I am become a name;&lt;br>
For always roaming with a hungry heart&lt;br>
Much have I seen and known; cities of men&lt;br>
And manners, climates, councils, governments,&lt;br>
Myself not least, but honour&amp;rsquo;d of them all;&lt;br>
And drunk delight of battle with my peers,&lt;br>
Far on the ringing plains of windy Troy.&lt;br>
I am a part of all that I have met;&lt;br>
Yet all experience is an arch wherethro'&lt;br>
Gleams that untravell&amp;rsquo;d world whose margin fades&lt;br>
For ever and forever when I move.&lt;br>
How dull it is to pause, to make an end,&lt;br>
To rust unburnish&amp;rsquo;d, not to shine in use!&lt;/p>
&lt;/blockquote>
&lt;p>I, too, have another gear in me, if only I can find it. I&amp;rsquo;m looking for inspiration in the people I admire. People like Molly Conger, whose been with me step-by-step in so many ways since late 2017, who just launched an &lt;a href="https://podcasts.apple.com/de/podcast/introducing-weird-little-guys/id1760218611?i=1000663835675">amazing podcast&lt;/a> that is taking the country by storm. People like &lt;a href="https://www.mollywhite.net/">Molly White&lt;/a>, who is doing some amazing and consistent impact journalism covering the tech industry. And, to be sure, many others not named Molly. I look up to these folks and what they&amp;rsquo;ve accomplished for themselves, for others, and in that admiration I want to find the clarity of mind and purpose the next step. I think I have some ideas, but I knew I couldn&amp;rsquo;t get to them as long as this was hanging over my head.&lt;/p>
&lt;p>And so this is the little bow I tie on a ten-year chapter of my life. To move forward I need to close the books on what holds me back. The past is mine to write and so too is the future. Now one have I written, and now search the words for to write the other.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>this is not to say these points were meritless, but rather that the relatively frictionless way that they became &lt;em>axiomatic&lt;/em> and &lt;em>mandatory&lt;/em>, as well as the way people are brutally and disproportionately criticized for using the &amp;ldquo;wrong&amp;rdquo; words (which were often the &amp;ldquo;right&amp;rdquo; words just months before) with no ill intent, is a phenomenon on Twitter with few equals.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description></item><item><title>Book Report: Women in Love by D. H. Lawrence</title><link>https://emilygorcenski.com/post/book-report-women-in-love-by-d.-h.-lawrence/</link><pubDate>Sat, 24 Aug 2024 22:00:19 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-women-in-love-by-d.-h.-lawrence/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Peak-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Peak-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Peak-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Peak-thumb.jpg" width="600"/></media:content><description>&lt;p>English novelist D. H. Lawrence&amp;rsquo;s formerly banned book &lt;em>Women in Love&lt;/em> is a timeless and somehow still relevant examinations of the complexities of love and homoeroticism.&lt;/p>
&lt;p>If I were to list the things I find most boring in the world, somewhere near the top of the list you would find &amp;ldquo;compulsory heterosexuality&amp;rdquo; and &amp;ldquo;English aristocratic drama.&amp;rdquo; Both of these things are so boring to me that I actively feel disdain—more than simply ignoring it, it actually makes me &lt;em>unwell&lt;/em>. So I wasn&amp;rsquo;t particularly excited to jump into another early 1900s English novel about English people struggling to have basic social interactions. But I am powering through this list, and so with open mind and stiff upper lip I dove into &lt;em>Women in Love&lt;/em>.&lt;/p>
&lt;p>If there&amp;rsquo;s anything I should say about this book, it&amp;rsquo;s that it&amp;rsquo;s mistitled. It should be &lt;em>Men in Love&lt;/em>. With each other.&lt;/p>
&lt;p>The book ostensibly follows two sisters, Ursula and Gudrun, as they fall for two men, Rupert and Gerald, themselves close friends, and respectively marry them. But the story quickly becomes more complex. The novel engages in class politics, domestic violence, trauma, homo-platonism and, arguably, homoromanticism and homosexuality. Gerald is driven and extrinsically motivated; Rupert, a semi-autobiographical Lawrence, is introspective and frail, apathetic to the meaning of love and seeking englightenment and self-awareness. Rupert disastrously proposes to Ursula and, despite her acceptance, flees to meet Gerald at a cabin in the Midlands. There, absent their women, they indulge each other&amp;rsquo;s company around a fire. Suddenly, the topic of conversation is wrestling and the two men strip naked and Gerald teaches some moves. What follows is unquestionably homoerotic:&lt;/p>
&lt;blockquote>
&lt;p>So the two men entwined and wrestled with each other, working nearer and nearer. Both were white and clear, but Gerald flushed smart red where he was touched, and Birkin remained white and tense. He seemed to penetrate into Gerald&amp;rsquo;s more solid, more diffuse bulk, to interfuse his body through the body of the other, as if to bring it subtly into subjection, always seizing with some rapid necromantic fore-knowledge every motion of the other flesh, converting and counteracting it, playing upon the limbs and trunk of Gerald like some hard wind. It was as if Birkin&amp;rsquo;s whole physical intelligence interpenetrated into Gerald&amp;rsquo;s body, as if his fine, sublimated energy entered into the flesh of the fuller man, like some potency, casting a fine net, a prison, through the muscles into the very depths of Gerald&amp;rsquo;s physical being.&lt;/p>
&lt;/blockquote>
&lt;p>Their wrestling match ends in climax:&lt;/p>
&lt;blockquote>
&lt;p>At length Gerald lay back inert on the carpet, his breast rising in great slow panting, whilst Birkin kneeled over him, almost unconscious. Birkin was much more exhausted. He caught little, short breaths, he could scarcely breathe any more. The earth seemed to tilt and sway, and a complete darkness was coming over his mind. He did not know what happened. He slid forward quite unconscious, over Gerald, and Gerald did not notice. Then he was half-conscious again, aware only of the strange tilting and sliding of the world. The world was sliding, everything was sliding off into the darkness. And he was sliding, endlessly, endlessly away.&lt;/p>
&lt;/blockquote>
&lt;p>But despite this bond, which Lawrence describes as a &lt;em>Blutbrüderschaft&lt;/em>, Rupert and Gerald develop their relationships with Ursula and Gudrun, respectively, and the two couples take different paths. Gerald&amp;rsquo;s sister drowns in an accident at a party; his father, the coal mine owner, dies and Gerald, a single-minded industrialist, puts his relationship with Gudrun on rocky grounds.&lt;/p>
&lt;p>The two couples head to the Austrian Alps together for a vacation and Gudrun, tired of being ignored by Gerald, flirts openly with a frail and effeminate artist at the resort. In a fit of rage and feeling like his masculinity is challenged, lays hands on Gudrun and tries to strangle her. In a moment of clarity, and embarrassed by his actions, he walks out of the resort along the snowy peaks. He falls and dies.&lt;/p>
&lt;p>Gerald&amp;rsquo;s death shocks none more than Rupert, who realizes that he loved him. He tells Ursula that he needed no &lt;em>woman&lt;/em> other than her, but that he needed also the love of a man. The novel ends as the pair struggle with the meaning of this love.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Did you need Gerald?&amp;rdquo; she asked one evening.&lt;/p>
&lt;p>&amp;ldquo;Yes,&amp;rdquo; he said.&lt;/p>
&lt;p>&amp;ldquo;Aren&amp;rsquo;t I enough for you?&amp;rdquo; she asked.&lt;/p>
&lt;p>&amp;ldquo;No,&amp;rdquo; he said. &amp;ldquo;You are enough for me, as far as a woman is concerned. You are all women to me. But I wanted a man friend, as eternal as you and I are eternal.&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;Why aren&amp;rsquo;t I enough?&amp;rdquo; she said. &amp;ldquo;You are enough for me. I don&amp;rsquo;t want anybody else but you. Why isn&amp;rsquo;t it the same with you?&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;Having you, I can live all my life without anybody else, any other sheer intimacy. But to make it complete, really happy, I wanted eternal union with a man too: another kind of love,&amp;rdquo; he said.&lt;/p>
&lt;p>&amp;ldquo;I don&amp;rsquo;t believe it,&amp;rdquo; she said. &amp;ldquo;It&amp;rsquo;s an obstinacy, a theory, a perversity.&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;Well &amp;ndash;&amp;rdquo; he said.&lt;/p>
&lt;p>&amp;ldquo;You can&amp;rsquo;t have two kinds of love. Why should you!&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;It seems as if I can&amp;rsquo;t,&amp;rdquo; he said. &amp;ldquo;Yet I wanted it.&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;You can&amp;rsquo;t have it, because it&amp;rsquo;s false, impossible,&amp;rdquo; she said.&lt;/p>
&lt;p>&amp;ldquo;I don&amp;rsquo;t believe that,&amp;rdquo; he answered.&lt;/p>
&lt;/blockquote>
&lt;p>This idea, that someone can love in different ways, of different sexes, that one cannot survive on a single kind of love alone, is stunningly modern. The challenge to the compulsion of monogomous heterosexuality and that love must be either romantic or familial is still a radical one. I find it remarkable that a novel now over a hundred years old can tell a story so messy and queer that it remains highly relevant today. The book is heartbreaking, erotic, and beautifully written. It&amp;rsquo;s a story for anyone who&amp;rsquo;s ever been in love with their best friend. And it shows how far we still have to go towards making it normal that people can truly love different people in different ways; indeed perhaps that they must.&lt;/p>
&lt;p>&lt;small>&lt;em>To read more about my Modern Library project, read &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">this post&lt;/a>.&lt;/em>&lt;/small>&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/books/OL23125618M/Women_in_love">&lt;em>Women in Love&lt;/em>&lt;/a>&lt;br>
D. H. Lawrence&lt;br>
ISBN 9780141441542&lt;br>&lt;/p></description></item></channel></rss>