<?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>EmilyGorcenski.com</title><link>https://emilygorcenski.com/</link><description>Recent content on EmilyGorcenski.com</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Tue, 23 Jan 2024 00:03:28 +0100</lastBuildDate><atom:link href="https://emilygorcenski.com/index.xml" rel="self" type="application/rss+xml"/><item><title>What's New: Edition 2024-01-22</title><link>https://emilygorcenski.com/post/whats-new-edition-2024-01-22/</link><pubDate>Tue, 23 Jan 2024 00:03:28 +0100</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2024-01-22/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2024/friedrichswerdsche-kirsche.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2024/friedrichswerdsche-kirsche.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2024/friedrichswerdsche-kirsche.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2024/friedrichswerdsche-kirsche.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;m trying to write more, but lately my fire has been replaced by noise.&lt;/p>
&lt;p>My most toxic trait is one I work really hard not to project on anyone, either in terms of judgment or expectation: that suffering contains a virtue in itself, and that one must submit to some small degree of suffering in order to achieve what one truly desires. The German word &amp;ldquo;leiden&amp;rdquo; means to suffer; Leidenschaft, the suffix forming a noun, means &amp;ldquo;passion&amp;rdquo;. To be passionate one must endure. To fully embrace joy one must first long for it. It&amp;rsquo;s a belief that has led me to an unimaginable amount of avoidable pain and heartbreak in my life but its the state where I do my best work. When my calendar is empty the quality of my work goes down. I need a little deadline pressure to induce me to action.&lt;/p>
&lt;p>The frustrating thing about this tendency is the sheer impossibility it breeds in being able to do anything prideful when life is just kind of moving along. Ennui is my most antagonistic state. Listlessness is a noise, I can feel it in my neck, a tinnitus in my ears ringing just barely above the audible level, just enough to let you know it&amp;rsquo;s still there, that you&amp;rsquo;re not forgiven for your idleness. I write best when I am angry. I am supposed to be writing a book proposal. I know what I need to do. I just cannot make this ringing go away. I am not a very good writer, there is no real point for me to suffer. I am suffering for mediocrity. But that&amp;rsquo;s not the point. The point is to persist. Anfangen ist einfach, Behaarlichkeit eine Kunst. That Kennedy speech at Rice, &amp;ldquo;we choose to go to the moon and do the other things not because they are easy, but because they are hard.&amp;rdquo; I feel that shit in my &lt;em>bones&lt;/em>, man.&lt;/p>
&lt;p>The thing about suffering is that its converse is guilt. When I am not suffering I feel guilty for not doing enough to suffer. I feel guilty that I am not writing. I feel guilty that I am not progressing through a video game or a book. The irony is that I don&amp;rsquo;t actually love suffering despite our symbiotic relationship. I have historically gone out of my way to avoid it whenever possible. I am only proud for having suffered, the rest of the time I merely traffic in guilt.&lt;/p>
&lt;p>Or melodrama. It&amp;rsquo;s not that bad all the time, really. I also revel and rejoice and feel joy and anticipation and love and hope and all of those things. I am really just trying to reconcile my lack of progress in two weeks for something I thought I&amp;rsquo;d have done in a night. I need you to tell me I can do it. I need you to remind me I have to suffer a little and that the ennui can be held at bay. It&amp;rsquo;s not like I haven&amp;rsquo;t done &lt;em>anything&lt;/em> this week anyways. Let&amp;rsquo;s get to it:&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">&amp;ldquo;I didn&amp;rsquo;t love his position on the cross burning, but&amp;hellip;&amp;quot;&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">If everything could ever feel this real forever&amp;hellip;&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-watching">Echo and representation&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Berlin&amp;rsquo;s understated neo-classical architecture&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>A huge scandal in Germany erupted in the past couple of weeks when it was revealed that the far-right political party was meeting with Martin Sellner, &lt;a href="https://www.bbc.com/news/world-europe-47715696">an Austrian identitarian who allegedy received money from the Christchurch neo-Nazi mass murderer&lt;/a>, to discuss a potential mass deportation plan for if the AfD ever takes power. The result was a series of massive protests against the far-right and neo-fascism in Germany. It was really heartwarming to see 350,000 people, roughly 10% of the population of Berlin, come out to demonstrate on a freezing cold Sunday, not to mention the dozens of other simultaneous demonstrations nationwide. At the same time, it was frustrating because these demos, if not coupled with material action, will be little more than noise.&lt;/p>
&lt;p>Antifascism is an everyday practice. It&amp;rsquo;s not enough to get out in the street a couple times a year. One must also actively integrate immigrants into one&amp;rsquo;s society with little, everyday actions. I&amp;rsquo;m not scared of the AfD. I&amp;rsquo;m not worried that there plan might, in a longshot of longshots, actually succeed. Their racism and hatred affects me, sure. But so too does it affect me when the nurse at my doctor&amp;rsquo;s office rolls her eyes when my German is incorrect. There are many forms of racism, and we must fight them all.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>Speaking of fighting racism, you know who didn&amp;rsquo;t? Terry McAuliffe, former governor of Virginia. I&amp;rsquo;m moving all of my Charlottesville books back to my Charlottesville library, and that means I&amp;rsquo;m trying to read them so I can bring them back on my next trip, shelve them and be done. So this weekend I read his self-serving garbage tome, &lt;em>Beyond Charlottesville : taking a stand against white nationalism&lt;/em>. Terry McAuliffe was governor during Unite the Right. His police stood down and let neo-Nazis brutalize peaceful community members. His police attacked peaceful counterdemonstrators protesting the KKK. He actively opposed those who opposed the neo-Nazis.&lt;/p>
&lt;p>The best line in his book comes when he defends hiring Rodney Smolla to tackle free speech issues in the aftermath of A11 and A12. Smolla had defended three cross burners at one point, and McAuliffe writes, &amp;ldquo;I didn&amp;rsquo;t love his position on the cross burning, but&amp;hellip;&amp;rdquo; Man, that ain&amp;rsquo;t a sentence that needs following with &amp;ldquo;but.&amp;rdquo; McAuliffe personifies exactly why liberals are the biggest impediment to addressing racism and fascism today. &lt;a href="https://slate.com/news-and-politics/2019/08/terry-mcauliffe-charlottesville-unite-right-racist-rally-anti-fascist-anniversary.html">I&amp;rsquo;ve written about him before&lt;/a>.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>As a suffering sommelier, I am extremely vulnerable to the particular blend known as nostalgia. I put on the Foo Fighter&amp;rsquo;s &lt;em>The Colour and the Shape&lt;/em> recently, a great post-grunge album that contains an all-timer of a song, &amp;ldquo;Everlong.&amp;rdquo; I&amp;rsquo;m especially fond of the &lt;a href="https://www.youtube.com/watch?v=Sr9QtmgD6QE">acoustic version&lt;/a> for one reason in particular: back around 2008 or so, when the song was younger than Gotye&amp;rsquo;s &amp;ldquo;Somebody that I Used to Know&amp;rdquo; is today, I remember that song playing through Ventrilo, the old voice-over-IP system popular among gamers. I was invited to raid Naxxramas with one of the top guilds on my World of Warcraft realm at the time. It was before I became really good at the game&amp;ndash;my peak was in Burning Crusade&amp;ndash;and I felt like the invitation was something that marked a turning point in my life.&lt;/p>
&lt;p>I had just finished college, finally, after a long saga of nearly four years fighting an autoimmune disorder that disrupted my senior year. I was about to head off on my own for a career and an adult life and independence. I was going to finally leave the small, 400-mile bubble I&amp;rsquo;d spent my entire life inside. My whole life was spent in nothing towns in a nothing state with no proximity or &lt;em>access&lt;/em> to culture or meaning or superlative, with the lone exception of my university education, which had been stolen by my illness as soon as I had achieved much of anything. I had buried myself in gaming because it was my only escape from the ennui of a dying suburb of a third-rate city. Being allowed to raid with a top guild seems silly in retrospect, but it gave me a little ember of hope that maybe one day I could be &lt;em>good&lt;/em> at something. That maybe my suffering would lead to something noteworthy. Within a year and a half I ran, briefly, one of the top guilds in the world and flawed and awful as I and that experience was, I was able to see a world where I mattered.&lt;/p>
&lt;h3 id="what-im-watching">What I&amp;rsquo;m watching&lt;/h3>
&lt;p>If you&amp;rsquo;ve made it this far through a weekly life update that&amp;rsquo;s oddly self-reflective, you should probably intuit that I&amp;rsquo;m a big fan of epics and heroism. Not because I see myself as a hero, but because I think that our world is better when everyday heroism exists. That&amp;rsquo;s the appeal of the superhero narrative, isn&amp;rsquo;t it? That an ordinary person given opportunity, luck, and a little destiny can do a good thing. So I watched &lt;em>Echo&lt;/em> this week, the latest Marvel saga series. It&amp;rsquo;s set on a reservation in Oklahoma and brings a native storyline to Marvel&amp;rsquo;s (probably ill-fated) multiverse saga. I actually like the representation work that Marvel&amp;rsquo;s done. It&amp;rsquo;s a bit heavy handed but it&amp;rsquo;s nice to remember that all cultures have their own sagas and those deserve to play out, too. It was a short but good little series.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I was going to end this piece for the night and come back to it in the morning. But no! I go on!&lt;/p>
&lt;p>This weekend I restarted Spanish classes. And by restarted, I mean my last Spanish class was in my freshman year of college. I&amp;rsquo;m aiming for the A2 level which I&amp;rsquo;ll probably proceed through pretty quickly. I remember more than I give myself credit for. I&amp;rsquo;ll be in Spain a lot this year and so I&amp;rsquo;ll have good opportunity to practice.&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>Saturday I needed to be out and about, so I headed over to my next stop on my Museum list: Friedrichswerdsche Kirche. That sure is a consonant cluster alright. Anyways, it&amp;rsquo;s a small, free exhibition in a neo-Gothic brick church designed by &lt;a href="https://en.wikipedia.org/wiki/Karl_Friedrich_Schinkel">Karl Friedrich Schinkel&lt;/a>. Schinkel was a Prussian architect who had traveled Europe, saw all the great architecture, and come back to Berlin and noted how it did not. Most of what neoclassical style remains in Berlin (or has been rebuilt) was Schinkel&amp;rsquo;s doing.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>Having joined the anti-AfD demos, my dent in the universe was gratifyingly small: it&amp;rsquo;s nice to feel sometimes that one&amp;rsquo;s contribution to a dent in the universe is being part of the combined weight of hundreds of thousands of people looking fascism in the face and saying &amp;ldquo;nah.&amp;rdquo;&lt;/p></description><tweet>Suffering, ennui, writer's block, and the incorrigible guilt of unsatisfiable self-expectation. What's new, 2024-01-22 edition</tweet></item><item><title>What's New: Edition 2024-01-13</title><link>https://emilygorcenski.com/post/whats-new-edition-2024-01-13/</link><pubDate>Sat, 13 Jan 2024 22:18:04 +0100</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2024-01-13/</guid><image><url>https://emilygorcenski.com/photo-gallery/home-renovations/utility-capped.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/home-renovations/utility-capped.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/home-renovations/utility-capped.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/home-renovations/utility-capped.jpg" width="600"/></media:content><description>&lt;p>I started some home renovations eight years ago. I&amp;rsquo;m finally getting back to them.&lt;/p>
&lt;p>I started hormone replacement therapy (HRT) in March 2015, some eighteen-ish months after I finally started my transition journey. The first few months of HRT aren&amp;rsquo;t really that enlightening. Changes happen, emotional ones at first, but it takes a while for your body to shift gears. And in any case, most prescribing regimens start slow and ramp you up. It&amp;rsquo;s a lot for your body to take in.&lt;/p>
&lt;p>In the fall of 2015, my HRT routine opened my world in ways I&amp;rsquo;d never imagined. I hadn&amp;rsquo;t come out yet publicly to everyone, but I was getting to the point of feeling like myself. That fall, after six months of performance &lt;em>decreasing&lt;/em> drugs, I was playing the best hockey of my life. I was in the best physical shape I&amp;rsquo;d been in since I was probably 15 years old. I had emotional and physical energy. I was ready to go!&lt;/p>
&lt;p>At the time, Christine and I had three cats and a dog. They mostly got along except one of the cats, Jinx, hated the dog, Sadie, and vice versa. Upstairs was Jinx&amp;rsquo;s territory and downstairs was Sadie&amp;rsquo;s. But they wouldn&amp;rsquo;t leave each other alone, and more than one fight took place in our upstairs hall, which was covered in beige, &amp;ldquo;flipper&amp;rdquo; carpet. It was gross and one day I decided it had to go.&lt;/p>
&lt;p>There&amp;rsquo;s all sorts of stories about homes where developers or previous owners had hidden beautiful hardwood beneath horrific carpeting, plopped down during one of the more questionable eras of American taste. There&amp;rsquo;s not a lot to thank the early 2000s for, but opening up our homes to light and space and beauty is something we should show more gratitude than we do. Unfortunately, our home was not one of those stories.&lt;/p>
&lt;p>The hardwood was warped and cracked. There were carelessly patched holes a foot square in the hallway. Nothing was level. The wood was splintering. There was no sense in trying to save it. Up it, too, would come.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/home-renovations/top-stairs-demo.png" alt="The hardwood being ripped up exposes the joists and stringers of the floor at the top of the stairs.">&lt;/p>
&lt;p>I&amp;rsquo;m not going to lie. I was foolishly expecting subflooring. I thought my life would be easier than it was. The home was built in the 1920s or 1940s (records are unclear) and had extensions stapled on over time at unclear intervals. The stringers showed signs of settling and warping and there was some really questionable construction done to get everything into the shape it was in. Whoever flipped it didn&amp;rsquo;t really intend to spend a lot of time or money on the job. But I was full of hormonal energy! I was going to fix this problem.&lt;/p>
&lt;p>I went to Lowe&amp;rsquo;s, got some subflooring, and dropped it on top so we could at least walk in the hall. I skipped the extra bedroom, though I took up its flooring, too, because it was getting complicated in some points. We shut the door and I figured I&amp;rsquo;d come back to it the next weekend or so. I never did.&lt;/p>
&lt;p>There was nothing really easy about the intervening years. I left my job a few months later in 2016, and it took a while for me to start a new one. Then I was focusing on my new job, which was taking me across the country to Portland on a regular basis. In 2016 we didn&amp;rsquo;t have the time or the money to finish the project. In early 2017 I had surgery, and then in mid and late 2017&amp;hellip; well does anyone need explanation what was happening in my life in Charlottesville then anymore? In 2018 I moved to Berlin. And the project stayed on the back burner.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/home-renovations/utility-demo.jpg" alt="The utility room with its subflooring removed">&lt;/p>
&lt;p>It&amp;rsquo;s too often understated how trauma leaves lingering secondary and tertiary effects on your life. Something as simple as getting a house project done becomes an impossible bar to clear. House projects require planning ahead, but trauma makes that impossible. You&amp;rsquo;re constantly simply trying to survive. And even when I had chances to work on it, like during the two months at the start of the pandemic that I spent at home, I simply couldn&amp;rsquo;t.&lt;/p>
&lt;p>I&amp;rsquo;ve felt guilty about it every day since. Christine and I love our home. We intend to die in it. We&amp;rsquo;ll never sell it, though renting it has crossed our mind if she were to move to Berlin. (We&amp;rsquo;ll see how the election goes). Either way, the house needs fixing. And this year, what with the step-changes to my mental health that &lt;a href="https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/">I&amp;rsquo;ve written about before&lt;/a>, I decided to start that.&lt;/p>
&lt;p>Not having a pickup anymore made it a little harder, but just before the new year, I placed an order to get some new plywood delivered from Lowe&amp;rsquo;s. I learned a bit more about how to cut and carry it &amp;ndash; a challenge I had the last time &amp;ndash; and, equipped with this new knowledge, I decided it was high time to tackle this long overdue project. My goal was to get subflooring down.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/home-renovations/utility-capped.jpg" alt="The utility room with its subflooring installed">&lt;/p>
&lt;p>Happily, I achieved these goals and more. After some careful planning, Christine and I decided on flooring we&amp;rsquo;d like, planned a move of our laundry room, and got to work. The flooring we chose, Pergo Duracraft laminate, goes together super easy. After some struggles with the last course and some complex cuts, I decided to remove our (badly beaten up) baseboard trim to make installation easier. And as it came to my last days in town, I raced to get the work done. We made a few mistakes along the way that had to be undone &amp;ndash; putting two similar boards together, running one course too close to its neighbor &amp;ndash; but these were easy enough to undo. And happily I was able to get the entire hallway done, with the last piece, a temporary threshold to the bedroom, being set down on the morning of my flight.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/home-renovations/hallway-flooring.jpg" alt="Flooring down in the hallway">.&lt;/p>
&lt;p>Reader, it looks great. I can&amp;rsquo;t wait to get that utility room set up this spring. I&amp;rsquo;ll have to go back soon. We ordered new washing machines to be delivered later this year while they were on sale. So I&amp;rsquo;m looking forward to more demo work, reworking some plumbing and electrical, more subflooring, some framing, some drywall, some trim work, and finally some painting, all in time to get things ready for the delivery guy to install them.&lt;/p>
&lt;p>The first thing about home renovation is that it&amp;rsquo;s body work. You have to lift and carry and align and it makes your body active, which feels great for someone who sits in front of a screen 12 hours a day. The second thing about home renovation is that it&amp;rsquo;s something where you see visible progress. It might be hard work, but fruits of that hard work is visible. You can see things improving. It&amp;rsquo;s a balm for the recovering soul. It feels like you&amp;rsquo;re making progress on your life &amp;ndash; because you are. I think this is underrated. Humans need progress.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">Antifascism and AI&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-watching">Are we already in the ChatGPT of pop media?&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Antisemitism and legacy in Berlin&amp;rsquo;s museums&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-playing">The soothing joy of free-to-play phone games&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>I&amp;rsquo;m back in Berlin. I always give myself a few days to reacclimate before pushing myself back to my habits. Traveling east is so much harder. My sleep is all messed up, the days are suddenly shorter again (though it&amp;rsquo;s still light out at 15.30, that&amp;rsquo;s nice). It takes me at least 3 or 4 days to adjust.&lt;/p>
&lt;p>COVID never went away and every time I come back I wonder if I&amp;rsquo;ve caught it from traveling, as my voice is dry and scratchy for days after a flight. But I haven&amp;rsquo;t &amp;ndash; I&amp;rsquo;m healthy aside from what I&amp;rsquo;m convinced is a compressed neck vertebrate that gets exacerbated under stress. And being back to work is stressful indeed.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I picked up a fantastic book at the end of last year. &lt;a href="https://openlibrary.org/works/OL25477897W/Anti-Fascist_AI">&lt;em>Resisting AI&lt;/em> by Dan McQuillan&lt;/a> is an antifascist look at AI. I&amp;rsquo;ve only just started the book but the first chapter already is fantastic. More and more lately I&amp;rsquo;ve been becoming infuriated with where the tech industry has brought us. I was &lt;a href="https://bsky.app/profile/emily.gorcen.ski/post/3kiss7uiq7v2h">ranting on Bluesky last night&lt;/a> about how nobody can buy anything because all the shelves are empty and everything on Amazon is fake, dropshipped crap. AI of course is helping accelerate this race to the bottom, because the first thing we do with any new tech isn&amp;rsquo;t innovate but try to cut corners and margins on things we already know. That&amp;rsquo;s a shame.&lt;/p>
&lt;h3 id="what-im-watching">What I&amp;rsquo;m watching&lt;/h3>
&lt;p>Speaking of AI, I&amp;rsquo;ve been wondering what the film and TV landscape is going to look like once we start having ChatGPT in the writers' room. I don&amp;rsquo;t think we&amp;rsquo;re there yet, but I&amp;rsquo;m starting to see inklings of this. I&amp;rsquo;ve been watching &lt;em>Reacher&lt;/em> season 2 on Prime lately and the writing is, I&amp;rsquo;m sorry to say, absolutely catastrophic. This is the kind of writing you get when writers are treating the plot as an atomic sequence of largely unrelated events. The characters don&amp;rsquo;t behave rationally. Criminals with no lock codes on their phones? An MP investigative task force being ordered to let a drug sale go through for political reasons, and a commanding officer promising retaliation in a room full of witnesses? Vats full of soupy concrete left on a job site in the middle of the night? It makes no sense.&lt;/p>
&lt;p>I&amp;rsquo;m sure Reacher&amp;rsquo;s writers are humans. But the writing is awful. And sooner or later we&amp;rsquo;re going to see ChatGPT involved in this process and all of those ridiculous bits are just going to be even worse. That&amp;rsquo;s the thing: we&amp;rsquo;re already drowning in shit and we have hardly even started letting AI take over. The only answer is a return to authenticity and analog.&lt;/p>
&lt;h3 id="what-im-playing">What I&amp;rsquo;m playing&lt;/h3>
&lt;p>Speaking of progress, back when I worked in video game therapy, I learned about &lt;a href="https://openlibrary.org/works/OL15998907W/Glued_to_games?edition=key%3A/books/OL24903086M">Self-Determination Theory as it applies to video games&lt;/a>. One of the key elements that helps motivate us with games is the notion of cumulative feedback &amp;ndash; games motivate us because they show us getting better over time. I&amp;rsquo;ve always had a love-hate relationship with ad-free free-to-play phone games. I love them because they allow us to progress. But they eventually always tune the progress in such a way it forces you to fork out cash for gems to speed it along.&lt;/p>
&lt;p>The latest game I&amp;rsquo;ve been playing is SOULS, a new game from Habby. It&amp;rsquo;s a pretty basic hero-based RPG with a number of classic elements: you get cards that give you heroes of different strengths, races, and classes. You combine five of them on an eight-tile grid and compete against another five in turn-based combat. You get gear and upgrade it. There&amp;rsquo;s long-running discovery quests, PvP arenas, and opportunities to get the various currencies needed to upgrade your characters. It&amp;rsquo;s a classic arms race game without much by way of strategy, but it&amp;rsquo;s fun nevertheless. After a month or so, I&amp;rsquo;ve only spend $0.99 on the game and even then I didn&amp;rsquo;t need to. I&amp;rsquo;m sure I&amp;rsquo;ll eventually hit the wall where pay-to-progress becomes an imperative, but for now this keeps me happily occupied.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I&amp;rsquo;m back to German classes! On my cab ride home from BER (the train drivers were on strike), I had a great conversation with my cabby. He complimented my German, telling me it was accent-free and he never sees that in Americans. Maybe he was angling for a tip but he seemed authentic. It was also my first time in a Tesla. I asked him about it, he loved it. I didn&amp;rsquo;t bother pressing him. The guy was happy with the vehicle he makes his living with, who am I to yuck his yum?&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>I&amp;rsquo;m still working through visiting all of the Staatliche Museeen zu Berlin with my yearly pass. Today, I stopped by the Bode-Museum. Named for Wilhelm von Bode, its founder and first curator and a known antisemite, the museum is complex in its history. A debate rages over renaming it; the museum has an exhibition contextualizing its history. The museum&amp;rsquo;s collection of European sculpture and art is certainly interesting; it leans very strongly Christian, and there is a whole room of Donatello&amp;rsquo;s &amp;ldquo;Virgin with Child&amp;rdquo; relief. Apparently, he had developed a technique for mechanical reproduction for these.&lt;/p>
&lt;p>Does that mechanical reproduction remove the quality of the art, or does it simply put it in a different place in the history of art? These are questions that have been tackled over and over by artists and philosophers and cultural critics and we find ourselves revisiting them again with the emergence of generative AI. It&amp;rsquo;s a worthy conversation to have. I&amp;rsquo;m still willing to call it art. It was at least created by a person with his own hands.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2024/donatello.jpg" alt="A Donatello relief">&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>Nothing. I had a blissful week to rest and recover.&lt;/p></description><tweet>Hormones and home repairs: how a project I started eight years ago is a journey through self-discovery, trauma, and the joy of progress. What's new, 2024-01-13 edition</tweet></item><item><title>2024 Travelogue: Home for the Holidays</title><link>https://emilygorcenski.com/post/2024-travelogue-home-for-the-holidays/</link><pubDate>Sat, 13 Jan 2024 02:33:00 +0100</pubDate><guid>https://emilygorcenski.com/post/2024-travelogue-home-for-the-holidays/</guid><image><url>https://emilygorcenski.com/photo-gallery/home-renovations/queso.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/home-renovations/queso.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/home-renovations/queso.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/home-renovations/queso.jpg" width="600"/></media:content><description>&lt;p>I spent a month home in Charlottesville for the holidays.&lt;/p>
&lt;p>I traveled a lot in 2023. In total, I visited between 19 and 23 countries (depending on how you count them), three continents, thirty-plus cities, and found myself taking off and touching down at least 49 times. My last flights of the year brought me home to Charlottesville via Newark and Dulles, and I was glad to park my butt at home for a month.&lt;/p>
&lt;p>2023 wasn&amp;rsquo;t quite as bad as previous years, what with the #FlughafenChaos that struck Germany in 2022, but I have grown an immovable disdain for BER. The long-awaited and much-overdue airport is a shitshow. It&amp;rsquo;s an unfinished mess with amenities from the last century, located far outside the city. Security control is abysmally slow, often you&amp;rsquo;ll see everyone just talking to each other while not moving any bags at all. You&amp;rsquo;re not allowed to put your own tray on the conveyor. (That might have to do with the &lt;a href="https://www.aerotime.aero/articles/26969-Berlin-airport-staff-suffers-electric-shock">electric shocks&lt;/a> the security crew were receiving from the machines). Passport control is understaffed. There&amp;rsquo;s no lounge in the C-D gates, past the Schengen zone. It connects to nowhere.&lt;/p>
&lt;p>It&amp;rsquo;s that latter complaint that struck me on this trip. United, my carrier of choice, ran a seasonal IAD-BER connection, but that stopped on October 31. It doesn&amp;rsquo;t look like it&amp;rsquo;s coming back next year. That leaves no connection between the capitals of EU&amp;rsquo;s most important economy and the world&amp;rsquo;s. This is mind-boggling. Yes, Munich and Frankfurt have long reigned over Germany&amp;rsquo;s air travel universe, but come on, Berlin is a capital city, the country&amp;rsquo;s biggest city by a factor of 2. You&amp;rsquo;ve got to do better than that.&lt;/p>
&lt;p>So off I went through Newark. Newark&amp;rsquo;s airport has been refreshed lately, it&amp;rsquo;s a perfectly fine airport to transit through and the United lounge there is great. But I am scared of the airport and have been ever since &lt;a href="https://en.wikipedia.org/wiki/Continental_Airlines_Flight_1883">a plane landed on a taxiway there in 2006&lt;/a> and much more recently, since &lt;a href="https://onemileatatime.com/news/turkish-airlines-a330-take-off-taxiway/">a plane tried taking off from one&lt;/a>. It&amp;rsquo;s too crowded. A disaster is going to happen there some day and I try to avoid it when I can. But I didn&amp;rsquo;t die on this trip.&lt;/p>
&lt;p>Instead, I got home with little difficulty. I wish I had planned better &amp;ndash; I had scheduled an appointment with Customs and Border Patrol to get my Global Entry interview done, which meant a few days after I arrived I had to drive back up to Dulles to do the interview. I resisted doing Global Entry for a while, as CBP isn&amp;rsquo;t exactly my favorite government organization. But this year I flew so much I gave in. I am absolutely done waiting in airport lines. I made status this year. I got my US passport working at Schengen border control automated checkpoints. I can cruise in and out of two continents now, that&amp;rsquo;s pretty great. I&amp;rsquo;m going to save a lot of headache.&lt;/p>
&lt;p>Anyways, I had to drive up north during the break so I called up my lovely friend Eve and met them at the National Gallery in DC. A Rothko exhibit was running &amp;ndash; I&amp;rsquo;ve never seen Rothko, and I found his work fascinating. The subtle use of color is outstanding.&lt;/p>
&lt;p>After finishing my work year, Christine and I hosted a few gatherings. Her family came over for Christmas dinner and then we hosted a party during the week &amp;ldquo;zwischen den Jahren&amp;rdquo;, what Germans refer to as &amp;ldquo;between the years&amp;rdquo; and some others refer to as Boxing week. We did it open house style, with folks popping in any time during the day, and it was good to see friends, and good to send off the new year.&lt;/p>
&lt;p>After the parties, I started work on an old house project, working on renovating our upstairs. It&amp;rsquo;s a project long in the making but I made good progress. Long story short, I&amp;rsquo;m putting in new subfloor and new flooring, replacing trim, moving a laundry room, and finally repairing a utility room that was being unused for years. It&amp;rsquo;s nice to get the house in order.&lt;/p>
&lt;p>After a month home, I came back to Berlin. I&amp;rsquo;m still fighting off the jet lag, but I hardly have any time to rest: I&amp;rsquo;ll be underway again soon.&lt;/p>
&lt;p>Trip log, 2024:&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;/ul>
&lt;/li>
&lt;li>Countries:
&lt;ul>
&lt;li>United States&lt;/li>
&lt;li>Germany&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Cities:
&lt;ul>
&lt;li>Charlottesville&lt;/li>
&lt;li>Washington, DC&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description><tweet>Home for the holidays: renovations, parties, and passports. 2023 Travelogue: Berlin 🛫 Charlottesville 🚗 Washington, D.C.</tweet></item><item><title>Year in Review: 2023</title><link>https://emilygorcenski.com/post/year-in-review-2023/</link><pubDate>Sun, 31 Dec 2023 23:46:20 -0500</pubDate><guid>https://emilygorcenski.com/post/year-in-review-2023/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Bastejkalna%20Park-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Bastejkalna%20Park-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Bastejkalna%20Park-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Bastejkalna%20Park-thumb.jpg" width="600"/></media:content><description>&lt;p>2023 was a tough year but at least it was sometimes a rewarding one. My year in review.&lt;/p>
&lt;p>I&amp;rsquo;m not going to lie, I&amp;rsquo;ve not really had a good year since probably 2015 (the year I came out). I&amp;rsquo;ve lost any sort of optimism about the numerology of the new year representing some step change in the vibes of the universe, and rather have simply started to ossify and harden myself against a relentless world. If there&amp;rsquo;s a bright side of 2023, it was &lt;em>normal&lt;/em> hard and not like, surviving a terror attack or being sued or being turned into a TV character or something. 2023 was just a grind, with no real rest and no real easy moments. It was a year I &lt;em>endured&lt;/em>. And I&amp;rsquo;m glad I went through it and I&amp;rsquo;m glad it&amp;rsquo;s gone, even though 2024 will most likely be more of the same. Anyhow, enough pontificating, what all did I get done this year?&lt;/p>
&lt;h3 id="travel">Travel&lt;/h3>
&lt;p>With certainty, travel was one of the biggest contributors to my stress. This year I traveled extensively. Some of it was for work, some of it for pleasure, and some was just to try to check countries off my &amp;ldquo;to visit&amp;rdquo; list. But I have no regrets. I had some amazing experiences and saw some great places. I saw a bunch of new-to-me countries, experienced art and history and culture, and began to connect to a world outside my usual corners of Charlottesville and Berlin. In total, I visited:&lt;/p>
&lt;ul>
&lt;li>United States
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-boston-and-the-winter-classic/">Boston for the Winter Classic&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/whats-new-edition-2023-12-20/">Washington, D.C. and the National Gallery&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-charlottesville-virginia-beach-nova/">Wolf Trap and Virginia Beach for concerts&lt;/a>&lt;/li>
&lt;li>and of course, Charlottesville, which is still my home&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Ireland and the Isle of Man
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">County Cork and Douglas for our 10th Anniversary trip&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>United Kingdom (all four countries!)
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">Belfast, Edinburgh, and Cardiff for our 10th Anniversary trip&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">Portsmouth for the Goodwood Revival&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-london/">London for a work event&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Netherlands
&lt;ul>
&lt;li>Many times to &lt;a href="https://emilygorcenski.com/post/2023-travelogue-art-and-science-in-amsterdam-mannheim/">Amsterdam for work and to visit the Rijksmuseum&lt;/a> and &lt;a href="https://emilygorcenski.com/post/2023-travelogue-emily-gorcenski-gets-sent-to-the-hague/">The Hague&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-canals-and-chaos-in-utrecht-and-amsterdam/">Utrecht for a long weekend&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Switzerland and Liechtenstein
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-hamburg-stuttgart-z%C3%BCrich-vaduz/">Zürich for a work event, and Vaduz for the weekend&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">Geneva and Lausanne for a conference&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Italy and Vatican City
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/">Ferrara, Bologna and Rome to see Bruce Springsteen&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/">Vatican City to see the Sistine Chapel&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Austria
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/">Vienna for half a day passing through&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Kosovo and North Macedonia
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/">Prishtina and Skopje to explore the Balkans on vacation&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Romania
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-bucharest/">Bucharest for work&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Bulgaria
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-sofia/">Sofia for Easter weekend&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Greece
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-meetings-and-conferences-and-no-rest-for-the-wicked.-amsterdam-and-athens-to-round-off-the-summer./">Athens for a Conference&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Turkey
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">Istanbul accidentally when I messed up a visa going to Uzbekistan&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Lithuania and Latvia
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-winter-wonderlands-in-lithuania-latvia-and-bavaria/">Vilnius for a conference and Riga for the weekend&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>and of course, Germany
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-hamburg-harburg/">Hamburg to visit my best friend&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-a-week-on-the-elbe/">Pillnitz (Dresden) for a workcation with my best friend&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-stuttgart-mannheim-heidelberg/">Stuttgart, Heidelberg, Mannheim&lt;/a> and &lt;a href="https://emilygorcenski.com/post/2023-travelogue-winter-wonderlands-in-lithuania-latvia-and-bavaria/">Passau&lt;/a> for work&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2023-travelogue-leipzig-and-hannover/">Leipzig and Hannover for events&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Is that it? Christ that&amp;rsquo;s a lot. 49 flights. I lost track of how many nights it was. But it was a lot. Will 2024 be easier? Hah, no. Not with my new role. Speaking of&amp;hellip;&lt;/p>
&lt;h3 id="work">Work&lt;/h3>
&lt;p>So my company is doing a big reorg and that means that I formally stepped in to run the Data &amp;amp; AI Service Line for Thoughtworks Europe. That means that I have all of Europe under my purview and will have to be traveling more frequently to visit our offices in eight countries and clients wherever they may be.&lt;/p>
&lt;p>I am loving the challenge but not loving the headaches it can cause. I&amp;rsquo;m hopeful that things settle down in the new year and I can focus on the part of the job I like the most: serving clients and making them successful.&lt;/p>
&lt;p>I did less speaking this year, but I still found my way to events in London, Berlin, Leipzig, Lausanne, Hannover, Athens and Vilnius.&lt;/p>
&lt;h3 id="learning">Learning&lt;/h3>
&lt;p>Since moving to Germany, learning is a nonstop endeavor. This year, though, I took it easier on German classes. I think I only did about 100 hours total this year. I&amp;rsquo;m working towards C1. If I took the test tomorrow I doubt I&amp;rsquo;d pass. But I think I should be ready for it by mid year, and I&amp;rsquo;m comfortable with my conversational skills.&lt;/p>
&lt;p>I also started doing Coursera and Udemy courses, and finished the first part of a European Business Law course and an AI for Good course. I finished three Azure certifications this year, all fundamentals and therefore pretty easy, but it was nice to know that I do understand the stack at least decently. I received my DP-900, SC-900 and AI-900 certifications.&lt;/p>
&lt;h3 id="art-and-culture">Art and Culture&lt;/h3>
&lt;p>I went to a bunch of museums and concerts this year. Highlights among them:&lt;/p>
&lt;ul>
&lt;li>the Vermeer exhibition at the Rijksmuseum&lt;/li>
&lt;li>the Rothko exhibition and the National Gallery&lt;/li>
&lt;li>the Cardiff Museum&lt;/li>
&lt;li>Bruce Springsteen in Ferrara&lt;/li>
&lt;li>Shane Smith and the Saints in Virginia Beach&lt;/li>
&lt;li>Highscore at the Berlin Philharmonie&lt;/li>
&lt;/ul>
&lt;p>I also bought a Jahreskarte for the Staatliche Museen zu Berlin and have been visiting a new museum every weekend when I&amp;rsquo;m in town.&lt;/p>
&lt;h3 id="life-changes">Life Changes&lt;/h3>
&lt;p>The biggest change this year was the development of new habits for my mental health. Since Elon bought Twitter I&amp;rsquo;ve stopped using the horrible service. With the time I freed up, I was able to start reading more. I knocked out 49 books this year, including 14 books from my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>! This was more than double than what I had hoped to accomplish. And I really only started in April. So next year I&amp;rsquo;m going to set my target at 60 books, with 15 entries from the Modern Library list. Let&amp;rsquo;s see if I can keep it up.&lt;/p>
&lt;p>This has been wonderful for my mental health. One thing I coupled this with was a new habit for &lt;a href="https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/">keeping my phone out of the bedroom&lt;/a>. I&amp;rsquo;ve also started keeping a paper planner and journaling more. Writing has also been good for my mental health. Speaking of&amp;hellip;&lt;/p>
&lt;h3 id="writing">Writing&lt;/h3>
&lt;p>My best piece this year was &lt;a href="https://emilygorcenski.com/post/making-god/">Making God&lt;/a>, an 8800+ word indictment of the cult of Silicon Valley. I&amp;rsquo;m also working on a book on the topic, as well as my Charlottesville memoir. I&amp;rsquo;m hoping to get them both under contract in 2024. I&amp;rsquo;ve also published some pieces at work, including a piece on Gen AI governance.&lt;/p>
&lt;p>Speaking of writing, I counted recently and I think at least 6 books were published this year that have my name in them. That&amp;rsquo;s pretty cool.&lt;/p>
&lt;h3 id="and-thats-a-wrap">And that&amp;rsquo;s a wrap&lt;/h3>
&lt;p>There&amp;rsquo;s so much more, but honestly this was a lot already. 19 countries, a dozen museums and concerts, writing projects, and professional success. All the good stuff was earned out through brutally hard work both personally and professionally. But I&amp;rsquo;m churning, and sooner or later I&amp;rsquo;ll crest the hill and get some time to coast. Happy New Year, all!&lt;/p></description><tweet>Another hell of a year. This was a big one for me, with a lot of changes, a lot of travel, and a lot of hard work.</tweet></item><item><title>What's New: Edition 2023-12-28</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-12-28/</link><pubDate>Thu, 28 Dec 2023 22:19:35 -0500</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-12-28/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/tree.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/tree.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/tree.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/tree.jpg" width="600"/></media:content><description>&lt;p>The Hunger Games prequel was better than it had any right to be. And I discover bibliotherapy.&lt;/p>
&lt;p>The Nazis made a mistake coming to Charlottesville. The roots of antifascism run deep in this region, swelling up out of the hollers and over the hills, awakening to snuff out any Nazi garbage as soon as it appears. Appalachia (yes, I know Charlottesville is technically just outside) is the country&amp;rsquo;s least understood region, one whose place in the canon of popular culture is long overdue. &lt;em>A Ballad of Songbirds and Snakes&lt;/em>, the prequel to the &lt;em>Hunger Games&lt;/em> was a step towards righting that wrong.&lt;/p>
&lt;p>The original &lt;em>Hunger Games&lt;/em> trilogies were good books and good movies: flawed but fun, and deep enough for you to feel like there&amp;rsquo;s a real message hiding somewhere underneath. The trilogy&amp;rsquo;s great failing was avoiding the deeper sociopolitical analysis running through the heart of the story, exchanging it instead for a pithier, though more marketable, teen love story. This was a missed opportunity to explore the meaning of resistance, of power, and of oppression. Whatever the trilogy lacked, the prequel more than made up for.&lt;/p>
&lt;p>The first part of the film goes way harder than I imagined it could have. It dives into wealth and class consciousness, brings Appalachian culture to the forefront, and cultivates the spirit of rebellion lying in these fertile grounds. It didn&amp;rsquo;t escape me that the grand capital exterior shots were modeled on Berlin&amp;rsquo;s Strausberger Platz laying at one end of Karl-Marx-Allee (formerly Stalinallee). And it was a homecoming to see that the kernel of the resistance was music. There&amp;rsquo;s a reason an appalachian dulcimer sits atop my bookshelf. Mountain music has always been what rallied the people to resist.&lt;/p>
&lt;p>The movie hit so many notes so well: a trans actor (Hunter Schafer), an actor with Down Syndrome (Sofia Sanchez), men in skirts, and a true-to-life story of coal miners' rebellions that could have been plucked straight out of a history of the &lt;a href="https://en.wikipedia.org/wiki/Harlan_County_War">Harlan County War&lt;/a>. If I could fix the story, I would have shortened the second part; alas, it&amp;rsquo;s no &lt;em>Hunger Games&lt;/em> movie without the Hunger Games. I don&amp;rsquo;t know if you&amp;rsquo;re meant to sympathize with the main character (who becomes the villain in the trilogy), but it doesn&amp;rsquo;t matter. Rachel Zegler&amp;rsquo;s Lucy Gray Baird absolutely steals the show. The movie was fantastic and, by all accounts, watered down Susan Collins' anger from the book. I can&amp;rsquo;t wait to read it.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">Reading is healing&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-watching">&lt;em>A Ballad of Songbirds and Snakes&lt;/em> is way better than it has any right to be&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Wrapping German lessons for the year&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Bye bye Bobby Lee&lt;/a>&lt;/li>
&lt;li>&lt;a href="#my-dent-in-the-universe">My name in print&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>My organizing kick has continued from last week. We moved to a new storage unit a few days back, finally opting for a climate controlled unit. And I had a bunch of stuff in the old unit that was really just trash: an old mattress, old papers and odds-and-ends from exes, and some busted furniture. So I headed out to Lowe&amp;rsquo;s, bought a few heavy duty steel shelves, and Christine and I did a quick switcheroo. Two trips to the dump, three to Goodwill, a bunch of sorting and organizing, and it feels like progress was made. We cleared out the guest bedroom and its closet, which had become a &lt;em>de facto&lt;/em> storage room, and sorted through some seasonal things that made more sense to keep there. Getting the house in order feels really nice.&lt;/p>
&lt;p>Part of my motivation for doing this is that I want to keep my options open for moving back next year. In order to get to that point, there&amp;rsquo;s a lot of work on the house that has to get done and a lot of reducing the accumulated crap gathered over the years. America is so full of stuff, man. There&amp;rsquo;s just so much crap all around. But we&amp;rsquo;re taming it.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I read &lt;a href="https://psyche.co/ideas/reading-books-is-not-just-a-pleasure-it-helps-our-minds-to-heal">this great piece on bibliotherapy&lt;/a> the other day. My &lt;a href="https://bookwyrm.social/user/EmilyG">bookwyrm.social&lt;/a> profile is just &amp;ldquo;reading as healing.&amp;rdquo; I didn&amp;rsquo;t realize this was an actual thing. I&amp;rsquo;ve &lt;a href="https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/">written before&lt;/a> about how a big sort of step change in my mental health occurred this year, more or less in sync with my rediscovery of the joy of reading. I&amp;rsquo;m not sure which way the arrow of causality points, but I do know that I feel better when I read more. I should manage 50 books this year, and that&amp;rsquo;s only counting when I really started reading again around May. It&amp;rsquo;s cool to discover that the thing you&amp;rsquo;ve been doing to manage mental health is actually a known and studied approach. I&amp;rsquo;m not saying it&amp;rsquo;s a cure-all. But it is something that helped me tremendously.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>While decorating the tree this year I threw on &lt;a href="https://www.youtube.com/watch?v=yzGFPQQj9BQ">Nat King Cole&amp;rsquo;s Christmas album&lt;/a>. It&amp;rsquo;s a solid record, perhaps not as cozy as Ray Charles', but it&amp;rsquo;s one worth having on rotation.&lt;/p>
&lt;h3 id="what-im-watching">What I&amp;rsquo;m watching&lt;/h3>
&lt;p>The &lt;em>Hunger Games&lt;/em> prequel, &lt;em>A Ballad of Songbirds and Snakes&lt;/em>, was way better than I thought it would be, as mentioned above. But beyond the points already covered above, it&amp;rsquo;s nice to see a prequel that engages with the source material and seeks to build on it rather than just playing fan service for cash. The movie wasn&amp;rsquo;t perfect. But it corrected what the trilogy failed to address. It&amp;rsquo;s definitely worthwhile.&lt;/p>
&lt;p>Beyond that, I also watched &lt;em>Godzilla -1&lt;/em> with my wife and a friend. It was a fun movie, but I struggled with the PTSD storyline for a while. I&amp;rsquo;m glad I saw it, and there&amp;rsquo;s a lot there to engage with, but I just couldn&amp;rsquo;t let myself get close to the storyline without being re-traumatized.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I am resolved to wrap up my Lingoda C1.1 German class this year. I&amp;rsquo;ll plan to take my C1 test later next year, and I&amp;rsquo;ll give myself the first half of the year to wrap the remaining three modules of the course as preparation. I also want to get into studying Spanish again next year, and I&amp;rsquo;ve already booked some credits for that.&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>While heading out to meet friends for drinks, I checked my email and saw a great opportunity: get a numbered and signed print of &lt;a href="https://wina.com/news/064460-eze-amos-image-of-lee-head-makes-times-top-100-photos-of-2023/">Ézé Amos&amp;rsquo;s now-renowned photo&lt;/a> of the head of Robert E. Lee being melted down. I jumped on this very limited-time offer and put in a bid right away. I&amp;rsquo;m happy to pick this up and get it framed this week.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>I did a silly thing and searched my name in Google Books. And wow I discovered a lot more books with my name in them than I originally thought! What I found hilarious was how there were three or four nearly identical conservative grievance &amp;ldquo;cancel culture&amp;rdquo; pieces crying about my tweets. Deal with it, nerds. Anyways, having your name in print is kind of a special thing. I&amp;rsquo;d hoped I could accomplish that once in my life. But there are a couple dozen titles out there! That&amp;rsquo;s wild! I&amp;rsquo;m proud of myself and a bit overwhelmed. They&amp;rsquo;re not even all about Charlottesville. That&amp;rsquo;s a nice thing. It feels nice to make an impact on the world. Now I just have to hunt them all down for my collection.&lt;/p></description><tweet>The seeds of antifascism are sown in the appalachian soil. My name in print, organizing, and bibliotherapy. What's new, 2023-12-28 edition</tweet></item><item><title>Book Report: The House of Mirth by Edith Wharton</title><link>https://emilygorcenski.com/post/book-report-the-house-of-mirth-by-edith-wharton/</link><pubDate>Wed, 27 Dec 2023 16:19:22 -0500</pubDate><guid>https://emilygorcenski.com/post/book-report-the-house-of-mirth-by-edith-wharton/</guid><image><url>https://emilygorcenski.com/photo-gallery/europe-2018/louvre-1-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/europe-2018/louvre-1-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/europe-2018/louvre-1-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/europe-2018/louvre-1-thumb.jpg" width="600"/></media:content><description>&lt;p>Edith Wharton&amp;rsquo;s &lt;em>The House of Mirth&lt;/em> is over a hundred years old now, but remains a timeless and relevant story. I&amp;rsquo;m not sure that that&amp;rsquo;s a good thing.&lt;/p>
&lt;p>My wife and I sat down to catch a movie on the big screen the other day. I&amp;rsquo;ve been disconnected from pop culture while in Berlin. This means that I have no idea what movies are coming out, what is anticipated, what is being remade. And so I was as shocked to see that they&amp;rsquo;re modernizing &lt;em>Mean Girls&lt;/em> as my wife was offended that the movie&amp;rsquo;s tagline was, &amp;ldquo;not your mom&amp;rsquo;s &lt;em>Mean Girls&lt;/em>.&amp;rdquo; Come on, 2004 was only&amp;hellip; ok you know what let&amp;rsquo;s not do that math.&lt;/p>
&lt;p>Anyways, I don&amp;rsquo;t know if Edith Wharton would have considered herself a feminist, but I do know that the feminist canon has more than a few stories critiquing the tendency of patriarchy to turn women against each other. &lt;em>The House of Mirth&lt;/em> is one of these stories. The novel follows Lily Bart (Lily for purity, Bart for boldness) and her tragic fall from the upper echelons of society. She&amp;rsquo;s 29 and beautiful but unmarried and with only sporadic income from her aunt. Lily looks to get married to cement her place in New York&amp;rsquo;s aristocracy, but her timing is awful, her decisions somewhat questionable, and her position in the pecking order simply too low. Lily is sabotaged repeatedly by a &amp;ldquo;friend,&amp;rdquo; Mrs. Bertha Dorset. Lily socializes with the wrong crowd, she dresses herself too provocatively, and takes money from a man that she believes to be her own investment earnings, but turns out to be a loan. Bertha sees in this an opportunity, and eventually falsely accuses Lily of sleeping with her husband in order to hide her own affair.&lt;/p>
&lt;p>Bertha&amp;rsquo;s duplicity sets Lily on the road to ruin. Hearing salacious rumors of her behavior, Lily&amp;rsquo;s benefactor cuts her off and writes Lily out of her vast inheritance, leaving her only enough to pay her debts after a waiting period. Too proud to ask for help, and still too snobbish to seek it among the lower classes, Lily eventually finds work but is no good at it, becomes addicted to opiate sleep serum, and upon finally receiving her inheritance and settling her debts, overdoses a pauper.&lt;/p>
&lt;p>The only light in Lily&amp;rsquo;s life was her friend Mr. Selden, who loved her when she didn&amp;rsquo;t love him, and who she loved once he had already moved on. The book&amp;rsquo;s pièce de résistance is the tragic scene where a waifish and malnourished Lily says goodbye to Mr. Selden, asking him to remember her as she was, and as she could have been. He comes around to love her again but too late. Lily&amp;rsquo;s fall is complete.&lt;/p>
&lt;p>There are no heroes in the story, only villains. Lily is a victim of three immovable forces: Bertha Dorset&amp;rsquo;s society gossip, her own poor choices and timing, and a cannibalistic society of immense wealth designed to keep women down by having them trod upon each other. Wharton&amp;rsquo;s book is a scathing social critique of late 19th Century American upper class life. But the themes transcend these class boundaries as easily as they cross generational ones. We are not yet past the point where people will tear each other down and destroy each other just for the sake of a small, temporary personal gain. It&amp;rsquo;s a tragic tale, but the bigger tragedy is how it is nothing more than a mirror for what we&amp;rsquo;ve always been.&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/works/OL88813W/A_Room_with_a_View">&lt;em>A Room with a View&lt;/em>&lt;/a>&lt;br>
E. M. Forester&lt;br>
ISBN 9781404327559&lt;br>&lt;/p></description><tweet>Your great-great-grandmom's Mean Girls. The House of Mirth is a timeless classic. Modern Library No. 69 of 100.</tweet></item><item><title>What's New: Edition 2023-12-20</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-12-20/</link><pubDate>Wed, 20 Dec 2023 21:25:31 -0500</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-12-20/</guid><description>&lt;p>This year was a hard landing. But I still found ways to escape to find some culture.&lt;/p>
&lt;p>Last summer I was home during Pride month or some such, Charlottesville is a bit weird because our Pride breaks canon for some reason and takes place in September or what, and I stopped by a little queer summer market for queer-owned businesses that popped up at one of the local breweries. There was a table there selling some candles and soap and I stopped by to pick something up. The person working the booth misgendered me, or at least made a mistake, using &amp;ldquo;he&amp;rdquo; for me before embarrassingly stopping to ask my pronouns. I just looked and responded, &amp;ldquo;genuinely I do not care.&amp;rdquo; This is where I&amp;rsquo;m at, ten years after I took my first steps towards transition.&lt;/p>
&lt;p>They&amp;rsquo;re &amp;ldquo;she/her&amp;rdquo; by the way, but if you mess it up honestly, I forgive you. It&amp;rsquo;s fine. And if you purposefully use the wrong ones I&amp;rsquo;m going to think you&amp;rsquo;re an asshole, but I probably already arrived at that conclusion before you reached for a tired and cheap attack. If you deliberately misgender me, it&amp;rsquo;s not fine, and I hope you spill tomato sauce on your favorite wool sweater.&lt;/p>
&lt;p>Sometimes at work, I get on a larger call with folks who haven&amp;rsquo;t met and in nearly every case I&amp;rsquo;m the only trans person there. We do the whole introduce yourself and your pronouns and it just feels gratuitous and awkward and performative. Somewhere in the last decade or so we&amp;rsquo;ve somehow decided that this is the grand token of activism that cisgender people can contribute to trans equality and that in doing so all the gender problems of the world will be solved. I don&amp;rsquo;t know if you noticed but it hasn&amp;rsquo;t worked.&lt;/p>
&lt;p>I took my pronouns out of my profiles a few years ago now. As it turns out, having my pronouns there didn&amp;rsquo;t do a lot to make me feel included but it did do a lot to crank up harassment. I know it&amp;rsquo;s not the same for everyone, especially trans folks who are newly out, but a decade later I&amp;rsquo;m at the point where I don&amp;rsquo;t need gender validation, I need gender vengeance. I don&amp;rsquo;t care if you get my gender right or wrong, man, I&amp;rsquo;m just trying to buy a bagel. Just let me get on with my life. Go ahead and assume my gender. I don&amp;rsquo;t give a fuck. I&amp;rsquo;m sitting on a cache of a thousand problems and ten thousand opportunities and you don&amp;rsquo;t rank among either. Just get out of my way.&lt;/p>
&lt;p>I do understand the normalizing effect asking for pronouns can have and how it can help people who use pronouns outside the standard binary. I used &amp;ldquo;they/them&amp;rdquo; for a long time until I had to &lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">explain that to the FBI&lt;/a> and decided that was fucking weird and I never want to do that again. And I&amp;rsquo;m not saying that asking for pronouns is &lt;em>bad&lt;/em> or that we should stop doing that. But I&amp;rsquo;m also over pretending that we must ritualize it or forever live in sin. I&amp;rsquo;m over pretending like it only makes my life better and not sometimes considerably, immeasurably worse. There&amp;rsquo;s a value calculus here and it&amp;rsquo;s different for everyone. If it makes it worth it for you, I&amp;rsquo;m happy to do it for you, no question. But in my day to day I&amp;rsquo;ve got other things to do, so if you don&amp;rsquo;t mind I&amp;rsquo;ll opt out when it&amp;rsquo;s only my benefit on the line.&lt;/p>
&lt;p>Pronoun discourse bores me. I don&amp;rsquo;t actually think that normalizing asking for pronouns has done a whole lot for the trans rights movement, honestly. I think we&amp;rsquo;ve confused structural, material gains for interpersonal ones. It&amp;rsquo;s not that they don&amp;rsquo;t matter. It&amp;rsquo;s that we didn&amp;rsquo;t couple the cultural shift with a political one. Bad timing or bad strategy, I don&amp;rsquo;t know. But it&amp;rsquo;s tiresome and I&amp;rsquo;m tired and I would just like to have stable access to my prescriptions and if you think my voice sounds deep then yeah, that&amp;rsquo;s fine, that&amp;rsquo;s how it is when you transition as an adult and if the world were fair there&amp;rsquo;d be a lot of bigger problems solved, too. I&amp;rsquo;d trade correcting my pronouns every single day for the rest of my life for a single legally-protected right.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">Pronouns are boring, Kafka is not&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">Banjos in Vermont&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-watching">&lt;em>Taken&lt;/em> as the last great action film&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Catching up on tech certifications&lt;/a>&lt;/li>
&lt;li>&lt;a href="#my-dent-in-the-universe">Teaching digital safety&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>Every winter when I am home I get in a big productive streak. Sometimes it&amp;rsquo;s working on my website. Other times it&amp;rsquo;s working on the house. This year, I&amp;rsquo;m organizing. We&amp;rsquo;ve gathered a lot of stuff over the years. Some of it needs to be donated or sold. Some of it needs to be thrown out. And some of it just needs to consistently be put in the same damn place. I can&amp;rsquo;t complain too much. I&amp;rsquo;m not home enough to keep on top of things. But a little purge now and again can be good for the soul.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>The above pronoun rant was largely motivated by the astonishing boredom that I felt while reading Dennis Barron&amp;rsquo;s &lt;em>What&amp;rsquo;s Your Pronoun&lt;/em>. It&amp;rsquo;s not a bad book. It&amp;rsquo;s just that it&amp;rsquo;s mostly a history of gender neutral pronouns with a little bit of trans identity politics sprinkled in. Some 100 pages or so of the book are dedicated to 19th C. weirdos. It&amp;rsquo;s nice to know that the English language has long suffered the pronoun problem. And it&amp;rsquo;s also familiar to see that pronoun freakouts have always emerged on the heels of gender equality movements. But the book taught me very little I hadn&amp;rsquo;t already learned from five years of anti-TERF discourse and the book avoided any real interrogation of social justice, spending all its time on grammar, instead. It&amp;rsquo;s a nice reference to have on the shelf and an easy read. But for anyone interested in trans politics there are surely more interesting, enlightening books instead.&lt;/p>
&lt;p>I also decided I was ready to read some Kafka in the original German. I picked up a Taschenbuch containing &lt;em>Das Urteil&lt;/em> (The Judgement) and &lt;em>Die Verwandlung&lt;/em> (Metamorphosis) and read through it in a week. They&amp;rsquo;re not long stories. But they do contain volumes about German psychology. I can understand why it&amp;rsquo;s mandatory reading for German speakers.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>I&amp;rsquo;ve been digging Noah Kahan&amp;rsquo;s _Stick Season (We&amp;rsquo;ll All Be Here Forever). I&amp;rsquo;m a sucker for a banjo and songs stuck in the tension between the impossibility of modern life and the relentless urge to be a part of it. &lt;a href="https://www.youtube.com/watch?v=m9Kev73C2cc">&amp;ldquo;Dial Drunk&amp;rdquo;&lt;/a> is a great illustration of exactly this. Kahan has an early Mumford &amp;amp; Sons or early Lumineers kind of vibe; it&amp;rsquo;s earned him a Grammy nod for Best New Artist. Best of luck to him!&lt;/p>
&lt;h3 id="what-im-watching">What I&amp;rsquo;m watching&lt;/h3>
&lt;p>I finished up &lt;em>Loki&lt;/em>. Meh. Tough to see how the series retains long-lived relevance after &lt;a href="https://www.npr.org/2023/12/18/1220040473/jonathan-majors-verdict-guilty">Jonathan Majors was found guilty&lt;/a>, especially after how prominent a role he played in the show and the saga to date.&lt;/p>
&lt;p>But I did take the chance to rewatch &lt;em>Taken&lt;/em> this week. This movie holds up. It&amp;rsquo;s a pure action film and one which retains a particular attention to detail. The sequels were no good, ignore them. The original&amp;rsquo;s plot was perfectly woven with a plot that unfolded the right details at the right moments and gave Neeson an unquestionable moral license to simply beat the hell out of people. A good vengeance flick is harder to pull off than it seems. &lt;em>Taken&lt;/em> inspired my Charlottesville activism, minus the physical retribution. But I did have a particular set of skills&amp;hellip;&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>This week I had two Azure certification tests scheduled during my annual Personal Development Budget days. I studied for and passed both the SC-900 Security &amp;amp; Compliance Fundamentals test and the AI-900 AI Fundamentals test. Both were easy tests, but I did learn something from both. I might mess around with Azure ML Studio during my break. It&amp;rsquo;s gotten really good in the last couple of years.&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>On Monday this week I had an appointment up in Northern Virginia, and I took the opportunity to meet up with my dear friend, Eve in DC. We met up at the National Gallery, where a Mark Rothko exhibit was running. A Rothko recently sold at auction for a cool $82.5M, which of course brought out all of the critique from the AI peanut gallery on Twitter. Why is this worth so much, they ask. It must be money laundering, says the same crowd of people that spent all 2022 trying to artificially inflate the price of a URL to a badly drawn JPEG of a monkey. Kate Wagner&amp;rsquo;s counter-critique put it perfectly:&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/rothko.png" alt="Kate Wagner responding: the Rothkos are some of the most crowded paintings at every museum they’re in because they are quite simply mesmerizing and transcendent. they are popular for a reason. If you want to shit on modernism don’t pick one of its most beloved practitioners.">&lt;/p>
&lt;p>Anyways, the exhibit was great and definitely worth it. I lament not picking up a book from the gift shop.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>For reasons I can&amp;rsquo;t quite understand, I did a Google Books search for my name and discovered something surprising: there were at least a dozen books with my name in them published in the last few years that I was totally unaware of. And a few of them were right wing grievance pieces which took old tweets of mine and complaining about them without understanding them at all. It&amp;rsquo;s a very powerful position to hold knowing that someone can build a whole victim culture around what you tweet. Now that I&amp;rsquo;ve left Twitter, what are they going to do now, is my question. But besides that, some of the books look cool and relevant. I&amp;rsquo;ve ordered them and am excited to read through them. No one really tells you when they include you in a book for the most part. It&amp;rsquo;s a weird thing to discover after the fact.&lt;/p></description><tweet>Unpopular pronoun opinions. Rothko and AI art, exams, and a dozen books with my name. What's new, 2023-12-20 edition</tweet></item><item><title>Book Report: A Room with a View by E. M. Forester</title><link>https://emilygorcenski.com/post/book-report-a-room-with-a-view-by-e.-m.-forester/</link><pubDate>Wed, 13 Dec 2023 22:01:57 -0500</pubDate><guid>https://emilygorcenski.com/post/book-report-a-room-with-a-view-by-e.-m.-forester/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/Monument%20to%20Victor%20Emmanuel%20II.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/Monument%20to%20Victor%20Emmanuel%20II.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/Monument%20to%20Victor%20Emmanuel%20II.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/Monument%20to%20Victor%20Emmanuel%20II.jpg" width="600"/></media:content><description>&lt;p>E. M. Forester&amp;rsquo;s &amp;ldquo;Lucy novel&amp;rdquo; is a critique of British class and sexual norms.&lt;/p>
&lt;p>It&amp;rsquo;s a bold thing for a gay man to write a book criticizing British class hierarchy and sexual norms, and bolder still to write a female protagonist into such a novel. &lt;em>A Room with a View&lt;/em> is a classic look at the utter sexual repression of British society. Like many stories of the genre, the entire book could be done away with with a single minute of honest conversation. But honesty is a radical and subversive idea in a culture clinging desperately to the last threads of its class structure.&lt;/p>
&lt;p>The novel tracks Lucy Honeychurch, a beautiful yet naïve young woman traveling through Italy. She and her travel group complain about their hotel having an insufficient view. A father and son, both of a lower social class, offer to exchange rooms. This gesture is of course unthinkably crass by the standards of the time, and a great deal of energy is spent to protect young Lucy from this transgression. Of course, the younger of the men, George Beebe, is attracted to Lucy and she to him. This, of course, will not do. Young women aren&amp;rsquo;t supposed to be able to love just anyone, naturally.&lt;/p>
&lt;p>The story&amp;rsquo;s romance is actually unoriginal and boring. It&amp;rsquo;s a heterosexual love triangle, genuinely what could be more boring? But the story unfolds through Lucy gradually discovering her own agency. This is something different. Wealthy, Edwardian women were supposed to lounge about and marry, not have agency and opinions. Lucy eventually disengages her class-appropriate fiance and chooses a life in Italy with George. It ends happily ever after.&lt;/p>
&lt;p>It&amp;rsquo;s not that &lt;em>A Room with a View&lt;/em> is a bad book. It&amp;rsquo;s just that it&amp;rsquo;s a boring one. The repressed (hetero)sexuality of English society has been done so many times. Forbidden love outside your class has been done so many times. The characters are trapped by a prison of their own making. They&amp;rsquo;re all insufferable, incapable of communicating, and one-dimensional. The best part of the book is that it&amp;rsquo;s very short and beautifully written. I do wonder what Forester would think about today&amp;rsquo;s society and how we&amp;rsquo;ve overcome (much) of that repressive etiquette, but I don&amp;rsquo;t wonder enough to want to go deeper in this book report&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/works/OL88813W/A_Room_with_a_View">&lt;em>A Room with a View&lt;/em>&lt;/a>&lt;br>
E. M. Forester&lt;br>
ISBN 9781404327559&lt;br>&lt;/p></description><tweet>Sexual repression in the Edwardian era looks absurd when framed by novels like A Room with a View. And that's the point. Modern Library No. 79 of 100.</tweet></item><item><title>What's New: Edition 2023-12-10</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-12-10/</link><pubDate>Sun, 10 Dec 2023 19:39:46 -0500</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-12-10/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/passau/wasserstand.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/wasserstand.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/wasserstand.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/wasserstand.jpg" width="600"/></media:content><description>&lt;p>Bringing the year soon to a close after one last business trip, some festivities, and a long flight home.&lt;/p>
&lt;p>Last year, with the war in Ukraine still fresh and fears of a gas shortage in Germany at the front of everyone&amp;rsquo;s mind, I challenged myself to keep the heat off until January. I didn&amp;rsquo;t make it: sometime around December I gave up. My apartment&amp;rsquo;s exterior walls are all floor-to-ceiling windows. I don&amp;rsquo;t have the proper curtains to keep the flat properly insulated. Nevertheless, I was determined to do it this year.&lt;/p>
&lt;p>My intense travel schedule certainly helped. I was away from home as frequently as I was in it. And this year I bought fully into the strategy of &amp;ldquo;warm the body before the home.&amp;rdquo; I invested in warm slippers and a &lt;em>Wärmeflasche&lt;/em>, a silicon hot water bottle. It&amp;rsquo;s been a lifesaver, honestly. All I had to do was make it to this weekend without turning the dials above &amp;ldquo;1&amp;rdquo; and I made it. I saved a little bit of the climate today. (Ignore my flying habits please).&lt;/p>
&lt;p>The other thing is that I&amp;rsquo;ve just been too busy to notice being cold. I&amp;rsquo;m always jumping from call to call when I&amp;rsquo;m not on the road, then there&amp;rsquo;s German class, and then I&amp;rsquo;m off to dinner and off to sleep. I&amp;rsquo;ve been less reliably getting up early to read, partly helped by the darkness, but I&amp;rsquo;ve also approached the end of the year on full afterburners anyways. I&amp;rsquo;m ready to rest.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#my-dent-in-the-universe">Teaching digital safety&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-reading">The Balkans' depressing history&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">The soulful spirit of Christmas&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-watching">&lt;em>Loki&lt;/em> is truly awful&lt;/a>&lt;/li>
&lt;li>&lt;a href="#travel-and-exploration">One last trip to Bavaria for work, and then home&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Speaking German is more fun when you care&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>After 49 flights, 19 trips, 11 new countries, 43 books (and counting), 8,800 words on AI, countless conference talks, several podcasts, and dozens of projects, I am bringing this year to a close. I jumped on a flight back to Charlottesville this weekend and am cuddling happily with my dog and my cat and my wife.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I wrapped up Edith Wharton&amp;rsquo;s &lt;em>The House of Mirth&lt;/em>. It&amp;rsquo;s a novel a bit hard to understand but powerful and relevant in the modern era. The novel stands as a critique of high society, can read as an early precursor to a kind of self-defeating femininity, and a heartbreaking romance all in one. I didn&amp;rsquo;t think I&amp;rsquo;d like it, but the book&amp;rsquo;s final scenes really drive the story home. My review will come soon. I&amp;rsquo;m a couple books behind there.&lt;/p>
&lt;p>I also finished Misha Glenny&amp;rsquo;s &lt;em>The Balkans&lt;/em>. There&amp;rsquo;s not a lot of happiness in this book. It&amp;rsquo;s a huge story with a lot of death. There&amp;rsquo;s a lot of history here to cover; the communist era merits only a chapter. Nevertheless, it helps explain the nature of the conflicts in Europe&amp;rsquo;s most misunderstood and maligned region. I&amp;rsquo;ve had the privilege to explore the Balkans these past few years and I&amp;rsquo;m excited to see the rest of them soon.&lt;/p>
&lt;p>Now, I&amp;rsquo;m on to Max Beerbohm&amp;rsquo;s &lt;em>Zuleika Dobson&lt;/em> at #59 on the &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library&lt;/a> list. I&amp;rsquo;ve also opened up a &lt;em>Taschenbuch&lt;/em> of Kafka&amp;rsquo;s &lt;em>Das Urteil/Die Verwandlung&lt;/em>. Gotta keep those German skills sharp.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>The Christmas staple in my home growing up was Ray Charles' &lt;a href="https://www.youtube.com/watch?v=EaAdg_l38Cc">&lt;em>The Spirit of Christmas&lt;/em>&lt;/a>. It&amp;rsquo;s a soulful album, glowing with the season&amp;rsquo;s essence, and it stands out nearly 40 years after its release.&lt;/p>
&lt;h3 id="what-im-watching">What I&amp;rsquo;m watching&lt;/h3>
&lt;p>I&amp;rsquo;ve been trying to keep pace with the Marvel stuff. I genuinely dislike the whole multiverse saga. And perhaps the worst installment yet, &lt;em>Loki&lt;/em> Season 2, shows how tired the writers, actors, and fans are. I don&amp;rsquo;t even think people can find enough passion in the show to write gay fanfic about it. But I&amp;rsquo;m sure I can be proven wrong here. I shouldn&amp;rsquo;t bet against the internet.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I&amp;rsquo;m hell-bent to finish my C1.1 module before year&amp;rsquo;s end so I&amp;rsquo;ve been back to cramming online courses with Lingoda. I should be able to wrap the module by end of year. And I have a couple Azure certification tests planned that I need to start studying for this week.&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>My office had its end of year party this year, which was Berlin themed. It was nice to get a sense of the local traditions. Otherwise I haven&amp;rsquo;t really gotten out much to dive into culture.&lt;/p>
&lt;h3 id="travel-and-exploration">Travel and exploration&lt;/h3>
&lt;p>I had one more trip, this time to &lt;a href="https://emilygorcenski.com/post/2023-travelogue-winter-wonderlands-in-lithuania-latvia-and-bavaria/">Passau&lt;/a>, before the year came to a close. It was a short trip, but worthwhile, and I&amp;rsquo;m happy to return there again next spring. Otherwise my only travel has been the long flight back over the Atlantic to come home. I&amp;rsquo;m ready for home.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>I joined &lt;a href="https://www.aequa.cc/">a local workshop collective&lt;/a> towards the end of this year and I held the first instance of a Digital Safety workshop that I plan to run monthly. There are two versions of this workshop, one geared towards activists and organizers, and another towards people in vulnerable living situations. The soft launch was for the activists and organizers version and I was happy to have a safe and enthusiastic audience. I can&amp;rsquo;t wait to make this a regular thing!&lt;/p></description><tweet>Ray Charles and the spirit of Christmas, keeping the heat off, and wrapping my travel year. What's new, 2023-11-27 edition</tweet></item><item><title>2023 Travelogue: Winter wonderlands in Lithuania, Latvia, and Bavaria</title><link>https://emilygorcenski.com/post/2023-travelogue-winter-wonderlands-in-lithuania-latvia-and-bavaria/</link><pubDate>Sun, 10 Dec 2023 16:59:41 -0500</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-winter-wonderlands-in-lithuania-latvia-and-bavaria/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/passau/passau.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/passau.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/passau.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/passau/passau.jpg" width="600"/></media:content><description>&lt;p>One more time on the road before wrapping up the year, for a conference and a meeting.&lt;/p>
&lt;p>I&amp;rsquo;ve traveled a lot this year. By the count of my travelogues, I&amp;rsquo;ve been on the go 19 times this year, not counting my year-end trip. Taken altogether, that&amp;rsquo;s a significant fraction of the year spent on the road. Hang on, let me count the days&amp;hellip; I can&amp;rsquo;t. It&amp;rsquo;s a lot. Probably at least 4 months altogether.&lt;/p>
&lt;p>But I couldn&amp;rsquo;t close out the year without one more time hitting the road. I agreed to speak at &lt;a href="https://bigdataconference.eu/">Big Data Conference Europe 2023&lt;/a> and was excited to get the chance to see a new city. I&amp;rsquo;d been wanting to visit the rest of the Baltics for some time (I visited Estonia a few years ago), and this was a perfect opportunity. So I buried myself in Google Slides, put together a talk or two, and hit the road.&lt;/p>
&lt;p>The conference was fun. I had a couple coworkers also speaking there. I was only supposed to give one talk on Data Mesh, but due to unforeseen circumstances I had to step in to two other talks. I was happy to! I also volunteered to emcee one day, so I was on stage &lt;em>a lot&lt;/em>. It was exhausting. But the city was worth it.&lt;/p>
&lt;p>Vilnius is cool, man. The old town is great and the city is gorgeous. The weather was cool (my fellow conference-goers would say cold) but I was dressed well for it. We had a lovely speakers' dinner followed by a late night tour around the Old Town. Getting to Vilnius was irritating. While Air Baltic has a direct connection to Berlin, it wasn&amp;rsquo;t convenient, and it&amp;rsquo;s not exactly a Star Alliance partner and I was angling for Gold this year. So I took a horrible connection through Frankfurt. Landing midday, I opted to take the bus from the airport to my hotel. It costs one Euro, though for some reason the driver wouldn&amp;rsquo;t take my money, so I just huddled with my carryon tucked into a seat. As the bus got crowded, I found it a bit suffocating in my heavy winter coat, but I survived.&lt;/p>
&lt;p>The great thing about working week conferences is having the weekend to spare. So I got up early Saturday and hopped on a Flixbus to Riga, thereby completing the set and knocking off the last country on my Baltics to-do. I had booked the Flixbus well in advance and took advantage of the option to book the adjacent seat. So I had a comfortable ride in 1A + 1B. The trip took four hours but didn&amp;rsquo;t feel like it. Driving through the charming Lithuanian snowscapes was enough to pass the time. I nodded off briefly, but not for that long. Thoroughly pleasant, I&amp;rsquo;ll take that trip again for sure.&lt;/p>
&lt;p>But the highlight of my travels was Riga. At the conference, my coworkers, among them a well-traveled Welsh-Irishman and an Estonian in Barcelona, both lamented that Riga was hardly their favorite Baltic city. I was undeterred and happy to prove them wrong. Riga was amazing. A fresh blanket of snow had falled on the architecturally-charming city, and as I took my camera to a park to get a photograph at twilight, the lights came on and blessed me with a perfect winter scene.&lt;/p>
&lt;p>![A snow covered park in Riga](&amp;quot;/photo-gallery/travel/2023/vilnius-riga/Bērnu rotaļu laukums Esplanāde.jpg&amp;quot;)&lt;/p>
&lt;p>I stopped to visit the &lt;a href="https://okupacijasmuzejs.lv/en">Museum of the Occupation of Latvia&lt;/a> to experience a bit more of the often-overlooked history and culture of the beautiful country. It wasn&amp;rsquo;t a happy museum, but it does harden one&amp;rsquo;s resolve to fight authoritarianism wheresoever it appears. One fun fact about the Baltics: it was the &lt;a href="https://en.wikipedia.org/wiki/Singing_Revolution">Singing Revolution&lt;/a> that was the straw that broke the backbone of the Soviet Union.&lt;/p>
&lt;p>Anyways, go ahead and &lt;a href="https://emilygorcenski.com/post/vilnius-and-riga/">check out my photos from Latvia and Lithuania&lt;/a>.&lt;/p>
&lt;p>I had not nearly enough time in Riga to fully enjoy the city, instead having to head back briefly to Berlin via Munich. I was excited to be home, as my best friend would be in town, but the time home hardly lasted. The next day I was on the road again, this time to Passau for a meeting.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/passau/wasserstand.jpg" alt="Flood heights of the Danube over the centuries">&lt;/p>
&lt;p>Passau is proper far away. There are no easy ways there from Berlin, the best option being a flight to Munich and a two-and-a-half hour (!!) train ride to the border city. I was so far to the limits of Germany that my phone kept connecting to the Austrian cell network. Passau is a university town situated at the confluence of three rivers: the Inn, the Donau (Danube), and the smaller Ilz. Arriving via Regiobahn, I was hoping to catch a cab or at least an Uber from Hauptbahnhof to my hotel in the Altstadt. No such luck. Not even a scooter. So off I went in the snowy cold, marching through the medieval streets of the quaint Bavarian town with roller bag in tow. I made it, falling down only once the next day on the slippery steps between some old building or another. It was a nice city. I&amp;rsquo;ll be back in a few months.&lt;/p>
&lt;p>Heading back to Hauptbahnhof to reverse course back to Berlin, I had a nice chat with the cabbie, an Albanian Kosovar who&amp;rsquo;d been in Berlin since the late 90s. We chatted in German about my recent trip to Pristina and I was happy to thank him at the end in Albanian. Sometimes Europe is fun. It was a nice way to close the year.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/passau/passau.jpg" alt="Passau as seen from a bridge over the Inn">&lt;/p></description><tweet>One more time on the road before wrapping up the year. Amazing winter scenes in the Baltics and Bavaria. 2023 Travelogue: Berlin 🛫 Vilnius 🚌 Riga 🛫🚝 Passau</tweet></item><item><title>What's New: Edition 2023-11-27</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-11-27/</link><pubDate>Mon, 27 Nov 2023 23:58:33 +0100</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-11-27/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/tram-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/tram-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/tram-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/tram-thumb.jpg" width="600"/></media:content><description>&lt;p>I put a lot into the universe this week. And I asked, &amp;ldquo;is AI trending towards cultism?&amp;rdquo; Writing, art, travel. And no rest.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#my-dent-in-the-universe">The millenarian cultishness of AI, and shaping technology on stage&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-reading">Manners and class: critique and absurdity from a forgotten time with Edith Wharton&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">Being the black sheep of the family&lt;/a>&lt;/li>
&lt;li>&lt;a href="#travel-and-exploration">Unexpected joy in the Baltics&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Memory and the horrors of occupation&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Speaking German is more fun when you care&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Just like in my &lt;a href="https://emilygorcenski.com/post/whats-new-edition-2023-11-20/">last update&lt;/a> I have been traveling a lot. I wrote the last update having just got back from a trip and heading off to another, and here I am again, writing this update having spent one (1) night at home before heading off again. I write this from an old hotel room in Bavaria.&lt;/p>
&lt;p>I enjoyed the trip nevertheless. I&amp;rsquo;d been wanting to see the rest of the Baltics for some time now—I went to &lt;a href="https://emilygorcenski.com/post/tallinn-2020/">Estonia&lt;/a> a few years ago—and when I had the chance to speak at &lt;a href="https://bigdataconference.eu/">Big Data Conference Europe 2023&lt;/a> in person, I took the chance.&lt;/p>
&lt;p>The travel meant a bit of a slowdown in my reading but I got to do some writing, see some new cities and countries, and take some pictures. I&amp;rsquo;ve now visited 34 countries in Europe and 11 new countries this year. Hot damn.&lt;/p>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>Being away from home for the holidays kind of sucks. Not only that, but I was on the road. The last few years here in Berlin, my best friend has hosted a &amp;ldquo;Beaver Moon&amp;rdquo; festival with some other Americans. We get to cook a Thanksgiving dinner without celebrating genocide. It&amp;rsquo;s very nice. But I missed it this year because I was away. And I misesd being home with my wife and in-laws, too. They don&amp;rsquo;t tell you about these little things of emigrant life, the missing of the rituals and the holidays and stuff. No football on TV, no cranberry sauce weirdly retaining the shape of its can.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>Edith Wharton&amp;rsquo;s &lt;em>The House of Mirth&lt;/em> has been my travel companion. I&amp;rsquo;m slowly reading it while on planes—I should finish during this trip. It&amp;rsquo;s a hard book. I don&amp;rsquo;t understand the social quirks that make up the essential parts of the story. All I know is that the main character, Lily Bart, is managing to screw up her social status while also pretending not to live in poverty. I can see it as a social commentary on the times. But as resident of the 21st century, these norms seem absurd. I guess that&amp;rsquo;s the point.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>I&amp;rsquo;m back to listening to Radical Face &lt;em>The Family Tree: Leaves&lt;/em>. On repeat is &lt;a href="https://www.youtube.com/watch?v=RkY7kkO7yAI">&amp;ldquo;Everything Costs&amp;rdquo;&lt;/a>. It reminds me of not fitting in with the family you&amp;rsquo;re supposed to belong to. I feel that.&lt;/p>
&lt;blockquote>
&lt;p>I heard you say that you&amp;rsquo;d lost, you&amp;rsquo;d lost you&amp;rsquo;d lost your way&lt;br>
But I don&amp;rsquo;t think you had much to lose&lt;br>
That house was never built for you&lt;br>
And I ain&amp;rsquo;t gonna hang my head for them, for them&lt;br>
And I ain&amp;rsquo;t gonna let them paint the truth with sin&lt;br>
And I ain&amp;rsquo;t gonna tell you it&amp;rsquo;s okay&lt;br>
But at the end of the day&lt;br>
You were just something they&amp;rsquo;d blame&lt;/p>
&lt;/blockquote>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>I went to the Museum of the Occupation of Latvia while traveling in Riga. It was not a happy museum—Latvia&amp;rsquo;s freedom was robbed of it by the &lt;a href="https://en.wikipedia.org/wiki/Molotov%E2%80%93Ribbentrop_Pact">Molotov–Ribbentrop Pact&lt;/a>, then by the Nazi invasion, then by the Soviet occupation. It sucked. But the museum is an important reminder of why we must always fight authoritarianism.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/russia-world-tour.jpg" alt="A t-shirt saying Russia World Tour since 1944 with a picture of a tank">&lt;/p>
&lt;h3 id="travel-and-exploration">Travel and exploration&lt;/h3>
&lt;p>I went to Vilnius and then to Riga, it was great! Vilnius was such an amazing city, with an incredible walkable Old Town, lots of monuments, a beautiful river, and just a lot of charm. It was cold but pleasantly so. I&amp;rsquo;m definitely going to go back. There&amp;rsquo;s so much more I have to see. The only downside is that I was there for a conference and that meant that most of my day was inside at the event. But I did take a tour of the Old Town, and I also did some exploration on my last day there.&lt;/p>
&lt;p>![Vilnius Cathedral](/photo-gallery/travel/2023/vilnius-riga/Vilniaus arkikatedra-thumb.jpg)&lt;/p>
&lt;p>I got up early on Saturday and headed off to catch a Flixbus up to Riga. I&amp;rsquo;d spend the weekend there, one night really, and at least check Riga off my list. My colleagues told me that Riga was their least favorite Baltic city for some reason, but I was hopeful. The bus ride was great—I had booked well in advance and booked seats 1A and 1B. It took about 4 hours but hardly felt like that. It had snowed and the countryside was covered in a clean white sheet. I had a feeling like I was exactly where I was supposed to be on that trip.&lt;/p>
&lt;p>Then I got to Riga and&amp;hellip; it was amazing! The city is architecturally beautiful! My best photos are over in my &lt;a href="https://emilygorcenski.com/post/vilnius-and-riga/">gallery&lt;/a>, but I&amp;rsquo;ll put a couple here. I loved it there. I walked around all day Saturday and Sunday. The people were beautiful. The parks were beautiful. The buildings were beautiful. Wow. What a winter city!&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/tram-thumb.jpg" alt="Tram">&lt;/p>
&lt;p>![National Library of Latvia](/photo-gallery/travel/2023/vilnius-riga/Latvijas Nacionālā bibliotēka-thumb.jpg)&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>German lessons were on hold during travel. And I almost lost my Duolingo streak, but I got it back. Speaking of—I had better get that done now.&lt;/p>
&lt;h3 id="what-im-playing">What I&amp;rsquo;m playing&lt;/h3>
&lt;p>No gaming. I&amp;rsquo;m slightly stressing over losing out on the weeklies in MW3. This whole grind is brutal. It plays games with my psyche too much. But I&amp;rsquo;m letting it go. I don&amp;rsquo;t need every camo ever. It&amp;rsquo;s fine.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>I put a lot into the world this week. A lot of energy. Let&amp;rsquo;s start with the big one.&lt;/p>
&lt;p>I wrote &lt;a href="https://emilygorcenski.com/post/making-god/">a massive, 8800+ word piece on AI and millenarian cultism&lt;/a>. I tried to weave a long thread through history, from the idea of the American technological sublime and manifest destiny, through corrupting politics with data, to the repeated failures to live up to AI hype over decades. It&amp;rsquo;s long, but I am proud of it. I wrote it in a fury. It was the product of 20+ years of study brought forth from my fingertips in two furious nights.&lt;/p>
&lt;p>I did this while giving three! (3) talks at Big Data. I had prepared only one talk on lessons learned from four years of Data Mesh. But I also volunteered to fill in a keynote if someone dropped out. Sure enough, someone did. So I moved my planned talk into the keynote slot. I then got a backup talk on a &amp;ldquo;moving&amp;rdquo; SLO for machine learning systems which I had given before and slotted that in to my planned slot. But then! I was also asked to fill in for an ethics in AI panel on short notice on the first day. And I had to host the second day!&lt;/p>
&lt;p>Long story short—I had to speak three times, host a whole day, and that was pretty tiring. But it feels nice to speak to a live audience and I got great feedback. It&amp;rsquo;s a nice feeling when you say things that people learn something from and appreciate.&lt;/p>
&lt;p>But this was a very thought-leadery week for me and I am tired. And I have to travel now for work and I have more to do this weekend. And I am going to come skidding in to the end of the year but I am going to make it.&lt;/p>
&lt;p>I feel proud of what I did last week.&lt;/p></description><tweet>Is AI trending towards cultism? The energy I'm putting into the universe. And unexpected joys in the Baltics. What's new, 2023-11-27 edition</tweet></item><item><title>Vilnius and Riga</title><link>https://emilygorcenski.com/post/vilnius-and-riga/</link><pubDate>Mon, 27 Nov 2023 23:02:30 +0100</pubDate><guid>https://emilygorcenski.com/post/vilnius-and-riga/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Love%20bridge-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Love%20bridge-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Love%20bridge-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/vilnius-riga/Love%20bridge-thumb.jpg" width="600"/></media:content><description/><tweet>I spent a few days in the Baltics for a conference and found beautiful cities full of unexpected beauty</tweet></item><item><title>Making God</title><link>https://emilygorcenski.com/post/making-god/</link><pubDate>Sat, 25 Nov 2023 21:44:09 +0200</pubDate><guid>https://emilygorcenski.com/post/making-god/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/amos-eaton.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/amos-eaton.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/amos-eaton.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/amos-eaton.jpeg" width="600"/></media:content><description>&lt;p>The millenarianism and manifest destiny of AI and techno-futurism.&lt;/p>
&lt;h1 id="i-θεογονία">I. Θεογονία&lt;/h1>
&lt;p>Sometime twelve hundred years ago or so, monastic communities around Europe started to wonder why, if the dedications of their labors were to return mankind to divinity, were they not seeing the accumulations of their progress? The Augustinian view held that proximity to God was the product of chastity, work ethic, and obsequence. &amp;ldquo;Technology,&amp;rdquo; David Noble writes in &lt;em>The Religion of Technology&lt;/em>, &amp;ldquo;had nothing whatsoever to do with transcendence; indeed, it signified the denial of transcendence.&amp;rdquo; This view began to fade, replaced with a supremacist view where mankind&amp;rsquo;s command over nature was God&amp;rsquo;s will, a perspective that molded Western society into the dominionist culture that it is today.&lt;/p>
&lt;p>Ascetic life never really faded out, though traditional monasteries in the last centuries have lost their political, theological, and cultural influence over Western society. In their place, both public and secret societies were formed, some of which sought the ascension of mankind through the mastery of technology. Masonic lodges began to consecrate the &amp;ldquo;useful arts,&amp;rdquo; leveraging the influence of their networks and wealth to create institutions dedicated to technological progress. The 19th century birthed the era of civil engineering and industrial progress. Stephen van Rensselaer, the founder of my &lt;em>alma mater&lt;/em>, Rensselaer Polytechnic Institute, created the university &amp;ldquo;for the application of science and technology to the common purposes of life,&amp;rdquo; though it was no coincidence that the concept was formed while surveying land for the Erie Canal.&lt;/p>
&lt;p>It was technology that gave America its ability to spread its wings and cover a continent on the currents of Manifest Destiny, a dominionist and white supremacist conviction that America was God&amp;rsquo;s chosen country with a divine mandate to spread from &amp;ldquo;sea to shining sea.&amp;rdquo; Children still sing these words in songs today. It was not difficult to see why it was so easy for the young nation to convince itself of its deservëd fate: the virgin landscapes, tended for millennia by indigenous Americans, showed none of the scarring and exploitation of the tiny, inhospitable European continent. The land itself was like something out of the wistful German Romanticism trendy at the time; the fantasy scenes of a medieval Europe that no longer existed were real again as settlers looked down over the Shenandoah Valley and points westward. The implicit mythology of a unified and racially pure Europe was reborn as White Man&amp;rsquo;s Burden, and it was technology that brought the long reach of the continent into the newborn nation&amp;rsquo;s grasp.&lt;/p>
&lt;p>As transportation shrunk the vast distances, Americans began to see the face of God in the still-unspoiled landscape. Visitors to Niagara Falls began to write of its sublime. David Nye cites the words of a visitor from Michigan:&lt;/p>
&lt;blockquote>
&lt;p>when I saw Niagara, I stood dumb, &amp;ldquo;lost in wonder, love and praise.&amp;rdquo; Can it be, that the mighty God who has cleft these rocks with a stroke of his power, who has bid these waters roll on to the end of time, foaming, dashing, thundering in their course; can it be, that this mighty Being has said to insignificant mortals, &amp;ldquo;I will be thy God and thou shalt be my people?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>God created the American landscape for His people, so the belief went, and it was our God-given duty to put the vast continent and all its potential and all its fury in our reach and to tame it and to let it rise us.&lt;/p>
&lt;hr>
&lt;p>America&amp;rsquo;s manifest destiny led ultimately to its successful conquest from coast to coast, the genocides and atrocities it committed along the way merely the price of doing God&amp;rsquo;s work. The railroad stitched the country together. Edward Everett spoke and called the railway &amp;ldquo;a miracle of science, art, and capital, a magic power&amp;hellip; by which the forest is thrown open, the lakes and rivers are bridged, and all Nature yields to man.&amp;rdquo; If man&amp;rsquo;s destiny was dominion over the natural world, then it was technology that provided the means. At the dedication of the Niagara State Reservation, created by the government to protect the beauty of the Falls so consecrated by public opinion, James C. Carter merged the natural and the artificial into the same divine right:&lt;/p>
&lt;blockquote>
&lt;p>There is in man a supernatural element, in virtue of which he aspires to lay hold of the Infinities by which he is surrounded. In all ages men have sought to find, or to create, the scenes or the objects which move it to activity. It was this spirit which consecrated the oracle at Delphi and the oaks of Dordona; reared the marvel of Eleusis, and hung in heavens the dome of St. Peter. It is the highest, the profoundest, element of man&amp;rsquo;s nature. Its possession is what most distinguishes him from other creatures, and what most distinguishes the best among his own ranks from their brethren.&lt;/p>
&lt;/blockquote>
&lt;p>Over the next hundred years, as man mastered flight, as transportation became accessible, as mighty rivers could be crossed by the rising spans of the suspension bridge and the heavens could be touched by the mighty steel-framed towers, he definitively answered the question of his domination of nature. There was no doubt we could hold back the fury of a mighty river or contain the spark of creation. There remained only one unanswered question to our power over nature: could man create life?&lt;/p>
&lt;p>The question stayed for decades in the realm of theology and science fiction until after the Second World War. The war showed us that we could bottle the might of God and use it for apocalyptic death, but it was the twin discoveries in the early 1950s of the theory of computation and the double helix structure of DNA that gave us a path to seriously consider the genesis of life. Just a few years prior to the discovery of the structure of DNA, the mathematician John von Neumann began exploring cellular automata as the abstract foundations of the building blocks of life, the so-called &lt;a href="https://en.wikipedia.org/wiki/Von_Neumann_universal_constructor">universal constructor&lt;/a>. DNA&amp;rsquo;s role in carrying information across cellular division only reinforced the faith in this idea, a faith which has carried forward even to to the modern era and culminated in the core ideas found in Stephen Wolfram&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/A_New_Kind_of_Science">&lt;em>A New Kind of Science&lt;/em>&lt;/a>, his much anticipated magnum opus. Unfortunately, the mathematics were beyond von Neumann&amp;rsquo;s reach 70 years ago, as they were to Wolfram 20 years ago, too. They remain elusive, and despite the tantalizing promise, cellular automata have failed to produce much by way of meaningful scientific, mathematical, or technological advancement.&lt;/p>
&lt;p>But it wasn&amp;rsquo;t the success of the theory that became infectious, it was its allure. Buoyed by the impact of computing power in cracking the enigma code, the splitting of the atom, and the unlocking of the cell&amp;rsquo;s mysteries, great thinkers began to revisit the question of artificial life. It was easy to convince the military to invest in the creation of technology that could think and act on its own accord: fresh from the devastation and horrors of the war and in the afterglow of Trinity, generals and politicians alike began to fear the totality of the next war. The U.S. Department of Defense saw promise in the technology and began investing money in early AI development.&lt;/p>
&lt;p>Early efforts in AI research predated microcomputing technology and focused less on general AI and more on machine understanding for limited contexts. In the early 1970s, the Defense Advanced Research Projects Agency (DARPA) funded &lt;a href="https://apps.dtic.mil/sti/pdfs/ADA034606.pdf">&lt;em>Speech Understanding Research&lt;/em>&lt;/a>, an effort which attempted to understand natural language to extract information about the &amp;ldquo;U.S., Soviet, and British fleets.&amp;rdquo; After five years of funding, the project failed to meet its goals. This failure mirrored earlier failed attempts at machine translation and early neural networks called &lt;em>perceptrons&lt;/em>.&lt;/p>
&lt;p>These failures were made manifest when the British Government released the &lt;a href="https://www.chilton-computing.org.uk/inf/literature/reports/lighthill_report/p001.htm">Lighthill Report&lt;/a> in 1973, which eviscerated the state of research in words that echo still today:&lt;/p>
&lt;blockquote>
&lt;p>Workers entered the field around 1950, and even around 1960, with high hopes that are very far from having been realized in 1972. In no part of the field have the discoveries made so far produced the major impact that was then promised&amp;hellip; In the meantime, claims and predictions regarding the potential results of AI research had been publicised which went even farther than the expectations of the majority of workers in the field, whose embarrassments have been added to by the lamentable failure of such inflated predictions.&lt;/p>
&lt;/blockquote>
&lt;p>The first AI winter was upon us and it arrived with blizzard proportions with the failure of &lt;a href="https://en.wikipedia.org/wiki/Lisp_machine#End_of_the_Lisp_machines">LISP machines&lt;/a> erased any argument that it was simply lacking computing power that held back the development of early Artificial Intelligence. The chill of the 70s would repeat itself in what would become the chorus of the song of AI: in the 80s, the expensive and public failure of the Japan&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/Fifth_Generation_Computer_Systems#Commercial_failure">5th Generation Computer System&lt;/a> in the early 90&amp;rsquo;s not only brought a second AI winter, it also stuck the dagger in the heart of expert systems research and brought with it the death of Prolog as a serious programming language. Nearly half a century had gone by filled with promises of synthetic life and all we had to show for it were the taxpayer-financed receipts of a dozen high-profile failures.&lt;/p>
&lt;hr>
&lt;p>Failures didn&amp;rsquo;t dampen the fervor or defiant faith of AI&amp;rsquo;s most ardent champions, itself a foretelling of our present affairs. By the 1980s, despite a total lack of evidence of success, artificial intelligence advocates lifted their sights even higher. No longer was machine &lt;em>intelligence&lt;/em> a goal. Rather, they reshaped their movement towards &lt;em>artificial life&lt;/em>, supported financially by NASA and the U.S. Air Force Office of Scientific Research. Here, acolytes kept von Neumann&amp;rsquo;s decades-old dream alive. Rudy Rucker wrote in 1989, &amp;ldquo;[c]ellular automatas will lead to intelligent artificial life. If all goes well, many of us will see live robot boppers on the moon.&amp;rdquo; Researchers began to speak of themselves as creators of the divine, invoking the same motifs of American westward expansion from the century prior. &amp;ldquo;The manifest destiny of mankind is to pass the torch of life and intelligence on to the computer,&amp;rdquo; Rucker claimed. &amp;ldquo;I think the cleanest thing would be to say that all living things have a soul and that is in fact the thing that makes them living&amp;hellip; If you can envision something living in an artificial realm, then it&amp;rsquo;s hard not to be able to envision, at least at some point in the future, arbitrarily advanced life-forms—as advanced as us—therefore they would probably have a soul, too,&amp;rdquo; claimed physicist &lt;a href="https://en.wikipedia.org/wiki/Norman_Packard">Norman Packard&lt;/a>.&lt;/p>
&lt;p>By the 1990s, artificial intelligence research had failed to meet any of its stated goals, but this lack of success did not impede the field from reifying Christian dominionism and reshaping themselves in the messianic tradition.&lt;/p>
&lt;hr>
&lt;p>The benediction of AI research was hardly unforeseeable. In fact it was von Neumann himself who formulated an early version of the &lt;a href="https://en.wikipedia.org/wiki/Technological_singularity">Singularity Hypothesis&lt;/a>, which in essence states that the exponential increase in human technological achievement will eventually lead to mankind&amp;rsquo;s transcendence not only over earthly nature by the fabric of physical nature itself. Singularity theorists embrace not only AI capabilities, but also genetic and biophysical engineering, spaceflight, and quantum computing advancements as evidence that humanity is marching inexorably to an era where immortality is inevitable, with human consciousness transcending the need for corporeal bodies.&lt;/p>
&lt;p>The AI evangelist Earl Cox authored a book in the 1990s titled &lt;em>Beyond Humanity: CyberRevolution and Future Mind&lt;/em> in which he proposed that &amp;ldquo;humans may be able to transfer their minds into [] new cybersystems'' and that &amp;ldquo;we will download our minds into vessels created by our machine children and, with them, explore the universe&amp;hellip; freed from our frail biological form&amp;rdquo; in a sort of collective consciousness. Ray Kurzweil brought this idea to the mainstream nearly a decade later with &lt;em>The Singularity is Near&lt;/em>, wherein he was so bold as to predict that humankind would transcend into a sort of energy-based collective spanning the universe, vibing, sometime by the 2040s.&lt;/p>
&lt;p>It&amp;rsquo;s worth pointing out that these extreme claims are not being promoted by the ignorant and the conspiratorially-minded. Von Neumann was one of the greatest mathematicians of his time. Cox was an expert in fuzzy logic. Kurzweil studied at M.I.T. And many of these thinkers were funded by military-backed scientific research initiatives. Despite this pedigree, there is little meaningful science backing these claims. If anything, the repeated historical failures of AI to provide the promised society-altering changes has only led to a redoubling of faith-based prognostication. Each AI winter is followed by the rejection of rational fundamentalism in favor of a quasi-religious kind.&lt;/p>
&lt;hr>
&lt;p>By the late 1990s, the Internet was starting to creep into a significant fraction of American households and the numerological relevance of the change of the millennium was starting to have an effect on public optimism. Western nations emerged from the cold war victorious and the decades-long threat of nuclear annihilation quickly seemed like a faded memory. The United States of America emerged perhaps as the only global superpower and for many Christian fundamentalists this simply served as further evidence that the U.S. was God&amp;rsquo;s chosen country and Jesus Christ&amp;rsquo;s return was imminent. We had long ago bridged the divide between faith and technology, even if some sectarian disagreements about genetic engineering, censorship, and morality lingered. David Noble&amp;rsquo;s 1999 book &lt;em>The Religion of Technology&lt;/em> opens by drawing the parallels between faith and techno-optimism:&lt;/p>
&lt;blockquote>
&lt;p>Perhaps nowhere is the intimate connection between religion and technology more manifest tha in the United States, where an unrivaled popular enchantment with technological advance is matched by an equally earnest popular expectation of Jesus Christ&amp;rsquo;s return&amp;hellip; If we look closely at some of the hallmark technological enterprises of our day, we see the devout not only in the ranks but at the helm. Religious preoccupations pervade the space program at every level, and constitute a major motivation behind extraterrestrial travel and exploration. Artificial intelligence advocates wax eloquent about the possibilities of machine-based immortality and resurrection, and their disciples, the architects of virtual reality and cyberspace, exult in their expectation of God-like omnipresence and disembodied perfection.&lt;/p>
&lt;/blockquote>
&lt;p>Computing began to pervade Western society. At Stephen van Rensselaer&amp;rsquo;s institute, where I matriculated in the year 2000, I joined one of the first classes of students mandated to carry a laptop computer. The internet started shaking boundaries of communication widening the limits of knowledge. By all rights, the new millennium should have led to the rebirth of the redeeming power of AI, but it did not. Instead, like Icarus, we flew too close to the sun. The internet came too fast and too uncontrolled, and before techno-optimists could return their gaze to the conception of synthetic life, the dotcom crash pulled the rug out from underneath them, and not long after, the victoriousness of Christian fundamentalism met its new match in a rising Islamic fundamentalist movement that literally shook the foundations of American techno-capitalism on the 11th of September, 2001 years after Christ. The optimism of the 90s died. We would not arrive at the Kingdom that day.&lt;/p>
&lt;h1 id="ii-resurrection">II. Resurrection&lt;/h1>
&lt;p>The truth is, of course, more complicated than that. The end of the Cold War and the Clinton administration saw a tightening of the Pentagon&amp;rsquo;s budget. There was no longer infinite money to pour into longshot AI research projects and the cynicism of a generation of researchers whose career work left only empty, unfulfilled promises on the table failed to inspire a new generation to take their place. Computing power remained expensive and the supercomputers that were being built were being tasked to more tangible goals, like nuclear simulations, weather modeling, and astrophysics research. What algorithm development was progressing was living instead in more niche fields like control systems research, a field which carefully distanced its robotics work from sci-fi notions of intelligent Terminators taking over the world. By 2008, when I began working with neural networks, they were merely niche tools to solve specific technical problems, not lofty approaches intending to create Artificial General Intelligence. AI research was back at the fringe. Neural networks were a failed promise.&lt;/p>
&lt;p>That changed in 2012. In the years prior, a research team from IDSIA, a Swiss research lab had developed a technique known as convolutional neural networks (ConvNet) and integrated them into the relatively new field of GPU-based computing. Initially created to accelerate graphical rendering for video games and special effects, GPUs were purpose-built processors with a specialized architecture. Their inherent capabilities in parallel processing gave them an advantage in computationally-intensive work like neural networking, whereas CPUs were mostly designed for running application workloads for personal computers. The IDSIA team began entering their GPU-based ConvNet approach into computer vision competitions the previous year, finding remarkable success.&lt;/p>
&lt;p>Before ConvNet took over the field, computer vision techniques were relying on more conventional machine learning techniques like Linear Discriminant Analysis. ConvNet&amp;rsquo;s results were remarkable, displaying for the first time an almost preternatural capability that exceeded the human benchmark. Moreover, unlike previous incarnations of AI research which required specialized hardware (e.g. LISP machines) or arcane programming techniques (e.g. logic programming), the ConvNet algorithms could leverage commercial, off-the-shelf hardware. Seemingly overnight, neural networks became cool again, the promise of AI started to look realistic again, and ordinary companies started believing that they, too, could benefit from the technology.&lt;/p>
&lt;p>The industry, too, had remade itself after the collapse of the dotcom bubble and the Great Recession of 2008. Web 2.0 had arrived in the middle of the previous decade: social networks took off and the World Wide Web had rapidly shifted away from the domain of the nerds to become an essential part of daily life. More than that, the technology industry started assuming a leading role in the evolution of mainstream culture. National news started talking about celebrities' tweets; social media helped fuel revolutions in Tunisia and Egypt, and before long Facebook would emerge as a force that literally reshaped the borders of the world.&lt;/p>
&lt;p>The industry changed its character, too. Suddenly a new career emerged—data science. And companies around the world started stealing away academics and postdocs with promises of eye-watering salaries, hierophants versed in a form of statistical legerdemain that would materialize money out of vast collections of data. Armed with a degree in Computational Mathematics and a decade of experience in machine learning, I became one, too, chasing money and status in an industry with deep pockets. It was too easy to succeed. The AI movement had reëmerged from its slumber, eager not to make the mistakes of its past by promising the synthetic genesis of consciousness, but rather the manifestation of business value and wealth. Data science embraced the Prosperity Gospel and venture capitalists and angel investors readily handed over wheelbarrows of money.&lt;/p>
&lt;hr>
&lt;p>It worked, too, at least for those with the good sense to realize what their data money could buy. Many businesses found good value implementing rather mundane solutions like recommendation engines and predictive analytics, and while these efforts were able to squeeze a few more drops of blood from the e-commerce stone, they didn&amp;rsquo;t reshape society. The real impact came by manipulating people directly.&lt;/p>
&lt;p>Plenty of words have been written about the impact of &lt;a href="https://erinkissane.com/meta-in-myanmar-full-series">Facebook on the Rohingya genocide&lt;/a> and &lt;a href="https://www.theguardian.com/news/2018/may/06/cambridge-analytica-how-turn-clicks-into-votes-christopher-wylie">Cambridge Analytica&amp;rsquo;s influence on Western elections&lt;/a>. I don&amp;rsquo;t need to revisit them. What is interesting, however, is who these companies worked with. Donald Trump&amp;rsquo;s 2016 presidential campaign leveraged CA&amp;rsquo;s harvested data to profile and microtarget users, part of a shockingly sophisticated digital strategy. Trump&amp;rsquo;s most fervent base was, of course, the American evangelical movement who saw Trump as a critically important actor to help bring about their millenarian end-times theory. When the Trump administration moved the American embassy in Israel to Jerusalem, it was an enormous validation for those who believe the Rapture is near. Trump was the evangelicals' agent; technology became their medium.&lt;/p>
&lt;hr>
&lt;p>The relationships between fascism, mysticism, and technology are hardly new. &lt;a href="https://en.wikipedia.org/wiki/Albert_Speer">Albert Speer&lt;/a>, Adolf Hitler&amp;rsquo;s Minister of Armaments and War Production, ends the epilogue of his memoir &lt;em>Inside the Third Reich&lt;/em> by admitting, &amp;ldquo;[d]azzled by the possibilities of technology, I devoted crucial years of my life to serving it. But in the end my feelings about it are highly skeptical.&amp;rdquo; The Nazi party served its mythology of Aryan supremacy in part by highlighting the superiority of German engineering and the efficiency of its war machine, even as certain elements of the party dabbled in elements of the Occult.&lt;/p>
&lt;p>Fascists in the modern era have proved incredibly adept at wielding technology, either for spreading propaganda or driving societal wedges to serve their necessary mythology of being both victim and savior of a world under attack by Jewish forces. Among the defining features that separates fascism from other brands of political authoritarianism is the commitment to the belief in the rebirth of a national ideal, which we saw in the United States through the sloganeering of Donald Trump&amp;rsquo;s &amp;ldquo;Make America Great Again'' promise.&lt;/p>
&lt;p>Trump&amp;rsquo;s followers propagated this myth not through the filtered and critical perspective of mainstream news and media, but rather through the nascent, uncontrolled, and misunderstood domain of social media. Trump&amp;rsquo;s modern fascist acolytes needed to synthesize an enemy; specifically, a cultural enemy. They found this first by putting modern liberalism under their gaze. Gamergate was the perfect opportunity; what began as a sexist contrivance aimed at a feminist game developer quickly became an indictment of modern liberal feminism as the morally corrupt, degenerate enemy of traditional American values. It was almost step for step out of the same playbook that led the Nazis to declare &lt;em>die Aktion wider den undeutschen Geist&lt;/em> (the action against the ungerman spirit) in the early weeks of their reign.&lt;/p>
&lt;p>The movement might have ended there had Hillary Clinton not become the Democratic nominee. Suddenly, online troll armies began the &amp;ldquo;Meme Wars&amp;rdquo; to dominate the social media space, injecting themselves into online discourse and harassing woefully unprepared social media netizens. The result was a bloodbath: online liberals, accustomed to holding and winning debates on terms based on reason, civility, and decency had no tools with which to respond to the bad faith attacks. Worst of all, they lacked a crucial understanding that their alt-right opponents had: how to deliberately manipulate the AI algorithms that drove social media behavior. Pushing back only made the problem worse—a lesson still yet to be learned—and the so-called Algorithm turbocharged America&amp;rsquo;s political divorce.&lt;/p>
&lt;p>The alt-right&amp;rsquo;s mastery over online manipulation was a natural consequence of their origins. Beaten back by a public hungry for social change, the American right abandoned their failed neo-conservative approach of promising small government and lower taxes and started throwing spaghetti against the wall to see what would stick. New right wing movements began to emerge from the fringe. Among them was the Neoreactionary Movement, also known as NRx. Unlike neo-conservatism, the NRx movement was not composed of Washington insiders and old money. Instead, it found its roots in the blogosphere, its most prominent thinkers publishing under pseudonyms. Among them was a blogger known as Mencius Moldbug, whose real name was Curtis Yarvin.&lt;/p>
&lt;p>Yarvin was in his own right a small celebrity in the technology industry. A leading figure in the functional programming community, Yarvin&amp;rsquo;s neoreactionary advocacy reflected a sense of techno-supremacy, echoing a belief that (some, namely white, male) software engineers differentiate themselves by their intellectual supremacy over the rest of the world. Whereas neo-conservatism played lip service to the idea of an egalitarian society, neoreactionaryism discarded the idea entirely and advocated for rule by elitism and, in some cases, the return of monarchy.&lt;/p>
&lt;p>Neoreactionaryism was frequently incomprehensible, but its unabashed racism and inherent techno-solutionism showed that there could be a youthful energy in conservative politics. Neo-conservatism was a boomer idea sold to boomers and the back-to-back losses of proven Republican all-stars John McCain and Mitt Romney to Barack Obama, an upstart Black man, demonstrated the need for younger blood in the Republican sphere.&lt;/p>
&lt;p>The NRx movement was always too dense for the mainstream. It was Richard Spencer, whose road to ruin I myself helped pave, who was able to leverage its ideas as ideological backing and distill them to be accessible to the intellectual potatoes that were the alt-right&amp;rsquo;s footsoldiers. It was this army, marching under the banners and the clarion call of neo-fascism, that dominated the battlescape of American liberal democracy until its resounding defeat on the streets and in the courthouses of Charlottesville, Virginia in 2017.&lt;/p>
&lt;p>But by then the damage was done. Donald Trump was President and the Republican party had extracted all they needed from the movement. The alt-right was discarded and deplatformed, and its figurehead, Richard Spencer, so destitute that he couldn&amp;rsquo;t afford a lawyer to defend him in the civil suit accusing him of a racially-motivated conspiracy. Steve Bannon&amp;rsquo;s strategy to &lt;a href="https://www.cnn.com/2021/11/16/media/steve-bannon-reliable-sources/index.html">&amp;ldquo;flood the zone with shit&amp;rdquo;&lt;/a>, powered by AI-driven virality, gave the evangelicals everything they needed to move one step closer to Judgment Day.&lt;/p>
&lt;hr>
&lt;p>It wasn&amp;rsquo;t the toxicity of Curtis Yarvin&amp;rsquo;s political ideas that first struck me. It was his role as a prominent technologist. Yarvin &lt;a href="https://www.inc.com/tess-townsend/why-it-matters-that-an-obscure-programming-conference-is-hosting-mencius-moldbug.html">was invited to speak&lt;/a> in 2016 at LambdaConf, a functional programming conference, which led to a public uproar that divided the tech industry. On the one side, some believed that politics and technology should stay separated; on the other, those who believed that spaces should be inclusive and the invitation of an alleged racist and techno-monarchist betray that idea. LambdaConf ignited a political fury: alt-right figures like Vox Day and Milo Yiannopoulos seized the opportunity to use it as a political wedge, framing Yarvin&amp;rsquo;s opponents as shrieking liberal banshees opposing progress and technological purity. A list of &amp;ldquo;social justice warriors'' was created and I earned my own place on it, one of my first acts of public antifascism.&lt;/p>
&lt;p>But what&amp;rsquo;s perhaps most unique about the mostly-forgotten brouhaha is that it erupted from the functional programming community. Functional programming is a style of writing code that favors purity and abstraction over brute force. Alexander Grothendieck once described fellow mathematician Emmy Noether&amp;rsquo;s approach as letting a sea of abstraction &amp;ldquo;submerge and dissolve&amp;rdquo; a problem, standing in contrast to her contemporaries' &amp;ldquo;hammer-and-chisel&amp;rdquo; approach. Functional programming seeks the same elegance: where software development through object-oriented code is an exercise in structure and persistence, functional code feels to the coder like an act of ingenuity.&lt;/p>
&lt;p>The headiness of functional programming makes it difficult for beginners and non-experts—and the growing tech industry is full of beginners—and its cleanliness appeals to folks in Yarvin&amp;rsquo;s mold who find themselves obsessed with purity and intellectual supremacy. What is also perhaps no coincidence is that LISP, the leading AI language in the &amp;rsquo;60s and &amp;rsquo;70s, is a kind of a functional programming language, one with the novel capacity for a program to evolve its own source code. Artificial intelligence has been catnip for fascists ever since its earliest days, a trait it has not lost today.&lt;/p>
&lt;p>In the early 1970s, the Israeli philosopher Nathan Rotenstreich explored the relationship between technology and politics, developing an &lt;em>authoritarian&lt;/em> framing to describe the relationship between the two. He writes:&lt;/p>
&lt;blockquote>
&lt;p>The technological development as it stands is a function of this intensification of man&amp;rsquo;s authoritarianism, both in relation to nature and in relation to his fellow men. The authoritarian drive in man has become the technological drive; it feeds technology, makes its progress possible, forces countries and nations to invest the best of their manpower, their best minds, and a great deal of their money in the progress of technology.&lt;/p>
&lt;/blockquote>
&lt;p>As such we can extrapolate from the authoritarianism of fascism to the dominionism found in the quest to create artificial life. As 19th century Americans enacted what they believed to be God&amp;rsquo;s will in seeking conquest over nature, today&amp;rsquo;s theocratic fascists aim for mastery of the technological sphere and the creation of life in its purest form. Synthesis of artificial life would be the ultimate expression of man&amp;rsquo;s authoritarianism.&lt;/p>
&lt;hr>
&lt;p>Rotenstreich&amp;rsquo;s writing didn&amp;rsquo;t explore AI but rather the television and the role it played in puncturing the membrane between public and private life. His &lt;a href="https://www.pdcnet.org/ipq/content/ipq_1967_0007_0002_0197_0212">observations&lt;/a> of the influence of technology as an agent of political and electoral change look prescient in light of the 2016 and 2020 U.S. presidential elections and the 2016 Brexit campaign. European observers watched carefully and reacted swiftly in an attempt to prevent the infectiousness of algorithmically-driven manipulation from endangering its carefully-constructed and fragile democracy. The Union had no desire to see a rebirth of the nationalisms that tore the continent apart three times in the previous century.&lt;/p>
&lt;p>These actions may have even had an effect. The public became generally conscious of data harvesting and its impacts well before GDPR even went into effect. In the business world, people started questioning whether the &amp;ldquo;Big Data&amp;rdquo; revolution actually paid off and whether it was worth sending truckloads of money to anyone with a Ph. D. and basic knowledge of statistics. By the time the COVID pandemic hit there was even &lt;a href="https://medium.com/hackernoon/is-another-ai-winter-coming-ac552669e58c">discussion of another possible AI winter&lt;/a> and in any case, the real money was somewhere else: crypto.&lt;/p>
&lt;hr>
&lt;p>If ever there was a case for the triumph of faith over reason, one would need to look no further than the stratospheric growth of cryptocurrency between 2018 and 2021. The crypto community managed to convince thousands of investors that infinite growth was not only inevitable, but that an investment bubble was mathematically impossible. This, of course, was a lie, and the implosion of FTX and the downfall of its founder, Sam Bankman-Fried showed once and for all that pretty much the entire crypto industry was a Ponzi scheme stood on top of layer cake of fraud.&lt;/p>
&lt;p>The success of that fraud depended partly on the arcane vocabulary of the field. Crypto enthusiasts spoke with the fluency of shibboleths; anyone who tried to contradict their theories or to point out the physical impossibility of infinite growth would be immediately met with a flurry of language they had no capacity to comprehend. It was pseudo-intellectualism at its peak: by sounding unattainably smart, one couldn&amp;rsquo;t help but be perceived as correct. But this approach only works in casual forums. Never did the emperor have less clothes on than when Bankman-Fried tried playing this game in federal court earlier this year.&lt;/p>
&lt;p>Nevertheless, the boundless wealth of cryptocurrency bred a new form of techno-optimism. Dubbed &amp;ldquo;web3,&amp;rdquo; crypto evangelists promised an anarchic utopia free of corporate control. Where Web 2.0 was marked by the rise of infinite scroll, social media, and centralized mega-corporate entities, web3 promised decentralization through the blockchain: a public, write-only database fueled by extraordinarily high computational workload requirements.&lt;/p>
&lt;p>Before long, web3&amp;rsquo;s central lie of decentralization became clear. While there is certainly at least an academic appeal to a monetary model free of government control, the rest of the web3 technology stack couldn&amp;rsquo;t be more unrelated to its stated goals. Non-fungible tokens (NFTs), an attempt to create digital scarcity in a copy-paste world, briefly rose in popularity and Facebook rebranded itself to Meta to embrace and promote the idea of the &amp;ldquo;metaverse&amp;rdquo;: a parallel virtual, persistent reality that called back to the earlier visions of techno-utopianism described above. I wrote last year on the Metaverse and &lt;a href="https://emilygorcenski.com/post/zuckerbergs-basilisk-the-coercive-threat-of-the-singularity/">my thesis&lt;/a> for its real purpose: the establishment of a digital heaven for the wealthy to live on after death. There is no other functional explanation. Meta invested billions &lt;a href="https://www.thenation.com/article/culture/metaverse-zuckerberg-pr-hype/">to earn just thousands&lt;/a> hawking a technology no one outside Silicon Valley actually wants.&lt;/p>
&lt;p>The ascent of crypto, NFTs, and Metaverse can seem like a coincidence if taken alone. But they rose nearly simultaneously and perhaps a beat too early. It&amp;rsquo;s not until we add the fourth leg of the web3 quadrilogy that it all begins to make sense: Generative AI. Taken together, we can start to deduce a sense of transcendentalism in the technologist&amp;rsquo;s mindset: the metaverse creates a digital universe for us to live in; cryptocurrency offers an entire economy detached from material production; NFTs provide scarcity and a sense of ownership in digital space; and supercharged AI with genuine creative capabilities power synthetic consciousness. Taken together, they are the foundation of a digital afterlife, the building blocks of von Neumann&amp;rsquo;s and Cox&amp;rsquo;s and Kurzweil&amp;rsquo;s Singularity, the merging of human consciousness with the machine, the key to immortality achieved through technology. Singularity theory was back. All it needed was a go-to-market strategy.&lt;/p>
&lt;hr>
&lt;p>Early Christian missionaries traveled the pagan lands looking for heathens to convert. Evangelical movements almost definitionally involve spreading the word of Jesus Christ as a core element of their faith. The missionary holds the key that unlocks eternal life and the only cost is conversion: the more souls saved, the holier the work. The idea of going out into the world to spread the good word and convert them to our product/language/platform is a deep tradition in the technology industry. We even hire people specifically to do that. We call them &lt;a href="https://en.wikipedia.org/wiki/Technology_evangelist">technology evangelists&lt;/a>.&lt;/p>
&lt;p>Successful evangelism has two key requirements. First, it must offer the promised land, the hope of a better life, of eternal salvation. Second, it must have a willing mark, someone desperate enough (perhaps through coercion) to be included in that vision of eternity, better if they can believe strongly enough to become acolytes themselves. This formed the basis of the crypto community: Ponzi schemes sustain only as long as there are new willing participants and when those participants realize that their own continued success is contingent on still more conversions, the incentive to act in their own best interest is strong. It worked for a while to keep the crypto bubble alive. Where this failed was in every other aspect of web3.&lt;/p>
&lt;p>The central problem with Singularity theory is that it is really only attractive to nerds. Vibing with all of humanity across the universe would mean entangling your consciousness with that of every other creep, and if you&amp;rsquo;re selling that vision and don&amp;rsquo;t see that as an issue, then it probably means that you&amp;rsquo;re the creep. Kurzweil&amp;rsquo;s &lt;em>The Singularity is Near&lt;/em> is paternalistic and at times downright lecherous; paradise for me would mean being almost anywhere he&amp;rsquo;s not. The metaverse has two problems with its sales pitch: the first is that it&amp;rsquo;s useless; the second is that absolutely nobody wants Facebook to represent their version of forever.&lt;/p>
&lt;p>Of course, it&amp;rsquo;s not like Meta (Facebook&amp;rsquo;s rebranded parent company) is coming right out and saying, &amp;ldquo;hey we&amp;rsquo;re building digital heaven!&amp;rdquo; Techno-utopianism is (only a little bit) more subtle. They don&amp;rsquo;t come right out and say they&amp;rsquo;re saving souls. Instead they say they&amp;rsquo;re benefitting all of humanity. Facebook wants to connect the world. Google wants to put all knowledge of humanity at your fingertips. Ignore their profit motives, they&amp;rsquo;re being altruistic!&lt;/p>
&lt;p>In Paul&amp;rsquo;s first letter to the Corinthians, he develops the Christian virtue of &lt;em>charity&lt;/em>:&lt;/p>
&lt;blockquote>
&lt;p>8 Charity never faileth: but whether there be prophecies, they shall fail; whether there be tongues, they shall cease; whether there be knowledge, it shall vanish away. 9 For we know in part and we prophesy in part. 10 But when that which is perfect is come, then that which is in part shall be done away. 11 When I was a child, I spake as a child, I understood as a child, I thought as a child: but when I became a man, I put away childish things. 12 For now we see through a glass, darkly; but then face to face: now I know in part; but then shall I know even as also I am known. 13 And now abideth faith, hope, charity, these three; but the greatest of these is charity.&lt;/p>
&lt;/blockquote>
&lt;p>The King James translation introduces the word &lt;em>charity&lt;/em> to mean &lt;em>altruistic love&lt;/em>, and other translations use the word love in its place. Nevertheless, the meanings are often conflated, and more than one wealthy person in history has attempted to show love (or to seek redemption) through charitable giving.&lt;/p>
&lt;p>It was the tech industry who found the ultimate corruption of the concept. In recent years, a bizarre philosophy has gained traction among silicon valley&amp;rsquo;s most fervent insiders: effective altruism. The basic gist is that giving is good (holy) and in order to give more one must first earn more. Therefore, obscene profit, even that which is obtained through fraud, is justifiable because it can lead to immense charity. Plenty of capitalists have made similar arguments through the years. Andrew Carnegie built libraries around the country out of a belief in a bizarre form of social darwinism, that men who emerge from deep poverty will evolve the skills to drive industrialism forward. There&amp;rsquo;s a tendency for the rich to mistake their luck with skill.&lt;/p>
&lt;p>But it was the canon of Singularity theory that brought this prosaic philosophy to a new state of perversion: &lt;em>longtermism&lt;/em>. If humanity survives, vastly more humans will live in the future than live today or have ever lived in the past. Therefore, it is our obligation to do everything we can to ensure their future prosperity. All inequalities and offenses in the present pale in comparison to the benefit we can achieve &lt;em>at scale&lt;/em> to the humans yet to exist. It is for their benefit that we must drive steadfast to the Singularity. We develop technology not for us but for them. We are the benediction of all of the rest of mankind.&lt;/p>
&lt;p>Longtermism&amp;rsquo;s biggest advocates were, unsurprisingly, the most zealous evangelists of web3. They proselytized with these arguments for years and the numbers of their acolytes grew. And the rest of us saw the naked truth, dumbfounded watching, staring into our black mirrors, darkly.&lt;/p>
&lt;h1 id="iii-apotheosis">III. Apotheosis&lt;/h1>
&lt;p>The metaverse failed almost as quickly as it was hyped. NFTs, which anyone retaining a sense of critical thinking could easily see, turned out to be a scam, too. Crypto guru-cum-effective altruist Sam Bankman-Fried collapsed his house of cards known as FTX and before long found him on the wrong side of an extradition treaty from the Bahamas and then the wrong side of a prison cell door. His on-again-off-again girlfriend, CEO of FTX sister company, Alameda Research, and Harry Potter fanfic writer turned state&amp;rsquo;s evidence. A construction company ripped the FTX logo off the now-formerly FTX Arena before Twitter had even had a chance to stop laughing. Crypto markets collapsed, demand evaporated, and newly-emboldened regulators are setting out to prove that the state still has the biggest dog in this fight.&lt;/p>
&lt;p>Consumers—that is, normal people who have to worry about things like the price of eggs and elections and getting sick and going on dates and catching up on the latest Marvel movie—showed that they really could not care less about the Singularity. FTX&amp;rsquo;s collapse rivaled Enron&amp;rsquo;s in scale yet had almost no meaningful effect on the economy. The challenge with trying to create a parallel reality is that there&amp;rsquo;s pretty much nothing in this reality to induce people to care about whether it succeeds or fails.&lt;/p>
&lt;p>The metaverse has almost no meaningful real-world use cases, and the few with any relevance at all hardly justify the enormous investment. NFTs signified ownership only in the abstract sense: they didn&amp;rsquo;t actually define ownership of the asset, which itself was not encoded in the blockchain. NFT missionaries were mocked by people right-clicking the images and saving them for free. The tech didn&amp;rsquo;t even carry relevant copyright context.&lt;/p>
&lt;p>By all rights, Singularity theory should have faded back into obscurity for at least another decade or so. But nearly simultaneously with the dual crashing-and-burning of metaverse and crypto came the rise of techno-futurists' last great hope: generative AI.&lt;/p>
&lt;hr>
&lt;p>Strictly speaking, generative AI has been around for a while. Misinformation researchers have warned about deep fake capabilities for nearly a decade. A few years ago, chatbots were all the rage in the business world, partly because someone was trying to figure out what to do with all of the data scientists they hired, and partly because chatbots would allow them to decimate their customer service teams. (Of course, &lt;em>consumers&lt;/em> didn&amp;rsquo;t ask for this. Nobody actually wants to interact with a chatbot over a human being.) AI has been writing mundane sports recaps for a few years at least.&lt;/p>
&lt;p>These earlier incarnations of generative AI failed to find mainstream traction. They required a lot of specific technology knowledge and frankly weren&amp;rsquo;t very good. Engineers and data scientists had to spend a lot of time tuning and implementing them. The costs were huge. Average users couldn&amp;rsquo;t access them. That changed when ChatGPT&amp;rsquo;s public demo became available.&lt;/p>
&lt;p>ChatGPT&amp;rsquo;s public release arrived less than 3 weeks after the collapse of FTX. The technology was a step change from what we&amp;rsquo;d seen with generative AI previously. It was far from perfect, but it was frighteningly good and had clear general purpose functionality. Image generation tools like DALL-E, Stable Diffusion, and Midjourney jumped on this bandwagon. Suddenly, &lt;em>everyone&lt;/em> was using AI, or at least playing around with it.&lt;/p>
&lt;p>The tech industry&amp;rsquo;s blink-and-you&amp;rsquo;ll-miss-it pivot was fast enough to give you whiplash. Crypto was out. Metaverse was out. Mark Zuckerberg&amp;rsquo;s company, which traded out its globally-known household name to rebrand as Meta, laid off thousands of technologists it had hired to build the metaverse and pivoted to AI. Every social media crypto-charlatan quietly removed the &amp;ldquo;.ETH&amp;rdquo; label from their user names and rebranded themselves as a large language model (LLM) expert. Microsoft sank eye-watering money into OpenAI and Google and Amazon raced to keep up. Tech companies sprinted to integrate generative AI into their products, quality be damned. And suddenly every data scientist found themselves playing a central role in what might be the most important technology shift since the advent of the world wide web.&lt;/p>
&lt;p>There was one group of people who weren&amp;rsquo;t nonplussed by this sudden change. Technology ethicists had been tracking these developments from both inside and outside the industry for years, sounding the alarm about the potential harms posed by, &lt;em>inter alia&lt;/em>, AI, crypto, and the metaverse. Disproportionately women and people of color, the community has struggled for years to raise awareness of the multifaceted social risks posed by AI. I&amp;rsquo;ve spoken on some of these issues myself over the years, though I&amp;rsquo;ve mostly retired from that work. Many of the arguments have grown stale and the field suffers from the same mistake made by American liberals during the 2016 election: you can&amp;rsquo;t argue from a position of decency if your opponent has no intention to act decently to begin with. Longtermists offered a mind-blowing riposte: who cares about racism today when you&amp;rsquo;re trying to save billions of lives in the future?&lt;/p>
&lt;p>GenAI solved two challenges that other Singularity-aligned technology failed to address: commercial viability and real-world relevance. The only thing standing in its way is a relatively small and disempowered group of responsible technology protestants, who may yet possess enough gravitas to impede the technology&amp;rsquo;s unrestricted adoption. It&amp;rsquo;s not that the general public isn&amp;rsquo;t concerned about AI risk. It&amp;rsquo;s that their concerns are largely misguided, worrying more about human extinction and less about programmed social inequality.&lt;/p>
&lt;p>The idea of a robot uprising has captured our imagination for over a century. The term &lt;em>robot&lt;/em> comes from a 1920 Czech play called &lt;em>Rossumovi Univerzální Roboti&lt;/em>, in which synthetic life-forms unhappy with their working conditions organize and revolt, leading to the extinction of humanity. Before their demise, the human characters wonder whether it would have been better to ensure that the robots could not speak a universal language, whether they should have destroyed the Tower of Babel and prevented their children from unseating humanity from its heavenly kingdom.&lt;/p>
&lt;p>Singularity theorists have capitalized on these fears by engaging in arbitrage. On the one hand, they&amp;rsquo;re playing a game of regulatory capture by overstating the risk of the emergence of a super-intelligent AI, promising to support regulation that would prevent companies from birthing such a creation. On the other hand, they&amp;rsquo;re actively promoting the imminence of the technology. OpenAI&amp;rsquo;s CEO, Sam Altman, was briefly fired when OpenAI employees apparently raised concerns to the board over such a possibility. What followed was a week of chaos that saw Altman hired by Microsoft only to return to OpenAI and execute a Game of Thrones-esque power grab, ousting the two women on the board who had tried to keep the supposedly not-for-profit company on-mission.&lt;/p>
&lt;p>Humanity&amp;rsquo;s demise is a scarier idea than, say, labor displacement. It&amp;rsquo;s not a coincidence that AI advocates are keeping extinction risk as the preëminent &amp;ldquo;AI safety&amp;rdquo; topic in regulators' minds. It&amp;rsquo;s something they can easily agree to avoid without any negligible impact in the day-to-day operations of their business: we are not close to the creation of an Artificial General Intelligence (AGI), despite the breathless claims of the Singularity disciples working on the tech. This allows them to distract from and marginalize the real concerns about AI safety: mass unemployment, educational impairment, encoded social injustice, misinformation, and so forth. Singularity theorists get to have it both ways: they can keep moving towards their promised land without interference from those equipped to stop them.&lt;/p>
&lt;p>Timnit Gebru was fired from Google. Microsoft dismissed their Responsible AI team. Facebook did the same. And those who have the courage left to continue to write and speak out on the issue find themselves brigaded and harassed on social media in a manner frighteningly similar to the 2016 meme wars or Gamergate which preceded them. There is no coincidence here. I recognize I am approaching the 8,000th word of this piece. I doubt any Hacker News regulars have made it this far, but if they did, I am confident this post will not be well-received there.&lt;/p>
&lt;p>I texted my good friend, Eve Ettinger, the other night after a particularly frustrating exchange I had with some AI evangelists. Eve is a brilliant activist whose experience escaping an evangelical Christian cult has shaped their work. &amp;ldquo;Are there any tests to check if you&amp;rsquo;re in a cult,&amp;rdquo; I wondered.&lt;/p>
&lt;p>&amp;ldquo;Can you ask the forbidden questions and not get ostracized?&amp;rdquo;&lt;/p>
&lt;hr>
&lt;p>There&amp;rsquo;s a joke in the data science world that goes something like this: What&amp;rsquo;s the difference between statistics, machine learning, and AI? The size of your marketing budget. It&amp;rsquo;s strange, actually, that we still call it &amp;ldquo;artificial intelligence&amp;rdquo; to this day. Artificial &lt;em>intelligence&lt;/em> is a dream from the 40s mired in the failures of the &amp;rsquo;60s and &amp;rsquo;70s. By the late 1980s, despite the previous spectacular failures to materialize any useful artificial intelligence, futurists had moved on to artificial &lt;em>life&lt;/em>.&lt;/p>
&lt;p>Nobody much is talking about artificial life these days. That idea failed, too, and those failures have likewise failed to deter us. We are now talking about creating &amp;ldquo;cybernetic superintelligence.&amp;rdquo; We&amp;rsquo;re talking about creating an AI that will usher a period of boundless prosperity for humankind. We&amp;rsquo;re talking about the imminence of our salvation.&lt;/p>
&lt;p>The last generation of futurists envisioned themselves as gods working to create life. We&amp;rsquo;re no longer talking about just life. We&amp;rsquo;re talking about making artificial gods.&lt;/p>
&lt;hr>
&lt;p>I&amp;rsquo;m certainly not the first person to shine a light on the eschatological character of today&amp;rsquo;s AI conversation. &lt;a href="https://www.vox.com/the-highlight/23779413/silicon-valleys-ai-religion-transhumanism-longtermism-ea">Sigal Samuel did it&lt;/a> a few months back in far fewer words than I&amp;rsquo;ve used here, though perhaps glossing over some of the political aspects I&amp;rsquo;ve brought in. She cites Noble and Kurzweil in many of the same ways. I&amp;rsquo;m not even the first person to coin the term &amp;ldquo;techno-eschatology.&amp;rdquo; The parallels between the Singularity Hypothesis and the second coming of Christ are plentiful and not hard to see.&lt;/p>
&lt;p>Still, I wonder why so many technologists, many of whom pride themselves on their rationalism, fail to make the connection. Rapture metaphors even emerge from rationalist hangouts like Less Wrong, where &lt;a href="https://en.wikipedia.org/wiki/Roko%27s_basilisk">Roko&amp;rsquo;s Basilisk&lt;/a> made its first appearance. Roko&amp;rsquo;s Basilisk is the infamous &amp;ldquo;information hazard&amp;rdquo; which, after only mild examination, reveals itself to be nothing more than a repackaged Antichrist mythology.&lt;/p>
&lt;p>I suspect that the answer lies somewhere between Rotenstreich&amp;rsquo;s authoritarian view on technology and politics—that any change in the direction of technology must be accompanied by a change in the direction of society—and an internalized belief in the dominionist mindset that underscores American culture. Effective altruism is a political gift to the wealthy, packaged absolution that gives them moral permission to extract as much as they want. It is also perilously close to the edge of the cliff of fascism.&lt;/p>
&lt;p>Marc Andreesen, the famous venture capitalist, took a flying swan dive off that cliff last month. In a rambling &amp;ldquo;techno-optimist&amp;rdquo; manifesto, he references both longtermist ideas as well as neoreactionary and classically fascist ones. He calls the reader to engage with the ideas of many of the people mentioned already in this post: Wolfram and von Neumann and Kurzweil. Andreesen lists off his &amp;ldquo;enemies;&amp;rdquo; among them: tech ethics, social responsibility, and, of course, communism. These outspoken enemies of techno-optimism, of effective altruism, of unrestrained AI growth—so frequently women, people of color, immigrants, and those displaced by rampant, unchecked capitalism—are the same as the enemies of neoreactionaryism and fascism. One may as well summarize the entire philosophy with fourteen simple words: &amp;ldquo;we must secure the existence of our people and a future for our children.&amp;rdquo; This is just one small change away from a different 14 words, but simply look at some pictures of these philosophers and ask yourself to whom &amp;ldquo;our'' refers.&lt;/p>
&lt;p>Effective altruism, longtermism, techno-optimism, fascism, neoreactionaryism, etc are all just variations on a savior mythology. Each of them says, &amp;ldquo;there is a threat and we are the victim. But we are also the savior. And we alone can defeat the threat.&amp;rdquo; (Longtermism at least pays lip service to democracy but refuses to engage with the reality that voters will always choose the issues that affect them now.) Every savior myth also must create an event that proves that salvation has arrived. We shouldn&amp;rsquo;t be surprised that they&amp;rsquo;ve simply reinvented Revelations. Silicon Valley hasn&amp;rsquo;t produced a truly new idea in decades.&lt;/p>
&lt;hr>
&lt;p>Eve&amp;rsquo;s second test for cult membership was, &amp;ldquo;is the leader replaceable or does it all fall apart.&amp;rdquo;&lt;/p>
&lt;p>And so the vast majority of OpenAI&amp;rsquo;s employees threatened to quit if Altman was not reinstated. And so Altman was returned to the company five days after the board fired him, with more power and influence than before.&lt;/p>
&lt;hr>
&lt;p>The idea behind this post is not to simply call everything I don&amp;rsquo;t like fascist. Sam Altman is a gay Jewish man who was furious about the election of Donald Trump. The issue is not that Altman or Bankman-Fried or Andreesen or Kurzweil or any of the other technophiles discussed so far are &amp;ldquo;literally Hitler.&amp;rdquo; The issue is that high technology shares all the hallmarks of a millenarian cult and the breathless evangelism about the power and opportunity of AI is indistinguishable from cult recruitment. And moreover, that its cultism meshes perfectly with the American evangelical far-right. Technologists believe they are creating a revolution when in reality they are playing right into the hands of a manipulative, mainstream political force. We saw it in 2016 and we learned nothing from that lesson.&lt;/p>
&lt;p>Doomsday cults can never admit when they are wrong. Instead, they double down. We failed to make artificial intelligence so we pivoted to artificial life. We failed to make artificial life so now we&amp;rsquo;re trying to program the messiah. Two months before the Metaverse went belly-up, &lt;a href="https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/value-creation-in-the-metaverse">McKinsey valued it at up to $5 &lt;em>trillion&lt;/em> dollars by 2030&lt;/a>. And it was without a hint of irony or self-reflection that &lt;a href="https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/the-economic-potential-of-generative-ai-the-next-productivity-frontier">they pivoted&lt;/a> and valued GenAI at up to $4.4 trillion annually. There&amp;rsquo;s not even a hint of common sense in this analysis.&lt;/p>
&lt;p>As a career computational mathematician, I&amp;rsquo;m shaken by this. It&amp;rsquo;s not that I think machine learning doesn&amp;rsquo;t have a place in our world. I&amp;rsquo;m also not innocent. I&amp;rsquo;ve earned a few million dollars lifetime hitting data with processing power and hoping money comes out, not all of that out of pure goodwill. Yet I truly believe there are plenty of good, even humanitarian applications of data science. It&amp;rsquo;s just that creating godhood is not one of them.&lt;/p>
&lt;p>This post won&amp;rsquo;t convince anyone on the inside of the harms they are experiencing nor the harms they are causing. That&amp;rsquo;s not been my intent. You can&amp;rsquo;t remove someone from a cult if they&amp;rsquo;re not ready to leave. And the eye-popping data science salaries don&amp;rsquo;t really incentivize someone to get out. No. My intent was to give some clarity and explanatory insight to those who haven&amp;rsquo;t fallen under the Singularity&amp;rsquo;s spell. It&amp;rsquo;s a hope that if—when—the GenAI bubble bursts, we can maybe immunize ourselves against whatever follows it. And it&amp;rsquo;s a plea to get people to understand that America has never stopped believing in its manifest destiny.&lt;/p>
&lt;p>David Nye described 19th and 20th century American perception technology using the same concept of the sublime that philosophers used to describe Niagara Falls. Americans once beheld with divine wonder the locomotive and the skyscraper, the atom bomb and the Saturn V rocket. I wonder if we&amp;rsquo;ll behold AI with that same reverence. I pray that we will not. Our real earthly resources are wearing thin. Computing has surpassed aviation in terms of its carbon threat. The earth contains only so many rare earth elements. We may face Armageddon. There will be no Singularity to save us. We have the power to reject our manifest destinies.&lt;/p></description><tweet>The subtle backslide into millenarian techno-eschatology, or the Cult of AI.</tweet></item><item><title>What's New: Edition 2023-11-20</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-11-20/</link><pubDate>Mon, 20 Nov 2023 22:21:02 +0100</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-11-20/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/altes-museum.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/altes-museum.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/altes-museum.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/altes-museum.jpg" width="600"/></media:content><description>&lt;p>Reflecting on loneliness, travel, and politics.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">How the global far-right impedes environmental progress&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">Understanding loneliness with Bear&amp;rsquo;s Den&amp;rsquo;s &lt;em>First Loves &amp;amp; White Magnolias&lt;/em>&lt;/a>&lt;/li>
&lt;li>&lt;a href="#travel-and-exploration">Getting sent to The Hague&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Ancient art and gay techno Christmas&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-playing">German customer service and the PS5&amp;rsquo;s tiny storage&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Duolingo&amp;rsquo;s absurd learning models&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>I have traveled an absurd amount this year. I&amp;rsquo;ve hardly had a month in any given place, and I&amp;rsquo;ve been all over Europe, mostly for work. A lot of that travel comes on relatively short notice, and this week I found myself on the road again. But I don&amp;rsquo;t mind. It&amp;rsquo;s the consultant life. There&amp;rsquo;s a charm to it. You get used to being a foreigner.&lt;/p>
&lt;p>I was talking recently with a friend about living overseas. Being an expat becomes an identity, you develop a sense of home even away from home. I find myself more comfortable sometimes in a new country where I don&amp;rsquo;t speak the language than I do in another state back in the US. Maybe it&amp;rsquo;s because expats^1 all have this same sense of shared experience, that we all have the struggles of being somewhere where we don&amp;rsquo;t really quite fit in.&lt;/p>
&lt;p>I grew up in Connecticut and never really traveled much when I was younger. It made me restless and ready to leave home. I dreamed of traveling Europe, of going to California, of experiencing the big cities in all of the vibrance and violence and verve. I don&amp;rsquo;t speak a lick of Dutch, yet Amsterdam feels more familiar than Parsippany, New Jersey. I come back often to my favorite poem, Lord Tennyson&amp;rsquo;s &lt;a href="https://www.poetryfoundation.org/poems/45392/ulysses">&lt;em>Ulysses&lt;/em>&lt;/a>, but not the verse everyone knows; no. It&amp;rsquo;s the story that matters to me.&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;br>
As tho' to breathe were life! Life piled on life&lt;br>
Were all too little, and of one to me&lt;br>
Little remains: but every hour is saved&lt;br>
From that eternal silence, something more,&lt;br>
A bringer of new things; and vile it were&lt;br>
For some three suns to store and hoard myself,&lt;br>
And this gray spirit yearning in desire&lt;br>
To follow knowledge like a sinking star,&lt;br>
Beyond the utmost bound of human thought.&lt;/p>
&lt;/blockquote>
&lt;p>That&amp;rsquo;s still true. And hence I tap out this life update with my suitcase readied for the next trip already.&lt;/p>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>This weekend was great because I got to have dinner with three of my favorite co-workers. We so seldom have the time to get together and when we do we can gripe about work, talk about the tech industry, and just cherish the too-few moments we get to spend together. Of course, a cost of all this travel and socializing is I ended up this weekend with a minor cold. Not COVID, nothing major. More annoying than painful, but I&amp;rsquo;ll make sure to take a mask or three along on my next trip.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>The Guardian had &lt;a href="https://www.theguardian.com/environment/2023/nov/16/nitrogen-wars-the-dutch-farmers-revolt-that-turned-a-nation-upside-down">a great long-form piece&lt;/a> this weekend about the nitrogen wars in the Netherlands. Sensible environmental controls were enacted to reduce the country&amp;rsquo;s nitrogen emissions, which were causing a chain of effects that were damaging the ecosystem around the country. Of course, the Dutch far-right seized this as an opportunity to capitalize on farmers' legitimate fears, claiming that the government wanted to create a &amp;ldquo;civil war&amp;rdquo; and mustering protests across the nation, which were celebrated by the global far right. It&amp;rsquo;s a great read and you should take the time to read it.&lt;/p>
&lt;p>My travel companion will be Edith Wharton&amp;rsquo;s &lt;a href="https://openlibrary.org/works/OL98587W/The_House_of_Mirth?edition=cihm_78519">&lt;em>The House of Mirth&lt;/em>&lt;/a>. It&amp;rsquo;s a &lt;a href="https://en.wikipedia.org/wiki/Novel_of_manners">novel of manners&lt;/a> which is precisely the kind of book I find excruciatingly boring, simply because I &lt;em>do not care&lt;/em>. It all seems pointless. But then, that is the whole social commentary of the book. I&amp;rsquo;m about a quarter of the way through and Lucy, the main character, who is unmarried and without income, has just lost $300 at bridge, an equivalent today of around $10,500. I know the book will be about her downfall. I am having trouble conjuring the sympathy.&lt;/p>
&lt;p>Besides that, I&amp;rsquo;m progressing steadily through both &lt;a href="https://openlibrary.org/works/OL35975724W/The_Balkans_1804-2012">&lt;em>The Balkans: Nationalism, War, and the Great Powers, 1804-2012&lt;/em>&lt;/a> and &lt;a href="https://openlibrary.org/works/OL16117275W/Caliban%27s_war">&lt;em>The Expanse: Caliban&amp;rsquo;s War&lt;/em>&lt;/a>.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>&lt;a href="https://www.bearsdenmusic.co.uk/">Bear&amp;rsquo;s Den&lt;/a> released a new album, which is actually the marriage of two EPs, &lt;em>First Loves &amp;amp; White Magnolias&lt;/em>. The songs here are mournful; the aptly titled track &lt;a href="https://www.youtube.com/watch?v=BFu-QWE0zbw">&amp;ldquo;Loneliness&amp;rdquo;&lt;/a> earned my earworm spot for the week. Andrew Davie sings of a genuine solitude, one which I understand. I&amp;rsquo;ve been a lonely person for a long time. I think it&amp;rsquo;s why I&amp;rsquo;ve made it five years in Berlin, five years away from my wife.&lt;/p>
&lt;p>The thing about loneliness is that it can&amp;rsquo;t be solved by companionship. It&amp;rsquo;s a deeper sense of loss, a foundational yearning for someone to understand you, to understand how and why you see the world as you do. Loneliness can&amp;rsquo;t be cured until someone cares enough to reach into your soul and to feel the pain you feel. But it&amp;rsquo;s hard to let someone in because people inevitably fail, leaving you emptier than you were before. Loneliness isn&amp;rsquo;t the lack of love, it&amp;rsquo;s the apposition of love and the dreams of the person you could have been. Loneliness is a perpetual grief over the death of all the futures from your past.&lt;/p>
&lt;blockquote>
&lt;p>You wanna know what it is? Love taught me what loneliness is&lt;br>
It taught me how to forgive what no one should make you&lt;br>
Ever really have to forgive, and we all fall behind from time to time&lt;br>
And say, &amp;ldquo;I thought that I was over all of this&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>This weekend I got out to the Altes Museum. They&amp;rsquo;ve got a great collection of ancient Greek and Roman (as well as Mycenean and Etruscan) pottery, art, and statues, much of it in incredibly well-preserved condition. Some of it should probably be given back, but that&amp;rsquo;s later on the woke agenda.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/sarcophagus.jpg" alt="An intricately carved sarcophagus">&lt;/p>
&lt;p>Speaking of woke agendas, I went with a couple friends to the gay Christmas market at Nollendorfplatz. It was small and there were very loud and obnoxious drunk older men, but beyond that it was good to see a little queering of the Weihnachtsmarkt scene. It was the christmas club music that really sealed the deal for me.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/weihnachtsmarkt-nollendorfplatz.jpg" alt="Rainbow lights under a train bridge, with Christmas market huts lining the sides and a large crowd packing the area">&lt;/p>
&lt;h3 id="travel-and-exploration">Travel and exploration&lt;/h3>
&lt;p>I spent a few days in &lt;a href="https://emilygorcenski.com/post/2023-travelogue-emily-gorcenski-gets-sent-to-the-hague/">The Hague&lt;/a>, but not for the reasons many of my haters hoped. Now I am off again, this time for a conference. I&amp;rsquo;ll spend four days at the conference, serving as MC for one of those days, and I&amp;rsquo;ll get to visit two new-to-me countries on this trip! That will bring my new country total this year to 12. I am tired. But I cannot rest from travel.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>After a little bit of cheating with Duolingo by filling out my streak with the (exceptionally weak) music and math courses, I&amp;rsquo;m back to Romanian. I&amp;rsquo;m super frustrated with this course. I&amp;rsquo;ve been at this for months and have learned hardly anything. I feel like I could learn all the grammar rules that I&amp;rsquo;ve encountered so far in about 20 minutes with a proper book. But the owl lurks, ever watching&amp;hellip;&lt;/p>
&lt;p>I&amp;rsquo;m continuing my online German studies. This weekend I had a nice solo class with a teacher. We had a lovely discussion about politics, fascism, and history, all in German. My German is much more fluent when I talk about things I care about, rather than trying to contrive a sentence on the spot that uses the word &amp;ldquo;mutmaßlich&amp;rdquo; in a sentence.&lt;/p>
&lt;h3 id="what-im-playing">What I&amp;rsquo;m playing&lt;/h3>
&lt;p>I&amp;rsquo;ve been playing Modern Warfare III still, but this weekend I tried to go to Saturn to get a hard drive for my PS5, which has comically small storage. But after waiting for 20 minutes for a clerk to open the case, and speaking to three separate employees, I gave up and left. I&amp;rsquo;ll order one online next week when I&amp;rsquo;m back home. That&amp;rsquo;s irritating.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>I don&amp;rsquo;t know that I made the world better this week. But I am pretty sure I didn&amp;rsquo;t make it any worse. I&amp;rsquo;ll take it.&lt;/p></description><tweet>Reflecting on loneliness, travel, and politics. What's new, 2023-11-20 edition</tweet></item><item><title>2023 Travelogue: Emily Gorcenski gets sent to The Hague</title><link>https://emilygorcenski.com/post/2023-travelogue-emily-gorcenski-gets-sent-to-the-hague/</link><pubDate>Sun, 19 Nov 2023 10:35:15 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-emily-gorcenski-gets-sent-to-the-hague/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/the-hague/smokestacks.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/the-hague/smokestacks.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/the-hague/smokestacks.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/the-hague/smokestacks.jpg" width="600"/></media:content><description>&lt;p>I got sent to The Hague. Unfortunately for my haters, the only crime I committed to earn me these honors was being good at my job.&lt;/p>
&lt;p>I mentioned in a recent &lt;a href="https://emilygorcenski.com/post/whats-new-edition-2023-11-13/">What&amp;rsquo;s New&lt;/a> that I took on a pan-European management role at my job. One of the implications of that is I travel often to visit clients and offices in our eight European countries. And so it was that a rather short-notice necessity meant that I would need to spend the better part of last week in the Netherlands.&lt;/p>
&lt;p>I&amp;rsquo;ve been to Amsterdam a bunch of times by now, enough times that the city doesn&amp;rsquo;t hold that alluring charm that its reputation grants. This year I spent some time exploring the rest of the Netherlands. In August, I went to &lt;a href="https://emilygorcenski.com/post/2023-travelogue-canals-and-chaos-in-utrecht-and-amsterdam/">Utrecht&lt;/a> and loved it, and was glad to get to visit another city in the Randstad. I told a lie earlier: I did commit some climate crimes by flying, which I regret. I could have gotten there much faster by train. That was my mistake and oversight.&lt;/p>
&lt;p>I booked a hotel in the picturesque Statenkwartier to the northwest of the city center. Art museums and rows of quiet triple-deckers arranged themselves in an orderly crescent on the western side of the Scheveningse Bosjes, a large, wooded park in the city. It&amp;rsquo;s not far from the beach, but the weather was uncooperatively rainy and windy, so I didn&amp;rsquo;t venture to the sea this time. Perhaps a future visit during nicer weather lies in wait for me. After all, people have been clamoring to send me to The Hague for a while, and after such a pleasant visit I can&amp;rsquo;t disagree.&lt;/p></description><tweet>At long last, I was sent to The Hague. Unfortunately for some of my best fans, not for the reason they'd hoped. 2023 Travelogue: Berlin 🛫 Amsterdam 🚝 The Hague</tweet></item><item><title>What's New: Edition 2023-11-13</title><link>https://emilygorcenski.com/post/whats-new-edition-2023-11-13/</link><pubDate>Mon, 13 Nov 2023 22:07:55 +0100</pubDate><guid>https://emilygorcenski.com/post/whats-new-edition-2023-11-13/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/alte-nationalgalerie.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/alte-nationalgalerie.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/alte-nationalgalerie.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2023/alte-nationalgalerie.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;m bring personal updates back to my blog in an attempt to either avoid writing my book(s) or trying to bring more regular habits that move me closer to happiness into my life. Either or.&lt;/p>
&lt;p>In this post:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#what-im-reading">&lt;em>The Expanse&lt;/em>, the Balkans, and 120-year-old novels&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-listening-to">Radical earnestness with Radical Face&amp;rsquo;s &lt;em>The Family Tree&lt;/em>&lt;/a>&lt;/li>
&lt;li>&lt;a href="#my-dent-in-the-universe">An alleged neo-fascist pederast&lt;/a>&lt;/li>
&lt;li>&lt;a href="#art-and-culture">Caspar David Friedrich, Romanticism, and the Alte Nationalgalerie&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-playing">Modern Warfare III and lament over the grind&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-im-learning">Back on my bullshit with German classes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#life-updates">Recovering from a small surgery&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This year has been really remarkable in a lot of ways. It seems like a bunch of small changes in my life conspired to make a big one. I&amp;rsquo;m sleeping more and more regularly, I have been waking up earlier and using the time to read, I&amp;rsquo;m having fewer (but not no) headaches, and overall functioning level has increased significantly. Let me give you an example: I am traveling currently, and yesterday when I checked into my hotel, the first thing I did was unpack my bag, hang up my clothes, and organize my belongings. &lt;em>Who does that?&lt;/em> Mentally healthy people, I guess. It&amp;rsquo;s not that I have everything together. It&amp;rsquo;s just that I&amp;rsquo;m finding it way easier to have things together and I&amp;rsquo;m moving in the right direction. What changed?&lt;/p>
&lt;p>&lt;a href="https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/">Oh yeah. Less social media.&lt;/a>&lt;/p>
&lt;p>Seriously though, that piece went way wider than I expected. It was on &lt;a href="https://kottke.org/23/11/0043352-emily-gorcenski-banned-he">Kottke.org&lt;/a>. It made &lt;a href="https://novaator.err.ee/1609151860/hea-raamat-parandab-elu-kuid-mitte-meediaruumi">Estonian media&lt;/a>. My Google Alerts for my name used to fill me with dread. Now I&amp;rsquo;m just curious when I receive them.&lt;/p>
&lt;p>Surely enough, not long after that post hit, &lt;a href="https://www.bruegel.org/analysis/pay-or-consent-challenge-platform-regulators">Meta&amp;rsquo;s consent wall&lt;/a> went live on my account in Germany. Oh well—less Facebook and Instagram scrolling, more time for happiness.&lt;/p>
&lt;p>This timing is fortuitous because my job has been &lt;em>intense&lt;/em> these last few weeks. I&amp;rsquo;ve stepped into a pan-European leadership role. I now run Data &amp;amp; AI for Thoughtworks Europe, and I&amp;rsquo;ve been getting up to speed on our activities in all of our European countries, getting to know people better, and building a team. It&amp;rsquo;s a fun and new challenge&amp;hellip; and also probably why my headaches aren&amp;rsquo;t zero. We&amp;rsquo;ll get there.&lt;/p>
&lt;p>One of my habit changes has been to spend my mornings reading (physical books) and reconnecting with music, putting on an entire album and listening to it while I read and sip coffee at 6 AM. I try to use social media to share this to the world—some of my best writing lately is analyzing albums that are 30, 40, almost 50 years old. It brings my true joy to share this. I try alternating between something I get off Apple Music and something from my MP3 collection—a couple months ago I finally took the effort to set up a media server and resurrect my old music collection. (All legal, of course). I stopped building my MP3 library after my now-wife got me a Pandora subscription sometime around 2011 or so. This was my main source of music until I moved to Europe, then I used Spotify for a couple years before getting rid of it the February before last. I missed a lot of that music.&lt;/p>
&lt;h3 id="life-updates">Life updates&lt;/h3>
&lt;p>Speaking of my wife, Happy Birthday, wifer! I love you!&lt;/p>
&lt;p>I had a &lt;a href="https://en.wikipedia.org/wiki/Frenectomy">frenectomy&lt;/a> (content warning) a couple weeks ago to increase my tongue mobility so I could roll my R&amp;rsquo;s. It&amp;rsquo;s healing nicely and I&amp;rsquo;m able to do so sometimes!! My speech has actually improved in a way I defintely notice. It&amp;rsquo;s only this week that the swelling is really gone down.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>On my travels, I finished E. M. Forester&amp;rsquo;s &lt;a href="https://openlibrary.org/works/OL88813W/A_Room_with_a_View?edition=ia%3Aroomwithview0000fors_l5l8">&lt;em>A Room with a View&lt;/em>&lt;/a>. This was a delightful tale of love overcoming class boundaries and was a prescient social critique from a gay man in Edwardian England. As #79 on the Modern Library list, it marks the twelfth entry on &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">the list&lt;/a> that I&amp;rsquo;ve finished this year. I&amp;rsquo;m onto #69, Edith Wharton&amp;rsquo;s &lt;a href="https://openlibrary.org/works/OL98587W/The_House_of_Mirth?edition=cihm_78519">&lt;em>The House of Mirth&lt;/em>&lt;/a>. I fucked up buying this book. Initially, I thought I was being clever by buying a three-volume set with this and one of her other listed books in it. But that broke my organization, so I made the mistake of buying a copy off Amazon. Turned out, it&amp;rsquo;s a print-on-demand title (since the book is in the public domain) and it feels dirty. I don&amp;rsquo;t want to support Amazon&amp;rsquo;s shady third-party book business.&lt;/p>
&lt;p>I&amp;rsquo;m also working through Misha Glenny&amp;rsquo;s &lt;a href="https://openlibrary.org/works/OL35975724W/The_Balkans_1804-2012">&lt;em>The Balkans: Nationalism, War, and the Great Powers, 1804-2012&lt;/em>&lt;/a>. I&amp;rsquo;ve been traveling the Balkans these last couple of years and they&amp;rsquo;re absolutely beautiful, but I know nothing about their history or culture. This is one way to fix that.&lt;/p>
&lt;p>My pleasure/bathroom reading (ahem) has been Book 2 of &lt;a href="https://openlibrary.org/works/OL16117275W/Caliban%27s_war">&lt;em>The Expanse: Caliban&amp;rsquo;s War&lt;/em>&lt;/a>. I&amp;rsquo;m learning the series was pretty true to the books, and now I&amp;rsquo;m sad again that it&amp;rsquo;s over. But that&amp;rsquo;s what books are for.&lt;/p>
&lt;h3 id="what-im-listening-to">What I&amp;rsquo;m listening to&lt;/h3>
&lt;p>Recently, my albums of the day have been around Radical Face&amp;rsquo;s &lt;em>The Family Tree&lt;/em> project. It&amp;rsquo;s such an earnest, beautiful, bold project. I love this. We don&amp;rsquo;t tell stories anymore. We&amp;rsquo;re afraid of honesty and naked feelings. This project is that in spades. My current obsession: &lt;a href="https://www.youtube.com/watch?v=Lc2-x8qUXm4">&amp;ldquo;The Ship in Port&amp;rdquo;&lt;/a>.&lt;/p>
&lt;h3 id="art-and-culture">Art and culture&lt;/h3>
&lt;p>A few months ago, I bought a Jahreskarte for the Staatliche Museen zu Berlin, but had neglected to use it yet. I&amp;rsquo;m intending to see all 19 of the Museumsgebäude in the coming months. This past weekend, I visted the Alte Nationalgalerie. They have a great collection of Romantic works, including the German great, Caspar David Friedrich. I find these paintings exceptionally moving, as they reflect a Europe that no longer exists (or maybe never did). They remind me of the settings of fantasy stories. I&amp;rsquo;m simultaneously inspired and saddened. I&amp;rsquo;ll definitely go back and study them some more. I bought a German-language coffee table book on Friedrich.&lt;/p>
&lt;h3 id="travel-and-exploration">Travel and exploration&lt;/h3>
&lt;p>I&amp;rsquo;m traveling and in an undisclosed location presently—I&amp;rsquo;ll post my travelogue when I&amp;rsquo;m back. I&amp;rsquo;ve enjoyed the longest stretch home in Berlin all year these past few weeks and took that opportunity to catch up on some life tasks.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I&amp;rsquo;m back to pushing for C1 German by taking courses with Lingoda. My goal is to pass the test by May. I need to be speaking a lot more to get there. It&amp;rsquo;s so frustrating, though.&lt;/p>
&lt;h3 id="what-im-playing">What I&amp;rsquo;m playing&lt;/h3>
&lt;p>&lt;em>Modern Warfare III&lt;/em> landed this week. I hadn&amp;rsquo;t finished the camo grind from MW2, but thankfully the weapons carry forward. But the new game is a solid grind, and while it&amp;rsquo;s a nice passtime, it&amp;rsquo;s not a game I&amp;rsquo;ll be in love with like &lt;em>God of War&lt;/em> or &lt;em>Horizon&lt;/em>. I&amp;rsquo;m looking for my next game to blow my mind.&lt;/p>
&lt;h3 id="my-dent-in-the-universe">My dent in the universe&lt;/h3>
&lt;p>I&amp;rsquo;m mostly posting on Bluesky these days. If you&amp;rsquo;re not there, then you&amp;rsquo;re definitely missing the connection I made regarding a &lt;a href="https://www.sandiegouniontribune.com/news/military/story/2020-03-15/camp-pendleton-marine-under-investigation-for-sharing-alleged-white-supremacist-material-online">neo-fascist former US Marine&lt;/a> who was quickly &lt;a href="https://taskandpurpose.com/news/marine-corps-white-supremacist-infantryman/">kicked out of the service&lt;/a> despite the Marines &lt;a href="https://www.sandiegouniontribune.com/news/military/story/2021-02-28/marines-knew-infantryman-shared-extremist-content-online-months-before-investigation-records-show">knowing about his extremist ties&lt;/a>. Last year, he &lt;a href="https://taskandpurpose.com/news/marine-kicked-out-the-corps-white-supremacist-flyers-running-local-office/">ran for Constable&lt;/a> in District 4 of Bullitt County, Kentucky as a Republican, narrowly losing by 4% of the vote.&lt;/p>
&lt;p>Well, per &lt;a href="https://www.courtlistener.com/docket/66688414/1/united-states-v-martin/">court records available on PACER&lt;/a> (content warning), a man named Thomas Cade Martin fitting his description, with a former Facebook page called &amp;ldquo;Cade for Constable&amp;rdquo; was arrested on allegations of sex with a minor and trafficking in child sexual abuse material. His alleged victim was a 15 year old boy.&lt;/p>
&lt;p>I&amp;rsquo;m supposed to be retired from activism. But the sick fucking world of neo-Nazis never really gives me a break, does it.&lt;/p>
&lt;p>In happier news, I published book reports for Modern Library #99, &lt;a href="https://emilygorcenski.com/post/book-report-the-ginger-man-by-j.p.-donleavy/">&lt;em>The Ginger Man&lt;/em>&lt;/a> (not worth your time) and #89, &lt;a href="https://emilygorcenski.com/post/book-report-loving-by-henry-green/">&lt;em>Loving&lt;/em>&lt;/a> (I did not understand it).&lt;/p></description><tweet>Bringing back personal blogging to my personal blog. What's new, 2023-11-13 edition</tweet></item><item><title>Book Report: Loving by Henry Green</title><link>https://emilygorcenski.com/post/book-report-loving-by-henry-green/</link><pubDate>Sun, 12 Nov 2023 23:00:00 +0100</pubDate><guid>https://emilygorcenski.com/post/book-report-loving-by-henry-green/</guid><image><url>https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Roberts%20Head%20Signal%20Tower-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Roberts%20Head%20Signal%20Tower-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Roberts%20Head%20Signal%20Tower-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Roberts%20Head%20Signal%20Tower-thumb.jpg" width="600"/></media:content><description>&lt;p>Aristocracy is not something I get. So Henry Green&amp;rsquo;s &lt;em>Loving&lt;/em> is also something I struggled mightily with.&lt;/p>
&lt;p>That form of received pronunciation so present in period pieces is so stressful and anxiety-inducing to me that I have a hard time traveling in southern England from time to time. There&amp;rsquo;s something about the low talking, seemingly snobbish tone that movies and shows about aristocratic life are unbearable. I did not watch &lt;em>Bridgerton&lt;/em>. I cannot bear &lt;em>Downton Abbey&lt;/em>. It&amp;rsquo;s a trigger, and it&amp;rsquo;s also a weakness.&lt;/p>
&lt;p>Unfortunately, the 9s in the &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library&lt;/a> list are full of books that deal with British aristocratic life, ostensibly included as a form class or social commentary. I read these books and can&amp;rsquo;t help but think how sexually repressed British early 20th century British life must have been that the greatest writers of the time kept churning out novel after novel about it. So enter Henry Green&amp;rsquo;s &lt;em>Loving&lt;/em>.&lt;/p>
&lt;p>Unlike similar novels, &lt;em>Loving&lt;/em> deals with the servant class managing a minor British aristocrat&amp;rsquo;s estate in Ireland. The butler dies early in the novel—nothing untoward—and the first footman (whatever that is), Charley Raunce, is put in charge while the Lady (genuinely no idea if this is the right term) Mrs. Tennant and her daughter are away. A sapphire ring goes missing, rumors (no u) of the I.R.A. abound, and the staff, in neutral Ireland, speculate about the goings on of the Second World War. Raunce is in love with Edith, a young housemaid, and so it seems is Kate, another housemaid. The book never explicity describes sex, but there&amp;rsquo;s more than one scene where Kate disrobes Edith longingly.&lt;/p>
&lt;p>From this description, I can almost even see the appeal of such a story. Love! Intrigue! Drama! Except also: indecipherable affairs that make zero sense unless you somehow understand the arcane social customs of the landed gentry. The book progresses mainly through dialogue, making it at times more than a bit dizzying especially because all the characters are nearly indisinguishable. The book is unique for its time because so rarely are the servants the focus of such a story. But this alone wasn&amp;rsquo;t enough for me to appreciate the novel fully. I&amp;rsquo;m surely too low class for the piece, though I appreciate what humor it offers that I understand. The truth is, however, I really could not care less about learning more about aristocracy or social norms of the upper classes or the dynamics of the servants or any of that. I am still an anarchist—burn it all down, so to speak. Let us speak like humans to one another. Love affairs are hardly the exclusive remit of the wealthy.&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/works/OL20044847W/Loving">&lt;em>Loving&lt;/em>&lt;/a>&lt;br>
Henry Green&lt;br>
ISBN 9781681370149&lt;br>&lt;/p></description><tweet>Henry Green's Loving is a look into the aristocratic underclass which would have been more entertaining if I understood what the hell was happening. Modern Library No. 89 of 100.</tweet></item><item><title>Book Report: The Ginger Man by J.P. Donleavy</title><link>https://emilygorcenski.com/post/book-report-the-ginger-man-by-j.p.-donleavy/</link><pubDate>Mon, 06 Nov 2023 20:55:27 +0100</pubDate><guid>https://emilygorcenski.com/post/book-report-the-ginger-man-by-j.p.-donleavy/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/20170831_153025.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/20170831_153025.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/20170831_153025.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/20170831_153025.jpg" width="600"/></media:content><description>&lt;p>J. P. Donleavy&amp;rsquo;s satirical offering proffers a brand humor that looks horribly outdated in today&amp;rsquo;s light. A disappointing entry for number 99 of the Modern Library list.&lt;/p>
&lt;p>The first thing you need to know about &lt;em>The Ginger Man&lt;/em> is that Sebastian Dangerfield is hardly meant to be a sympathetic protagonist. The second thing you need to know is that it doesn&amp;rsquo;t really matter. The book opens with Dangerfield selling his appliances for booze, hitting his wife, and trying to smother his infant child with a pillow. It doesn&amp;rsquo;t really get better from there.&lt;/p>
&lt;p>Like &lt;a href="https://emilygorcenski.com/post/book-report-tropic-of-cancer-by-henry-miller/">&lt;em>Tropic of Cancer&lt;/em>&lt;/a>, &lt;em>The Ginger Man&lt;/em> spent quite some time as a banned book. And like Henry Miller&amp;rsquo;s work, it offers a writing style that is complex and artful. But unlike the former, &lt;em>The Ginger Man&lt;/em> fails to delivery much by way of value for today&amp;rsquo;s reader. Child abuse, spousal abuse aren&amp;rsquo;t topics that a lot of people find fit for humor. For half the population, they represent real and manifest fears.&lt;/p>
&lt;p>It&amp;rsquo;s not hard to see why the book made the list, but it&amp;rsquo;s disappointing nevertheless: the judging panel was all men save one woman; 25 years after its creation only two of the panelists are still alive. (&lt;em>Update: now one, as A.S. Byatt passed away shortly after I wrote this.&lt;/em>) One was &lt;a href="https://en.wikipedia.org/wiki/Shelby_Foote#Views_on_race_and_African-Americans">a Lost Cause sympathizer&lt;/a>, stating, &amp;ldquo;I’m for the Confederate flag always and forever.&amp;rdquo; &lt;a href="https://en.wikipedia.org/wiki/Gore_Vidal#Polanski_rape_case">Another&lt;/a> defended Roman Polanski, claiming, &amp;ldquo;I really don&amp;rsquo;t give a fuck. Look, am I going to sit and weep every time a young hooker feels as though she&amp;rsquo;s been taken advantage of?&amp;rdquo; It&amp;rsquo;s a shame that &lt;em>The Ginger Man&lt;/em> narrowly made the list while &lt;em>To Kill a Mockingbird&lt;/em> was left off.&lt;/p>
&lt;p>Sadly, I think this is one case where we can judge a book by its cover, or rather the words that appear on it. Between the novel&amp;rsquo;s front and back covers and its introduction, the word &amp;ldquo;picaresque&amp;rdquo; is leveraged three times. This is an AP English Lit word. It&amp;rsquo;s a word you use when you want to come off like an asshole or to sound smarter than you are. Sebastian Dangerfield is &amp;ldquo;picaresque&amp;rdquo; or &amp;ldquo;roguish&amp;rdquo; or &amp;ldquo;a wastrel.&amp;rdquo; These are all vocab assignment words to distract from the real affair: he&amp;rsquo;s an asshole and a loser and a drunk, and the novel&amp;rsquo;s portrayal of his drinking and fucking and woman hating aren&amp;rsquo;t saved by the schadenfreude-laden turn at its climax. Simply put: violence against women is not a joke, but it is a joke that this book made the fucking list.&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/OL28177164M/The_Ginger_Man">&lt;em>The Ginger Man&lt;/em>&lt;/a>&lt;br>
J. P. Donleavy&lt;br>
ISBN 9780802144669&lt;br>&lt;/p></description><tweet>The Ginger Man is a book from another time. A time that is best left in the past. Modern Library No. 99 of 100.</tweet></item><item><title>2023 Travelogue: Home</title><link>https://emilygorcenski.com/post/2023-travelogue-home/</link><pubDate>Sun, 05 Nov 2023 23:55:40 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-home/</guid><image><url>https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/skelly.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/skelly.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/skelly.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/skelly.jpg" width="600"/></media:content><description>&lt;p>My last trip home only lasted two days, and despite doing a big trip for our 10th anniversary, I wanted to be home for the actual date. The last trip for almost a whole month.&lt;/p>
&lt;p>My year has been extremely hectic with travel. I like it, but July to October was a particularly intense period. I was genuinely all over the place: three continents, at least 11 countries. Part of that was due to our &lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">10th anniversary trip&lt;/a> but it was also due to work, restlessness, conferences, and an urgent sense of needing to see the world before it ends. Nevertheless, that trip didn&amp;rsquo;t include much time back home in Charlottesville, so I decided to make a quick trip to spend our actual anniversary date together.&lt;/p>
&lt;p>This was a short but nice trip home: my direct flight landed midday and I adjusted well to the timezones. It was the first time I chose to spend a little more money to fly United Premier Economy and I have to say it was well worth the cost for the transatlantic flight. The seats were much more comfortable, spacious, and relaxing. The other part of this is that I&amp;rsquo;m a climate criminal and I&amp;rsquo;m angling for Star Alliance Gold this year. I&amp;rsquo;ll get it with my next trips. Europe is great to travel by train but it&amp;rsquo;s not fast. Berlin is on the wrong side of Germany for me to be able to conveniently travel by train to Amsterdam or Brussels for work, for instance, without burning half of my week in travel time. And conferences in Athens or Vilnius or London aren&amp;rsquo;t easy to get to without flying. So status it is, and I&amp;rsquo;ll defer my climate sins some other way.&lt;/p>
&lt;p>Being home was great except for when a transphobe came to speak at the University. I found out about this from my local activist community and joined the counter-protest on UVa Grounds. The student body there was active and vocal, if not a little nervous about where the boundaries were. No worries, Charlottesville has a great activist community that takes no shit. I have to say, it was a big step up from my last counter-demo on the campus. I only got lightly assaulted by an old man this time!&lt;/p>
&lt;p>Christine and I like to do the traditional anniversary theme gifts. For some reason, one of the themes for the 10 year anniversary is aluminum. This is a great theme with a lot to work with. On our honeymoon, we went to a small island off the coast of Vancouver. At the time there was a kayak rental shop next to a pie shop; on weekday&amp;rsquo;s they&amp;rsquo;d offer a pie and kayak rental special: Pieyaking. I had to sneak out while Christine was off doing other things and headed down to the local sporting goods store and picked up some kayak racks for the car, as well as to the grocery store to pick out a pie. I grabbed an aluminum-handled kayak paddle as well, and surprised my wife after we came home from eating at our favorite Turkish restaurant in town. Now we get to pick out kayaks and hopefully we&amp;rsquo;ll get lots of opportunities to use them next year.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/pieyaking.jpg"style="margin: 0" width="650px"
alt="An old flyer for pie-yaking, photo taken by my wife, Christine" />&lt;/center>
&lt;center>An old flyer for pie-yaking, photo taken by my wife, Christine&lt;/center>&lt;br />
&lt;p>I wrapped up the visit back home by setting up the 12-foot Home Depot Skeleton that my wife insisted on buying. It worked out though: we&amp;rsquo;ve configured it to be a sign holder and now we have it proudly advertising the &lt;a href="https://livablecville.org/">Livable Cville&lt;/a> yard sign. We all stan a 12-foot Yimby skeleton! How (if?) Christine will take it down is a story for another day.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/skelly.jpg"style="margin: 0" width="650px"
alt="A 12-foot skeleton in front of our house" />&lt;/center>
&lt;center>A 12-foot skeleton in front of our house&lt;/center>&lt;br />
&lt;p>After this trip I&amp;rsquo;ve managed to find a miraculous break in my schedule. I won&amp;rsquo;t be traveling for almost a whole month. In that time I had a small surgery, recovered, and managed to get some more reading and writing done. My next journey: back to Amsterdam, then off to Vilnius, Riga, Passau, and the United States. For now, I&amp;rsquo;m enjoying the down time and rest. It&amp;rsquo;s good to be in one place for a minute.&lt;/p></description><tweet>Home again: fighting TERFs, building skeltons, and pie-yaking. 2023 Travelogue: Berlin 🛫 Charlottesville</tweet></item><item><title>Electric Ghosts: Part 1, Chapter 2</title><link>https://emilygorcenski.com/post/electric-ghosts-part-1-chapter-2/</link><pubDate>Mon, 30 Oct 2023 04:03:21 +0100</pubDate><guid>https://emilygorcenski.com/post/electric-ghosts-part-1-chapter-2/</guid><image><url>https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost-thumb.jpg" width="600"/></media:content><description>&lt;p>Electric Ghosts, Part 1, Chapter 2: PCI Bus&lt;/p>
&lt;h2 id="chapter-2--pci-bus">Chapter 2 — PCI Bus&lt;/h2>
&lt;p>Elira briskly closed the 600 meters to the S-Bahn station in her Hamburg neighborhood of Harburg, a blue collar district of Germany’s second largest city. She found her way there some fifteen years prior in search of cheap rent. She spent her days working as a tattoo artist and filled the gaps in her bookings by running card skimmers around the Binnenalster. After settling down she twice tried opening tattoo studios. Her first attempt she flew solo, failing when German bureaucracy became too overwhelming for her to manage alone. She opened her second studio with a business partner who was also a romantic partner. When the romance failed, so did the studio. She realized her mistake in hindsight, but she was young and young people learn by failing.&lt;/p>
&lt;p>Elira’s extracurriculars gave her a more stable, if not riskier, source of income. She moved on from just running card skimmers to building her own. This became a gateway into the local hardware hacker scene after a few years, and eventually she realized that while computer people didn’t hit on her any less than her tattoo clients, at least she didn’t have to touch the digital creeps. Through the hacker community, Elira stumbled her way into security freelancing, and before long this proved to be more lucrative and less time consuming than tattooing. The freelance lifestyle suited her well: she worked only as many hours as she needed to pay her bills and she didn’t have any bosses telling her what she could and could not do with her time.&lt;/p>
&lt;p>Sitting on the train into the city center, she opened her PGP app and typed out a message to Martin, a fellow hacker and freelancer. He was sometimes more of a colleague than a friend, but they’d known each other for a decade and she knew he’d have her back. Some of their work together had been above board, some not; Martin had made some strange friends and enemies over the years. About 18 months ago, the two of them decided to put some resources together to set up a safehouse. They secured a flat in the Reeperbahn, Hamburg’s red light district, and had spent the last year working hard to ensure it had state of the art security while still looking incredibly shitty to the passing eye.&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>martin, i might need you to get jax and bring her to the safehouse. im heading to tirana. something weird. my sister messaged me, sounded worried. i need to see whats up. check back in 48&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;p>The app quickly encrypted the message into an indecipherable random jumble of characters. She copied this and pasted it into her email client, addressing it to Martin’s secure Protonmail address. Fifteen minutes later her phone vibrated with a Signal notification.&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>what the fuck pgp&lt;/code>&lt;/p>
&lt;p>&lt;code>what year is this fucking 1998&lt;/code>&lt;/p>
&lt;p>&lt;code>it took me ten fucking minutes just to remember how to use this shit&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;p>The messages from Martin appeared in plain text. The app encrypted them end-to-end, but Elira was feeling especially paranoid. She slinked lower into her seat. Her phone vibrated again.&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>i’ll be there, you know that. just lmk wtf is going on. breaking glass in 49&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;p>She did the math in her head. By land, Tiranë was about 24 hours away. With delays, mandatory rest breaks, and transfers, closer to 30. &lt;em>Not much error budget&lt;/em>, she thought. She’d have around half a day to figure out what was up with her sister. Maybe less. She tapped at her phone and looked for the best route to Albania. After fiddling with a few filters, she found a reasonable route through Kosovo via Berlin with Pristina Coaches International. She declined to buy a ticket online, figuring that there was little chance that a bus to Kosovo would be sold out.&lt;/p>
&lt;p>Elira and her sister had grown apart in recent years. Like Elira, Sihana worked in technology, but unlike Elira, she had a “proper” job. She worked as a graphic designer and later a project manager, eventually making her way into the NGO space. Sihana’s work brought her into contact with activist groups and charities and she was passionate about Albania’s economic modernization and eventual EU ascension. Elira, by contrast, didn’t take a stand. Sihana couldn’t understand that. It used to cause frequent arguments between them. It wasn’t that Elira didn’t care. It was more that she felt like Albania’s problems weren’t hers to solve. Sihana was fiery and political. Elira saw in her line of work that fiery and political people often become targets. More than once she told her sister to keep her head down. This only made Sihana more indignant.&lt;/p>
&lt;p>“Just tell me if you get in any trouble,” Elira begged.&lt;/p>
&lt;p>“I will, you know I will,” her sister told her.&lt;/p>
&lt;p>Arguments gave way to silence, and silence gave way to bitterness. Over the last few years, the two sisters spoke infrequently. Check-ins on birthdays and holidays, the periodic text to inform about a breakup or a new job. In their middle age, each believed her sister was long past the point of listening.&lt;/p>
&lt;p>Elira sighed and looked at the message again. It was now 10 hours old. &lt;em>What trouble did you get yourself into last night?&lt;/em>&lt;/p>
&lt;p>Elira disembarked from the S-Bahn onto a narrow, crowded platform at Hamburg Hauptbahnhof. She elbowed her way through the mass of people and grumbled her way up a broken escalator. Outside, she frowned when she saw that it had started raining. She covered the distance between the city’s outdated and overused train station to its surprisingly modern bus station in less than the five minutes it usually took.&lt;/p>
&lt;p>Elira’s hunch about the bus ticket was correct. Flights in Europe had become frighteningly cheap: a one-way ticket from Hamburg to Tiranë only cost about twice what Elira would pay to travel by land. Elira had the money and needed the time, but she chose the bus for one simple reason: you could still buy a bus ticket with beautiful, untraceable cash. She walked past a new-ish, bright green Flixbus and then past a much older motorcoach with an A4 paper taped inside its windshield that read “PRISTINA ПРИШТИНА PRISHTINË'' in large block letters. &lt;em>Pristina Coaches International, I guess that’s my bus&lt;/em>, she mused. Elira entered the station and walked to the ticket desk. She plopped a 50 euro note on the counter in exchange for a one-way ticket to Pristina via Berlin and Budapest.&lt;/p>
&lt;p>Boarding the bus she noticed the faint smell of cigarette smoke and beer. Smoking on buses had been banned in the European Union long ago, but the EU could hardly force the thirty-year-old upholstery to give up its legacy so easily. She tried for a window seat, found the cushion too springy and the footrest too broken, and skipped back a few rows to choose another. “Not like I’m hurting for choice,” she said aloud to the empty bus. She tucked her duffel bag in the overhead storage, slid her backpack under her seat, and put on a pair of noise-canceling, over-ear headphones.&lt;/p>
&lt;p>The first leg to Berlin only took a couple of hours. Elira used the time to reclaim the sleep that the hammer drill had denied. She woke up as the bus was pulling into the bus station across the street from Berlin’s once-futuristic Internationales Congress Centrum, a building that bears more of a resemblance to a crashed spaceship than a convention center. Elira’s stomach growled. &lt;em>Fuck, I need to eat.&lt;/em>&lt;/p>
&lt;p>A thirty minute layover in the itinerary gave her the good news. The bad news was that the only available food was a cheap döner and pizzeria and a kiosk. She bought a halloumi dürüm, some snacks and a couple liters of water. &lt;em>Eating healthy today I guess.&lt;/em> She headed back to the bus, thought better of it, and turned back and bought a trashy German-language romance novel from the kiosk’s sparse book selection.&lt;/p>
&lt;p>Back on the bus, Elira settled in for the long journey. She pulled out her laptop and configured her mobile hotspot. Once connected to her VPN, she opened up her web browser and searched in both English and Albanian for any news or events that might give her a clue about why her sister would leave a cryptic, late-night message. Finding nothing, she opened her IRC client and logged into the server for Proiectul, an international hacker collective she worked with periodically. &lt;em>Maybe there’s something not public yet&lt;/em>, she considered.&lt;/p>
&lt;pre tabindex="0">&lt;code>--&amp;gt; empty_radix has joined #chatter
&amp;lt;heavy_water_buffalo&amp;gt; sup
&amp;lt;empty_radix&amp;gt; noise check
&amp;lt;heavy_water_buffalo&amp;gt; no pleasantries today then
&amp;lt;heavy_water_buffalo&amp;gt; you can fuck right off then this isn’t twitter
&amp;lt;empty_radix&amp;gt; on the move, sorry since when are we being all formal with each other
&amp;lt;@can0li&amp;gt; no dick behavior buf
&amp;lt;heavy_water_buffalo&amp;gt; just messin with you
&amp;lt;heavy_water_buffalo&amp;gt; mostly quiet. mysphere has a product launch next week. vr shit.
ethics report on tigray genocide due from ngospace next month. hiring and firing normal.
btc down then up again this week. only anomaly is rainforest bought a security firm
&amp;lt;empty_radix&amp;gt; dont they do that like all the time
&amp;lt;heavy_water_buffalo&amp;gt; no like dudes with guns security
&amp;lt;heavy_water_buffalo&amp;gt; hard to say if its weird
&amp;lt;heavy_water_buffalo&amp;gt; motherfuckers bought my fucking doctor last month
&amp;lt;empty_radix&amp;gt; thanks
&amp;lt;empty_radix&amp;gt; i might need a hand this week can i call one in
&amp;lt;@can0li&amp;gt; tight this week, megadox dropping on pv
&amp;lt;empty_radix&amp;gt; . . . penis vagina?
&amp;lt;heavy_water_buffalo&amp;gt; patriot's vanguard
&amp;lt;heavy_water_buffalo&amp;gt; lmfao
&amp;lt;empty_radix&amp;gt; have fun with that
&amp;lt;@can0li&amp;gt; we’ll see what we can do from here, you good?
&amp;lt;empty_radix&amp;gt; not sure, let you know
&amp;lt;-- empty_radix has left #chatter
&lt;/code>&lt;/pre>&lt;p>Frustrated, she shoved her laptop into her seat pocket and unwrapped the dürüm. She ate half of the halloumi wrap, the salty cheese squeaking with every bite, and set the other half aside for later. Watching the German countryside roll by, she started workshopping her plan in her mind. &lt;em>Sihana wouldn’t have sent that message for nothing&lt;/em>, she thought. &lt;em>She wouldn’t have mentioned&lt;/em> that &lt;em>place if whatever she was into wasn’t serious&lt;/em>. Where would Sihana have been? What was she doing? Who do I still know in Tiranë? Where am I going to sleep? For every question she had, she made a mental note of the top 5 things she would need to do to answer it, and then she replayed these lists over again in her mind. The introspection conspired with the dull scenery to lull her to sleep. She leaned her head against the headrest and dozed off.&lt;/p>
&lt;hr>
&lt;p>A few hours later Elira jerked awake. Out of instinct more than fear, she bolted upright and looked to her side. A young German man had come aboard in Dresden, settled in across the aisle from Elira, and was now talking to her.&lt;/p>
&lt;p>“Dein Laptop,” he said.&lt;/p>
&lt;p>“Huh?” asked Elira, pulling off her headphones.&lt;/p>
&lt;p>“Your laptop,” he said, now in English.&lt;/p>
&lt;p>“What about it?”&lt;/p>
&lt;p>“i9. SSD. 64 gigabytes of ram, or is it 32?”&lt;/p>
&lt;p>“Uh…”&lt;/p>
&lt;p>“Sorry, I was asking what you do,” he said. “Your laptop is really nice.”&lt;/p>
&lt;p>“Thanks, I guess.” &lt;em>Jesus is this guy flirting with me over my laptop?&lt;/em> Elira looked him over. He was 24, 25 at most. A scraggly blonde goatee did a poor job of covering what remained of the teenage acne that took up residence on his chin. He wore a branded hoodie for some tech company she’d never heard of. She decided he was more of a nerd than a threat. “Um, infosec. I work in infosec.”&lt;/p>
&lt;p>“Ah, the people who slow us down.”&lt;/p>
&lt;p>“Only if you’re doing it wrong,” Elira retorted.&lt;/p>
&lt;p>“Touché. Here, try this.” Her seatmate held out a pair of VR goggles.&lt;/p>
&lt;p>“No thanks. I’d rather not.”&lt;/p>
&lt;p>“You’ll like it.”&lt;/p>
&lt;p>“No, I’m good. I don’t really fuck with all that. You know, Mysphere and shit.” Elira’s disdain for the mega social network was evident from her tone. She had managed to resist creating an account for herself for years, but was dismayed when she found out a few years ago that the company had a profile on her anyways, probably from friends who had given the company access to their contacts. She was pretty sure that was against the law, and she was also pretty sure that the law had no power to stop Mysphere from acting like this.&lt;/p>
&lt;p>“Ah, no. This is not the Opticus. This is different. I made this myself. Humor me. We have another 6 hours before we get to Budapest. My name is Matthias.”&lt;/p>
&lt;p>“Fine.” She relented and took the headset but carefully declined to reciprocate in the name exchange. The headset was heavy. “Budapest?”&lt;/p>
&lt;p>“The Metaverse Festival and Congress! Don’t you know it?”&lt;/p>
&lt;p>“No, I don’t… I don’t really follow that,” Elira said, distracted. &lt;em>Why the fuck wasn’t that in the noise check, or… was it?&lt;/em> Elira second-guessed herself. She filed this away in the back of her mind.&lt;/p>
&lt;p>“You should! There are a thousand booths! All the big players are there, startups, too. That’s why I’m—”
Elira interrupted him. “So you have a startup?”&lt;/p>
&lt;p>“Ja.”&lt;/p>
&lt;p>“I figured you’d be flying first class,” she joked, immediately regretting becoming too overly familiar with someone she’d met two minutes ago.&lt;/p>
&lt;p>“Ja, well…”&lt;/p>
&lt;p>“No stress. We’re on the same bus.” &lt;em>For different reasons&lt;/em>, she didn’t mention.&lt;/p>
&lt;p>“Let me explain,” her seatmate said. He altered his intonation noticeably, it became a little more polished but at the same time more forced. “FOR users who want a more realistic virtual reality experience, our headset, the SpectraLens is—”&lt;/p>
&lt;p>Elira laughed. “Jesus christ, are you giving me an elevator pitch right now?”&lt;/p>
&lt;p>Matthias deflated. “Sorry, I want to practice.”&lt;/p>
&lt;p>Elira started to feel a little bad for him. “Ok, go ahead. But how about you just tell me what it is. No pitch. Talk to me like a normal person.”&lt;/p>
&lt;p>“So, we trained a neural network for object detection. Everyone does that. What we did was figure out how to encode that into an FPGA. It’s faster and uses less power. That means we can create more realistic scenery. The way it works is—”&lt;/p>
&lt;p>“I know what an FPGA is. Infosec, remember? Why would I want to wear a headset just to see the real world?” Elira interjected.&lt;/p>
&lt;p>He ignored this second interruption, speaking excitedly. “The FPGA is like programmable hardware. You can make a chip that does anything. That means it’s faster than if software was running your algorithms. Everyone else has to do all their computing on the CPU. But we can have custom chips do that faster and cheaper, and that means we free up the CPU for processing other information. We can do five times the processing for the same energy cost. Try it on. I’ll show you what I mean.”&lt;/p>
&lt;p>Elira put on the headset. &lt;em>Ok, I’m kind of impressed&lt;/em>, she admitted to herself. She looked around the bus. The interior of the bus was rendered in computer imagery, but not as an exact copy of itself. Rather, she could see the edges of the seats and the windows highlighted by a soft pale-yellow outline. There was no visible lag as she moved her head. Matthias tapped a couple keystrokes into his computer. A sleek UI appeared in the periphery of the display.&lt;/p>
&lt;p>“Look out the window,” Matthias said. Elira turned to her side, looking out where the window would be. Suddenly, an array of information appeared on her display. She could see the outside temperature, the speed the bus was traveling. “The UI works with your eyes, just look at one of the labels,” Matthias said. Elira made a couple of glances at the interface with her eyes and she was able to open a map with information about where she was. She could pull up the Wikipedia pages of the nearest cities, compute the distance to the next stop, and view traffic forecasts. She was genuinely impressed by the technology, but she didn’t find it overwhelmingly revolutionary. She could do all of this on her phone. She took off the headset.&lt;/p>
&lt;p>Matthias seemingly read her mind. “You can do all of this on your Handy, of course, but this is just the beginning. We are mapping everything about the world into digital space. Did you know that Berlin has numbered every tree in the city?” She did not know that. “Before you’d have to log online and search for the tree. Now you can just look at a tree through the headset and learn everything about it if you want!” Matthias’s voice pitched up. He was evidently very excited about this prospect.&lt;/p>
&lt;p>Elira was nonplussed. “Or I could look at a tree and enjoy the tree.”&lt;/p>
&lt;p>“True, but what if the tree was sick?”&lt;/p>
&lt;p>“Sometimes trees get sick. That’s what life is. Things get sick and sometimes they die.”&lt;/p>
&lt;p>“They don’t have to. They don’t in here,” he said, taking back his headset. “Nothing in here gets sick.”&lt;/p></description><tweet>Here's the next entry of Electric Ghosts. Part 1—Tiranë, Chapter 2—PCI Bus</tweet></item><item><title>Electric Ghosts: Part 1, Chapter 1</title><link>https://emilygorcenski.com/post/electric-ghosts-part-1-chapter-1/</link><pubDate>Sun, 29 Oct 2023 19:57:27 +0100</pubDate><guid>https://emilygorcenski.com/post/electric-ghosts-part-1-chapter-1/</guid><image><url>https://emilygorcenski.com/photo-gallery/tirana-2022/Hacker%20Dreams-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/tirana-2022/Hacker%20Dreams-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/tirana-2022/Hacker%20Dreams-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/tirana-2022/Hacker%20Dreams-thumb.jpg" width="600"/></media:content><description>&lt;p>Electric Ghosts, Part 1, Chapter 1: Sihana&amp;rsquo;s End&lt;/p>
&lt;h1 id="part-i--tiranë">PART I — TIRANË&lt;/h1>
&lt;h2 id="chapter-1--sihanas-end">Chapter 1 — Sihana&amp;rsquo;s End&lt;/h2>
&lt;p>The Forever Green tower hovered over Skanderbeg Square, its icy blue lights shining like electric ghosts. Sihana hurried across the gently sloped plaza with her hands balled up in fists in the pockets of her denim jacket. Her right hand gripped an old pack of cigarettes, empty except for a one terabyte SD card and a pair of prepaid SIM cards she had stolen from some German tourists a few hours earlier. She took a quick glance over her left shoulder at The Albanians, the recently-restored mosaic adorning the National History Museum. &lt;em>Everyone’s always trying for utopia, she mused.&lt;/em>&lt;/p>
&lt;p>Sihana reached into her breast pocket and pulled out her own mobile. With a quick swipe of her left thumb, she entered her passcode and quickly opened Signal. Without breaking stride she tapped out a message to her sister.&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>where we found that cat that time&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;p>Tiranë had changed in the nearly forty years since the civil war, but Sihana’s jaw still clenched as she walked alone at night. She subtly altered her path to avoid a rowdy group of drunk men chanting nationalist slogans. “Death to Serbs!” they chanted. She tuned it out. Being harassed by a group of drunk nationalists wasn’t part of the evening’s agenda. Her new tack put her on the course of a black-haired woman arguing loudly into a cell phone, a large tote bag slung over her shoulder. She deftly slipped her own phone into the woman’s open tote.&lt;/p>
&lt;p>&lt;em>Better not to destroy it&lt;/em>, she reckoned. &lt;em>This might buy me some time&lt;/em>. She assumed her phone was being tracked and dumping it off on another person would lead the people tracking her astray. She was heading east to the neighborhood she lived in as a child: a small, ground-floor apartment she shared with her parents and her younger sister, Elira, before the civil war. Hers was one of thousands of families torn apart by the war. Both of her parents were killed within weeks of each other: her father in a riot, and her mother hit by a stray bullet while preparing dinner. Terrified and orphaned, Sihana grabbed her sister and a loaf of bread and fled to safety in one of the old Hoxha bunkers in their neighborhood. Inside the bunker they found an abandoned kitten crying for its mother.&lt;/p>
&lt;p>The two girls tried giving the kitten water and some of their bread, but the young stray needed milk and they had none. They spent the night in the bunker trying to keep the poor creature warm between their bodies, fighting and losing a battle against their own exhaustion. When they woke, the kitten had passed. They had no more tears to cry that morning.&lt;/p>
&lt;p>During Enver Hoxha’s reign, Albania underwent a decades-long process of bunkerization. Hundreds of thousands of reinforced-concrete domes dotted the Albanian landscape, with a densely populated network of bunkers covering the capital city. In the years since the fall of the communist regime, most of the bunkers have been systematically removed, some because the rusting steel and crumbling concrete posed a safety hazard, and some to make way for the ramshackle wave of real estate development that would beset the city. A few, however, remained, and their concrete domes poked out of the ground like oversized tortoise shells. Those that remained became popular locations for Tiranë’s teenagers to get high or get laid. The couple Sihana came across this night were looking to do both.&lt;/p>
&lt;p>“Out,” Sihana boomed. “Now.”&lt;/p>
&lt;p>“What the fuck? Piss off!”&lt;/p>
&lt;p>“I don’t have time for this. Leave, or I’ll tell your parents you’re fucking.”&lt;/p>
&lt;p>“Fuck you. They already know.”&lt;/p>
&lt;p>Sihana conspicuously looked around at the graffiti-coated concrete and trash covering the subterranean floor of the cramped bunker. “Yeah? Then why are you doing it in this disgusting place?” The teenagers stared blankly. Sihana quickly stole the lit joint from the girl’s hand, took a hit, and coughed. “Fine, leave or I’ll tell your friends you’re selling them shit weed.” Cursing her, they picked up their stuff and left.&lt;/p>
&lt;p>Slipping her backpack off her shoulders, Sihana pulled a screwdriver from a pocket and pried loose a rusty metal strap lining the concrete dome. Pulling the cigarette pack from her pocket, she hastily but carefully stuffed it into a small gap between the metal and the concrete. She took one last drag from the joint she had stolen, gathered her composure, and climbed back onto the street. She watched as the teenagers rounded the corner and she headed off in the same direction. As she approached the intersection, two men in expensive suits appeared out of the narrow, unlit street. She found herself face to face with them.&lt;/p>
&lt;p>“Where is it,” the taller of the two asked in English.&lt;/p>
&lt;p>“Up your ass,” she retorted.&lt;/p>
&lt;p>“Very well.” A muffled shot cracked and Sihana felt a biting pain in her ribs. “We’ll give Elira your best. This little game you’ve been playing at is coming to an end.” Sihana clutched at her chest and collapsed.&lt;/p>
&lt;p>“The only thing that’s going to end is you,” she coughed, blood running down her cheek as she lay in the gutter.&lt;/p>
&lt;p>“No,” said the shorter man, wryly. “We won’t.” The taller man looked up the street and noticed the two teens looking back curiously at them. “Let’s go,” he said to his colleague and the two men quickly slid back into the night.&lt;/p>
&lt;p>Sihana rolled over. Looking back to the bunker, she saw herself and her sister as children desperately nursing a dying kitten some thirty or so years before. “I’m sorry, I’m sorry, I’m sorry,” she mumbled, before her world faded to black.&lt;/p>
&lt;hr>
&lt;p>Elira was woken up at exactly 7:01 AM by the rhythmic beat of a hammer drill pounding against the concrete wall in the downstairs flat in her Hamburg apartment. “What the fuck,” she asked to no one in particular, “isn’t it Sunday?”&lt;/p>
&lt;p>“It’s Saturday, bitch,” mumbled a voice through a pillow next to her.&lt;/p>
&lt;p>“I didn’t ask you, bitch,” Elira playfully snapped back, “Why the fuck do they have to drill at seven in the morning?” She kissed Jax on the shoulder three times. “C’mon, reach me my phone.”&lt;/p>
&lt;p>“Mmmrf.” Jax rolled over and blinked at Elira. Their blue eyeshadow was equally smudged over their face and pillowcase. Elira sighed.&lt;/p>
&lt;p>“Take off your makeup before bed,” she grumbled.&lt;/p>
&lt;p>“I passed out last night.”&lt;/p>
&lt;p>“Whose fault is that?”&lt;/p>
&lt;p>“Yours, actually,” Jax retorted suggestively. Elira tickled her partner and rolled over them to paw at the phone on the nightstand. Jax mock grunted in reply.&lt;/p>
&lt;p>“You’re such a morning person, I love you.”&lt;/p>
&lt;p>Elira glanced at her notifications. 68 Signal messages, she thought to herself, you’re killing me. She opened the encrypted messaging app. One of her group chats had erupted in an argument overnight. She spent a few minutes with the backscroll attempting to understand the drama and tapped in a response. Thinking better of it, she deleted it before sending and closed the chat. &lt;em>Not now&lt;/em>, she thought, &lt;em>what else is going on&lt;/em>?&lt;/p>
&lt;p>Her heart stopped when she saw the message from Sihana. “Fuck. I have to go.” She bolted upright in the bed.&lt;/p>
&lt;p>“What’s up babe,” Jax mumbled.&lt;/p>
&lt;p>“I have to go.”&lt;/p>
&lt;p>“Where? It’s 7 am.”&lt;/p>
&lt;p>“Albania.”&lt;/p>
&lt;p>Jax perked up. “What the fuck? Why?”&lt;/p>
&lt;p>“I can’t say. I don&amp;rsquo;t know. I love you. Just…” Elira paused. “Just don’t worry. I’ll be back soon, promise. I need to go right now.”&lt;/p>
&lt;p>“Is your sister ok?”&lt;/p>
&lt;p>“I don’t know.” Elira rummaged around in a pile of clothes on the floor. She slid into a sufficiently clean pair of leggings and threw a black, oversized sweatshirt over her head. She sat on the bed and pulled on a pair of black combat boots. “I love you,&amp;quot; she reassured Jax. &amp;ldquo;I’ll stay in touch. If you don’t hear from me in a week, go to Martin&amp;rsquo;s, ok? And don’t mention any of this to anyone. If anyone asks, just say I&amp;rsquo;m away with a client.” Elira slipped her laptop into a backpack and reached into her closet to grab a small duffel bag that was already packed with clothes and toiletries.&lt;/p>
&lt;p>Jax sat up in bed and watched Elira&amp;rsquo;s frenetic packing. “Babe, what are you talking about? You’re scaring me.”&lt;/p>
&lt;p>“I’ll explain later. Just… please trust me. One week from now. 6 PM, if I&amp;rsquo;m not back, go to Martin&amp;rsquo;s. Either I’ll be there or he will be, ok? Don’t tell anyone this, don’t text about this. I love you.” Elira paused, looked at her partner, and planted a kiss on Jax’s forehead.&lt;/p>
&lt;p>“I love you, too.”&lt;/p>
&lt;p>Elira bounded out the door and down the stairs of her apartment building and out onto the street. Jax sat up in bed, chewed gently at the two piercings in their lower lip and ran their fingers through their cropped, blue-tipped hair. “What the fuck was that about?” they said to no one in particular. The hammer drill downstairs rattled out its incomprehensible reply.&lt;/p></description><tweet>Here is the first entry of a serialized novel(la) that I'm challenging myself to write, called Electric Ghosts. Part 1—Tiranë, Chapter 1—Sihana's End</tweet></item><item><title>How I Read 40 Books and Extinguished the World on Fire</title><link>https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/</link><pubDate>Fri, 27 Oct 2023 13:06:16 +0200</pubDate><guid>https://emilygorcenski.com/post/how-i-read-40-books-and-extinguished-the-world-on-fire/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/IMG_1758.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/IMG_1758.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/IMG_1758.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/IMG_1758.jpg" width="600"/></media:content><description>&lt;p>A small lifehack fixed my perception of the world and helped me reclaim a joy lost for two decades: keeping my phone out of my bedroom.&lt;/p>
&lt;p>The world&amp;rsquo;s on fire. We scroll and scroll and scroll past the bombings and the shootings and the yelling and the blaming and not to mention the climate, right, and even the economy, too. Everything&amp;rsquo;s bad and we&amp;rsquo;re all depressed. Wake up, scroll. Lay down, scroll. The nightmare rectangle glowing misery in our faces every day and every night.&lt;/p>
&lt;p>A few months ago now I did a little search: &amp;ldquo;wall mounted phone holder.&amp;rdquo; As I&amp;rsquo;ve gotten older my sleep schedules have changed. I wake up naturally around 6 AM almost every day. I&amp;rsquo;d wake up, check my phone, and then lose hours in and endless downward spiral of social media, emails, sports recaps, and more. I started to take inventory of the hours I was losing. It was bad. I was worried I was wasting my life with bullshit I could not control and could do nothing about. I needed a change. I ordered a cheap, stick-on mount and attached it to the hallway wall outside my bedroom. I decided I would self-impose a &amp;ldquo;no phone in the bedroom&amp;rdquo; policy.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/IMG_1691.jpg" alt="A white plastic phone holder stuck under my lightswitch outside my bedroom">&lt;/p>
&lt;p>Keeping my phone in the hallway is nice for a few reasons. Being right outside my bedroom, I can still hear it if someone calls. I can still use it as an alarm clock. (Actually, I bought a nice, non-internet connected alarm clock for the bedroom, which strangely does not have a snooze feature, so my phone stands-in as the snooze alarm). This is a great feature: when the alarm goes off, I have to &lt;em>get out of bed&lt;/em> to turn it off. And once out of bed, it&amp;rsquo;s much easier to convince myself to just get my day started. This all sounds frighteningly like an example of good mental health, I dunno&amp;hellip;&lt;/p>
&lt;p>In a life long ago, I had to leave my undergraduate program. I got really sick, sick enough that my disease was affecting my personality, my physical and mental health, and my intellectual capacity. My endocrinologist said that my case of Graves' disease was off the charts, worse than she&amp;rsquo;d ever seen in her career. I had a resting heart rate of 140 bpm. When I left school, I needed a job that would provide health insurance. I worked a few odd jobs here and there: substitute teacher at my old high school, manning the register at a driving range, and working part-time at my local Barnes &amp;amp; Noble. At the bookstore I quickly worked my way up to full time and got health insurance (a thing that was possible in retail almost 20 years ago). I loved big parts of that job. I was a ravenous reader, I always had one fiction and one non-fiction book going at a time, a pattern I maintain today. It was when I first started my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>. The employee discount (30% on books!) was great. And the best part was working the info desk, where I got to share my love of reading with customers and help them find the books they were looking for.&lt;/p>
&lt;p>At B&amp;amp;N, I worked my way from part time to full time, to newsstand lead, and eventually to receiving manager. It was this last step in the chain that sucked the joy out of the job. We took in every book that came into inventory. Working through our daily box count, chasing KPIs, books became product. They were no longer infinite worlds and fonts of untapped wisdom, but simply ISBNs that need to go onto this shelf or that one, that need to be scanned and counted and managed. I stopped reading after I started that role. I was traumatized. I lost my love. And I never really got it back.&lt;/p>
&lt;p>There were other factors, too. I was focusing on getting back to school. I got into World of Warcraft, perhaps a little too much (but god I was good at it). Reading took a back seat in my life and it stayed there for almost two decades. It pained me to think about this loss: reading brought me so much joy throughout my life. I used to live at our local library. Why couldn&amp;rsquo;t I get it back.&lt;/p>
&lt;p>This year I found that answer. Put away the fucking phone.&lt;/p>
&lt;p>My morning routine—and I promise I am not going to be one of those sociopathic grindset people with this—doesn&amp;rsquo;t simply involve not scrolling. It involves reclaiming that time to bring a sense of joy, curiosity, and comfort into my life. I get up and I read. I carry a book with me on the train heading into the office. I read before bed. I&amp;rsquo;m devouring books again. It feels good. I feel like I&amp;rsquo;ve found a lost part of my life. And I feel so much more intellectually stimulated. Books have nuance. They offer wisdom. Social media offers shouting and the flattening of complex issues in patronizing and filthy ways.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/IMG_1758.jpg" alt="A white plastic phone holder stuck under my lightswitch outside my bedroom">&lt;/p>
&lt;p>I found something else in this journey: the world isn&amp;rsquo;t nearly on fire as we think. I don&amp;rsquo;t mean to minimize the suffering happening in the world, with the horrific wars going on, with civil rights under threat, and with the climate crisis barrelling ever faster towards our present day. But I&amp;rsquo;ve found that there&amp;rsquo;s way more good people than bad. There&amp;rsquo;s way more people willing to help than willing to hurt. Some things are really scary but there&amp;rsquo;s way more people out there willing to guide us through the darkness than we think. The cynic in me wants to say that the &amp;ldquo;powers that be&amp;rdquo; want us to be endlessly doomscrolling and losing hope and snuffing out optimism. We shouldn&amp;rsquo;t give them what they want. There&amp;rsquo;s a lot of beauty in the world still within our grasp. We&amp;rsquo;re better when we&amp;rsquo;re poets, when we&amp;rsquo;re learners and listeners, when we&amp;rsquo;re &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">builders and not breakers&lt;/a>. When I read, I learn that there&amp;rsquo;s no new problems in the world we&amp;rsquo;re living in. When I take ownership over my own joy, I found that joy is always waiting for us if we choose to make it. And I&amp;rsquo;m glad I finally figure out how to make it.&lt;/p></description></item><item><title>It Could Happen Here: Antifascist Roundtable, Part 2</title><link>https://omny.fm/shows/it-could-happen-here/antifascist-roundtable-part-2?in_playlist=podcast</link><pubDate>Mon, 23 Oct 2023 08:30:38 +0200</pubDate><guid>https://emilygorcenski.com/post/it-could-happen-here-antifascist-roundtable-part-2/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/20170708_154711.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/20170708_154711.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/20170708_154711.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/20170708_154711.jpg" width="600"/></media:content><description>&lt;p>Here&amp;rsquo;s Part 2 of the episode of It Could Happen Here where Shane Burley moderated a round table with Michael Novick, Daryle Lamont Jenkins, and myself.&lt;/p></description></item><item><title>2023 Travelogue: meetings and conferences and no rest for the wicked. Amsterdam and Athens to round off the summer.</title><link>https://emilygorcenski.com/post/2023-travelogue-meetings-and-conferences-and-no-rest-for-the-wicked.-amsterdam-and-athens-to-round-off-the-summer./</link><pubDate>Sun, 22 Oct 2023 21:54:29 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-meetings-and-conferences-and-no-rest-for-the-wicked.-amsterdam-and-athens-to-round-off-the-summer./</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/amstel.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/amstel.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/amstel.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/amstel.jpg" width="600"/></media:content><description>&lt;p>Days after my epic anniversary celebration/homecoming/conference/business meeting trip, I embarked on another, thankfully shorter, trip for meetings and conferences.&lt;/p>
&lt;p>They say be careful what you wish for. When I was younger, the idea of going to Amsterdam and Athens in the same week would have been some kind of impossible dream. For me, it was just another business trip in a year full of business trips. I had hardly had a moment&amp;rsquo;s rest after &lt;a href="https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/">my epic three-week, nine-country voyage&lt;/a> before I had to head back out on the road again.&lt;/p>
&lt;p>My schedule was tight: dinner with a client on Monday, then I needed to be in the Netherlands for a meeting by midday Tuesday. This meant I had to live with the unfortunate constraint of taking the early flight from BER into Amsterdam. Flughafen BER is my least favorite airport of the now &lt;a href="https://ourairports.com/members/emily/">87 airports&lt;/a> I have visited in my life. It&amp;rsquo;s far away, slow, and unfriendly. The amenities are weak and the airport isn&amp;rsquo;t even creatively designed to boot. The saga of BER is a sore spot for the city, and on days like this I missed the convenience of TXL.&lt;/p>
&lt;p>Amsterdam was uneventful; the meeting, successful and worth the trip. I didn&amp;rsquo;t have much time to stay, though I booked a hotel in a different part of the city to see something new. Unfortunately, that was the office park part of the city, and what was new was boring. Not every part of every city has to have its charms, but if I was going to stay in a faceless Moxy then I would rather have been closer to the airport. Alas.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/amstel.jpg" alt="Buildings over the Amstel at night">&lt;/p>
&lt;p>After a short night in Amsterdam, I headed back to Berlin just for a night before jumping off to Athens for the &lt;a href="https://betterways.gr/">Better Ways&lt;/a> conference. We&amp;rsquo;d been trying to get me down there to speak for a couple years and I was grateful to make this work. I love Athens, I love the vibe of the city and that half coming together, half falling apart tenor that cities in southeastern Europe have. What more can you ask for? The city is full of amazing history, cuisine, and hospitality. The clear nights with the full moon rising over the Acropolis made me realize how privileged I am to be able to experience this life.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/acropolis.jpg" alt="A poor photo of the Acropolis at night">&lt;/p>
&lt;p>The conference itself was really amazing. Single track, interesting talks. The most interesting was a talk by Louis Hanzlik, a Professor at the University of Connecticut (my old stomping grounds) who is part of the award-winning &lt;a href="https://orpheusnyc.org/">Orpheus Chamber Orchestra&lt;/a>. Orpheus is an anarchist orchestra: with no conductor, the group arranges and plays in a leaderless fashion, coming to its style through debate and consensus. I had the pleasure of chatting with Louis after the conference and was fascinated by how the orchestra self-organizes. I&amp;rsquo;m not sure they really realized how anarchic they are, but it brought me joy to see something like this exist and succeed in this world. It lifted my spirits and reminded me of the sheer privilege and beauty that our industry can create when we bridge worlds and connect people to each other. Were that we could bring this mindset everywhere.&lt;/p>
&lt;p>After the event, I joined some of the speakers at the &lt;a href="https://en.wikipedia.org/wiki/Odeon_of_Herodes_Atticus">Odeon of Herodes Atticus&lt;/a> to catch a viewing of Koyaanisqatsi performed by the Philip Glass Ensemble. I&amp;rsquo;d never seen the film in its entirety, and it was definitely &lt;em>a thing&lt;/em> to watch it there in the remnants of a 2000-year old theater. It&amp;rsquo;s a bit heavy handed in the modern light, very America-centric, but worth watching. The sound was great. I spent the weekend in the city doing some shopping and sightseeing and headed back to Berlin Sunday afternoon, another trip down, another conference down, another quarter in the books. I&amp;rsquo;m glad this trip was so inspiring, because I was otherwise starting to tire of the restlessness I brought on myself. I&amp;rsquo;ll learn to say no someday. But for now, there&amp;rsquo;s still too much world to experience.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-athens/odeon.jpg" alt="The stage being set up before a show at the Odeon">&lt;/p>
&lt;blockquote>
&lt;p>I cannot rest from travel: I will drink
Life to the lees: All times I have enjoy&amp;rsquo;d
Greatly, have suffer&amp;rsquo;d greatly, both with those
That loved me, and alone, on shore, and when
Thro' scudding drifts the rainy Hyades
Vext the dim sea: I am become a name;
For always roaming with a hungry heart
Much have I seen and known; cities of men
And manners, climates, councils, governments,
Myself not least, but honour&amp;rsquo;d of them all;
And drunk delight of battle with my peers,
Far on the ringing plains of windy Troy.&lt;/p>
&lt;/blockquote></description><tweet>No rest for the weary. Back on the road after only a few days' worth of rest. 2023 Travelogue: Berlin 🛫 Amsterdam 🛫 Athens</tweet></item><item><title>Book Report: The Grapes of Wrath by John Steinbeck</title><link>https://emilygorcenski.com/post/book-report-the-grapes-of-wrath-by-john-steinbeck/</link><pubDate>Sat, 14 Oct 2023 17:49:25 -0400</pubDate><guid>https://emilygorcenski.com/post/book-report-the-grapes-of-wrath-by-john-steinbeck/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/AE5B0203-C789-417D-AD83EC95F795BB3A.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/AE5B0203-C789-417D-AD83EC95F795BB3A.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/AE5B0203-C789-417D-AD83EC95F795BB3A.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/AE5B0203-C789-417D-AD83EC95F795BB3A.jpg" width="600"/></media:content><description>&lt;p>Steinbeck&amp;rsquo;s earnest and raw portrait of the Dust Bowl and American capitalism stands as one of the finest works of American literature, a radical and breathtaking perspective on the horrors of a system that can&amp;rsquo;t help itself. But there&amp;rsquo;s a hidden scandal in the book&amp;hellip;&lt;/p>
&lt;p>When I was an undergrad, I remember clearly sitting with my study group in the northwest corner of the RPI student union hours before our MATH-4800 Numerical Computing exam. They were cramming knowledge about Householder decompositions and Runge-Kutta methods. I sat serenely pushing through the last 100 pages of Steinbeck&amp;rsquo;s masterpiece. They asked me why I wasn&amp;rsquo;t studying. &amp;ldquo;Anything I didn&amp;rsquo;t learn in the last 15 weeks I&amp;rsquo;m not going to learn now,&amp;rdquo; was my reply. In honesty I had more interest in the story than in the exam. I got an A in the course, anyways.&lt;/p>
&lt;p>Looking back on this book almost 20 years after I last read it, with a lot of changes in my life, my politics, and my understanding of the systemic flaws (or features) of American capitalism, I&amp;rsquo;m struck now by the radicalism of this text. Many critics point out the ascension of Tom Joad to be a Christ-like figure after the death of the preacher, J(esus)im C(hrist)asy. And that&amp;rsquo;s true. But Tom Joad also killed two guys, killings that were clearly justified in the circumstances: the first, a drunken man who stabbed him four years before this story starts, and the second, a union-busting thug who struck J.C. down. When Tom tells his Ma, &amp;ldquo;wherever they&amp;rsquo;s a cop beatin' up a guy, I&amp;rsquo;ll be there,&amp;rdquo; he&amp;rsquo;s not &lt;em>not&lt;/em> referring to the two men he killed, especially not after he and Casy had beat up a cop earlier in the story. Joad&amp;rsquo;s salvation isn&amp;rsquo;t merely absolution, it&amp;rsquo;s justice against oppression, and like Casy, it&amp;rsquo;s through violence if necessary.&lt;/p>
&lt;p>It&amp;rsquo;s the fourteenth chapter of the book that makes this all clear early on:&lt;/p>
&lt;blockquote>
&lt;p>If you who own the things people must have could understand this, you might preserve yourself. If you could separate causes from results, if you could know that Paine, Marx, Jefferson, Lenin, were results, not causes, you might survive. But that you cannot know. For the quality of owning freezes you forever into &amp;ldquo;I,&amp;rdquo; and cuts you off forever from the &amp;ldquo;we.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Jesus. Steinbeck really said &amp;ldquo;eat the rich&amp;rdquo; in 1939, had the book turned into a movie starring Henry Fonda the year later. It&amp;rsquo;s astonishing to see something this bold earn such strong praise in the anti-communist American canon. The twenty-fifth chapter:&lt;/p>
&lt;blockquote>
&lt;p>Burn coffee for fuel in the ships. Burn corn to keep warm, it makes a hot fire. Dump potatoes in the rivers and place guards along the banks to keep the hungry people from fishing them out. Slaughter the pigs and bury them, and let the putrescence drip down into the earth.&lt;/p>
&lt;p>There is a crime here that goes beyond denunciation. There is a sorrow here that weeping cannot symbolize. There is a failure here that topples all our success. The fertile earth, the straight tree rows, the sturdy trunks, and the ripe fruit. And children dying of pellagra must die because a profit cannot be taken from an orange. And coroners must fill in the certificates—died of malnutrition—because the food must rot, must be forced to rot.&lt;/p>
&lt;p>The people come with nets to fish for potatoes in the river, and the guards hold them back; they come in rattling cars to get the dumped oranges, but the kerosene is sprayed. And they stand still and watch the potatoes float by, listen to the screaming pigs being killed in a ditch and covered with quicklime, watch the mountains of oranges slop down to a putrefying ooze; and in the eyes of the people there is the failure; and in the eyes of the hungry there is a growing wrath. In the souls of the people the grapes of wrath are filling and growing heavy, growing heavy for the vintage.&lt;/p>
&lt;/blockquote>
&lt;p>A revolution is just. It is Christ-like to kill the rich. It is self-defense to kill to avoid starvation when the man you kill keeps you out to starve to protect a margin.&lt;/p>
&lt;p>&lt;em>The Grapes of Wrath&lt;/em> is the finest work of American literature. It&amp;rsquo;s lessons have not yet been learned. Are we moving closer to learning them?&lt;/p>
&lt;p>I would like to end this piece here, but the feminist intentions of my project would be remiss to not mention that there is not insignificant controversy in Steinbeck&amp;rsquo;s sourcing of the material for this story. Sanora Babb was a novelist and writer who researched the conditions of the American midwest during the Dust Bowl. Her letters and field notes were seen by Steinbeck and absorbed into &lt;em>The Grapes of Wrath&lt;/em>. Babb&amp;rsquo;s own novel, similar in its treatment (I cannot comment on its radicalism) was shelved after Steinbeck&amp;rsquo;s success. It would take another 7 decades to be published. I&amp;rsquo;ve not yet read it. It would be a shame, but a characteristic shame, if Steinbeck&amp;rsquo;s opus was itself a theft. In the bosoms of women there is a growing wrath, too, for as we see ourselves falling once again into an era of inequality and oppression, none of us are left with any doubt for how these stories will unfold. Is it time we learn the lessons of the novel, too?&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;br>
&lt;small>Photo credit Dorothea Lange, Library of Congress, source: &lt;a href="https://home.nps.gov/places/weedpatch-camp.htm">National Park Service&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/books/OL3955374M/The_grapes_of_wrath">&lt;em>The Grapes of Wrath&lt;/em>&lt;/a>&lt;br>
John Steinbeck&lt;br>
ISBN 9780142000663&lt;br>&lt;/p></description><tweet>In the American canon there are two works that stand above all others: Born to Run and The Grapes of Wrath. My book report for the latter: Modern Library No. 10 of 100.</tweet></item><item><title>Book Report: Native Son by Richard Wright</title><link>https://emilygorcenski.com/post/book-report-native-son-by-richard-wright/</link><pubDate>Fri, 13 Oct 2023 13:42:14 -0400</pubDate><guid>https://emilygorcenski.com/post/book-report-native-son-by-richard-wright/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/53img2bh.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/53img2bh.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/53img2bh.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/53img2bh.jpeg" width="600"/></media:content><description>&lt;p>Native Son is a complex and challenging book that remains as sadly relevant today as when it was first published in 1940. It&amp;rsquo;s a book that peers deep into the racist beating heart of American society.&lt;/p>
&lt;p>Bigger Thomas is a young Black man in Chicago. He lives in a small apartment with his family, is at risk of being kicked off relief, and spends his days hanging around, plotting small crimes with his friends. He gets a job, a charity case from a wealthy, white real-estate magnate in town, a socialite whose college-aged daughter, Mary, flirts around with communists to the chagrin of her parents.&lt;/p>
&lt;p>Bigger is hired as a chauffeur. On his first day on the job, he is to take Mary to University. She instructs him to take her out to hang out with her leftist friends. He does; she gets blackout drunk. He takes her home, deeply fearful of being blamed for her condition and accused of rape. Panicking, he smothers her with a pillow and she dies. He cuts her up and puts her in the furnace and then tries to blame her disappearance on the &amp;ldquo;reds.&amp;rdquo; Her body is discovered when the press is in the home interviewing the parents. He sneaks out and flees. So ends the first act of the novel. You know how the rest will end; so did I; and so it did.&lt;/p>
&lt;p>My first thought when reading &lt;em>Native Son&lt;/em> was, &amp;ldquo;this book could have been written in the 50&amp;rsquo;s,&amp;rdquo; and then I found myself a fool, as if the 50&amp;rsquo;s didn&amp;rsquo;t emerge from the 30&amp;rsquo;s and 40&amp;rsquo;s. My second thought was, &amp;ldquo;this book could have been written today,&amp;rdquo; and then I felt even more daft, as if the way we treat Black men in today&amp;rsquo;s society didn&amp;rsquo;t emerge from the 50&amp;rsquo;s and the 40&amp;rsquo;s and the 30&amp;rsquo;s and all of the decades and all of the centuries that came before. It&amp;rsquo;s my privilege to think that the past and the present are two different things.&lt;/p>
&lt;p>Richard Wright was an active member of the Communist Party and &lt;em>Native Son&lt;/em>&amp;rsquo;s handling of the relationships between communists and Black folks foretold the alliances and conflicts that would grow to national scale in the coming decades. The relationship is perhaps a bit rosy: while Wright found amicable relations among communists in Chicago, his New York comrades were just as racist as their capitalist counterparts and denounced Wright as a &amp;ldquo;bourgeois intellectual.&amp;rdquo; History doesn&amp;rsquo;t repeat but it sure does rhyme.&lt;/p>
&lt;p>The rhythms of the story are so relatable today: the wealthy family whose daughter Bigger killed owned the tenements where Bigger lived, renting them to Black residents for a higher fee than to white residents. The philanthropist father praised himself for giving to the NAACP and for donating Ping Pong tables to the local Black community center. The portrayal is neoliberalism distilled: commit your sins in the name of profit and racial exclusion, then cleanse them with a donation. The last time we saw corruption of this kind so rampant a theologist nailed theses to a German church door.&lt;/p>
&lt;p>It&amp;rsquo;s the novel&amp;rsquo;s final scene which sends us reeling: Mr. Max, a Jewish labor lawyer who takes up Bigger&amp;rsquo;s defense gives a heartfelt but ultimately futile speech in the attempt to spare Bigger the executioner. His arguments are for the reader more than the judge, pleas to understand that the cause of Mary&amp;rsquo;s death is not only Bigger&amp;rsquo;s actions, but the very conditions that led Bigger to make his choices and take those actions. The capitalist system is equally to blame, Max argues, and while we can condemn Bigger we condemn ourselves by doing so. He tells Mary&amp;rsquo;s blind mother, &amp;ldquo;Your philanthropy was as tragically blind as your sightless eyes!&amp;rdquo;&lt;/p>
&lt;p>But these arguments fall short—not just before the judge, but before Bigger, too, who in his final moments reveals himself as exactly the sort of separatist that Max argues against. He has no remorse in killing Mary. &amp;ldquo;I didn&amp;rsquo;t want to kill! But what I killed for, I &lt;em>am&lt;/em>. It must&amp;rsquo;ve been pretty deep in me to make me kill! I must have felt it awful hard to murder&amp;hellip;&amp;rdquo; he tells Max. &amp;ldquo;What I killed for must&amp;rsquo;ve been good! It must have been good! When a man kills, it&amp;rsquo;s for something&amp;hellip;. I didn&amp;rsquo;t know I was really alive in this world until I felt things hard enough to kill for &amp;lsquo;em.&amp;rdquo;&lt;/p>
&lt;p>In my edition of the text, Wright&amp;rsquo;s essay &amp;ldquo;How Bigger Was Born&amp;rdquo; explains how Bigger&amp;rsquo;s role as a Black nationalist can be seen as an emergent phenomenon of what happens when communities are held down and given no room to grow. (As I publish this, we see the effects of this reaching its tragic end elsewhere in the world.) Wright writes, &amp;ldquo;I&amp;rsquo;ve even heard Negroes say that maybe Hitler and Mussolini are all right; that maybe Stalin is all right. They did not say this out of any intellectual comprehension of the forces at work in the world, but because they felt that these men &amp;lsquo;did things,&amp;rsquo; a phrase which is charged with more meaning than the mere words imply.&amp;rdquo;&lt;/p>
&lt;p>As one reads &lt;em>Native Son&lt;/em>, it&amp;rsquo;s easy to see Bigger as the flawed protagonist even as you watch with horror as his flight, capture, conviction, and condemnation unfold. Bigger makes bad choices, choices that seem simple to avoid for those of us who don&amp;rsquo;t live his life. This is intentional: Wright rejects the narrative of the perfect victim, the protagonist who does no wrong and is oppressed by injustices beyond his grasp. He paints a picture of a person who does unquestionable wrong, but who deserves dignity nevertheless. And in presenting Bigger as a nationalist in the end, he brings forth the recognition that sometimes evil will rise to counterbalance evil, that the only solution must be to break the cycles of violence and hatred, even if it means setting aside our fury and retribution. &amp;ldquo;Do you think that the white daughters in the homes of America will be any safer if you kill this boy? No! I tell you in all solemnity that they won&amp;rsquo;t! The surest way to make certain that there will be more such murders is to kill this boy.&amp;rdquo;&lt;/p>
&lt;p>&lt;em>Native Son&lt;/em> is not a perfect book. It has its flaws. I have not yet mentioned that Bigger kills a second woman in this tale, his girlfriend, a Black woman, who he disposes of because she knows he killed Mary. Bigger beats Bessie to death and drops her down a garbage chute. She does not die right away but freezes to death. This murder creates no outrage, nor does it add to the complexity of the narrative of justice and salvation. This handling has received criticism and it weakens the book: how can we address the scales of justice when the story discards Black women in this way? There&amp;rsquo;s some meta-narrative to be read in it, but it&amp;rsquo;s hackish in comparison to the rest of the story. This is a shame.&lt;/p>
&lt;p>&lt;em>Native Son&lt;/em> was the first book in my restart of the Modern Library list that I hadn&amp;rsquo;t read before. I had tried once but struggled. I&amp;rsquo;m glad I waited. It&amp;rsquo;s a book that retains deep modern relevance, and I&amp;rsquo;m grateful for having read it.&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;br>
&lt;small>Photo of State Street in Chicago with brick houses, 1925. (The Negro in Chicago, 1779-1929, Washington Intercollegiate Club of Chicago, Inc., 1929.), source: &lt;a href="https://www.nps.gov/articles/chicago-s-black-metropolis-understanding-history-through-a-historic-place-teaching-with-historic-places.htm">National Park Service&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/books/OL24257898M/Native_Son">&lt;em>Native Son&lt;/em>&lt;/a>&lt;br>
Richard Wright&lt;br>
ISBN 9780061148507&lt;br>&lt;/p></description><tweet>Native Son is one of the most challenging and profound books on the list I've read yet. It's the first book I had to put down because what was coming was so painful to watch. Modern Library No. 20 of 100.</tweet></item><item><title>It Could Happen Here: Antifascist Roundtable, Part 1</title><link>https://podcasts.apple.com/us/podcast/antifascist-roundtable-part-1/id1449762156?i=1000630776765</link><pubDate>Fri, 13 Oct 2023 07:13:18 -0400</pubDate><guid>https://emilygorcenski.com/post/it-could-happen-here-antifascist-roundtable-part-1/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/20170812_104945.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/20170812_104945.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/20170812_104945.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/20170812_104945.jpg" width="600"/></media:content><description>&lt;p>Shane Burley moderated a discussion on antifascism with Daryle Lamont Jenkins, Michael Novick, and myself on It Could Happen Here. I had a ton of fun on this podcast, I hope you check it out!&lt;/p></description></item><item><title>GenAI: What consumers want</title><link>https://www.thoughtworks.com/insights/reports/genai-what-consumers-want</link><pubDate>Fri, 06 Oct 2023 11:46:45 +0200</pubDate><guid>https://emilygorcenski.com/post/genai-what-consumers-want/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/in_meta_gen_ai_what_customers_want.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/in_meta_gen_ai_what_customers_want.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/in_meta_gen_ai_what_customers_want.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/in_meta_gen_ai_what_customers_want.jpg" width="600"/></media:content><description>&lt;p>We did an interesting study on consumer sentiment on AI over at Thoughtworks. The results are really enlightening, not sugar-coated, and worth reading.&lt;/p></description><tweet>We did an interesting study on consumer sentiment on AI over at Thoughtworks. The results are really enlightening, not sugar-coated, and worth reading.</tweet></item><item><title>2023 Travelogue: Celebrating 10 years and then some business. Cork, Belfast, Douglas, Edinburgh, Cardiff, Portsmouth, Charlottesville, Geneva, Lausanne, Istanbul</title><link>https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/</link><pubDate>Tue, 03 Oct 2023 15:09:51 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-celebrating-10-years-and-then-some-business.-cork-belfast-douglas-edinburgh-cardiff-portsmouth-charlottesville-geneva-lausanne-istanbul/</guid><image><url>https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tower%20of%20Refuge-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tower%20of%20Refuge-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tower%20of%20Refuge-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tower%20of%20Refuge-thumb.jpg" width="600"/></media:content><description>&lt;p>This was a hell of a trip. For our 10th wedding anniversary, Christine and I spent some time around the British Isles, a quick trip back home, and then off to Switzerland for some work. I am tired.&lt;/p>
&lt;p>Last year, Christine and I went to Alaska and Vancouver to celebrate my 40 years around the earth. Almost 25% of those years have been spent married to her, and this year we decided to do a (slightly premature) 10th anniversary trip. Of course, we (by which I mean me) decided to make it more complex than we needed. Christine wanted to see Ireland and Scotland; I&amp;rsquo;ve wanted to see Wales and wanted to get home for a couple weeks, too. And both of us wanted to get back to the &lt;a href="https://www.goodwood.com/motorsport/goodwood-revival/">Goodwood Revival&lt;/a>, so I put together an aggressive itinerary that would see us start in Ireland, and make our way clockwise around the British Isles.&lt;/p>
&lt;h3 id="leg-1-cork">Leg 1: Cork&lt;/h3>
&lt;p>I&amp;rsquo;ve been to Dublin a few times before. A couple times for work, conferences, overnights for a flight back to the states. My first trip there was for a conference, it was only three weeks after Unite the Right and I was still in a daze. I hardly remember that trip. Christine had no real desire to see the city, so we opted instead to head out to rural Ireland, where we could spend some quiet days in the countryside. I found a beautiful Airbnb on the sea, in a little village called Robert&amp;rsquo;s Cove about 45 minutes south of Cork. We found ourselves about 10 miles from nowhere, the only amenities a public beach and two pubs.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Roberts%20Head%20Signal%20Tower-thumb.jpg"style="margin: 0" width="650px"
alt="The Roberts Head Signal Tower in the distance" />&lt;/center>
&lt;center>The Roberts Head Signal Tower in the distance&lt;/center>&lt;br />
&lt;p>Getting to Cork was easy. I took an early flight to Zürich and worked from the Aspire lounge (unfortunately, the Swiss lounge didn&amp;rsquo;t let me in, and I didn&amp;rsquo;t know enough about my United Club pass benefits to make an argument), then made the hop direct into Cork&amp;rsquo;s tiny but comfortable airport. It was really one of the best airports I&amp;rsquo;ve been to: passport control took no time at all and my single bag beat me to the baggage claim. I was in a cab less than 15 minutes from touchdown. This was amazing. Compared to my usual hell at BER, I&amp;rsquo;ll take the speedy charm of Cork any day.&lt;/p>
&lt;p>Of course, I had to take a cab because my driver&amp;rsquo;s license was stolen during &lt;a href="https://emilygorcenski.com/post/2023-travelogue-canals-and-chaos-in-utrecht-and-amsterdam/">my recent trip to Amsterdam&lt;/a>. Christine and I never travel without some mishap, and in this case not having a car while being so remote in the Irish countryside certainly made for some logistical challenges. Thankfully, our Airbnb hosts were beyond hospitable. They brought me up to do some grocery shopping before Christine arrived and even helped pick her up at the airport.&lt;/p>
&lt;p>Christine arrived with a small cold and we ended up spending the first day recuperating. But before we left, we took the opportunity to hike up to the ruins of an old signal tower built out of fear of Napoleon&amp;rsquo;s army. It was a bittersweet hike: our cat, Toby, had fell suddenly ill and wasn&amp;rsquo;t going to make it. &lt;a href="https://emilygorcenski.com/post/a-eulogy-for-the-worlds-best-cat/">We said goodbye to him&lt;/a> on a video call in the ruins of the tower, staring out at the Celtic Sea. As he passed, the sun broke through the clouds. He blessed us with a sunbeam as he left.&lt;/p>
&lt;h3 id="leg-2-belfast">Leg 2: Belfast&lt;/h3>
&lt;p>After four days in Cork, we hopped on a train and made our way up to Dublin, where changing trains required a tram ride between stations, and then headed onwards to Belfast. We arrived at the hotel and asked reception for a recommendation for what to do with a single night in the city. &amp;ldquo;Cathedral Quarter, definitely,&amp;rdquo; came the response. Dutifully, we headed in that direction, a 15 minute walk from our hotel.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Albert%20Memorial%20Clock.jpg"style="margin: 0" width="650px"
alt="The Albert Memorial Clock, Belfast" />&lt;/center>
&lt;center>The Albert Memorial Clock, Belfast&lt;/center>&lt;br />
&lt;p>We found a silly anarchist-branded (however &lt;em>that&lt;/em> makes sense) pizza restaurant and had a few beers before walking around, admiring the street art and culture. Belfast has a strong familiarity to it. It reminds me a bit of Boston, or maybe Providence. We walked by Commercial Court, the narrow alley lined with bars, and found a very gay volleyball team doing a photo shoot underneath the rainbow-colored neon umbrellas. We both loved the city and wished we had planned more time there. We&amp;rsquo;ll have to come back to it someday.&lt;/p>
&lt;h3 id="leg-3-douglas">Leg 3: Douglas&lt;/h3>
&lt;p>After an overnight in Belfast, we caught a cab to the ferry terminal and boarded the Isle of Man Steam Packet Company&amp;rsquo;s catamaran to head off to Douglas, the main city in the Crown Dependency. The ferry ride was comfortable and just long enough to settle in, have a couple beers, and do some reading.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tower%20of%20Refuge-thumb.jpg"style="margin: 0" width="650px"
alt="The Tower of Refuge, Douglas" />&lt;/center>
&lt;center>The Tower of Refuge, Douglas&lt;/center>&lt;br />
&lt;p>Douglas is one of those seaside towns that I always have such a hard time describing. It&amp;rsquo;s got that transient kitsch, the souvenir shops hawking tacky goods, the manufactured locality, a place that exists just to be a home to gift shops selling reminders of the place full of gift shops. Nobody stays in a beach town for long, there&amp;rsquo;s always this liminal feeling to it. Douglas is even stranger with its main pedestrian mall, lined as it was in an eclectic mix of this beach kitsch, luxury shops, and outlets for daily essentials. The Isle of Man has a reputation as both a tax haven and a vacation location; its commercial core tried to fly the narrow canyon between both of those things.&lt;/p>
&lt;p>We found a little pub with a decent menu with the best fish and chips I&amp;rsquo;ve had in a long, long time, had a pint, and took a rainy walk down the promenade. We like the Isle of Man and we&amp;rsquo;d go back if we had reason to, but we wouldn&amp;rsquo;t go out of our way for it. We were glad to have been there, and I was glad to get one of the &amp;ldquo;technically it&amp;rsquo;s own country&amp;rdquo; countries checked off my list.&lt;/p>
&lt;h3 id="leg-4-edinburgh">Leg 4: Edinburgh&lt;/h3>
&lt;p>After a night in Douglas, we headed back to the ferry and headed off to Heysham, a tiny city north of Liverpool. The ferry terminal is, inexplicably, at a nuclear power plant, which is to say that when you disembark, you&amp;rsquo;re outside a nuclear power plant with not much of anything else around. We encountered our second major challenge in Heysham: train drivers on strike. I had spent much of the evening in Douglas trying to find the cheapest alternative to get to Edinburgh, which turned out to be spending nearly four hundred pounds on a taxi. With no alternatives, we grinned and bore it and pre-booked a cab. The driver was nice enough, and we enjoyed the conversation about the differences between American and English schools, the mountains, and Bud Light Lime, but it got awkward when she started accusing Pakistani immigrants of ruining the NHS. It&amp;rsquo;s clear how effective the fascist propaganda project in the UK has been.&lt;/p>
&lt;p>Our hotel in Edinburgh was one of those hipster joints; Christine and I disagree on whether it was really a theme hotel. The hotel&amp;rsquo;s restaurant was a popular location among the bridal shower crew. Middle-class Baby Boomers have their own image of what an upscale dining establishment should feel like, usually something with tablecloths and bad lighting, and so too do millennials, which brings its own aura of discomfort. It felt a bit dated to me, like 2014 off-Brooklyn upscale. The Hellen Keller quote painted above the door was simply the cherry on top. The decor was &amp;ldquo;Target but edgy.&amp;rdquo; I can forgive it. But I still don&amp;rsquo;t think it was a theme hotel. Take it up with my wife.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Wojtek.jpg"style="margin: 0" width="650px"
alt="Statue to Wojtek, the anti-Nazi bear" />&lt;/center>
&lt;center>Statue to Wojtek, the anti-Nazi bear&lt;/center>&lt;br />
&lt;p>Tucked in the Marchmont neighborhood as we were, Edinburgh gave me for some reason incredibly DC vibes. We spent our time in the city visiting museums, conquering the hills, and doing the touristy thing of tasting whisky at the Johnnie Walker experience. Christine really loved Edinburgh and we&amp;rsquo;re excited to explore more of Scotland in a future vacation. Highlight of the city was absolutely the National Museum of Scotland, where we spent the few pounds to see the &lt;a href="https://www.nms.ac.uk/exhibitions-events/exhibitions/national-museum-of-scotland/beyond-the-little-black-dress/">&amp;ldquo;Beyond the Little Black Dress&amp;rdquo;&lt;/a> exhibit. Edinbugh Castle can be skipped. The relentless crowds and mediocre exhibits was not worth the money or the uphill trek.&lt;/p>
&lt;h3 id="leg-5-cardiff">Leg 5: Cardiff&lt;/h3>
&lt;p>After four days in Scotland, we hopped on a train again and wound our way down to Cardiff. The latter half of the journey was a real bear: the Welsh train had no climate control and little space for our belongings. We melted in the heatwave as we sat on the sunward side of the carriage.&lt;/p>
&lt;p>Overcoming our first-world problems, Cardiff turned out to be the gem of the trip. We booked a hotel along St. Mary Street next to a gay bar and across from a little queer shop; I didn&amp;rsquo;t expect Cardiff to be the nexus of Popeye&amp;rsquo;s, Tim Horton&amp;rsquo;s, and Taco Bell, either. We visited the &lt;a href="https://cardiffmuseum.com/">Museum of Cardiff&lt;/a> a small but spunky local history museum with great exhibits about local protest movements. I learned there about militant Welsh nationalism, which set off a series of bombs in the late 1960s as Welsh linguistic preservation movements were becoming active. It gave me complex feelings about nationalism and whether it can be justified when it aligns itself in a fight for liberation against a superpower, but I didn&amp;rsquo;t come to any major conclusions here. The world is politically complicated.&lt;/p>
&lt;h3 id="leg-6-portsmouth-and-goodwood">Leg 6: Portsmouth and Goodwood&lt;/h3>
&lt;p>After two days in Cardiff, we made our way to the last leg of the vacation: three days in Portsmouth, visiting the Goodwood revival. The last time we went to Goodwood, the trip was made challenging by the rain. This time, it was the relentless heat that made the trip difficult. We found a nice Airbnb in Portsmouth right on the beach near the South Parade Pier. The beach was rocky and the skies hazy with humidity and bunker fuel exhaust. I took the morning in Portsmouth to photograph some local Grade II memorials as part of the &lt;a href="https://www.wikilovesmonuments.org/">Wiki Love Monuments&lt;/a> initiative. None of the photos are award-worthy, but contributing a little to their local history feels nice.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/South%20Parade%20Pier-thumb.jpg"style="margin: 0" width="650px"
alt="The South Parade Pier, Portsmouth" />&lt;/center>
&lt;center>The South Parade Pier, Portsmouth&lt;/center>&lt;br />
&lt;p>The Goodwood Revival was enjoyable, but the heat made it a bit unbearable. Unfortunately, none of the facilities had air conditioning, and every square inch of shade was taken. We paid little attention to the races, spending our time instead browsing vintage clothes at in the exhibitors area. I forgot my membership pin again, but thankfully they could look me up, which made finding some refuge (and food) in the members' garage a nice way to take a break.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Goodwood%20Revival-thumb.jpg"style="margin: 0" width="650px"
alt="A vintage Ferrari lines up to race at Goodwood" />&lt;/center>
&lt;center>A vintage Ferrari lines up to race at Goodwood&lt;/center>&lt;br />
&lt;h3 id="leg-7-charlottesville">Leg 7: Charlottesville&lt;/h3>
&lt;p>Mishap number three. I had wanted to spend a couple weeks at home after our trip, working remotely and easing back into my very hectic work life. Unfortunately, I forgot about a conference I had and instead headed back home for two days, instead. It was no lost opportunity: I needed to exchange some books between my Berlin and Charlottesville libraries and after Toby&amp;rsquo;s loss I wanted to spend some good time with Queso and Tyrion. It was a short trip but I had a great time chatting with a friend and colluding with the Albemarle County Commonwealth Attorney&amp;rsquo;s office.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The drive on the way home was rough. As we came down Route 29, the skies opened up with the heaviest rain I&amp;rsquo;ve ever seen. Visibility was zero, but that didn&amp;rsquo;t stop any of the semi trucks barreling down the road. We kept on keeping on and somehow made it home in one piece.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Tyrion.jpg"style="margin: 0" width="650px"
alt="Tyrion&amp;#39;s fuzzy belly" />&lt;/center>
&lt;center>Tyrion&amp;#39;s fuzzy belly&lt;/center>&lt;br />
&lt;h3 id="leg-8-geneva-and-lausanne">Leg 8: Geneva and Lausanne&lt;/h3>
&lt;p>After two nights in the US, I boarded the redeye to Geneva, where I spent a few hours taking calls along Lac Léman until a storm came up. I wound my way to the train station and caught the short train to Lausanne, where I was paneling at &lt;a href="https://cdoiq-europe.org/">CDOIQ&lt;/a>. My company had a booth there, as well, and a few of my colleagues also made the trip. Seeing some current and former clients, meeting new folks, and talking about data architecture is always fun. We wrapped up the evening with dinner at the beautiful Hotel Savoy. My problematic trait is that I actually really like Switzerland and one of the reasons is that they have surviving pre-WW2 architecture.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Extranef.jpg"style="margin: 0" width="650px"
alt="Extranef, Lausanne" />&lt;/center>
&lt;center>Extranef, Lausanne&lt;/center>&lt;br />
&lt;h3 id="leg-9-accidentally-istanbul">Leg 9: Accidentally Istanbul&lt;/h3>
&lt;p>Hungover, I made my way back to Berlin the next day. For some reason, there was no suitable direct flight from GVA to BER, so I had a pointless layover in ZRH, which served only as an opportunity for an even more pointless 45 minute delay. Making my way home after three weeks living out of a carry-on, I was happy to get home, do some laundry and kick back for a whole 12 hours before heading back out on the road.&lt;/p>
&lt;p>I wasn&amp;rsquo;t actually supposed to be in Istanbul. I was supposed to be in Tashkent for a project. But silly me: I had forgotten to apply for the e-Visa during my vacation, which I didn&amp;rsquo;t notice until I tried boarding the plane in Istanbul. Denied boarding, tired, and dejected, I hoped in vain I would get the visa the next day and set off to find a hotel in Istanbul for the night.&lt;/p>
&lt;p>I&amp;rsquo;ve always wanted to see the city; years ago, I studied some Turkish, fell in love with the language and its mathematical grammar, the culture, the food, and longed to sit along the Bosporus and drink a coffee. I now had that opportunity. I found a hotel and checked in, saved a child from being stuck in a revolving door, and set off along the metro to Karaköy. I ducked into some small side streets and found a chill restaurant, using what Turkish I remembered to order a kebap and enjoy the bustle of one of the world&amp;rsquo;s truly great cities. I walked along the Galata Bridge, marvelled at the beautiful mosques, and watched the dance of the ferries in the Golden Horn. Not a bad place to accidentally end up.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/10th-anniversary-trip-2023/Bosporus.jpg"style="margin: 0" width="650px"
alt="The rough waters of the Bosporus" />&lt;/center>
&lt;center>The rough waters of the Bosporus&lt;/center>&lt;br />
&lt;p>The next morning, I headed back to Berlin, beaten from a ten-country, three-continent, 25-day trip, ready to recharge and get some work done before heading back out again, which happened much sooner than I would have liked.&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 purely a joke with no basis in truth but it&amp;rsquo;s a joke that will make our local fascist loser very angry.&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><tweet>Three weeks on the road. 2023 Travelogue: Berlin 🛫 Cork 🚝 Belfast ⛴️ Douglas ⛴️🚕 Edinburgh 🚝 Cardiff 🚝 Portsmouth 🛫 Charlottesville 🛫 Geneva 🚝 Lausanne 🛫 Berlin 🛫 Istanbul</tweet></item><item><title>Book Report: The Good Soldier by Ford Madox Ford</title><link>https://emilygorcenski.com/post/book-report-the-good-soldier-by-ford-madox-ford/</link><pubDate>Sun, 01 Oct 2023 12:53:01 +0300</pubDate><guid>https://emilygorcenski.com/post/book-report-the-good-soldier-by-ford-madox-ford/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/pillnitz.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/pillnitz.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/pillnitz.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/pillnitz.jpg" width="600"/></media:content><description>&lt;p>The Good Soldier should be one of those books I hate—droll explorations of British aristocracy with all its emotional stuntedness. But there&amp;rsquo;s something clever and innovative about the book.&lt;/p>
&lt;p>When I first attempted &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">my Modern Library readthrough&lt;/a>, &lt;em>The Good Soldier&lt;/em> was the last book I was able to get through. I had to push myself through it: long exposition dealing with aristocratic drama is a trigger for me. There&amp;rsquo;s something visceral about it. I can&amp;rsquo;t even be in the same room when Christine is watching those low-talking British dramas. Visiting England is sometimes an exercise in healing through aversion therapy. It&amp;rsquo;s not my jam. I wasn&amp;rsquo;t looking forward to reading this book again.&lt;/p>
&lt;p>But I&amp;rsquo;ve matured in the years since then, I&amp;rsquo;ve traveled Europe and I know now the setting. When John Dowell narrates his journey through Bad Homburg, I can imagine the surroundings, and if I find myself struggling I can simply imagine the characters' heart health problems being caused by the Deutsche Bahn. I can empathize. I, too, was brought to Germany in part because of problems of the heart.&lt;/p>
&lt;p>This is not to say that the book avoids the aristocratic drama I hate so much. Polyamory would have saved three lives in this plotline: Florence Dowell, the wife of the narrator, killed herself after the man she was cheating with, Edward Ashburnham, fell in love with another woman; Maisie Maidan, a servant of the family who Edward is in love with; and Edward himself, who simply couldn&amp;rsquo;t stop screwing around with younger (and lower-class) women.&lt;/p>
&lt;p>What makes the novel worthwhile is the depth and complexity of the unreliable narrator. John Dowell is a wealthy Philadelphia socialite (here, Ford&amp;rsquo;s lack of understanding of American culture proposes a totally wrong kind of aristocracy from what we have) whose primary trait is being hopelessly naïve: naïve about his wife&amp;rsquo;s affair with his friend, naïve about religion, and naïve about the affairs happening all around him. He tells the story in past, present, and future, truths of the story unfolding as the book moves on.&lt;/p>
&lt;p>The effect of this is that Edward Ashburnham (the titular good soldier) swerves between detestable and sympathetic, helpless and influential. You&amp;rsquo;re not really sure what to believe: is Edward really just philandering, or is he trying to do good deeds with his wealth? Edward fakes a heart condition to follow Maisie to Bad Nauheim from India. Is he heartbroken or is he driven to misery by his Irish Catholic wife from an arranged marriage? Edward finds himself in what we today would call a cycle of self-sabotaging behavior. He needs therapy; instead he loafs around Europe drowning in the softest of all first-world problems.&lt;/p>
&lt;p>Of course, part of the book&amp;rsquo;s commentary is in the hateful listlessness of the impossibly wealthy. It&amp;rsquo;s possible to read the book as a social critique of aristocracy due to the uselessness of the characters. But it&amp;rsquo;s more likely received as something as a farewell to a chapter in British history. The book was published at the outset of World War I, a moment which changed Europe in ways that cannot possibly be overstated. The original title was &lt;em>The Saddest Story&lt;/em>, but Ford&amp;rsquo;s editors rightfully pointed out the incoherence of that branding with contemporary world affairs. 1913 wasn&amp;rsquo;t 2013: people then didn&amp;rsquo;t receive global horror with irony and ennui the way we do today.&lt;/p>
&lt;p>Despite a subject matter which I normally find desperately dull and an oppressive degree of heterosexuality in the story, I did find myself burning through the pages. Maybe it&amp;rsquo;s because I read it on budget flights to/from Istanbul, or maybe it&amp;rsquo;s because I&amp;rsquo;ve overcome the trauma of witnessing British emotional unavailability, but I have to say I like the book and understand its context. I&amp;rsquo;m glad I read it again, but I&amp;rsquo;m also certain there won&amp;rsquo;t be a third time.&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/works/OL8988750W/The_Good_Soldier">&lt;em>The Good Soldier&lt;/em>&lt;/a>&lt;br>
Ford Madox Ford&lt;br>
ISBN 9781593082680&lt;br>&lt;/p></description><tweet>The Good Soldier should be one of those books I hate—droll explorations of British aristocracy with all its emotional stuntedness. But there's something clever and innovative about the book. Modern Library No. 30 of 100.</tweet></item><item><title>Thoughtworks Technology Radar vol. 29</title><link>https://www.thoughtworks.com/en-de/radar</link><pubDate>Sun, 01 Oct 2023 12:13:40 +0300</pubDate><guid>https://emilygorcenski.com/post/thoughtworks-technology-radar-vol.-29/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/tr_2023_29_meta_image.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/tr_2023_29_meta_image.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/tr_2023_29_meta_image.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/tr_2023_29_meta_image.jpg" width="600"/></media:content><description>&lt;p>At Thoughtworks, we&amp;rsquo;ve published vol. 29 of our Tech Radar. It&amp;rsquo;s always cool to see what technologies our teams are working with.&lt;/p></description><tweet>At Thoughtworks, we've published vol. 29 of our Tech Radar. It's always cool to see what technologies our teams are working with.</tweet></item><item><title>Social Media Literacy to Confront Far-Right Content: Saying “No” to Neutrality</title><link>https://karger.com/hde/article-abstract/67/3/117/854154/Social-Media-Literacy-to-Confront-Far-Right</link><pubDate>Fri, 29 Sep 2023 16:15:37 +0300</pubDate><guid>https://emilygorcenski.com/post/social-media-literacy-to-confront-far-right-content-saying-no-to-neutrality/</guid><description>&lt;p>My colleagues at YES have recently published a new paper on social media literacy and the manipulative nature of far-right content. Take a look!&lt;/p></description><tweet>My colleagues at YES have recently published a new paper on social media literacy and the manipulative nature of far-right content. Take a look!</tweet></item><item><title>A Eulogy for the World's Best Cat</title><link>https://emilygorcenski.com/post/a-eulogy-for-the-worlds-best-cat/</link><pubDate>Sat, 16 Sep 2023 14:39:04 +0200</pubDate><guid>https://emilygorcenski.com/post/a-eulogy-for-the-worlds-best-cat/</guid><image><url>https://emilygorcenski.com/photo-gallery/toby/20161106_104015.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/toby/20161106_104015.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/toby/20161106_104015.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/toby/20161106_104015.jpg" width="600"/></media:content><description>&lt;p>We recently said goodbye to my best friend: the smartest, most communicative, most troublesome cat to ever live. Toberon &amp;ldquo;Toby&amp;rdquo; Clemens Bryant-Ryback Gorcenski.&lt;/p>
&lt;p>Thirteen years ago I met my wife, Christine, on what she insisted at the time was &amp;ldquo;not a date &lt;em>per se&lt;/em>, just drinks.&amp;rdquo; That not-a-date lasting long into the morning, I came home to my townhouse that I shared with my ex-fiancee, Kristin, who was in the process of moving out. The next night, Kristin was involved in a nasty car accident (the at-fault driver being, of course, a Charlottesville police officer). Of course, she was free to stay as long as she needed to recover.&lt;/p>
&lt;p>Kristin and I had adopted two cats during our time together. Our first cat was Reggie, a mackeral tabby with massive eyes and curious demeanor. He got along famously with everyone. A few months later, we decided he needed a friend, so Kristin found Jinx, a tiny, nervous black kitty who took no shit. Reggie was my cat, and in the breakup we agreed that the cats should stay together.&lt;/p>
&lt;p>After Kristin had surgery and was looking at a months-long recovery process, she decided that she needed a cat of her own, a therapy animal to help inspire her healing and to keep her occupied as she was out of work for a while. She wanted a kitten, so Christine, Kristin and I headed off to our local shelter when we heard that they had too many kittens and needed them adopted out to make space. It was there we found Toberon, quickly shortened to &amp;ldquo;Toby,&amp;rdquo; a tiny buff warlord. He was playful and rambunctious; when we took turns holding him, he bit Christine on the face. He was perfect for Kristin and we took him home that day.&lt;/p>
&lt;p>Toby quickly took over the household, attacking his big brother and sister without hesitation or remorse. While hunting a fly, he knocked over one half of the pair of pedestal lamps I had downstairs, shattering its glass shade. Toby had attitude, one time I told him he couldn&amp;rsquo;t walk on my keyboard and he looked at me squarely with his deep coppery eyes and said, &lt;em>myarp!&lt;/em> before skulking away. I&amp;rsquo;ve never been called such a name in my life.&lt;/p>
&lt;p>Kristin moved back to Iowa some months later and took Toby with her. I had grown to love the tiny demon and cried tears of loss. I insisted to keep a silly piece of canvas art we bought at Target, a caricature of a cat that looked just like him.&lt;/p>
&lt;p>Kristin&amp;rsquo;s time in Iowa found her moving into an apartment that didn&amp;rsquo;t allow cats, and not wanting to surrender him back to a shelter, she asked if I&amp;rsquo;d take car of him. Without hesitation I consented and drove up to the airport one December evening to pick him up—did you know you can send pets alone on airplanes? We brought him home and re-introduced him, his big brother and sister not sure how to feel about the chaos demon being back home.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/400933_10150537935548011_462329774_n.jpg"style="margin: 0" width="650px"
alt="Toby being reunited with Reggie and Jinx" />&lt;/center>
&lt;center>Toby being reunited with Reggie and Jinx&lt;/center>&lt;br />
&lt;p>The next morning, I walked down the stairs to find that overnight, Toby had knocked over the other half of the pedestal lamp set, him standing proudly over the shards of glass awaiting me at the bottom of the stairs.&lt;/p>
&lt;p>Toby earned the nickname &amp;ldquo;troublemaker&amp;rdquo; because he was always the first to explore whether an object obeyed the laws of gravity. He would constantly pick fights, seemingly out of boredom, as he had no issues sharing food or litter boxes with his siblings. He didn&amp;rsquo;t hate our dog, Sadie, who mostly left him alone, and after Sadie passed in later years and we brought home our cheese man, Queso, he would sometimes give him a whap on the nose but otherwise was happy to share the same couch.&lt;/p>
&lt;p>Nearly a decade ago, Reggie snuck out when we weren&amp;rsquo;t looking, and we never found him after that. We suspect another home took him in; one day we found a note on one of our LOST CAT flyers that read, &amp;ldquo;I found him and he&amp;rsquo;s my n*gga now.&amp;rdquo; Knowing Sir Reginald, there was no reason to doubt this was anything other than true.&lt;/p>
&lt;p>We didn&amp;rsquo;t give up the search for Reggie, and every weekend we would go to the shelter and look at all the mackeral tabbies to see if he&amp;rsquo;d show up. We thought we found him one day, but instead found &amp;ldquo;Alex,&amp;rdquo; a plump and stubby tabby with a scarred cornea that looked solid black. He had a label on his crate, &amp;ldquo;please do not take out with other cats.&amp;rdquo; Looking at the volunteers playing with all the other cats, we felt bad for him. Poor sick wonky-eyed boy! He&amp;rsquo;s so lonely and needs attention!&lt;/p>
&lt;p>Turns out, he was just an asshole.&lt;/p>
&lt;p>Tyrion, as we would rename him after adopting him, loved to bully other cats. He was a perfect match for Toby. The two brothers would become the best of frenemies, keeping each other in check. They tolerated each other, every once in a while we&amp;rsquo;d even catch them on the couch with their butts touching, but they never really took to snuggling with each other. Often they&amp;rsquo;d fight, occasionally in death grasps, but five minutes later had no problem sleeping in the same sunbeam. It was shy little Jinx who was the real murder machine. Tyrion and Toby would both pick on her, and every time they&amp;rsquo;d end up trudging down the stairs, her claws embedded in their foreheads.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/20151115_220846.jpg"style="margin: 0" width="650px"
alt="Toby and Tyrion hesitantly touching on the couch." />&lt;/center>
&lt;center>Toby and Tyrion hesitantly touching on the couch.&lt;/center>&lt;br />
&lt;hr>
&lt;p>When Kristin and I were together, Jinx was diagnosed with a heart murmur and given only a few years to live. She made it to ten. The week after Christine and I were married, we brought Toby in to have his chronic sniffle looked at: vets suspected nasal polyps and performed a small procedure. Something happened and Toby had a stroke after the procedure. He was unable to move his legs. We spent all of our wedding gift cash in rehabilitating him at the emergency vet. Eventually, we took him home and convalesced him in the dog&amp;rsquo;s crate. He couldn&amp;rsquo;t move, so every few hours we had to flip him onto his other side like a pancake.&lt;/p>
&lt;p>After a week of this he was walking, after two weeks he was jumping up on counters and knocking things off. We&amp;rsquo;d never been more proud of him being back to his troublemaking ways.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/20170502_121640.jpg"style="margin: 0" width="650px"
alt="Toby sits on an entertainment stand while a dog looks on from a crooked couch, Tyrion scratches on a cat post." />&lt;/center>
&lt;center>Toby sits on an entertainment stand while a dog looks on from a crooked couch, Tyrion scratches on a cat post.&lt;/center>&lt;br />
&lt;hr>
&lt;p>When I left for Berlin, I left Christine, and really Toby, in charge of the house. I was away when Jinx passed, and again when Sadie passed. As time went on I began to feel more and more guilty of the time I was missing. I get home often, and Christine can come to Europe whenever she wants, but it&amp;rsquo;s hard not having the daily chaos of a cat screaming at you for food or stealing your potato chips. One time we had ordered Thai for delivery, I was eating a &amp;ldquo;thai spicy&amp;rdquo; Pad Kra Pao. Toby jumped on the counter and insisted to share some of my food—he stole a spicy thai chili pepper. I figured I&amp;rsquo;d let him have a taste, it would hurt, and he&amp;rsquo;d learn his lesson.&lt;/p>
&lt;p>He at the whole thing and defiantly shit outside the litter box instead.&lt;/p>
&lt;p>I think about moving back to Virginia often, and Christine and I have been having more and more discussions about where we want to end up. Seattle? Vancouver? Berlin? Somewhere outside of Charlottesville? Our beautiful little Fifeville home? I told her wherever we go, I need to have a library. I have another few decades yet and I want to think about my archives. In the meantime, I try to suppress my sinful guilt by coming home as frequently as I can. We had a vacation in Ireland and the UK planned and I would head back to Virginia afterwards. I was looking forward to being back in the home we call &amp;ldquo;the Zoo&amp;rdquo; again.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/17426012_10155166256098011_8048634734873041446_n.jpg"style="margin: 0" width="650px"
alt="Toby headfirst in a Chipotle bag." />&lt;/center>
&lt;center>Toby headfirst in a Chipotle bag.&lt;/center>&lt;br />
&lt;hr>
&lt;p>Our friend, catsitting, texted us Sunday night and said Toby didn&amp;rsquo;t seem to be eating. Before Christine left on Friday evening, he was active and vibrant as usual. The next morning, she said she was taking him to the emergency vet, because he wasn&amp;rsquo;t moving.&lt;/p>
&lt;p>Christine and I said goodbye to Toby on a video call sitting on the ruins of a signal tower on a picturesque cliff overlooking the sea in southern Ireland. He recognized our voices and seemed at peace. He was ready to go. As he passed, a sunbeam cut through the clouds and bathed us in warmth.&lt;/p>
&lt;p>Cancer had come, his heart was enveloped in fluid. There was nothing the vet could have done except ease his suffering. We wouldn&amp;rsquo;t have even been able to make it home in time if we left right away.&lt;/p>
&lt;hr>
&lt;p>The pain of my loss, really of my guilt of not being present, was eased by the faith that Toby knew everything. Everyone thinks their pets are special, but Toby was. He was supremely intelligent and knew how to communicate with us better than we did. He was vocal, sometimes demanding, but also caring. He&amp;rsquo;d bring us fresh &amp;ldquo;kills&amp;rdquo; (his ribbon on a stick), ask us questions, and demand the proper pets and scritches. To help combat Tyrion&amp;rsquo;s weight gain, we bought Toby a box that only he could access through a microchip-activated hatch. When his brother was blocking it, trying fruitlessly to get in, Toby figured out how to climb into the box from the top.&lt;/p>
&lt;p>Many cats are problem solvers but it was Toby&amp;rsquo;s intuition that set him apart. When I was struggling, he&amp;rsquo;d come in to cheer me up. When I was bored, he&amp;rsquo;d insist on playing the &amp;ldquo;chase me&amp;rdquo; game. He invented a new game at three in the morning, where he&amp;rsquo;d rattle some objects on the dresser and when we woke up to throw him out, he&amp;rsquo;d dive under the bed. After two or three rounds of this, we&amp;rsquo;d have to outsmart him, pretending to lay back down. As he climbed out, we&amp;rsquo;d grab him and eject him from the bedroom. Eventually he learned to always choose a different path out from under the bed.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/20170418_131610.jpg"style="margin: 0" width="650px"
alt="Toby perched in a cat house inside a large tube." />&lt;/center>
&lt;center>Toby perched in a cat house inside a large tube.&lt;/center>&lt;br />
&lt;hr>
&lt;p>Toby was an indoor cat, but I&amp;rsquo;d take him outside from time to time. Once, he ran headfirst into the neighbor&amp;rsquo;s poison ivy-dense underbrush, his eyes dilated wide with the &amp;ldquo;wild animal&amp;rdquo; game he was playing. He found great amusement in the way we used rake handles to try to scare him out. I never worried about him running off, he knew his home and knew where the good stuff was. He just needed some adventure from time to time.&lt;/p>
&lt;p>Before I moved away, sometimes I&amp;rsquo;d take him on a car ride and let him out of the crate. He enjoyed standing up on his hind legs and looking out the window of my truck at all the scenery passing by. In another life he would have been my road trip buddy as I set off across America to write the book I&amp;rsquo;ve been planning. In this life, I was looking forward to the day I could bring home to Berlin. I imagined making a comfy little spot on the table next to my bed for him.&lt;/p>
&lt;hr>
&lt;p>Toby&amp;rsquo;s loss is an underscore for the time I&amp;rsquo;ve lost being away from home these last few years, and while I always knew this was a possibility (I have always made sure to say goodbye to the animals as if it was the last time I&amp;rsquo;d ever see them), the sting of unrecoverable years doesn&amp;rsquo;t numb with age. I left for Berlin because neo-Nazis were trying to kill me; in the years since, I&amp;rsquo;ve defeated every single one of them. I wonder what I&amp;rsquo;m still doing there anymore.&lt;/p>
&lt;p>The answer is my career, and that I actually love living in Europe. I love not speaking English, I love the travel opportunities, I love the challenge it poses and the depth it has given me. American emigrants wear a different attitude. I&amp;rsquo;m good at my job and my career is moving in a nice direction. I&amp;rsquo;m authoring my own story in a lot of ways. There&amp;rsquo;s something positive and hopeful about that.&lt;/p>
&lt;p>It&amp;rsquo;s not without its cost, and one of the payments come due is that I&amp;rsquo;ll never hear Christine shout &amp;ldquo;Toby!!&amp;rdquo; again as he knocks a full glass of water off the coffee table. I&amp;rsquo;ll never see him climb the christmas tree and perch wide-eyed in the branches. I&amp;rsquo;ll never hear him walk into the bedroom and announce, &amp;ldquo;harro?&amp;rdquo; Toby was my son for thirteen years, thirteen privileged years where I got to have a little fuzzy jerk keeping me honest. I can lament the nights apart, but instead I&amp;rsquo;ll remember the mornings together, how he&amp;rsquo;d jump on the counter, reach out his paw, and demand chin scritches as I made coffee.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/20141231_215137.jpg"style="margin: 0" width="650px"
alt="Toby in a christmas tree with pupils fully dilated." />&lt;/center>
&lt;center>Toby in a christmas tree with pupils fully dilated.&lt;/center>&lt;br />
&lt;p>Memory is love&amp;rsquo;s last expression and grief is its penultimate. It will be a long time I grieve the loss of this singular soul and my best buddy. Pets bring so much bittersweet joy into our lives; perhaps it is &lt;em>because&lt;/em> we know their lives are so much shorter than ours that we love them so much more deeply. Toby will be loved and remembered forever, and if there&amp;rsquo;s a life after this one I hope he&amp;rsquo;s resting in a sunbeam there, too.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/toby/09b9a9d892ae0e2d.jpg" alt="Toby sitting on my lap">&lt;/p></description><tweet>A few weeks ago we said goodbye to my best buddy, Toby. He was the best cat that ever lived.</tweet></item><item><title>Book Report: The Heart of the Matter by Graham Greene</title><link>https://emilygorcenski.com/post/book-report-the-heart-of-the-matter-by-graham-greene/</link><pubDate>Wed, 06 Sep 2023 16:29:05 +0100</pubDate><guid>https://emilygorcenski.com/post/book-report-the-heart-of-the-matter-by-graham-greene/</guid><description>&lt;p>Not every book on the Modern Library&amp;rsquo;s list holds up over time. Graham Greene&amp;rsquo;s novel is a flawed and outdated exploration of human suffering and the Catholic question of suicide.&lt;/p>
&lt;p>&lt;small>Content warning: this post engages in a discussion of suicide.&lt;/small>&lt;/p>
&lt;p>&lt;em>The Heart of the Matter&lt;/em> is a book about a corrupt, cheating cop who kills himself. The book is about more than that, really, with its exploration of (Catholic) metaphysical questions of sin and suicide in its blatantly foreshadowed climax, but in the twenty-first century lens the probative literary value is amateurish and shallow. Greene was a converted Catholic and wanted to explore the question of whether one&amp;rsquo;s choice to end one&amp;rsquo;s own life is truly unforgivable by God.&lt;/p>
&lt;p>To explore the depths of this question, Greene&amp;rsquo;s main character, Henry Scobie, first engages in a love affair with a refugee rescued at sea during the Second World War. Scobie is a past-his-prime deputy commissioner in an unnamed British African colony. His wife, Louise, who is presented unidimensionally as a nagging, vapid, socialite nag, wishes to escape the colony to South Africa. Her reason: Scobie has been passed up for the Commissioner role, and his wife beleives her husband&amp;rsquo;s failures to climb the aristocratic ladder leave her as the target of gossip. Louise finds herself in an affair with the newly-arrived intelligence officer, Wilson, who Greene introduces in the book&amp;rsquo;s establishing shot by speaking about how much he hates the native Black folk, with no shortage of the N-word deployed to frame the piece.&lt;/p>
&lt;p>To support his wife, Scobie takes a secret loan from Yusuf, a Syrian smuggler who Scobie suspects is responsible for an illegal black market diamond trade. He hides the loan from his superiors, while ostensibly telling Yusuf it doesn&amp;rsquo;t change their adversarial posture. This is a well-intentioned lie. Eventually, the lie and the blackmail lead to the murder of an innocent errand boy.&lt;/p>
&lt;p>As Louise leaves, Scobie finds himself falling deeper into the sin of adultry with his 19-year old refugee mistress. Louise eventually returns; Wilson, who was spying on Scobie, reveals the affair. Scobie, unable to deal with the shame of the sin and unable to reconcile his feelings and his failures with his faith, ends his own life.&lt;/p>
&lt;hr>
&lt;p>I am not Catholic except perhaps by technicality: somewhere in my childhood before I could remember, I went through one of whatever-the-rites are, but I have no working recollection of the church outside from an occasional midnight mass, funeral, or Easter service when my parents' own sense of religious guilt compelled them to compel us. I did not grow up knowing what sin was.&lt;/p>
&lt;p>Later, when I learned more of the Church from a distant and disconnected perspective, I came to understand the theory of suicide as an unforgivable sin: the commission of the act forecloses the committers ability to seek that forgiveness. Pragmatically, it cuts off the fast-lane to eternal glory. I suppose in the spectrum of Christian ethics, it&amp;rsquo;s a worthy question of whether someone whose suffering is so great they choose to end their own life is still loved by God. But I&amp;rsquo;ve also read James Joyce, and he writes about the unforgivable sin of &lt;a href="https://www.britannica.com/topic/occultism">simony&lt;/a>. Together, they make the whole question of &amp;ldquo;unforgiveness&amp;rdquo; feel a bit contrived.&lt;/p>
&lt;p>The whole matter of suicide could be explored instead on the impossible mark it leaves on those left behind, the unpatchable loneliness it burdens our loved ones with, the fury and the helplessness and guilt it induces. There are many reasons not to choose suicide, and if the Catholic argument works, I won&amp;rsquo;t stand against it. I&amp;rsquo;m compelled by the topic to say: if you&amp;rsquo;re struggling with these questions, &lt;a href="https://en.wikipedia.org/wiki/List_of_suicide_crisis_lines">there is help&lt;/a>.&lt;/p>
&lt;p>Graham Greene could explored any of these angles. He did not. Instead, he left a mess of a book whose secondary characters are one-dimensional, whose actions don&amp;rsquo;t align with their purpose, and whose setting adds no value to the plot. The blatant racism adds no character and serves no purpose to the story or its atmosphere.&lt;/p>
&lt;hr>
&lt;p>I&amp;rsquo;m not alone in these criticisms. A contemporary, George Orwell, &lt;a href="http://home.planet.nl/~boe00905/Orwell-C786.html">panned the novel&lt;/a> for the same reasons.&lt;/p>
&lt;blockquote>
&lt;p>Scobie is incredible because the two halves of him do not fit together. If he were capable of getting into the kind of mess that is described, he would have got into it years earlier. If he really felt that adultery is mortal sin, he would stop committing it; if he persisted in it, his sense of sin would weaken. If he believed in Hell, he would not risk going there merely to spare the feelings of a couple of neurotic women. And one might add that if he were the kind of man we are told he is - that is, a man whose chief characteristic is a horror of causing pain - he would not be an officer in a colonial police force.&lt;/p>
&lt;/blockquote>
&lt;p>This book may be the most misplaced book on the Modern Library&amp;rsquo;s list—a list which, by the by, excludes &lt;em>To Kill a Mockingbird&lt;/em>. It&amp;rsquo;s biggest exploration is the suffering of contradictions of faith in a man&amp;rsquo;s soul, but Hugo did better a hundred years earlier. If you crave the intellectual exercise, simply listen to &lt;a href="https://www.youtube.com/watch?v=BsyKgImnlaU">&amp;ldquo;Stars&amp;rdquo;&lt;/a> on repeat. &lt;em>The Heart of the Matter&lt;/em> simply doesn&amp;rsquo;t stand the test of time.&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/OL3321862M/The_heart_of_the_matter">&lt;em>The Heart of the Matter&lt;/em>&lt;/a>&lt;br>
Graham Greene&lt;br>
ISBN 0142437999&lt;br>&lt;/p></description><tweet>The Heart of the Matter engages with the suffering of man, but in the modern light it's the reader who suffers, trudging through each chapter of this unforgivably racist novel. Modern Library No. 40 of 100.</tweet></item><item><title>2023 Travelogue: Canals and Chaos in Utrecht and Amsterdam</title><link>https://emilygorcenski.com/post/2023-travelogue-canals-and-chaos-in-utrecht-and-amsterdam/</link><pubDate>Thu, 24 Aug 2023 22:27:55 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-canals-and-chaos-in-utrecht-and-amsterdam/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Nemo-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Nemo-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Nemo-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Nemo-thumb.jpg" width="600"/></media:content><description>&lt;p>My partner and I have been stymied for the last 2 years in trying to take a long weekend somewhere. They&amp;rsquo;ve always wanted to see Amsterdam, so off we went into a weekend of unseeming chaos.&lt;/p>
&lt;p>I&amp;rsquo;m in Amsterdam not frequently, but regularly enough that I feel like I vibe the city. I was there &lt;a href="https://emilygorcenski.com/post/2023-travelogue-art-and-science-in-amsterdam-mannheim/">earlier this year&lt;/a> to visit the Rijksmuseum. I like the city well enough, but then I&amp;rsquo;m there mostly in the fall or winter.&lt;/p>
&lt;p>When my partner and I decided to finally make good on our planned weekend away—first we tried for Portugal, then we tried for Amsterdam together in March, only to be foiled by life events—we started looking around at what we could do in Amsterdam and the Randstad. My last trip to Amsterdam was a bit awful what with terrible hotels and high prices, and I always wanted to see Utrecht, so I suggested maybe we could stay in Utrecht and take the short train ride into the capital city for a day or two.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Canals-in-the-Utrecht-Binnenstad-thumb.jpg" alt="Canals in the Utrecht Binnenstad">&lt;/p>
&lt;p>Utrecht is absolutely stunning, honestly. It definitely lived up to the hype. The vibe was much calmer than Amsterdam, the inner city was less crowded, and people actually spoke Dutch. The beautiful city center had a ton to offer, and I could easily spend all day lazing in and out of cafes and bookshops there. I loved the two-level design of the canals. We stayed a bit farther out, along the main canal leading to Amsterdam, and found everything easily accessible by bus or by foot. One of the highlights was the Domunder tour, walking around through the foundations of the old churches (no longer standing) and the Roman road leading under the main square. It&amp;rsquo;s a humbling glance into history.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Lunch-thumb.jpg" alt="Two women eat lunch along a canal; on the second level above them a man leans on a railing">&lt;/p>
&lt;p>For Saturday, we headed up to Amsterdam. My partner had never been and we were aiming for a sober weekend. What we found is that Amsterdam is simply not fun in the summer. Far be it from us, the tourists, to complain about the tourism, but the city is out of control. Too many people everywhere; too many men standing constantly in the way. We took a canal tour, usually a relaxing way to spend the time, but had a hard time finding one that wasn&amp;rsquo;t a smoke boat or a floating bar. When we did, it was crowded with people who simply wouldn&amp;rsquo;t stop talking. It was like hell for all of us, captain included. Even the stroopwaffel let us down.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/utrecht-amsterdam/Dancing-Houses-thumb.jpg" alt="Crooked houses before a canal">&lt;/p>
&lt;p>We did manage to make it to the Rijksmuseum, which should have been a nice place to visit the second time around. The Vermeer exhibit had passed, so the museum was largely business as usual, which also meant human beings being incomprehensible as usual. I watched a woman climb a display to try to get a photo of a piece of furniture on exhibit. One woman was leading her family around holding a single shoe over her head, yelling. Her barefoot children arguing back at her, the shoe obviously did not belong to any of them. I have no idea whose it actually was. Museums, especially famous museums, are rarely calm in the tourist season, but this was unlike anything I had previously seen. The pandemic really did break us, huh?&lt;/p>
&lt;p>The weekend could have ended on a high note, except for my bag being stolen. Announcements on the train from the Netherlands advised us to be wary of pickpockets. Carefully, I put my bag between our feet. We had a stanchion behind us, I figured it would be safe. Somehow, someone took it. I don&amp;rsquo;t quite know how, but I do know it was gone because I got credit card alerts about 20 minutes later. Nothing was lost that couldn&amp;rsquo;t be replaced except for the nostalgia of the stamps in my passport. Thankfully, I have a second passport that I can travel on, so there should be no major blockers to me enjoying my planned vacation. Nevertheless, just when I thought I was done with German bureaucracy, German bureaucracy finds a way to drag me right back in.&lt;/p></description><tweet>Canals and Chaos in Utrecht and Amsterdam. 2023 Travelogue: Berlin 🚝 Utrecht 🚝 Amsterdam</tweet></item><item><title>Book Report: Tropic of Cancer by Henry Miller</title><link>https://emilygorcenski.com/post/book-report-tropic-of-cancer-by-henry-miller/</link><pubDate>Wed, 23 Aug 2023 21:31:07 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-tropic-of-cancer-by-henry-miller/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/paris.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/paris.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/paris.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/paris.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;ve been reading a lot about censorship and information loss lately, so it&amp;rsquo;s only fitting that my journey through the Modern Library Top 100 has brought me to Tropic of Cancer, one of the most widely-banned books of its time.&lt;/p>
&lt;p>The last several books I&amp;rsquo;ve read have had a common theme. &lt;em>Burning the Books&lt;/em>, by Richard Ovenden. &lt;em>Hate Crimes in Cyberspace&lt;/em> by Danielle Citron. &lt;em>Twitter and Tear Gas&lt;/em> by Zeynep Tufekci. Knowledge is under threat today as it has always been. The latest round of censorship spurned on by desperate and fragile right wing culture warriors focuses on race and gender identity. I&amp;rsquo;ve written before about how this is cause for concern and should be a motivation for organizing, but it is nothing yet to panic over. We have been here before. We know this fight and we know how it ends.&lt;/p>
&lt;p>Henry Miller&amp;rsquo;s &lt;em>Tropic of Cancer&lt;/em> was one of the books at the center of one of these fights. First published in France in 1934, the book remained banned in the United States until 1964, when the Supreme Court &lt;a href="https://en.wikipedia.org/wiki/Jacobellis_v._Ohio">decided&lt;/a> that the book did not meet the threshold for obscenity. As scary as the world is now, it&amp;rsquo;s important to remember how much stricted our censorship laws were. Free speech as we understand it is a relatively young concept. A child born on the day &lt;em>Tropic of Cancer&lt;/em> became legal in the United States would have not yet been a legal adult on the day I was born. The &lt;a href="https://en.wikipedia.org/wiki/Miller_test">Miller Test&lt;/a> was established in 1973. We&amp;rsquo;ve come a long way since then, but stricter government control over speech than what we&amp;rsquo;re experiencing now remains firmly inside the boundaries of living memory.&lt;/p>
&lt;p>It&amp;rsquo;s funny, though, the way that the porcelain culture warriors today forget their own history. We&amp;rsquo;re talking about banning &lt;em>I am Jazz&lt;/em> but &lt;em>Tropic of Cancer&lt;/em> is far off their radar. It would be funny to see them try, given that there&amp;rsquo;s a Supreme Court ruling specifically about the book. A few books ago, I read &lt;a href="https://emilygorcenski.com/post/book-report-brideshead-revisited-by-evelyn-waugh/">&lt;em>Brideshead Revisited&lt;/em>&lt;/a> and was amused to learn that an Alabama politician tried banning that book as recently as 2005. He failed. Today&amp;rsquo;s charlatans will also fail, sooner or later.&lt;/p>
&lt;p>&lt;em>Tropic of Cancer&lt;/em> was, of course, a major part of my queer awakening. The book&amp;rsquo;s language is both shocking and shockingly beautiful; Miller weaves the most vibrant depictions of his life in Paris in between copious instances of calling women &amp;ldquo;cunts.&amp;rdquo; I remember vividly how nearly 20 years ago I read Miller&amp;rsquo;s description of a bisexual Russian émigrée and how it moved me to realize, yes, I&amp;rsquo;m gay, too, but gay in a different way that what one might expect:&lt;/p>
&lt;blockquote>
&lt;p>From this Macha calmly switches to an affair she had with a Lesbian. [ed. I support the capitalization from here forward] &amp;ldquo;It was very funny, my dear, how she picked me up one night. I was at the &amp;ldquo;Fétiche&amp;rdquo; and I was drunk as usual. She took me from one place to the other and she made love to me under the table all night until I couldn&amp;rsquo;t stand it any more. Then she took me to her apartment and for two hundred francs I let her suck me off. She wanted me to live with her but I didn&amp;rsquo;t want to have her suck me off every night&amp;hellip; it makes you too weak. Besides, I can tell you that I don&amp;rsquo;t care so much for Lesbians as I used to.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>One can see how Miller&amp;rsquo;s unambiguous descriptions of sex and sexuality frightened the prudes in power then. They would frighten them today, too.&lt;/p>
&lt;p>&lt;em>Tropic of Cancer&lt;/em> played a significant role in the development of erotica, particularly women&amp;rsquo;s erotica, as a literary form. Anaïs Nin was a close friend of the Millers; my copy of the book has its foreword written by her. Her praise for Miller&amp;rsquo;s novel debut is ebullient. It&amp;rsquo;s ironic: the language and the misogyny of the novel would strike me as deeply anti-feminist today. You can&amp;rsquo;t get away with referring to women as &amp;ldquo;cunts&amp;rdquo; in the modern scene. Yet it&amp;rsquo;s essential to the reading of the book, much like the book, in its quasi-autobiographical form, is essential to understanding the wave of American literature coming out of pre-war Paris. The book paints a scene of a reckless bonvivant rambling in deliberate poverty through the French capital, meeting people, taking them to bed, using them for a meal or a stipend, and rambling off to the next drunken adventure. It was Beat before the Beats; &lt;em>Trainspotting&lt;/em> owes the novel its roots. The magic of the book resides in its depth. While one can get lost in the vulgarity and eroticism, lying underneath is a deep social commentary about interwar Europe, about the adolescence of America, and the curse of artistic legacy. Hugo wrote Paris, Miller wrote Paris: they were the same Paris in the end.&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/OL44993197M/Tropic_of_Cancer">&lt;em>Tropic of Cancer&lt;/em>&lt;/a>&lt;br>
Henry Miller&lt;br>
ISBN 9780802131782&lt;br>&lt;/p></description><tweet>Book banning is as old as civilization, and as fresh as the fallen snow. My reading journey brought me to Tropic of Cancer, one of the most banned books of its day. Modern Library No. 50 of 100.</tweet></item><item><title>No, Elon Musk (probably) didn't delete all pre-2014 photos from Twitter</title><link>https://emilygorcenski.com/post/no-elon-musk-probably-didnt-delete-all-pre-2014-photos-from-twitter/</link><pubDate>Sun, 20 Aug 2023 19:15:53 +0200</pubDate><guid>https://emilygorcenski.com/post/no-elon-musk-probably-didnt-delete-all-pre-2014-photos-from-twitter/</guid><description>&lt;p>A Twitter user noticed that pre-2014 photos on Twitter were no longer visible. People were quick to accuse Elon Musk of deleting this old media, a sure sign of the fragility of the internet. But the truth is more complicated.&lt;/p>
&lt;p>Just a few days ago I &lt;a href="https://emilygorcenski.com/post/information-threats-or-what-to-do-about-my-archives/">wrote about the fragility of online content&lt;/a>. I was made aware today of &lt;a href="https://bsky.app/profile/cmhenry.bsky.social/post/3k5dspwh4qu2n">a post&lt;/a> on the nascent social media network, Bluesky, alerting me to some suppositions that my concerns were already playing out. A user had tried performing a search of his media tweets from before 2014, apparently with no result. People were quick to jump to conclusions. Forbes quickly published an article, &lt;a href="https://www.forbes.com/sites/mattnovak/2023/08/19/twitter-deletes-all-user-photos-and-links-from-2011-2014/">&amp;ldquo;Twitter Deletes All User Photos And Links From 2011-2014&amp;rdquo;&lt;/a>, which reported some surface level experimentation and quickly went into a breakdown of site owner Elon Musk&amp;rsquo;s erratic, incompetent and childish behavior in the last several months. It&amp;rsquo;s easy bait. The problem is it&amp;rsquo;s also not entirely correct.&lt;/p>
&lt;p>A quick check of Twitter&amp;rsquo;s functionality can debunk this claim. Try searching for &lt;a href="https://twitter.com/search?q=brady%20until%3A2013-10-15%20filter%3Amedia&amp;amp;src=typed_query">&lt;code>brady until:2013-10-15 filter:media&lt;/code>&lt;/a>. You&amp;rsquo;ll quickly see plenty of images alongside tweets with what appear to be dead hyperlinks. Similar searches yield similar results. Try &lt;a href="https://twitter.com/search?q=obama%20until%3A2012-10-15%20filter%3Amedia&amp;amp;src=typed_query&amp;amp;f=top">&lt;code>obama until:2012-10-15 filter:media&lt;/code>&lt;/a> or &lt;a href="https://twitter.com/search?q=putin%20until%3A2012-04-20%20filter%3Alinks&amp;amp;src=typed_query&amp;amp;f=top">&lt;code>putin until:2012-04-20 filter:links&lt;/code>&lt;/a>. There are plenty of pictures and links.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Clearly, then, it&amp;rsquo;s not &lt;em>all&lt;/em> photos and links, as Forbes suggests. What is going on?&lt;/p>
&lt;p>A quick scan will show that the missing media and links result from broken resolvers on the &lt;code>t.co&lt;/code> link shortening domain. In fact, if you go back to pre-2011, before Twitter started using &lt;code>t.co&lt;/code> for link shortening (a critical feature when the service was limited to 140 characters), you&amp;rsquo;ll find tons of broken links and images, many of them pointing to domains Twitter does not and has never owned.&lt;/p>
&lt;p>This is not a new problem. In March of this year, &lt;a href="https://www.theverge.com/2023/3/6/23627444/twitter-down-outage-images-links-error-message-api">Twitter broke links and photos&lt;/a>. An API change resulted in a regression and a roll back was quickly applied. These types of failures were readily predicted when Musk started laying off Twitter engineers by the hundreds. Peripheral functionality, e.g. link resolvers, search, follower listing, and so forth, were all part of &lt;a href="https://www.informationweek.com/strategic-cio/what-happens-if-microservices-vanish-for-better-or-for-worse">the microservices architecture that Musk so despised&lt;/a>. This decay has been visible although not obvious. The dying features are not part of the site&amp;rsquo;s core functionality. I&amp;rsquo;ve been having problems with search for months. As I wrote a few days ago, I have been manually pruning tweets. This involved me regularly executing searches by date and working backwards. This method hasn&amp;rsquo;t worked for months. It&amp;rsquo;s very frustrating. The issue here appears to be a lack of re-indexing of the search database. In a functional company, this would happen regularly, if not automatically.&lt;/p>
&lt;p>It&amp;rsquo;s of course true that users can, at least as of now, no longer get the images through Twitter&amp;rsquo;s interface. But this does not imply the pictures were permanently deleted. This may not seem like an important distinction, but it does matter for users in the European Union whose rights under GDPR provide for the right to be forgotten and the right to their own data. It&amp;rsquo;s possible Twitter has the images but has broken the internal pointers to where they&amp;rsquo;re stored. It&amp;rsquo;s also possible that Twitter deleted them, put them in cold storage, or lost encryption keys to them. We simply don&amp;rsquo;t know. But the difference is material. The sure way to tell will be to request your Twitter archives and see if the images are provided along with. I can&amp;rsquo;t test this; I had deleted all pre-2016 tweets long ago.&lt;/p>
&lt;p>The bigger issue here is the fragility of URL shorteners. People were talking about Twitter&amp;rsquo;s use of them &lt;a href="https://nullprogram.com/blog/2009/04/16/">as early as 2009&lt;/a>, and plenty of people were already worried about the so-called &lt;a href="https://konstantin.blog/2009/url-shorteners-linkrot-apocalypse/">Link Rot Apocalypse&lt;/a>. This is hardly a new problem, and it&amp;rsquo;s one that every internet user should be aware of. This doesn&amp;rsquo;t make Twitter&amp;rsquo;s latest display of incompetence any less harmful, but it does highlight that this is hardly a new risk of the platform. Musk&amp;rsquo;s takeover amplified this risk, of course, and the competence of his managerial approach certainly assumes some degree of culpability. But the evidence shows that this was neither an intentional nor systematic action on behalf of Twitter. There are plenty of pre-2014 images still available on the site. It&amp;rsquo;s rather a case of &lt;a href="https://en.wikipedia.org/wiki/Hanlon%27s_razor">Hanlon&amp;rsquo;s razor&lt;/a> and serves as a sufficiently strong argument against further use of the platform. Spend less time worrying about Musk, the evil mastermind, and spend more time distancing yourself from Musk, the incompetent buffoon.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>you can hardly blame Forbes for getting it wrong. Twitter has long been &lt;a href="https://www.npr.org/2023/03/20/1164654551/twitter-poop-emoji-elon-musk">replying to media enquiries with a poop emoji&lt;/a> and nothing more.&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><tweet>Someone tweeted that old photos from Twitter are no longer visible. People were quick to blame Musk, but he might not be entirely to blame.</tweet></item><item><title>Information Threats, or: What to Do About My Archives</title><link>https://emilygorcenski.com/post/information-threats-or-what-to-do-about-my-archives/</link><pubDate>Fri, 18 Aug 2023 00:18:08 +0200</pubDate><guid>https://emilygorcenski.com/post/information-threats-or-what-to-do-about-my-archives/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/Folsom-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/Folsom-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/Folsom-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/Folsom-thumb.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;ve been thinking about legacy and archiving a lot in the last couple of years. The threats to information longevity today have taken on frightening new dimensions.&lt;/p>
&lt;p>It&amp;rsquo;s been a weird year. The fifth anniversary of Unite the Right last August was a symbolic turning point, as five year anniversaries of major events tend to be, and with that commemoration came a lot of talk about legacy and history and the ability to speak to an audience separated from you by time. My dear friend, the historian and professor Dr. Jalane Schmidt, studies cultural memory, examining how we can continue to learn from the legacy of slavery in the United States, using Europe&amp;rsquo;s reckonings with its authoritarian pasts as a guide. We had drinks last year sitting outside a café in Berlin; she lamenting the tension between preserving our history as an activist community in Charlottesville and avoiding the legal scrutiny that maintaining documents and physical evidence might bring. There&amp;rsquo;s so much we can learn from past movements simply because they had the foresight to act for the liberation not only of their contemporaries but for those yet to be born into the future struggle. I fear we&amp;rsquo;re losing that.&lt;/p>
&lt;p>The fifth anniversary also meant a slate of books came out. I&amp;rsquo;ve got a stack of books on my shelves, the books that have my name in them. I told my wife that this is my dent in the universe, the legacy I&amp;rsquo;m going to leave. Someone will study this event long after everyone involved has passed on. They&amp;rsquo;ll want to understand this particular moment in history we&amp;rsquo;re experiencing, and they&amp;rsquo;re going to see my name come up time and time again. Someone might look into me, might wonder what I was really about. Am I the hero, as Aniko Bodrogkhozy portrayed me as? Am I the villain, as Andy Ngô does? That&amp;rsquo;s for future generations to decide, not me. All I can do is try to curate what I think is honest.&lt;/p>
&lt;p>That&amp;rsquo;s getting harder. I&amp;rsquo;ve never really had control over my own narrative, and I learned that when the writers of &lt;em>American Horror Story: Cult&lt;/em> based a character on me from my August 11 video without my knowledge. I didn&amp;rsquo;t find out until a few minutes after my wife did; she was a fan of the show and I&amp;rsquo;ll never forget the look on her whitened face when she saw the fictitious re-rendering of the horrific livestream she watched during the rally. I realize this lack of control every time some 19-year old leftist digs up an old and out-of-context tweet I wrote before they hit puberty and tries to cancel me over it. I realized this when Joe Biden opened his presidential campaign with the words, &amp;ldquo;Charlottesville, Virginia,&amp;rdquo; and a video of me getting beaten up. Truth is, it was never my story to begin with, but dammit part of it was, and I earned the right to say so.&lt;/p>
&lt;p>It&amp;rsquo;s been a weird year because the last twelve months have shown me just how fragile legacies are these days. The most unlikely blow to my ability to preserve my own history happened last November, when a bank vault containing my safety deposit box was robbed. Inside were two old, broken but recoverable cell phones, including the phone that I used during the Unite the Right rally in Charlottesville. For a while I had a legal duty to preserve the records on those devices, and I figured a bank vault was the safest place for them. Alas. These old phones were far from the most valuable things the thieves took that night, but to me they were. These devices held stories, things that mattered to me. The messages of love and solidarity after the attack. The total absence of messages from my family in that period, too. Breakup texts from a lover. Silly photos of my wife.&lt;/p>
&lt;p>Digital data is shockingly ephemeral. Some people say the internet is forever, but lately it feels like the complete opposite of that. Big tech companies have a storied legacy of evaporating user data. Elon Musk bought Twitter and is driving it into the ground, not to mention embarking on a far-right sponsored purge of accounts belonging to political opponents. If you don&amp;rsquo;t control your data, you don&amp;rsquo;t control your legacy. I noticed this, too, while recently re-organizing this blog. I checked some of the links I had shared to content I created elsewhere on the internet: recordings of media appearances, quotes in articles, that sort of thing. A shocking number of them were gone. This isn&amp;rsquo;t new or insightful. Every so often a study comes out measuring Internet decay, counting the number of dead links that persist in blogs and articles, leaving today&amp;rsquo;s reader no trace but curiosity for where they may have led. Even archive projects aren&amp;rsquo;t safe. The Unicorn Riot team didn&amp;rsquo;t independently archive the images from the Unite the Right and related neo-fascist Discord servers. Instead, they linked out to Discord&amp;rsquo;s CDN, so when Discord purged that CDN, those images and the critical evidence they represent were lost. And just this week, the Internet Archive lost a major lawsuit from publishers and quickly found itself fighting another one from the recording industry. It&amp;rsquo;s easy to question if these nonprofit initiatives can last another 20 years, let alone 200. Our ability to preserve our own histories is as fragile as it&amp;rsquo;s ever been.&lt;/p>
&lt;p>But the truth is, I&amp;rsquo;ve spent the last couple of years undertaking a purge of my own. I decided a couple years ago, once the lawsuits were past, that I didn&amp;rsquo;t want my legacy to be dominated by tens of thousands of ridiculous tweets. I didn&amp;rsquo;t need every internecine argument to live forever, I didn&amp;rsquo;t want every shitpost or sarcastic quip to be what the future remembered of me. Old tweets serve largely as vectors of harassment; on Mastodon, I&amp;rsquo;ve configured my account to autodelete every post older than a month that I don&amp;rsquo;t manually flag to retain. Richard Ovenden writes in his fantastic 2020 piece &lt;em>Burning the Books&lt;/em> about the self-consciousness of writers and archivists to choose to self-censor after their death. In older times, written correspondence and diaries and unfinished manuscripts would live on to round out the picture of the person that they didn&amp;rsquo;t show in life. Today, the DMs and encrypted messages and disappearing texts and vanishing services and platforms will leave nothing for the future archivist to find. Eventually, I decided I couldn&amp;rsquo;t support Elon Musk&amp;rsquo;s fascist worldview anymore and I deactivated my Twitter account; with its disappearance so too vanished valuable source material identifying and connecting neo-Nazi actors. The Internet isn&amp;rsquo;t forever.&lt;/p>
&lt;p>I even recently purged my physical archives, getting rid of embarrassing letters and materials from my youth, deleting old chat logs from people I can hardly remember, sending old bad poetry up in flames. I donated a decently large collection of military aviation history books and almost immediately regretted doing so. I regularly purge financial records older than 7 (or 10, depending on context) years, and of all the keepsakes I collected for moments I wished to remember, I could only remember half, and half again positively. I curated some part of my own history, and now I&amp;rsquo;m wondering if I was too aggressive in doing so.&lt;/p>
&lt;hr>
&lt;p>It&amp;rsquo;s not all bad. Last year, Kendall King, a UVa alum and fellow A11 activist, curated an exhibition at the UVa Special Collections library for Charlottesville&amp;rsquo;s &amp;ldquo;Summer of Hate.&amp;rdquo; As Jalane lamented to me earlier that year, it was hard to find materials: us security conscious leftists kept few documents and left little evidence, for fear of unreasonable governmental persecution. Kendall asked if I had anything I would like to donate and after some thought, I gave over two artifacts: the purse I carried on August 11th, which I placed a hardcover book in and used as a makeshift defense in case of knives; and the pendant I wore that night, a pendant of the Golem of Prague, a gift from my best friend from the time they visited me in Prague during my first trip to Europe. A few months ago I got an email from an archivist with the library confirming my donation. Some of my writing is there, too; Kendall had also included some of my blog posts about the event in the exhibition alongside &lt;a href="https://emilygorcenski.com/files/City%20Council%207-17.pdf">the dossier&lt;/a> warning City Council of the threats of neo-Nazi violence that I put together with the ample help of the community. Those artifacts and that writing now lives, as securely as it can be, in the same archive that holds papers from John Dos Passos, William Faulkner, Thomas Jefferson. There&amp;rsquo;s an honor in that even if those men may not be honorable: their work was deemed important enough to preserve. Now, too, ours. History will be able to judge if we did the right things or the wrong ones.&lt;/p>
&lt;p>A more impressive effort is underway with one of my dearest friends, Molly Conger, also known as Socialist Dog Mom. Her tweets, blog posts, and handwritten notes comprise an essential eyewitness community history of Charlottesville, the court cases surrounding Unite the Right, and the dramas of the city&amp;rsquo;s governance in the intervening years. Her notebooks are worth their weight in gold and I am glad that others recognize the value here, too. This work is not over. People are still being arrested and tried for their participation in the August 11 tiki torch march. Molly&amp;rsquo;s accounts are a unique perspective into the historical affairs that continue long after the news cameras have left. Many have attempted to mimic or replicate what she does but few have succeeded. She&amp;rsquo;s singular in her mastery of modern mixed media to create a historical record in real time. Maybe it&amp;rsquo;s something in the Charlottesville water that binds us to tomorrow&amp;rsquo;s history.&lt;/p>
&lt;p>Archives and libraries can burn, of course. Libraries in America are facing attacks with fervor we haven&amp;rsquo;t seen in at least a generation. National libraries holding centuries of cultural knowledge have been burned to the ground in my lifetime. A &lt;a href="https://edition.cnn.com/videos/us/2023/08/17/wyoming-librarian-fired-lgbtq-books-county-board-bts-contd-cnntm-vpx.cnn">Wyoming library board fired a librarian&lt;/a> for refusing to remove banned books. A &lt;a href="https://arstechnica.com/information-technology/2023/08/an-iowa-school-district-is-using-chatgpt-to-decide-which-books-to-ban/">school district in Iowa&lt;/a> is using ChatGPT to decide what books to ban. Set aside the sheer technological cluelessness of this endeavor: it is evil and un-American. ChatGPT and generative AI poses a whole other class of information threat, of course. The content pollution it causes is already harming knowledge discovery. One writer &lt;a href="https://humanevents.com/2023/08/13/author-jane-friedman-discovers-ai-generated-books-using-her-byline-on-amazon">recently discovered&lt;/a> AI-generated books on Amazon listing her as the author. Why burn a library when you can simply fill it with garbage?&lt;/p>
&lt;p>I&amp;rsquo;m saying nothing new. People who are far smarter than I am have been studying this problem far longer than I have. The only conclusions I have drawn is that we need a communal and decentralized solution to the problem. We need to digitize paper records, of course, but we also need to ensure that our digital archives remain accessible, verifiable, and unpolluted. We have to take community ownership of our data and our legacies and reject the governmental and corporate control. We need to teach the tech skills required to maintain and preserve these records within their own communities. In a sense, I feel like this a grand step backwards. This may not have been the Day 0 vision of the Internet, but it sure was there by Day 1.&lt;/p>
&lt;hr>
&lt;p>I started the post by saying it&amp;rsquo;s been a weird year and I think that after all the deep and sometimes frightening thought I&amp;rsquo;ve given to the matter, I&amp;rsquo;m not sure I&amp;rsquo;ve come to any great solutions. Some of my work has been entered into a hallowed and serious archive; a much larger quantity was lost in an event so unlikely it verges on comedy. I&amp;rsquo;ve come no closer to resolving the tension between legacy and operational security than I was six years ago. After realizing that my Twitter account is cited in print materials, I reactivated it. I have no answer for what to do with it if it gets shut down or if Twitter itself goes under, although I&amp;rsquo;m probably clever enough to do something with the archives. I don&amp;rsquo;t have a strategy yet for this blog and how to keep it online after I&amp;rsquo;m gone, but I&amp;rsquo;m sure that&amp;rsquo;s a solvable problem. I&amp;rsquo;ve already received great suggestions that I&amp;rsquo;ll need to follow-up on.&lt;/p>
&lt;p>This isn&amp;rsquo;t to say I haven&amp;rsquo;t made progress. I&amp;rsquo;ve started keeping a diary again. I&amp;rsquo;ve organized passwords and set up backup strategies and have started archiving the content on the Internet that I contributed to. I&amp;rsquo;ve got some plans for how to address the remaining challenges, but am needing to recreate the community I want to be responsible for helping carry out the curation and preservation of what matters when that time comes, hopefully many decades from now. I&amp;rsquo;m making a rapid shift back to an analog world: pen and paper and real books and writing postcards and connecting with people. Our digital sphere is on the brink of collapse and it is poisoned. The ballyhooed digital town square was never actually anything other than a colosseum.&lt;/p>
&lt;p>As I reflect on this, I think that&amp;rsquo;s the crux of it: the Internet has robbed us of the durable kind of community that cares for us as people beyond our living person. We don&amp;rsquo;t write letters because we don&amp;rsquo;t have anyone to write &lt;em>letters&lt;/em> to: we post and we text and we tweet and then we&amp;rsquo;re gone. I looked back longingly at old videos from World of Warcraft that I made, wondering who those people were and how they are doing. They disappeared as fast as they appeared in my life. What a shame it will be if what survives from our culture of this era is sarcasm and irony and bigotry. Who&amp;rsquo;s teaching us to write beautifully, to connect with people and leave a trace of that connection that endures for generations? We find boxes of old letters in our great-grandparents' attics and turn them into &lt;a href="https://www.youtube.com/watch?v=0juFfTeT1J4">beautiful music&lt;/a>, what will be left for our great-grandchildren to find?&lt;/p></description><tweet>Personal reflections on legacy and how to preserve it in the era of breakneck digital decay.</tweet></item><item><title>Book Report: The Moviegoer by Walker Percy</title><link>https://emilygorcenski.com/post/book-report-the-moviegoer-by-walker-percy/</link><pubDate>Tue, 15 Aug 2023 08:54:07 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-the-moviegoer-by-walker-percy/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/Fleur%20de%20Lis-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/Fleur%20de%20Lis-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/Fleur%20de%20Lis-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/Fleur%20de%20Lis-thumb.jpg" width="600"/></media:content><description>&lt;p>The Moviegoer is an existentialist work of Southern apologetics, following the protagonist&amp;rsquo;s coming of age while studiously avoiding the politics of Jim Crow America.&lt;/p>
&lt;p>Jack &amp;ldquo;Binx&amp;rdquo; Bolling is a Korean war vet and listless womanizer, selling stocks by day and sexually harassing his secretary. He marries his (step-)cousin, in the end, a woman experimenting with medicating herself to the brink of suicide in order to find freedom from the oppressive world Percy creates. &lt;em>The Moviegoer&lt;/em> is the first book on my Modern Library read-through that I hate: a feat considering my long love of existentialist literature.&lt;/p>
&lt;p>The problem with Percy&amp;rsquo;s novel is not so much that it fails to capture the aloof and simple tones of its contemporaries, which it does. There&amp;rsquo;s nothing wrong with the writing, which explores the protagonist&amp;rsquo;s construction of the world, or his avoidance of it, through his concepts of certification (when a place you&amp;rsquo;re connected to appears in popular media), repetition (a connection between the past and present), and rotation (an anticipation of the future), as he tries to understand life at the end of his 20s through a series of moviegoing experiences. These concepts alone are worthy of study. I found myself for the first time with the language to understand the feeling I get when I see places I relate to in pop culture. Small town girl-cum-world traveler that I am, I struggle with accepting that the world I experience and the world that always lived in my head can be one in the same. It feels like wisdom when I see a building in a film and can place the texture of its concrete on the tips of my fingers.&lt;/p>
&lt;p>&lt;em>The Moviegoer&lt;/em> makes more sense to me now than it did when I first read it nearly 20 years ago. Perhaps because I have been certified: when I read it when I was younger and untraveled, New Orleans was just another place that existed in theory. But I&amp;rsquo;ve been there now and I know what Elysian Fields looks like and I know what a krewe looks like and I have seen the enduring legacy of racism clashing with the city&amp;rsquo;s nature as a cultural melting pot and New Orleans is certified for me now. It makes it all the more frustrating to see how Percy fails to connect the South&amp;rsquo;s coming of age with Binx&amp;rsquo;s. This feels like a missed opportunity.&lt;/p>
&lt;p>Of course, it&amp;rsquo;s not one Percy would have taken. It&amp;rsquo;s a small wonder that the books, with its casually racist tones, or its explicitly misogynist ones, has not been taken up by neo-Confederates as mandatory reading for their equally aimless neophytes. It&amp;rsquo;s not that &lt;em>The Moviegoer&lt;/em> doesn&amp;rsquo;t have potential. I&amp;rsquo;d love to see a retelling of the story from the perspective of the women in Binx&amp;rsquo;s orbit. They&amp;rsquo;re the ones with true power. But perhaps we&amp;rsquo;re not ready yet for the feminist reconstruction of mid-century Southern literature, and anyway if we were, I&amp;rsquo;m doubtful Percy&amp;rsquo;s debut novel would be high on that list.&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/OL24584395M/The_Moviegoer">&lt;em>The Moviegoer&lt;/em>&lt;/a>&lt;br>
Walker Percy&lt;br>
ISBN 9780375701962&lt;br>&lt;/p></description><tweet>The Moviegoer is a piece of Southern apologetics, a beautifully-written but meandering piece of existentialist avoidance. Modern Library No. 60 of 100.</tweet></item><item><title>Drive Impact, Not Hype: What Business Leaders Must Know About GenAI</title><link>https://www.wired.co.uk/bc/article/what-business-leaders-must-know-about-genai</link><pubDate>Mon, 14 Aug 2023 14:05:27 +0200</pubDate><guid>https://emilygorcenski.com/post/drive-impact-not-hype-what-business-leaders-must-know-about-genai/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/wired-tw-genai-thumbnail.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/wired-tw-genai-thumbnail.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/wired-tw-genai-thumbnail.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/wired-tw-genai-thumbnail.jpeg" width="600"/></media:content><description>&lt;p>My colleague Barton and I spoke with Wired UK about GenAI in the enterprise. Have a watch!&lt;/p></description><tweet>My colleague Barton and I spoke with Wired UK about GenAI in the enterprise. Have a watch!</tweet></item><item><title>Third-Party Cookies Incident Postmortem and Privacy Policy Update</title><link>https://emilygorcenski.com/post/third-party-cookies-incident-postmortem-and-privacy-policy-update/</link><pubDate>Mon, 07 Aug 2023 17:49:45 +0200</pubDate><guid>https://emilygorcenski.com/post/third-party-cookies-incident-postmortem-and-privacy-policy-update/</guid><description>&lt;p>A short report after some basic site maintenance revealed that some third-party cookies had snuck into my website. Here is my incident report.&lt;/p>
&lt;h3 id="background">Background&lt;/h3>
&lt;p>Like many internet users, I find the persistent, mandated cookie popups to be a negative experience in using the internet. One of my goals with my personal site was to never use or require cookies—functional or otherwise—thereby eliminating the need to have a popup, a consent management engine, or other such tools. This policy was explained in my &lt;a href="https://emilygorcenski.com/cookies-tracking/">Privacy Policy&lt;/a>&lt;/p>
&lt;p>In order to test my compliance, I use Chrome&amp;rsquo;s dev tools to inspect what cookies might be being set by my site, and I also use the &lt;code>curl&lt;/code> cookie jar to do so programmatically. At the time of publication of that policy, my checks did not reveal the use of any cookies. I performed periodic but irregular checks in the intervening period.&lt;/p>
&lt;h4 id="google-fonts">Google Fonts&lt;/h4>
&lt;p>A few months after I updated the policy, &lt;a href="https://wicki.io/posts/2022-02-goodbye-google-fonts-data-privacy-gdpr/#:~:text=The%20German%20court%20has%20ruled,a%20fine%20of%20100%E2%82%AC.">a German court ruled&lt;/a> that use of Google Fonts, as hosted through the Google CDN, is out of compliance with GDPR, as they cannot guarantee that the data is not transmitted to the US. Upon learning of this ruling, I changed my site to self-host the Google Fonts implementation.&lt;/p>
&lt;h4 id="cross-linked-images">Cross-linked images&lt;/h4>
&lt;p>Most of the header images I use for my articles are my own photos. However, for some content, such as external links, I had been cross-linking to the meta image. I recently identified a risk where this could introduce third-party cookies, and changed to self-hosting these images as well.&lt;/p>
&lt;h3 id="identifying-third-party-cookies">Identifying third-party cookies&lt;/h3>
&lt;h4 id="cookies-set-by-other-cdns">Cookies set by other CDNs&lt;/h4>
&lt;p>During a period check of my website, I noticed that a single third-party cookie was being set by Cloudflare that I hadn&amp;rsquo;t encountered in my previous scans. After inspecting the source of this, I discovered that for development, I had been using a CSS framework hosted through a Cloudflare CDN. Either the CDN was not setting this cookie previously, or I had missed it in my scans (more below). This framework was one of multiple CSS and JS frameworks I was using a third-party CDN for; however, only one of the CDN calls resulted in a third-party cookie being set.&lt;/p>
&lt;h4 id="embedded-content">Embedded content&lt;/h4>
&lt;p>After discovering the third-party cookie set by the CDN, I undertook a detailed scan of the site to identify any other areas where third-party cookies might be set. During this investigation, I was able to identify eight posts with embedded tweets and four posts with embedded Youtube videos. Checking these pages specifically, I confirmed that these embeds could set between one and three third-party cookies.&lt;/p>
&lt;p>Moreover, I had embedded some Microsoft credentials from Credly on my &lt;a href="https://emilygorcenski.com/about/">About&lt;/a> page, which also set cookies.&lt;/p>
&lt;h3 id="impact">Impact&lt;/h3>
&lt;p>The Cloudflare cookie was set for a CSS framework that I used on the front page of my site. The Youtube and Twitter embeds were in individual posts. Users who visited these sites may have had third-party cookies set. I keep logs for a very limited period of time (last 7 days) for the purposes of debugging. Exploring the logs, I can identify a little less than 8500 requests for my front page, and around 250 requests for one of the posts with an embedded tweet. These are not necessarily unique views and may also include bots, crawlers, archivers and other similar automated tools.&lt;/p>
&lt;h3 id="remediation">Remediation&lt;/h3>
&lt;p>Addressing the issue of these third-party cookies being set was straightforward. First, I replaced all of the embedded Youtube content with a direct link to the video. I did the same with the embedded tweets and credentials. To address the CDN issue, I self-hosted the CSS and JS frameworks, as I had done with Google Fonts earlier.&lt;/p>
&lt;p>I moreover updated my Privacy Policy to include a section specific to third-party cookies. A new sub-section was added, &amp;ldquo;Third-party cookies&amp;rdquo; with the following text:&lt;/p>
&lt;blockquote>
&lt;p>All content on this site is self-hosted, including all images, media, libraries, and other assets. There is no embedded content on this website. Therefore there are no third-party cookies. However, this site does link to content elsewhere on the internet, and by clicking these links, you may be subject to functional or tracking cookies used by those sites and their providers.&lt;/p>
&lt;/blockquote>
&lt;h3 id="mitigations">Mitigations&lt;/h3>
&lt;p>As a result of this, I have implemented a quick check in my build and deployment pipeline that scans all &lt;code>&amp;lt;link&amp;gt;&lt;/code>, &lt;code>&amp;lt;script&amp;gt;&lt;/code> and &lt;code>&amp;lt;img&amp;gt;&lt;/code> tags for external domains. This check will stop the deployment of any changes to the site that might introduce third-party cookies of this sort.&lt;/p>
&lt;h3 id="diagnosis">Diagnosis&lt;/h3>
&lt;p>In exploring how this issue might have arisen, I come to three conclusions:&lt;/p>
&lt;ul>
&lt;li>It is possible that some of the services were not setting third-party cookies the last time I assessed the site. As mentioned previously, only one of the CDNs that was hosting CSS libraries was setting a cookie, and the other was not. This may have allowed me to overlook the use of the CDN during my earlier explorations.&lt;/li>
&lt;li>It is moreover possible that I was running the test on a page that was not setting any third-party cookies, As only a few pages could set these cookies (including &lt;code>index.html&lt;/code>), running the test on any other page could lead to a false negative. Failing to check &lt;code>index.html&lt;/code>, however, would be an oversight.&lt;/li>
&lt;li>It is simply an oversight that embedding third-party content like Tweets or Youtube videos would set a third-party cookie. Here, the convenience of copying an embed code allowed me to simply ignore the risk of third-party cookies being used.&lt;/li>
&lt;/ul>
&lt;p>Relatedly, the reliance on an external CDN for hosting CSS code was a holdover from a time before I fixed some internal references for my local testing. Here, too, I had failed to &amp;ldquo;close the loop&amp;rdquo; in removing CDNs, even as I worked deliberately to eliminate reliance on Google&amp;rsquo;s CDN to use Google Fonts.&lt;/p>
&lt;p>Furthermore, although I had not relied on the tool in the past, &lt;code>curl&lt;/code> is only able to identify &lt;em>first&lt;/em>-party cookies, and cannot resolve third-party cookies.&lt;/p>
&lt;h3 id="learnings">Learnings&lt;/h3>
&lt;p>While I have undertaken significant effort to protect my readers' privacy, this experience highlights how easy it is to miss a small detail. Using some better tools to scan for potential third-party cookie introduction will help ensure compliance with my commitments and prevent mistakes like this from creeping up again.&lt;/p>
&lt;h3 id="recommended-actions">Recommended actions&lt;/h3>
&lt;p>Third party cookies are prolific on the internet and it is a good habit for all users to periodically purge cookies. I recommend doing so.&lt;/p>
&lt;h3 id="contrition">Contrition&lt;/h3>
&lt;p>I&amp;rsquo;m very sorry to my readers for my oversight and apologize for the adverse impact it might have had. To discharge my sins, I will donate 100€ to the Electronic Frontier Foundation. This matches the fine issued by the Munich court in the aforementioned Google Fonts case.&lt;/p></description><tweet>I identified a privacy vulnerability in my website where third-party cookies could slip in. I correct this, and this is my public postmortem.</tweet></item><item><title>Book Report: Alexandria Quartet by Lawrence Durrell</title><link>https://emilygorcenski.com/post/book-report-alexandria-quartet-by-lawrence-durrell/</link><pubDate>Sun, 06 Aug 2023 13:17:40 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-alexandria-quartet-by-lawrence-durrell/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/farah-samy-29Y5RyH16Ws-unsplash.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/farah-samy-29Y5RyH16Ws-unsplash.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/farah-samy-29Y5RyH16Ws-unsplash.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/farah-samy-29Y5RyH16Ws-unsplash.jpg" width="600"/></media:content><description>&lt;p>The Alexandria Quartet, and in particular its first volume, &lt;em>Justine&lt;/em>, is one of my favorite pieces of writing. I first read it nearly 20 years ago and it left me with a romantic notion of what being a writer and expat is, and I found myself falling even more in love with it today.&lt;/p>
&lt;p>Decades ago, I was a young nerd, obsessed with knowledge and metaphysics, with a not-too-problematic belief in great literature. When I picked up the Alexandria Quartet, leaning heavily on my 30% Barnes &amp;amp; Noble discount to pick up the box set of four novels, I was immediately enthralled by the idea of telling the same story &lt;em>relativistically&lt;/em>, that is, through three dimension of time and one of space, as Durrell tried to do.&lt;/p>
&lt;p>Years later, I forget this literary device in its entirety. This is because the first volume, &lt;em>Justine&lt;/em>, is such a stunning work of literary art that it left a permanent imprint on my psyche. The novel is described as inspiring &amp;ldquo;religious devotion&amp;rdquo; among its fans, and I can see why. It&amp;rsquo;s a story of love and love affairs and intrigue and tension, told through the eyes of the narrator, a British expatriot, a writer and teacher, and overall average individual. The narrator finds himself captured in a spiderweb of love affairs, including his own with the titular character, Justine.&lt;/p>
&lt;p>Justine is a mysterious and beautiful Jewish woman with a troubled and dark past, married to the wealthy socialite, arms-dealing Copt, Nessim. Justine puts the narrator under her spell and together they have a love affair that the narrator can&amp;rsquo;t quite figure out. He falls for Justine, but does not know why she is with him. In the later books, told largely through correspondence between the characters, it&amp;rsquo;s revealed: Justine was a pre-war activist attempting to establish a Jewish state in Palestine, and her closeness to Darley was a honeytrap, an attempt to find out whether the British secret service knew anything about her and Nessim&amp;rsquo;s plans.&lt;/p>
&lt;p>Justine&amp;rsquo;s charm affects most of the characters of the book in some way. Among them is the young, bisexual artist, Clea. Here, Durrell writes passages that feel fresh even today, nearly 70 years later. The narrator describes Clea, writing,&lt;/p>
&lt;blockquote>
&lt;p>But I see that I have foolishly spoken of her as &amp;ldquo;denying herself marriage&amp;rdquo;. How this would anger her: for I remember her once saying: &amp;ldquo;If we are to be friends you must not think or speak about me as someone who is denying herself something in life. My solitude does not deprive me of anything, nor am I fitted to be other than I am. I want you to see how successful I am and not imagine me full of inner failings. As for love itself—&lt;em>cher ami&lt;/em>—I told you already that love interested me only very briefly—and men more briefly still; the few, indeed the one, experience which marked me was an experience with a woman. I am still living in the happiness of that perfectly &lt;em>achieved&lt;/em> relationship: any physical substitute would seem today horribly vulgar and hollow.&lt;/p>
&lt;/blockquote>
&lt;p>Clea and the narrator, whose name is revealed in the second book to be Darley, would go on to have a brief affair in the fourth book, which bears her name. Set after the war, Clea and Darley reconnect and commiserate over their shared connections to Justine, Nessim, and the complex affairs that ran through their circles as World War II was looming. It&amp;rsquo;s at the end of the first book that Clea and Justine were together until Justine abruptly cut off their relationship to marry Nessim, for reasons revealed later to be related to Nessim&amp;rsquo;s ability to funnel weapons to Jewish settlers. At the end of the book, after a tragic and mysterious hunting accident, Justine suddenly disappears. As Darley and Clea comfort each other, Durrell writes:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;You will have guessed&amp;rdquo;, said Clea in the middle of all this, &amp;ldquo;that Justine was the woman I told you once I loved so much.&amp;rdquo; This cost her a good deal to say. She was standing with a coffee cup in one hand, clad in her blue-striped pyjamas by the door. She closed her eyes as she spoke, as if she were expecting a blow to fall upon the crown of her head. Out of the closed eyes came two tears which ran slowly down on each side of her nose&amp;hellip; &amp;ldquo;Ah! let us not speak of her any more,&amp;rdquo; she said at last in a whisper &amp;ldquo;She will never come back.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>How Durrell could capture this essential, enduring image of femme bisexual pain, rendered so beautifully as it was in the 1950s, is a wonder. Who among us has never been in hopeless love with their best friend? Who among us, really, has never endured this kind of tragic, heartbreaking love, a love so painful it drives us to isolation, toiling alone among our art?&lt;/p>
&lt;p>Am I still writing a book report, or am I writing a diary? At any rate&amp;hellip;&lt;/p>
&lt;p>Durrell&amp;rsquo;s art is today perhaps overshadowed by the allegations that came into the open after his death. His daughter, Sappho, was a writer who struggled to find light outside her father&amp;rsquo;s shadow. She took her own life in her early 30s and willed that her writing not be published until after her father&amp;rsquo;s death. In it, she insinuates that he sexually abused her. It&amp;rsquo;s likely that a lot of the sexual essence of Durrell&amp;rsquo;s writing is semi-autobiographical. The character Justine was based on his second wife, Eve Cohen, a Jewish Alexandrian, and the mother of their daughter, Sappho, and was, of course, named after the de Sade character in the identically-titled novel. Cohen and Durrell divorced eight years after they were married, after Cohen was hospitalized for a nervous breakdown in England. It&amp;rsquo;s easy with the hindsight and perspective of twenty-first century feminism to draw one&amp;rsquo;s own conclusions here. If one reads Durrell in Durrell, then one need not stretch the imagination to see how he might have treated the women around him in his real life.&lt;/p>
&lt;p>Nevertheless, the author is dead, literally and metaphorically, and we can appreciate the &lt;em>Alexandria Quartet&lt;/em> for the stellar piece of literature it is. As I re-read the books I couldn&amp;rsquo;t help by smile at my notes on the metaphysics of the story structure, and I can see much more clearly what resonated in the book for me twenty years ago. I&amp;rsquo;m not Alexandrian, but here I sit, an expat tangled in a spiderweb of love affairs, working a job for money while hacking it as a mediocre writer. Perhaps I knew then what fates had in store for me, or perhaps I drew my own destiny in this way.&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/OL9303555M/The_Alexandria_Quartet_Boxed_Set_(Alexandria_Quartet)">&lt;em>The Alexandria Quartet&lt;/em>&lt;/a>&lt;br>
Lawrence Durrell&lt;br>
ISBN 9780140153170&lt;br>&lt;/p>
&lt;p>&lt;small>Photo by &lt;a href="https://unsplash.com/@farahgsamy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Farah Samy&lt;/a> on &lt;a href="https://unsplash.com/photos/29Y5RyH16Ws?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/small>&lt;/p></description><tweet>The Alexandria Quartet, mainly its first volume, Justine, is an absolute work of art. A complex and beautiful piece of writing. Modern Library No. 70 of 100.</tweet></item><item><title>Book Report: 1933, Der Weg ins Dritten Reich</title><link>https://emilygorcenski.com/post/book-report-1933-der-weg-ins-dritten-reich/</link><pubDate>Sat, 29 Jul 2023 10:44:55 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-1933-der-weg-ins-dritten-reich/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/bebelplatz.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/bebelplatz.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/bebelplatz.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/bebelplatz.jpg" width="600"/></media:content><description>&lt;p>Vor ein paar Monaten als ich in Wien war, habe ich Ulrich Schneiders Buch gefunden und gekauft. Gleichzeitig gab es eine große Debatte in sozialen Medien über die Geschichte der Transmenschen während der Nazizeiten. Ich hatte das Gefühl, dass ich ein bisschen mehr darüber lernen sollte, und fand das Buch klar, einfach, und unkompliziert.&lt;/p>
&lt;p>Es gibt eine populäre Ansicht, besonders unter amerikanischen queeren Gemeinden, dass Transmenschen die ersten Opfer der Nazis waren. Der Glaube stammt aus einem teilweisen Stück eines bestimmten Ereignisses, nämlich die &amp;ldquo;Aktion wider den undeutschen Geist&amp;rdquo;, der Anfang Mai 1933 stattfand. Ein Ziel der Deutschen Studentenschaft (DSt) war, das von Magnus Hirschfeld geleiteten Institut für Sexualwissenschaft. Hirschfeld war unter anderem ein jüdischer Sexualwissenschaftler, der sich auch als einen Gegner des Faschismus hinstellte. Dass Hirschfeld und sein Institut ein Ziel war, steht nicht zur Debatte. Das Problem liegt darin, dass viele queere Leute glauben, dass das Institut das einzige oder oberste Ziel war. Das ist nicht nur falsch, es besteht auch die Gefahr, dass der Antisemitismus der Aktion unsichtbar wird.&lt;/p>
&lt;p>Schneider gibt dafür den Kontext, um das Ereignis zu verstehen. Die Aktion wird im 10. Kapitel beschrieben, der Titel: Ausgrenzung und Antisemitismus. Wie alle vierzehn Kapitel im Buch besteht der Text aus einer kurzen Analyse und vielen zeitgenössischen Dokumenten. Das ist die größte Stärke des Buchs: Die Möglichkeit, originale Dokumente, Gesetze, Zeugnisanschriften usw. zu lesen, verbessert die Analyse und macht den Inhalt leichter verständlich. Jedes Kapitel besteht in der Regel aus weniger als 15 Seiten. Das heißt, das Buch ist auch für diejenigen erreichbar, die noch Deutsch lernen. Ich konnte die Kapitel einfach aufteilen und las jeden Abend ein oder zwei Abschnitte. Der Kompromiss dazu ist, dass die Analyse nicht besonders tief ist. Für mich ist es auch seltsam, dass manche Dokumente aus Wikipedia stammen. Trotz diese Schwächen entspricht das Buch einer guten Zusammenfassung der Geschichte der Errichtung der Nationalsozialisten.&lt;/p>
&lt;p>Der Historiker J. Steakly schreibt:&lt;/p>
&lt;blockquote>
&lt;p>Nur dann, wenn eine auf unumstößlichen Fakten basierende Geschichtswissenschaft mit ihren Ansprüchen und Normen respektiert wird, vermögen historische Einsichten die öffentliche Meingung zu beeinflussen, soziale Einstellunging umzustimmen und Wahres von Unwahren zu trennen. Wie können wir den historischen Revisionisten, also all jenen Vertretern der pseudowissenschaflichen Auschwitz-Lüge, den Vorwurf machen, sie würden Fakten verzerren oder ignorieren, solange wir selber mit historisch nicht haltbaren Tatsachen argumentieren?&lt;/p>
&lt;/blockquote>
&lt;p>Schneiders Behandlung von der Aktion wider den undeutschen Geist gilt als passender Kontrapunkt zu dem heutigen Mythos. Es ist natürlich selbstverständlich, dass die Nazis queere Menschen verfolgten. Aber Schneider schreibt in seinem Buch fast nie über Hirschfeld. Das ist kein Versehen, sondern der Transnarrativ ist eine Übertreibung. Die Aktion wider den undeutschen Geist besteht vornehmlich aus Antisemitismus, so oft steht es in den Dokumenten. Aber klar: das Buch handelt von mehr als nur einem Ereignis in 1933. Besonders wichtig ist die Erklärung der Machteinsetzung der Nazis. Schneider zerstört Mythen über den Aufstieg Hitlers, beschreibt die antifaschistische Bewegung, und erklärt, wie die Geschäftsführer von großen deutschen Firmen Verbündete wurden. Die sind wesentliche Tatsache, die man verstehen muss, um die Nazizeiten nachzuvollziehen.&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/works/OL35554266W/1933_%E2%80%94_Der_Weg_ins_Dritten_Reich">&lt;em>1933 — Der Weg ins Dritten Reich&lt;/em>&lt;/a>&lt;br>
Ulrich Schneider&lt;br>
ISBN 9783894387945&lt;br>&lt;/p>
&lt;p>&lt;small>Vielen Dank an Nicolai für die grammatischen Hinweise!&lt;/small>&lt;/p></description><tweet>Die Geschichte der frühen Nazizeiten wird besonders von Amerikaner*innen sehr missverstanden. Ulrich Schneiders einfaches und klares Buch über das erste Jahr der Naziherrschaft beseitigt alle Unklarheiten.</tweet></item><item><title>GenAI practical governance: How to reduce information security risk</title><link>https://www.thoughtworks.com/insights/blog/generative-ai/how-to-reduce-information-security-risk</link><pubDate>Thu, 27 Jul 2023 09:44:02 +0200</pubDate><guid>https://emilygorcenski.com/post/genai-practical-governance-how-to-reduce-information-security-risk/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/blg_meta_gen_ai_practical_governance.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/blg_meta_gen_ai_practical_governance.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/blg_meta_gen_ai_practical_governance.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/blg_meta_gen_ai_practical_governance.jpg" width="600"/></media:content><description>&lt;p>I wrote a piece looking at practical Generative AI governance through a risk analysis lens, specifically regarding information security risk, including some mitigation measures you can take.&lt;/p></description><tweet>I wrote a piece looking at practical Generative AI governance through a risk analysis lens, specifically regarding information security risk, including some mitigation measures you can take.</tweet></item><item><title>Oppenheimer and AI</title><link>https://emilygorcenski.com/post/oppenheimer-and-ai/</link><pubDate>Sat, 22 Jul 2023 10:01:21 +0200</pubDate><guid>https://emilygorcenski.com/post/oppenheimer-and-ai/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/pppl.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/pppl.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/pppl.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/pppl.jpg" width="600"/></media:content><description>&lt;p>I&amp;rsquo;ve studied Oppenheimer, the Manhattan Project, and scientific ethics for most of my career. The biopic comes out at a crucial time, when the potential of technology to harm society is higher than it&amp;rsquo;s been in decades. What can we learn from the film?&lt;/p>
&lt;p>There was an old joke in the aerospace program at my &lt;em>alma mater&lt;/em>, kind of like that game where you add the words &amp;ldquo;in bed&amp;rdquo; to the end of any fortune cookie to get what it&amp;rsquo;s really about, but instead you added &amp;ldquo;for making bombs&amp;rdquo; to the end of any engineering course to understand what it was really about. Strength of Materials&amp;hellip; for Making Bombs. Thermal &amp;amp; Fluids Engineering I&amp;hellip; for Making Bombs. It wasn&amp;rsquo;t that far off. In my Propulsion Systems Engineering class we learned how to compute the velocity of the pressure wave of a nuclear blast. In Foundations of Applied Mathematics, we learned how to use dimensional analysis and the Buckingham Pi Theorem to compute the yield of a nuclear bomb from a photograph. (I used this method many years later to &lt;a href="https://twitter.com/EmilyGorcenski/status/1290733401796947975?s=20">accurately estimate the yield of the Beirut docks explosion&lt;/a> within hours of it taking place.) We were trained to build weapons.&lt;/p>
&lt;p>September 11 happened during my sophomore year. I distinctly remembering sitting in Aerospace Fundamentals—10:00 AM, West Hall, Tuesdays and Fridays—when it happened, and I remember when our professor, a former NTSB investigator, walked us through the calculations of the force with which the airplanes hit the Towers. His class gave no partial credit. Airplanes crash, or are crashed, and people die, and you don&amp;rsquo;t get partial credit from the families of the dead. It wasn&amp;rsquo;t a balanced education; one of the selling points of Rensselaer at the time was that you can graduate while taking only four humanities courses. But it wasn&amp;rsquo;t without balance. The school had a great program on the social sciences of technology. Langdon Winner, author of one of the great technology ethics papers of all time, &amp;ldquo;&lt;a href="https://www.jstor.org/stable/20024652">Do Artifacts Have Politics&lt;/a>,&amp;rdquo; is on the faculty. We had to learn about teamwork and psychology and leadership and ethics. We were trained to be engineers.&lt;/p>
&lt;p>One of those classes I took, I can neither remember the course title nor be bothered to look it up, was about the social impact of technology. This was a great class taught by &lt;a href="https://www.rayvonfouche.com/">a great professor&lt;/a>, and while I was probably an obnoxious little prick in it, it was formative. We read on the &amp;ldquo;technological sublime&amp;rdquo; of American culture, we studied Robert Moses, and of course, we spent a great deal of time with &lt;a href="https://en.wikipedia.org/wiki/Brighter_than_a_Thousand_Suns_(book)">Jungk&lt;/a> and &lt;em>The Day After Trinity&lt;/em> and learning about the Bomb, which of course included Oppenheimer and his cast. &lt;em>Brighter than a Thousand Suns&lt;/em> sits on my shelf, as does &lt;em>Surely You&amp;rsquo;re Joking, Mr. Feynmann&lt;/em> and &lt;em>The Man Who Loved Only Numbers&lt;/em> and a dozen other books that dive into the history of these men (it was, of course, always men) and what they did in the world and what they did to the world. They lived one shelf down, until recently, from a vast collection of books on the history of aviation, stories about the B-17 and the P-38 and Lockheed&amp;rsquo;s Skunk Works and the space program and the weapons we built and the deeds they did. I did my undergrad fellowship at Princeton, a fact I am immensely proud of, even if I did mess it all up. Every few years I find an excuse to spend a night there, take my wife to PJ&amp;rsquo;s Pancakes, and walk the campus trying to recreate the paths that Einstein and Oppenheimer and Nash and Gödel must have taken. This was my education, this was my training.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Oppenheimer&lt;/em> jumps directly into scenes with characters intended to be recognized only by their last names, which may alienate the audience who &lt;em>hasn&amp;rsquo;t&lt;/em> spent the last 25 years of their life diligently studying the material. But this is the easier material to engage with, the material that is palatable for the American taste, with its stories of individual heroics and people rising up in patriot duty during a time of need. I had wondered if Nolan would go into the uglier aspects of Oppenheimer&amp;rsquo;s story, the persecution and character assassination of Oppenheimer as a suspected communist. It does, perhaps for 45 minutes too long. There are no spoilers here: the material has been in the public record for decades. The film is self-aware. Christopher Nolan is hardly subtle in his intention when somewhere near the third hour of the film a character asks, &amp;ldquo;will there be anyone to tell the truth of what went on here?&amp;rdquo;&lt;/p>
&lt;p>The downfall of J. Robert Oppenheimer is one of those unpleasant elements of American history that we sweep under the rug. We&amp;rsquo;re more than happy to lift him up as a hero, and as a Jew, who helped America win a technological race against the Nazis. We&amp;rsquo;re more than happy to celebrate him bringing America into the fold of quantum mechanics when the best research was all happening in Europe. The parts where we denied him due process, where we persecuted him for his vaguely left-wing political beliefs, where we found him (metaphorically) guilty by association, those are the un-American parts of the story that we&amp;rsquo;d rather ignore. This, more than the bomb, is the true subject of the film.&lt;/p>
&lt;p>&lt;em>Oppenheimer&lt;/em>, the film, struggles with presenting the moral conundrums surrounding the development of the bomb, though they&amp;rsquo;re not absent. There is an unresolved and unresolvable question about how long it would have taken the Nazis to develop the bomb if they weren&amp;rsquo;t being soundly defeated. The movie engages with the fact that many of the scientists involved in the Manhattan project were Jews and certainly includes a scene or two where characters briefly question the ethical nature of their work. There&amp;rsquo;s no secret that even during the height of World War II, plenty of Americans with power felt we were fighting the wrong enemy, and similarly, Nolan touches on this material but fails to draw it to its conclusion. We could have done with 20 minutes less of quick cuts between hearing scenes so claustrophobic that you could smell the actors' sweat and used the time instead to explore whether America was the second fascist country pursuing the bomb. This is a missed opportunity.&lt;/p>
&lt;hr>
&lt;p>Oppenheimer, the man: sans italics, is remembered &lt;em>inter alia&lt;/em> for his comment after setting off the first bomb at Trinity, where he quotes the Bhagavad Gita. &amp;ldquo;I am become Death, Destroyer of Worlds.&amp;rdquo; A phrase, starkened partly due to its Germanic and &lt;em>altmodisch&lt;/em> use of the &amp;ldquo;is&amp;rdquo;-form of the auxiliary helper, serves the dual purpose of being incredibly prescient and also convincing every insufferable nerd who memorized it that they know fuck all about ethics. The famous utterance became the sacrificial anode on the hull of our ship of scientific progress. Oppenheimer felt bad so we don&amp;rsquo;t have to. Oppenheimer battled the demons for us. I&amp;rsquo;ve heard many times the quote exit the mouths of people who build weapons.&lt;/p>
&lt;p>It&amp;rsquo;s easy to fixate on this statement because it remains the most poignant part of the story. The ability of scientists, nay, &lt;em>technologists&lt;/em> to create tools of immense, world-altering power brings a certain sobriety in discussions of progress, or it should. I had the fortune of studying engineering in a formal context surrounded by experts with first-hand experience, not only in technology and how it can go wrong, but also in war. In high school, my senior project studied World War II aircraft. My advisor flew B-24 Liberators during the war. He understood what terror is. I went to Rensselaer in part because I &amp;ldquo;only&amp;rdquo; had to take four humanities courses. To today&amp;rsquo;s technologists, studying any humanities at all is little more than a time tax on advancement. Today we build AI and release it to the world with nary a second thought. I find it difficult to believe that contemporary techno-utopians have ever wondered if they are become Death, Destroyer of Worlds. I can&amp;rsquo;t even induce ChatGPT to use the old grammar anymore.&lt;/p>
&lt;p>I&amp;rsquo;m not yet sure if AI will rise to the level of the bomb. I simply think we have to be asking the question. Do not get me wrong. I put no credence in the sci-fi vision of super-intelligent AIs bringing humanity to extinction. Rather, it&amp;rsquo;s the wholesale death of culture, the mass displacement of jobs, the pollution of the internet, and the impending techno-hegemony I fear. I worry for a future of children who never learn to think critically because ChatGPT can do it for them. I fear for an opaque system beyond anyone&amp;rsquo;s ability to understand being purely in the control of private hands that open up eagerly for money. I worry that AI foretells the conclusion of the history of the world: equality is irrelevant, fairness is irrelevant, culture is irrelevant. In terms of the scale of devastation, of the gross consolidation of power into the hands of the wealthy few, I worry that AI will rise far past the level of the bomb. The Jewish scientists on the Manhattan project surely knew what they were building and for what reason. There are plenty of similar challenges today: climate change, genocide, pandemics, that today&amp;rsquo;s AI researchers could be organizing their efforts together with subject matter experts to solve. Instead, they&amp;rsquo;re motivated by greed. OpenAI raised more money since the beginning of 2023 than the entire US nuclear fusion budget has had for the past ten years. By more than a factor of two.&lt;/p>
&lt;hr>
&lt;p>I saw the film at the Kino International, Berlin&amp;rsquo;s best and most beautiful building; sitting, as it does, on Karl-Marx-Allee, on one of the grand, evincing boulevards built for the DDR&amp;rsquo;s communist utopia. It&amp;rsquo;s a fittingly ironic venue for the film. Nobody breathed in the theater when Oppenheimer gave his rousing speech about how he wished the bomb had been done in time to drop on Germany. We were certainly sitting nearly at ground zero for where that would have been. Germany is a strongly anti-nuke country. Recently, they shut down the last of their nuclear power plants, part of a passionate (if not misguided) Green Party agenda from years ago to de-nuclearize the country. The audience almost surely saw no tension in the ethical question of whether America should have forged ahead with the bomb.&lt;/p>
&lt;p>Germany also sits in the European Union, which has acted assiduously to regulate AI, data privacy, and digital platforms. The Union views unchecked abuse of AI as an existential threat, they do not need to wait for a leading scientist to have a crisis of conscience. We are, of course, not without such figures. Plenty of people have blown the whistle on the behaviors coming out of Redmond and Menlo Park and Mountain View. The problem is that they&amp;rsquo;re on the outside now, and people like Sam Altman, the CEO of OpenAI, have &lt;a href="https://twitter.com/sama/status/1682809958734131200">publicly and badly missed the point&lt;/a> of the film. Long ago, I decided that talking about tech ethics to technologists was like trying to put out a raging fire with a dixie cup.&lt;/p>
&lt;p>The truth, however, is that as guilty as Oppenheimer might have later felt about the bomb, particularly after its use on Hiroshima and Nagasaki, there was then as there is now very little actual resistance to building world-altering technologies, even when the world ends up much worse as a result. Nolan&amp;rsquo;s latest might be a cautionary tale, but it&amp;rsquo;s actually very difficult to get people to stop doing things that are beneficial to themselves. The one field where formal ethics has reliably acted as a bulwark against inhumane behavior is in medical ethics, and we only got to that point after a series of horrifying crimes committed in the name of medicine. Two of the worst: the Nazi experimentation by Karl Brandt, and the Tuskeegee Syphilis Study, performed by the United States Public Health Service. Oppenheimer is a terrible image of restraint in the face of progress; he once considered irradiating the German food supply, but only if it could kill half a million people.&lt;/p>
&lt;p>On the other hand, the people who are speaking out about the real dangers of AI today are finding themselves characters in a familiar story. People like Timnit Gebru and Frances Haugen, among many others, have blown the whistle on the harms of the technology only to find themselves exited from the companies they criticized. Today, they&amp;rsquo;re &lt;a href="https://www.theverge.com/22309962/timnit-gebru-google-harassment-campaign-jeff-dean">harassed and criticized&lt;/a> for pushing &amp;ldquo;woke agendas&amp;rdquo;. It&amp;rsquo;s not too hard to look around and see another Red Scare brewing, or something a little worse. Perhaps this is actually the warning of the film: as soon as you stop being useful, be prepared to be disposed of; or, remember that your bosses never really thought fascism was the true enemy.&lt;/p></description><tweet>Oppenheimer releases at a critical time, and as someone who's been elbow deep in the subject matter for most of my career, I find it more relevant now than it's ever been in my life.</tweet></item><item><title>2023 Travelogue: London</title><link>https://emilygorcenski.com/post/2023-travelogue-london/</link><pubDate>Wed, 19 Jul 2023 12:03:53 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-london/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/london-2023/bankside.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/london-2023/bankside.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/london-2023/bankside.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/london-2023/bankside.jpg" width="600"/></media:content><description>&lt;p>London is such a vibe; I love the city. I take every opportunity I can get to go there. So when I had to travel for work to talk about AI, I didn&amp;rsquo;t think twice.&lt;/p>
&lt;p>I think there&amp;rsquo;s really only two proper cities in &amp;ldquo;the West&amp;rdquo;: New York and London. Paris is a museum, Barcelona is a vacation; Los Angeles is a dream. The rest always have a failing that really isn&amp;rsquo;t a failing, it&amp;rsquo;s a shield, a bulwark protecting them from the creeping verisimilitude that plague London and New York. Both are manifestations of our dreams and our nightmares and it&amp;rsquo;s glorious.&lt;/p>
&lt;p>When I join my online German classes, I get asked from time to time if I like Berlin (gefällt dir Berlin?) I never really have the vocabulary to explain the suffocating sameness of the city so I always just answer in the affirmative (ja, Berlin gefällt mir sehr!) Berlin isn&amp;rsquo;t a proper city the way London is. Berlin is a perpetual adolescent, a conservativeness that would surely put Munich or Stuttgart or Frankfurt to shame, if the thing that was being conserved wasn&amp;rsquo;t a perpetual attitude of never giving a fuck, or perhaps forever living the 1990 dream. Berlin&amp;rsquo;s counter culture needs a counter culture. I love London because London is multicultural and diverse. Berlin is multicultural and not diverse. If that makes any sense.&lt;/p>
&lt;p>It may be that I love London so much because my first proper trip there in October 2017 (ignoring a whirlwind connection through London Victoria a month before) was so formative to me. I spoke at Mozfest then, an event which inspired me and gave me hope about the technology industry, and &lt;a href="https://www.youtube.com/watch?v=TXL4SfXH5zM">I got to speak with Sarah Jeong&lt;/a>, someone I admire tremendously. We walked back to the hotel after an afterparty and she gave me some life advice, which helped me make the decision to move to Germany. The event was also two months after Unite the Right. It&amp;rsquo;s actually a miracle I remember any of it. By coincidence, my coworkers on this trip booked a hotel not far from where I stayed that first trip and it gave me the opportunity for a walk down memory lane. I came in a day early to explore the city. Despite my enjoyment of the city, I very rarely have time there for my own agenda. I met with some friends for a lunch on Sunday, though I admit, it was also a working lunch, too. Alas.&lt;/p>
&lt;p>The goal of my trip was actually a couple of events regarding Generative AI. My own take on Generative AI is a little bit less doom-and-gloom than many make it out to be (there will be impact but perhaps not as devastating as we fear) and a bit less rosy than many technologists make it out to be (it&amp;rsquo;s a compelling toy but actually doing something valuable with it is still harder than it looks). I was discussing this latter point of view.&lt;/p>
&lt;p>The first event was an executive roundtable in the event space at the top of the Gherkin, which went great. It&amp;rsquo;s always nice to meet with clients and hear about what they&amp;rsquo;re doing. The second event was a recording in our office in Soho. I&amp;rsquo;m not sure what&amp;rsquo;s embargoed but I&amp;rsquo;ll share it when I can. Mission accomplished, I was back on a plane the next day. Perhaps one day I&amp;rsquo;ll get to explore the city proper. In the meanwhile, I enjoyed the food, and the beer, and the absolute &lt;em>vibrance&lt;/em> of the city. London is great. I should spend a year there once.&lt;/p></description><tweet>Heading back to a proper city. Talking AI and tech in London. 2023 Travelogue: 🛫 London</tweet></item><item><title>Book Report: Evolution's Rainbow</title><link>https://emilygorcenski.com/post/book-report-evolutions-rainbow/</link><pubDate>Sun, 16 Jul 2023 23:15:15 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-evolutions-rainbow/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/trans.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/trans.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/trans.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/trans.jpg" width="600"/></media:content><description>&lt;p>The discourse around trans rights often veers into biological pseudoscience, making Joan Roughgarden&amp;rsquo;s 2012 work on the biology of sex and gender ever more important.&lt;/p>
&lt;p>Transphobes love invoking biology to justify their unmitigated hatred of transgender people, and it doesn&amp;rsquo;t really matter much to them whether their science is correct. This shallow and vapid misinformation is often countered in online discourse by arguments with only slightly more depth; unfortunately, we&amp;rsquo;ve seen in recent years transgender people coopting intersex identity and using (unintentional) misinformation to combat these arguments. The science of sex and gender is complex.&lt;/p>
&lt;p>Joan Roughgarden is well-positioned to write this book. Not only is she a Professor of Biological Sciences at Stanford, she is also a Christian and a transgender woman herself. Her previous works have sought to reconcile Christian theology with evolutionary biology, and her 2004 book, &lt;em>Evolution&amp;rsquo;s Rainbow&lt;/em>, shows similar bravery in taking on the theory of sexual selection head-on. Her book was as polarizing when it was published as transgender rights are today: in 2005, the book won the Stonewall Book Award, while simultaneously receiving widespread criticism from the biology community, accusing her of pushing a personal agenda. Of course, nobody ever accuses cisgender people of pushing a personal agenda when they concoct theories rooted in heteronormativity. But I digress.&lt;/p>
&lt;p>The book is split into three parts: first, she explores variations in sex and gender in the animal kingdom. This includes behavioral and physical traits, such as with the &lt;a href="https://en.wikipedia.org/wiki/Porichthys_notatus">plainfin midshipman&lt;/a>, a fish that has both large and small mature male, which each exhibit different behaviors during mating. The second part of the book discusses human sexual variation, including, of course, intersex conditions. Here, she presents an elaborate picture of the development of a human from conception to the first years of life, discussing in detail how genetic factors and hormones interact to determine sexual characteristics. The latter third deals with cultural variation in sexuality and gender, exploring, for instance, cultures where what we in the west might call butch lesbians actually present and are treated as something of a third gender entirely.&lt;/p>
&lt;p>Each chapter is surprisingly readable and captivating, given the scientific content and difficult subject matter. I won&amp;rsquo;t summarize the book; I am not a biologist, and you can simply read it yourself. I will say that the book does have all the hallmarks of a text written in 2004. The use of &amp;ldquo;transgender_ed_&amp;rdquo; rather than &amp;ldquo;transgender&amp;rdquo; feels archaic today, and Roughgarden transitioned a generation before the trendy identity politics of the mid 2010&amp;rsquo;s set the foundation for the modern (or postmodern?) trans rights fight. Roughgarden&amp;rsquo;s somewhat inconsistent consideration of when a fetus is a human is clumsy enough with today&amp;rsquo;s abortion politics that it gives pause. And surely some of the scientific content can be updated.&lt;/p>
&lt;p>Nevertheless, Roughgarden pulls no punches in taking on the weaknesses in sexual selection theory and the institutional forces that insist upon it. She eviscerates the field of psychology and presents a surprisingly modern lens elevating, but not glorifying, gender identities in non-western cultures. The book is heavy; at 400+ pages of biological and anthropological writing it&amp;rsquo;s a good swing to hit a TERF with, rhetorically. The arguments are more nuanced and well-researched than what you&amp;rsquo;ll find on Twitter, though it&amp;rsquo;s not like it matters. Transphobes aren&amp;rsquo;t bigots because of a misguided but earnest commitment to science and reason. Nevertheless, I think it&amp;rsquo;s an important read for anyone who &lt;em>does&lt;/em> want to learn a bit more about sex and gender in nature and elsewhere. There are better books for learning about the social science aspect of transgender people in the world, but I&amp;rsquo;ve yet to find a book that goes into as much detail about the biological and biochemical elements as &lt;em>Evolution&amp;rsquo;s Rainbow&lt;/em> does.&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/works/OL8304028W/Evolution%27s_Rainbow?edition=ia%3Aevolutionsrainbo00roug">&lt;em>Evolution&amp;rsquo;s Rainbow&lt;/em>&lt;/a>&lt;br>
Joan Roughgarden&lt;br>
ISBN 9780520260122&lt;br>&lt;/p></description><tweet>Joan Roughgarden's excellent dive into the biology of sex and gender in humans and the animal kingdom is more relevant now than ever.</tweet></item><item><title>2023 Travelogue: Leipzig and Hannover</title><link>https://emilygorcenski.com/post/2023-travelogue-leipzig-and-hannover/</link><pubDate>Sat, 08 Jul 2023 22:01:55 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-leipzig-and-hannover/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/leipzig-hannover-2023/colloquium.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/leipzig-hannover-2023/colloquium.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/leipzig-hannover-2023/colloquium.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/leipzig-hannover-2023/colloquium.jpg" width="600"/></media:content><description>&lt;p>I had a week of conferences in three cities, so I made a quick round-trip around Germany to talk data and AI.&lt;/p>
&lt;p>I have this problem where I am really quite bad at saying no to things. I do try really hard, and I do say no somewhat often, but I still say yes far too frequently. And so I managed to &amp;ldquo;yes&amp;rdquo; my way into three events in three cities in Germany across five days. I got back from the US not a week prior before I found myself packing my suitcase once again and setting off.&lt;/p>
&lt;p>My first stop was at the Leipzig University, where I had agreed to give a two lecture on AI governance, first at the University, and then again at the &lt;a href="https://scads.ai/">ScaDS.AI Dresden-Leipzig&lt;/a> colloquium. I actually really enjoyed giving this talk. AI Governance is an emerging field and there&amp;rsquo;s been a ton of noise about AI ethics in the last few years. I actually stopped talking about tech ethics a few years ago because so many speakers were rehashing the same content over and over and getting us nowhere. Somehow, it got worse recently, with the hype around GenAI and tech bros stoking imaginary fears of AI taking over the world (and of course promising pinky swear not to be part of that).&lt;/p>
&lt;p>So when I&amp;rsquo;ve had to jump back into the topic for my day job, I wanted to structure the idea of AI governance a little more. &amp;ldquo;Responsible AI&amp;rdquo; is a limited view, although a helpful one. In looking at AI risk, I came up with a few different dimensions that we should consider when building or deploying AI:&lt;/p>
&lt;ul>
&lt;li>Copyright and intellectual property;&lt;/li>
&lt;li>Data privacy, justice, and sovereignty;&lt;/li>
&lt;li>Social and economic impact;&lt;/li>
&lt;li>Environmental sustainability;&lt;/li>
&lt;li>Product and other liability;&lt;/li>
&lt;li>Competition and labor market fairness;&lt;/li>
&lt;li>&amp;ldquo;Ethics&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;p>Despite not really having given the talk before, I&amp;rsquo;m really glad how it turned out, and the feedback I got, particularly from people in cross-disciplinary fields like law and technology, really inspired me to do more in this space.&lt;/p>
&lt;p>I was only in Leipzig for a minute before I had to jump off to Hannover for another event, the CDO Exchange. This was kind of like speed-dating to match consultants and vendors with potential clients, but the networking was really worthwhile, and it was nice to see some clients past, present, and (hopefully) future there. A lot of folks were talking about data mesh, which is nice because this means I can stop doing so much heavy lifting on the topic!&lt;/p>
&lt;p>I hardly got the chance to see Hannover&amp;hellip; actually I didn&amp;rsquo;t at all. Shortly after the event I hopped back on the train to head back to Berlin, where I would wrap up the week at the &lt;a href="https://women-in-data-ai.tech/">Women+ in Data &amp;amp; AI festival&lt;/a> where I would be talking about data mesh and decision science. Here again I really enjoyed the talk I gave and got to network with amazing women and nonbinary people from all around the world.&lt;/p>
&lt;p>I wrapped up my week with a surprise day at &lt;a href="https://www.vabali.de/en/home/">Vabali&lt;/a> with a new friend and couldn&amp;rsquo;t ask for a better way to wrap a wild week of multiple events, multiple talks, and multiple cities.&lt;/p></description><tweet>Three cities, four events, five days. 2023 Travelogue: Berlin 🚅 Leipzig 🚅 Hannover</tweet></item><item><title>Book Report: Appalachian Englishes in the Twenty-First Century</title><link>https://emilygorcenski.com/post/book-report-appalachian-englishes-in-the-twenty-first-century/</link><pubDate>Fri, 07 Jul 2023 21:21:02 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-appalachian-englishes-in-the-twenty-first-century/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/blue-ridge.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/blue-ridge.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/blue-ridge.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/blue-ridge.jpg" width="600"/></media:content><description>&lt;p>Kirk Hazen&amp;rsquo;s collection of essays on the various forms of appalachian englishes provides an enlightening look at the socio-linguistics of one of the most misunderstood and stereotyped regions of America.&lt;/p>
&lt;p>Growing up in Connecticut, I didn&amp;rsquo;t really know much about Appalachia beyond the same lazy stereotypes that everyone knows. I would later find this funny, during one of the trips where I first brought my wife to Connecticut, where she remarked at how similar my quiet corner of the state was to where she grew up. The cultural gaps Appalachia and northeastern Connecticut are not that great, but we have the benefit of proximity to erudite New England socialites, and Appalachia is a region beset by extractive capitalism. Connecticut&amp;rsquo;s accent is more or less neutral with regards to the broader American dialect, though born in northeastern Massachusetts I learned to speak with a thick North Shore accent that still finds ways to haunt my speech. I should have known better than to judge.&lt;/p>
&lt;p>Kirk Hazen uses the plural form to describe Appalachian speech, demonstrating, through a collection of eleven essays by appalachian linguists, how the speech forms bonds of identity and culture among the its speakers. The book focuses, of course, on the way Appalachian speech tends to modify vowels, and how the choice of words and grammar identify people not only with the region, but also with class, age, and gender. With lament, the book unfortunately contains no contributions from black Appalachians, though it is self-aware of this omission. Of particular interest is how the book dives into the way speech used to identify with gender and sexuality, and I read it conscious of the ways in which queer discourse in America tends to be dominantly coastal, academic and highbrow. The book puts to words (no pun intended) the feelings I&amp;rsquo;ve had watching queer Appalachian comrades be the most powerful and dynamic force in my world during various points of my life.&lt;/p>
&lt;p>A book on Appalachian speech would be incomplete without a contribution from Walt Wolfram, whose documentary, &lt;a href="https://www.youtube.com/watch?v=iHIJfbYhQFg">&lt;em>Mountain Talk&lt;/em>&lt;/a> dove into many aspects of the language(s), including the myth that Appalachian speak is a remnant of colonial English. The power of this myth is two-sided; locals claim it with a sense of pride and belonging, whereas outsiders wield it to further the false stereotype that Appalachian peoples are archaic, old-fashioned, ignorant, and backwards. Wolfram penned the afterword of the book and his presence is clearly felt in most if not all of the chapters, but it&amp;rsquo;s clear that a renewing energy is pouring into the space of Appalachian studies, the linguistic space being only one of them.&lt;/p>
&lt;p>I&amp;rsquo;m not educated in linguistics and was happy that jargon was kept to a minimum. I don&amp;rsquo;t read IPA, so the authors' vivid and non-technical descriptions helped with my understanding. I suspect this would also make the book appeal to locals, not because they are uneducated, but because most people on this planet have better things to do than learn IPA. Appalachia is a place I fell in love with around the start of the second third of my life, and I&amp;rsquo;m grateful that through books like this, I can continue to discover the beauty and joy that the region and its culture provides.&lt;/p>
&lt;p>&lt;a href="https://openlibrary.org/works/OL21904406W/Appalachian_Englishes_in_the_Twenty-First_Century">&lt;em>Appalachian Englishes in the Twenty-First Century&lt;/em>&lt;/a>&lt;br>
edited by Kirk Hazen&lt;br>
ISBN 9781949199550&lt;br>&lt;/p></description><tweet>Kirk Hazen's collection of essays on the various forms of appalachian englishes provides an enlightening look at the socio-linguistics of one of the most misunderstood and stereotyped regions of America. My short report.</tweet></item><item><title>2023 Travelogue: Charlottesville, Virginia Beach, NoVa</title><link>https://emilygorcenski.com/post/2023-travelogue-charlottesville-virginia-beach-nova/</link><pubDate>Thu, 06 Jul 2023 20:58:40 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-charlottesville-virginia-beach-nova/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/back-in-the-usa-2023/sr-71.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/back-in-the-usa-2023/sr-71.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/back-in-the-usa-2023/sr-71.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/back-in-the-usa-2023/sr-71.jpg" width="600"/></media:content><description>&lt;p>I missed my cats and my dog and my wife and my home, so I went back to the US for a few weeks and caught a bunch of live music, hit the beach, and raised some funds.&lt;/p>
&lt;p>I was back from my &lt;a href="https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/">last trip&lt;/a> for all of three days before I set off again, grabbing the direct flight to Dulles to spend a few weeks back in Charlottesville. During the first years of the pandemic there were no direct flights to DC from Berlin. This was annoying. The amount of invisible time that layovers add to the journey begins to drag on you over time.&lt;/p>
&lt;p>This was a working trip, and when I&amp;rsquo;m in the US I do try to timeshift so that I can keep some overlap with German hours. The first week isn&amp;rsquo;t so bad, jetlag means waking up at 3 o&amp;rsquo;clock is not so hard, and finishing the workday by noon is something I can 100% recommend. Since it was a working trip, my only plans were to catch some music and to attend a fundraiser for the nonprofit my friends Eve and Kieryn support, the &lt;a href="https://responsiblehomeschooling.org/">Coalition for Responsible Home Education (CHRE)&lt;/a>. CHRE&amp;rsquo;s work is essential. They&amp;rsquo;ve got years of experience fighting christofascists in legislatures and there&amp;rsquo;s a lot that the trans rights movement could learn from them and their allies.&lt;/p>
&lt;p>Christine and I had booked a bunch of shows for the month, so shortly after I arrived, we headed out to Virginia Beach to catch Shane Smith and the Saints, an underrated red dirt band, playing an intimate show in a small venue. It was great. We stomped in the beach a bit the next day and I discovered Hatteras-style clam chowder, which as a New Englander I find is a crime against common decency. Cream base or death!&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/back-in-the-usa-2023/shane-smith.jpg" alt="Shane Smith and the Saints on stage">&lt;/p>
&lt;p>The following week, we had a three-pack of shows: Shovels and Rope in at the Pavilion, my father-in-law&amp;rsquo;s band playing Fridays after Five, and finally, the day before I left, we headed up to catch Mavis Staples, Ziggy Marley, and Trombone Shorty up at Wolf Trap. I&amp;rsquo;d not been there before, and I quite enjoyed bringing along a cooler of sandwiches and beer and making a little picnic on the lawn. That&amp;rsquo;s exactly how concerts should be.&lt;/p>
&lt;p>Before heading back, we visited the Udvar-Hazy annex of the Air and Space Museum. I hadn&amp;rsquo;t been there in many years, not since before I met Christine. The collection had grown a bit and I had forgotten just how impressively large the Space Shuttle was. It&amp;rsquo;s on the edge of absurdity that we sent that into space. The museum&amp;rsquo;s collection seems to have grown since I last visited and we particularly enjoyed the gallery relating to early balloon flight they had assembled. We accidentally viewed it backwards, which was an interesting experience of watching the story transition from early aerial surveillance in war to the absurdism of early balloon flight, including peasants destroying downed balloons, thinking them to be demons descending on the earth. Maybe they had it right all along. Man has no dominion over the skies.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/back-in-the-usa-2023/sr-71.jpg" alt="An SR-71A on display">&lt;/p>
&lt;p>Hopping the redeye back to Berlin, I arrived early Monday morning and headed direct into a workday. Unfortunately, as soon as I got off the flight, I suffered some serious calf cramps, so I went to the ER to check for DVT. Thankfully, it wasn&amp;rsquo;t, but better safe than sorry. I fly a lot and I made the mistake of wearing skinny jeans on my flight, so I figure it&amp;rsquo;s only a matter of time before one of these flights leaves me in a tough spot.&lt;/p>
&lt;p>The more I head back to the US, the more I miss it. I miss home, and I miss the food, and I miss the comforts of the place. I do not miss the lack of public transit, the absurd expenses, and the catastrophic healthcare. I also don&amp;rsquo;t feel threatened at all by the current wave of queer antagonism, which contrary to what you see on Twitter and in the news, is far from ubiquitous. I went to a country music concert in Virginia Beach, it was fine. There was a little Pride market at a local brewery in town, it was fine. There absolutely are issues with homophobia and transphobia in America, but the bigots are on the losing side and while they&amp;rsquo;re getting louder, they&amp;rsquo;re also losing. Trump appointees are throwing out transphobic laws. They can&amp;rsquo;t even win their own side. I keep thinking about moving back, and sometimes people say, &amp;ldquo;but isn&amp;rsquo;t it unsafe?&amp;rdquo; Despite the hate, it&amp;rsquo;s still safer now than it was 10 or 15 years ago. Returning to the US is definitely on the table for me, though nothing is certain. It&amp;rsquo;s not like Germany is without its bigotry.&lt;/p></description><tweet>Live music in the USA. 2023 Travelogue: Charlottesville 🚘 Alexandria 🚘 Virginia Beach 🚘 Wolf Trap</tweet></item><item><title>Live Like the World is Dying S1E75</title><link>https://www.liveliketheworldisdying.com/s1e75-emily-on-antifascist-organizing-hunting-nazis/</link><pubDate>Fri, 23 Jun 2023 10:05:04 +0200</pubDate><guid>https://emilygorcenski.com/post/live-like-the-world-is-dying-s1e75/</guid><description>&lt;p>I sat down with Margaret Killjoy to talk about organizing to fight fascist transphobes in the legislature, and the importance of learning from others' experiences with oppression.&lt;/p></description><tweet>I sat down with Margaret Killjoy to talk about organizing to fight fascist transphobes in the legislature, and the importance of learning from others' experiences with oppression.</tweet></item><item><title>Decentralized Data Governance as Part of a Data Mesh Platform: Concepts and Approaches</title><link>https://www.researchgate.net/publication/371399084_Decentralized_Data_Governance_as_Part_of_a_Data_Mesh_Platform_Concepts_and_Approaches</link><pubDate>Tue, 13 Jun 2023 13:24:24 -0400</pubDate><guid>https://emilygorcenski.com/post/decentralized-data-governance-as-part-of-a-data-mesh-platform-concepts-and-approaches/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/Interplay-of-global-policies-localized-decisions-and-platform-support-by-the-example-of.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/Interplay-of-global-policies-localized-decisions-and-platform-support-by-the-example-of.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/Interplay-of-global-policies-localized-decisions-and-platform-support-by-the-example-of.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/Interplay-of-global-policies-localized-decisions-and-platform-support-by-the-example-of.png" width="600"/></media:content><description>&lt;p>My colleagues Arif, Atif and Sumedha have published a paper about the work we&amp;rsquo;re doing with Data Mesh and how we address data governance challenges from a platform point of view.&lt;/p></description><tweet>Cool stuff over at dayjob from some of my colleagues, who have published a paper about the work we're doing with Data Mesh and how we address data governance challenges from a platform point of view.</tweet></item><item><title>Book Report: Brideshead Revisited by Evelyn Waugh</title><link>https://emilygorcenski.com/post/book-report-brideshead-revisited-by-evelyn-waugh/</link><pubDate>Sat, 10 Jun 2023 16:51:24 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-brideshead-revisited-by-evelyn-waugh/</guid><description>&lt;p>At number 80 on the Modern Library list is Evelyn Waugh&amp;rsquo;s opus, a heartbreaking lamentation of English aristocracy which is at the same time, astoundingly gay.&lt;/p>
&lt;p>The first thing you need to know about &lt;em>Brideshead Revisited&lt;/em> is that it is a heartbreaking tale of an Oxford dropout who, due to the overbearingness of Catholicism and the slow decay of aristocratic norms, finds himself middle-aged, loveless and alone, commanding a British Army company during World War II. The second thing you need to know is that the book is astonishingly gay.&lt;/p>
&lt;p>The problem with queer literature today is that it doesn&amp;rsquo;t really concern itself with being literature. Obsessed with representation and presence and politics, queer stories today lack subtlety and metaphor. They&amp;rsquo;ll kill you with an explosion or rip your heart out, but none of them have the craft to prick you and let you bleed slowly from your heart. Not like Evelyn Waugh could.&lt;/p>
&lt;p>He called his novel his &lt;em>magnum opus&lt;/em> (yes, Evelyn Waugh is a man), and opens the book with an author&amp;rsquo;s note, &amp;ldquo;I am not I; you art not he or she; they is not they.&amp;rdquo; This is no mere pronouns pun, the novel was published many decades before that was possible, but rather a reminder that this work is no self-insert. I wonder at this. Can I really believe that a cisgender, straight author could write this book? (Aside: &lt;a href="https://www.dailymail.co.uk/news/article-3520642/How-Evelyn-Waugh-s-gay-Oxford-lover-Brideshead-Revisited-s-Sebastian.html">perhaps Waugh was not so straight after all&lt;/a>.)&lt;/p>
&lt;p>The novel&amp;rsquo;s prologue open with Captain Charles Ryder traveling with his British Army company to some pointless manor in countryside England during the War; traveling the night, he awakens and learns the name of the place, Brideshead. The novel strides through his memories of the land he&amp;rsquo;d been to before, first when he was younger and a student at Oxford.&lt;/p>
&lt;p>Ryder befriends Sebastian Flyte, a son of the Lady of the house, a scoundrel and a tramp. They partake in debauchery, and Sebastian brings Charles lamentingly to his home. Sebastian is not fond of his family, though they grow quickly fond of Charles. In a scene as they are underway to the home, they pause alongside of the road, and Charles recollects his happiest memory of the place: &amp;ldquo;that day was the beginning of my friendship with Sebastian, and thus it came about, that morning in June, that I was lying beside him in the shade of the high elms watching the smoke from his lips drift up into the branches.&amp;rdquo;&lt;/p>
&lt;p>The love Charles and Sebastian share is never explored in graphic detail, but neither is it hidden. Sebastian&amp;rsquo;s father&amp;rsquo;s mistress once tells Charles, &amp;ldquo;it is a kind of love that comes to children before they know its meaning&amp;hellip; It is better to have that kind of love for another boy than for a girl.&amp;rdquo; And later, his mother says to Charles, &amp;ldquo;you see, Charles, I look on you very much as one of ourselves. Sebastian loves you &amp;ndash; when there was no need for him to make an effort to be gay. And he wasn&amp;rsquo;t gay. I slept very little last night, and all the time I kept coming back to that one thing: he was so unhappy.&amp;rdquo;&lt;/p>
&lt;p>Gay, of course, refers to Sebastian&amp;rsquo;s contentment; his sexuality is no doubt implied. The central friction between Charles and Sebastian is Sebastian&amp;rsquo;s alcoholism; his family drives him away after Charles gives him money for drink. Charles and Sebastian are eventually apart. Charles drops out of Oxford and becomes a painter of some repute. He marries and travels the world, and it is only some time later that he comes to love Sebastian&amp;rsquo;s sister, Julia.&lt;/p>
&lt;p>Eventually, during some time apart, Charles finds liberation in his wife&amp;rsquo;s infidelity. On a cruise to New York, some many years after Sebastian drifted away, Julia happens to be on board the same ship as Charles and his wife. They reconnect and fall in love and as they talk, Julia asks Charles about his relationship with Sebastian. &amp;ldquo;You loved him, didn&amp;rsquo;t you?&amp;rdquo; she asks. &amp;ldquo;Oh yes. He was the forerunner,&amp;rdquo; says Charles.&lt;/p>
&lt;p>Julia and Charles agree to divorce their spouses and marry each other. This is less problem for Charles, an agnostic, than it is for Julia and her Catholic upbringing. It&amp;rsquo;s only as her father dies that she has a crisis of faith as a priest administers last rites. Her devotion forbids her divorce, and Charles, having already secured his, is left alone. A story of Sebastian&amp;rsquo;s fate is shared by his other sister: Sebastian befriended a German mercenary, Kurt in Morocco, cared for him before the war, traveled across Europe together, until the German army forced him back. Sebastian went to Germany to convince him to return, which he nearly succeeded in doing. The Nazis caught Kurt and put him in a concentration camp, where he hung himself. Dejected, Sebastian returned to Morocco and spent his days in the care of a monastery.&lt;/p>
&lt;p>There is no choice but to read Sebastian&amp;rsquo;s character as explicitly gay, and no way to see his friendship with Charles as any other than a homosexual one. Charles marries a beautiful woman but does not love her. He falls in love with Julia but notices the similarities in her appearance to Sebastian. Sebastian was the forerunner, he says, and she wonders if she, too, is a forerunner.&lt;/p>
&lt;p>It doesn&amp;rsquo;t matter. Charles is in Sebastian&amp;rsquo;s past, but Sebastian is very much in Charles' present. There&amp;rsquo;s no happy ending for Charles Ryder, the youthful romanticism he could never let go of was spoiled by aristocracy and catholicism and drink and the pain and his pain and his lamentation follows him like a shadow until his destiny returns him to Brideshead, lonely and remorseful. There&amp;rsquo;s an extraordinary honesty in this tale, a queer story the way that queer stories used to only be.&lt;/p>
&lt;p>&lt;em>Brideshead Revisited&lt;/em> is a book with unquestionably gay characters. In today&amp;rsquo;s era of fascist attacks on LGBT+ people, it&amp;rsquo;s a slight wonder that there&amp;rsquo;s not been a renewed effort to ban it. The most serious of these efforts came in 2005, when &lt;a href="https://bannedbooks.library.cmu.edu/evelyn-waugh-brideshead-revisited/">an Alabama politician proposed legislation&lt;/a> supporting its censorship on the grounds that its characters were gay. Even though Waugh does not champion homosexuality in this book, it was enough that Sebastian and Charles existed in the narrative. &lt;a href="https://www.cbsnews.com/news/alabama-bill-targets-gay-authors/">The proposed legislation did not succeed&lt;/a>. Today&amp;rsquo;s attempts at banning queer books are nothing new. It&amp;rsquo;s important for us to remember our history.&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></description><tweet>Brideshead Revisited is a heartbreaking and remarkably queer story, in a way you might not expect from the genre. Modern Library No. 80 of 100.</tweet></item><item><title>Review: Mathematics for Machine Learning and Data Science Specialization by DeepLearning.AI on Coursera</title><link>https://emilygorcenski.com/post/review-mathematics-for-machine-learning-and-data-science-specialization-by-deeplearning.ai-on-coursera/</link><pubDate>Fri, 02 Jun 2023 15:13:10 -0400</pubDate><guid>https://emilygorcenski.com/post/review-mathematics-for-machine-learning-and-data-science-specialization-by-deeplearning.ai-on-coursera/</guid><description>&lt;p>I worked through the DeepLearning.AI course on Math for Machine Learning at Coursera. It was fun and informative, if not a bit shallow.&lt;/p>
&lt;p>Over at my day job, our Germany data and AI community has been doing some group learning on the mathematics of machine learning, using &lt;a href="https://www.coursera.org/specializations/mathematics-for-machine-learning-and-data-science">the DeepLearning.AI specialization on Coursera&lt;/a>. I&amp;rsquo;m really thrilled so many people want to get into the math of machine learning, especially because machine learning has become so simplified and abstracted into tools these days that it&amp;rsquo;s easy to lose sight of the fundamental principals. It was also a good excuse for me to get back to some of the techniques I haven&amp;rsquo;t touched in a while.&lt;/p>
&lt;p>The specialization consists of three courses which you can take independently: Linear Algebra for Machine Learning and Data Science, Calculus for Machine Learning and Data Science, and Probability &amp;amp; Statistics for Machine Learning &amp;amp; Data Science. Each course consists of a number of bite-sized video lectures interspersed with some practice quizzes and programming exercises run in hosted Jupyter notebooks. The courses are expected to be completed over the course of some weeks, and each week has a final quiz and usually a programming lab. This format makes it perfect for casual learning, where you can sneak in a video in those seven minutes between meetings or so.&lt;/p>
&lt;p>The specialization touches on a couple key topics for machine learning without going terribly deep: basics of linear algebra, including matrix operations, eigenvalue and eigenvector computations, basics of differential calculus, simple numerical methods, and fundamental probability and statistics, among others. Within these fields, the specialization does not go terribly deep, yet at the same time I wonder if someone without prior exposure to these topics would struggle. The content seems best primed as a review of sorts; for someone trying to learn the material for the first time the lectures provide neither the foundation nor the rationale.&lt;/p>
&lt;p>The first two courses on calculus and linear algebra are quite thin; these topics are all covered in maybe two lectures of the first weeks of undergrad level numerical methods. Here, too, I found the coding examples a little lacking. While the notebooks are quite thorough, they handhold you through the exercises quite a bit, leaving you only to write one line of code, which is basically set up for you from the start. In fact, it&amp;rsquo;s conceivable to complete the exercises without much thought at all. There&amp;rsquo;s a little too much &amp;ldquo;magic API call&amp;rdquo; going on here.&lt;/p>
&lt;p>Making matters more frustrating, there are a number of bugs in the tests. The first two courses are great in that they assess your output by running against unit tests. However, you can&amp;rsquo;t easily inspect these tests, and a number of them have critical floating point arithmetic errors. In one case, one of the tests was simply wrong, which I could verify by hand.&lt;/p>
&lt;p>The third course, Probability and Statistics, is much better. It&amp;rsquo;s actually extremely practical and helpful. Here, the quizzes actually make you think and do some computation. Whereas in the first two courses I mostly solved problems in my head, in the probability and statistics course I had to think a bit to find the right answers. The labs for the third part were also much better, though it was frustrating that they didn&amp;rsquo;t continue the excellent pattern of using unit tests for grading and validation. The labs' exercises were also extremely practical: one could work through Naive Bayes algorithms, A/B testing strategies, and statistical methodology.&lt;/p>
&lt;p>Quality issues surrounded the entire specialization. Some quiz questions were horribly written, some tests didn&amp;rsquo;t work, and there were several spelling errors throughout, which made the whole exercise feel a lot cheaper than it needed to. The class also lacked coherence; the themes from the courses are not tied together, and it&amp;rsquo;s definitely possible to walk away from the course with knowledge of the mathematics but limited knowledge of how it gets applied in modern day data science.&lt;/p>
&lt;p>Despite these flaws, it&amp;rsquo;s still a fun course and a great refresher for anyone who&amp;rsquo;s encountered the subjects in the past. First time learners will benefit from supplemental material or mentorship. I&amp;rsquo;d say it&amp;rsquo;s a good entry for someone who wants to learn the theory of data science, but it will still be a long journey from this point to actually coding machine learning algorithms.&lt;/p></description><tweet>I worked through the DeepLearning.AI course on Math for Machine Learning at Coursera. I found it fun but shallow. My review.</tweet></item><item><title>Book Report: Software Design by Example by Greg Wilson</title><link>https://emilygorcenski.com/post/book-report-software-design-by-example-by-greg-wilson/</link><pubDate>Tue, 30 May 2023 21:16:05 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-software-design-by-example-by-greg-wilson/</guid><description>&lt;p>There&amp;rsquo;s a lot of books on programming but fewer books that couple software development with effective and practical use of tools, presenting a language not as a main course but as a part of an engineering ecosystem. Greg Wilson&amp;rsquo;s book hits all the right notes in bringing together theory, pragmatism, and best practices.&lt;/p>
&lt;p>I am not a JavaScript developer. I used to write JavaScript. Years ago, when the internet was young, and the language was bad and we were all bad at it. It&amp;rsquo;s been decades since I&amp;rsquo;ve put it into meaningful practice, and honestly, I&amp;rsquo;m a mediocre software developer, anyways. I&amp;rsquo;m a very good data scientist, but when I look at my coding skills and compare them to my peers at my workplace, I know I&amp;rsquo;m out of my league.&lt;/p>
&lt;p>So when my friend, Greg Wilson, asked me if I&amp;rsquo;d be interested in reviewing his book, &lt;em>Software Design by Example: A Tool-Based Introduction with JavaScript&lt;/em>, I said, &amp;ldquo;sure, but I&amp;rsquo;m afraid I don&amp;rsquo;t know what I&amp;rsquo;m doing. I&amp;rsquo;m not a JavaScript dev.&amp;rdquo; He told me that&amp;rsquo;s perfect. Greg is an educator. His goal isn&amp;rsquo;t to tell people what they already know, but to give useful advice that people can use in their careers and every day lives. If I could get something out of this book then he&amp;rsquo;ll have done his job.&lt;/p>
&lt;p>I received my copy in the mail and immediately dove in. One of the first things I noticed was how pragmatic the structure of the text is. The book doesn&amp;rsquo;t march you through the theory of JavaScript, but begins with practical topics you are likely to encounter if you start programming in Node. To wit: the first three chapters after the introduction are &amp;ldquo;Systems Programming,&amp;rdquo; &amp;ldquo;Asynchronous Programming,&amp;rdquo; and &amp;ldquo;Unit Testing.&amp;rdquo; Not only are these three of the most fundamental topics to understand as a developer today, they&amp;rsquo;re also the first topics an experienced programmer would want to learn when coming from another language ecosystem. I play around with F# every few months. I&amp;rsquo;ve had to wrestle with understanding its asynchronous programming model because so many F# resources focus on the theory of the language (which &lt;em>is&lt;/em> super important) rather than giving me the tools to translate what I know from my Java/Python world more directly.&lt;/p>
&lt;p>In fact, every chapter in the book is perfectly tuned to modern software development. Chapters on package management, the debugger, and documentation generation are references I will probably come back to time and again. Each chapter is concise and filled with working, practical code and clear diagrams. Greg doesn&amp;rsquo;t waste time on lengthy exposition, he rather prefers to provide simple but thorough examples. This makes his exercises in things like abstract syntax trees easily understood. All one has to do is work with the basic code examples to see the theory in practice.&lt;/p>
&lt;p>What I liked best about the book is how it removes the noise from the JavaScript ecosystem and lets the reader focus on the software engineering practices. This isn&amp;rsquo;t a book about JavaScript; it&amp;rsquo;s a book about software development built on JavaScript as a foundation. One could easily imagine the same book in python or Ruby or C#. By focusing on how software is built first, and then letting those concepts work through the language, the reader is left with a much stronger foundation for building real applications than one would get from focusing on the language primitives. The book probably isn&amp;rsquo;t a replacement for understanding those primitives, however. It&amp;rsquo;s a book that helps you shift from toy problems into the real world of software engineering. At the same time, the book also isn&amp;rsquo;t a patterns guide, either. It&amp;rsquo;s not meant as a replacement for software architecture at the higher levels. As a software consultant, I think it hits the spot where many people fail. A lot of people go from language primitives to architecture patterns and ignore the practical considerations of how to build applications. Nowhere are these pains felt more than in the enterprise Java space. Thankfully, this isn&amp;rsquo;t a book for that.&lt;/p>
&lt;p>I&amp;rsquo;m actually thrilled I got the chance to review this book for a language I haven&amp;rsquo;t seriously used in many years. I&amp;rsquo;ve been in the software space for 25 years, and this is the kind of book I&amp;rsquo;ll definitely take off the shelf to look at whenever I need a refresher on how to do something the right way. I love that this helps my maintain a broader set of skills. It&amp;rsquo;ll live within arms reach of my desk, for sure.&lt;/p>
&lt;p>&lt;em>Software Design by Example: A Tool-Based Introduction with JavaScript&lt;/em>&lt;br>
Greg Wilson&lt;br>
CRC Press&lt;br>
ISBN 978-1032330235&lt;br>&lt;/p></description><tweet>My friend Greg wrote a really cool book about software engineering! I spent some time with it, and here's my report.</tweet></item><item><title>2023 Travelogue: Bologna, the Boss, and the Balkans</title><link>https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/</link><pubDate>Mon, 29 May 2023 21:02:05 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-bologna-the-boss-and-the-balkans/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/National%20University%20Library%20of%20Kosovo-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/National%20University%20Library%20of%20Kosovo-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/National%20University%20Library%20of%20Kosovo-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/National%20University%20Library%20of%20Kosovo-thumb.jpg" width="600"/></media:content><description>&lt;p>Well, this was a hell of a trip. An epic 11-day journey through Italy and the Balkans.&lt;/p>
&lt;p>Last year I was mindlessly browsing social media when I saw a post that Bruce Springsteen was announcing a European tour, his first time in Europe since I moved here, and his first proper tour since 2017. I&amp;rsquo;d seen Bruce once before, during his Wrecking Ball tour which served as somewhat as a farewell to Clarence Clemons, who had died the year before.&lt;/p>
&lt;p>I&amp;rsquo;m a huge Springsteen fan. It&amp;rsquo;s no exaggeration when I say his music saved my life. So when I saw tickets were available, and better yet, he was playing two shows in Italy during a German holiday weekend, I bought them right away. The end of May this year has more of those Christian holidays in it, with a Thursday holiday, followed by a normal working week, followed by another 3 day weekend. This meant that by investing only 5 days off, I could take a twelve day vacation. Even better that it&amp;rsquo;s on my birthday weekend, too.&lt;/p>
&lt;p>The deal got even sweeter when the NightJet service announced it would resume its Munich-Rome route, and so I began planning what was supposed to be an 11-day trip through six countries, though some circumstances ended up changing a bit of the trip. No matter, let&amp;rsquo;s begin.&lt;/p>
&lt;h2 id="leg-1-berlin-to-bologna">Leg 1: Berlin to Bologna&lt;/h2>
&lt;p>The night train left from Munich on Wednesday, which means I had to find a way to Munich without taking time off. No matter—my company has an office in the city, so I concocted a plan that I knew would leave me with major regrets later. I got up at the crack of dawn and took the 6 AM train from Berlin Hauptbahnhof and headed straight to the office with my bags. The train left a bit late, so after finishing my workday late and heading to Munich Hauptbahnhof, I hopped on board the NightJet and joined five other folks in a sitting car.&lt;/p>
&lt;p>I don&amp;rsquo;t recommend the sitting car. There&amp;rsquo;s hardly any space, no legroom, and the luggage racks are a deathtrap. I know this because the train stopped short twice, twice spilling my baggage onto the other passengers, and very nearly a toddler. This was pretty uncool, even as the bags were quite securely stored. I had hoped to get some sleep nevertheless, and did, but it was in fits and spurts, I probably stole 3 hours of sleep over the course of the trip.&lt;/p>
&lt;p>The train got into Bologna at 5.15a and here I made my second mistake. I had assumed that most major cities' train stations would have some self-service baggage storage. Bologna did not. Eventually, I was able to find an app that would allow me to store the baggage at a nearby 24h hotel, so after a bit of stressing, I made my way there and dropped my rollerbag. This left me several hours to check out the city before I would be able to check into my hotel. I saw the sights and read a bit about the neo-fascist bombing in Bologna in 1980.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/bologna-boss-balkans-2023/Two%20Towers-thumb.jpg" alt="The Two Towers in Bologna, black and white">&lt;/p>
&lt;p>The hotel was actually located in Pieve di Cento, about an hour away by train and bus, so after scavenging up some lunch, I headed over there, exhausted and ready to nap. I would need to get some sleep in before the concert in Ferrara.&lt;/p>
&lt;p>Pieve di Cento is a small exurb of Bologna and I actually quite liked the area, it was rural and charming, despite the annoyance of the hotel not really being in a walkable place. I checked in, took a solid nap, and headed back over to the train up to Ferrara.&lt;/p>
&lt;p>I suppose there&amp;rsquo;s an element to this story I&amp;rsquo;ve left out. While I was on my way from Munich, I checked the weather and learned about the historic flooding happening in Italy, specifically in the region I was visiting. Bologna and Ferrara weren&amp;rsquo;t strongly affected, but many of the surrounding communities were. In fact, I was supposed to head to Rimini the next day before heading off to San Marino. This was obviously not possible, as Rimini was underwater, and I narrowly avoided being trapped in that city. It&amp;rsquo;s still more evidence of the devastating impact climate change is having on Europe, and European leaders need to wake up to the climate disaster facing us.&lt;/p>
&lt;p>Bruce got a lot of criticism for not canceling the concert, but it&amp;rsquo;s also hard to see how that would have helped much. Most of the attendees had already arrived, and Ferrara was far enough from the disaster area as to not disrupt the rescue and recovery efforts. This is not to say that everything was fine. The venue was in a large park and the region had seen some rain. This meant the park was extremely muddy and it was quite a mess; I was thankful for bringing washable shoes.&lt;/p>
&lt;p>The next challenge awaited me: my hotel in Pieve di Cento was not reachable by public transportation at the end of the concert. So I ducked out of the Ferrara show a little early to find a cab. Covered in mud, I painfully walked around the venue until I could find a cab that would make the 45 minute drive. I got back and immediately hit the shower before passing out hard.&lt;/p>
&lt;h2 id="leg-2-bologna-to-rome-and-the-vatican">Leg 2: Bologna to Rome and the Vatican&lt;/h2>
&lt;p>Because of the floods, my San Marino stay was canceled, and I was lucky to find a cheap open room in Bologna. So I headed back there and spent the day reading and recovering. I went out to a pizza restaurant and had the best pizza I&amp;rsquo;ve ever had. It&amp;rsquo;s true; pizza in Italy is something different.&lt;/p>
&lt;p>The fast train to Rome left midday on Saturday, and I made it to Rome in time to stash my bags and get to my scheduled visit of the Vatican Museums and the Sistine Chapel. As expected, this was essentially a visit spoiled by the mass of tour groups, but who am I to complain about being a tourist while being one myself. I&amp;rsquo;m glad I saw the Sistine Chapel, but honestly it&amp;rsquo;s not the best viewing experience. It&amp;rsquo;s impressive, but a little dark, and it&amp;rsquo;s hard to really take it all in while craning your neck. I guess Michaelangelo had it worse. It wasn&amp;rsquo;t a religious experience for me. I suppose I have gone through some of the Catholic rites, but I wasn&amp;rsquo;t brought up in the church and know little about its rituals.&lt;/p>
&lt;p>Checking into my hotel, which was a bit outside the city (hotel rates were obscene), I got ready for Sunday, where I&amp;rsquo;d see Bruce again, this time at Circo Massimo in the center of Rome. I headed into town early Sunday, taking my camera along to see some of the typical sights—the Pantheom, the Colosseum, all that good stuff. Honestly, I&amp;rsquo;m glad I did. The Colosseum is an impressive building, and being surrounded by that much history is a privilege. After a lot of travel, I took the next day as a rest day and stayed in, doing some reading and writing. Honestly for as expensive as the hotel was, it was nice to make use of some of the amenities.&lt;/p>
&lt;p>The Springsteen show in Ferrara was great, but honestly the Rome show was a disappointment. Circo Massimo is, let&amp;rsquo;s be honest, a terrible venue. It&amp;rsquo;s long and narrow, which means that to have a good experience you need to have a lot of video screens spread out. There&amp;rsquo;s no easy way down to the general admission area, and Rome, too, had rain, which meant it was also a mudfest. To make matters worse, there was a major synchronization issue with the audio and video—actually I think the audio was delayed. This made it hard for Bruce to work the crowd at all. The concessions situation was a nightmare, and I made the right call by spending the entire time up on the wings of the venue. I ducked out a couple songs early—I knew his encore would mostly be some of the stuff I don&amp;rsquo;t like as much. I&amp;rsquo;m actually a huge Springsteen fan, it&amp;rsquo;s no exaggeration to say that his music saved my life more than once. I&amp;rsquo;d have been sad if this was my only chance to have seen him, but it was my third show (after the one in Ferrara), and I&amp;rsquo;d already had the privilege of seeing him play Jungleland in Charlottesville a decade ago, so there&amp;rsquo;s only a few more songs I&amp;rsquo;d like to get to see him perform sometime.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/bologna-boss-balkans-2023/Colosseum-thumb.jpg" alt="National University Library of Kosovo">&lt;/p>
&lt;h2 id="leg-3-rome-to-vienna-to-pristina">Leg 3: Rome to Vienna to Pristina&lt;/h2>
&lt;p>After the show in Italy, I wanted to take the week to explore a bit more of the Balkans. It&amp;rsquo;s the largest area in Europe I have unexplored, so I&amp;rsquo;ve been trying to get to that area more and more. I went to Tirana last year and loved it, and I was in &lt;a href="https://emilygorcenski.com/post/2023-travelogue-sofia/">Sofia&lt;/a> just recently, so I figured I&amp;rsquo;d continue working my way up. I bought flight to Pristina from Rome, but it involved a 12-hour layover in Vienna. I had never been to Austria before (somehow, despite dating an Austrian!), so I set out for the airport and explored the city center a bit.&lt;/p>
&lt;p>After a day stomping around Vienna, I headed off to Pristina, Kosovo. The country delcared independence a decade and a half ago, and lately there&amp;rsquo;s been continued tensions in some regions. Pristina was fine, however, and I was thrilled to see that it had a beautiful and vibrant downtown area. I&amp;rsquo;ve been wanting to see the National University Library, which is this fantastic brutalist structure with white domes and covered in a metal mesh. It&amp;rsquo;s a really fantastic building.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/bologna-boss-balkans-2023/National%20University%20Library%20of%20Kosovo-thumb.jpg" alt="National University Library of Kosovo">&lt;/p>
&lt;p>Kosovo is an interesting country, it&amp;rsquo;s clear that it&amp;rsquo;s a country trying to find itself. There&amp;rsquo;s a lot of development, and some things that are being reconstructed. It&amp;rsquo;s also not an area accustomed to travelers, although I had no problems speaking English there. After the flooding in Italy, I was worried that my tendency to be forever on the margin of disaster would strike. Kosovo is still going through unrest in some parts, and sure enough, barely after I left, there was a lot of violence in the north. I hope that cooler heads prevail, and I&amp;rsquo;m glad I got to see the city.&lt;/p>
&lt;h2 id="leg-4-pristina-to-skopje">Leg 4: Pristina to Skopje&lt;/h2>
&lt;p>To round out my trip, I decided to spend a couple days in one more country: North Macedonia. I checked the internet and it looked like there was a daily train at 7 AM from Pristina to Skopje, so I got up early and walked the 15 minutes to the train station. This was my first mistake. Apparently, the station had closed months ago, and the building had been gutted. Undeterred, I knew there was at least one daily bus in the afternoon, so I walked another 20 minutes, rollerbag in tow, to the bus station. On arriving, I bought a ticket and learned that the bus was leaving in only five minutes! The bus cost about 8 euro.&lt;/p>
&lt;p>I made it in time and enjoyed a rather calm drive through the Balkans. This was really beautiful land, the rolling mountains reminded me of the Blue Ridge, and the trip was short enough that I was able to simply zone out and enjoy the scenery. A quick stop at the Kosovo border crossing, where we didn&amp;rsquo;t need to get off the bus, followed by the Macedonian crossing, which we had to walk through, and we were well on the way to Skopje.&lt;/p>
&lt;p>As I got there, I was stunned: Skopje is an amazing city! The city had gone through a lot of development in the past decade, perhaps with some, um, questionable political motivation, but it felt quite modern and cosmopolitan. The people there were super friendly and I greatly enjoyed the Vardar riverfront. There&amp;rsquo;s a lot of neoclassical architecture there and wide, tree-lined pedestrian areas. Skopje was incredible, it&amp;rsquo;s definitely a city I&amp;rsquo;ll go back to.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/bologna-boss-balkans-2023/%D0%90%D1%80%D1%85%D0%B5%D0%BE%D0%BB%D0%BE%D1%88%D0%BA%D0%B8%20%D0%BC%D1%83%D0%B7%D0%B5%D1%98%20%D0%BD%D0%B0%20%D0%A0%D0%B5%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%20%D0%9C%D0%B0%D0%BA%D0%B5%D0%B4%D0%BE%D0%BD%D0%B8%D1%98%D0%B0-thumb.jpg" alt="The Macedonian Architecture Museum">&lt;/p>
&lt;p>Exhausted, after 11 days of travel I was happy to grab a cab to the airport and head back to Berlin&amp;hellip; on my birthday! I guess this trip was a birthday present to myself, a prime-numbered birthday, and a birthday in my middle ages, where I get to live my dreams of traveling the world. Five countries (almost six!) in eleven days. Two Bruce Springsteen shows. Museums, art, and architecture. What could be better?&lt;/p>
&lt;p>Italy, Vatican City, Austria, Kosovo, and North Macedonia now mean I have been to thirty countries in Europe.&lt;/p></description><tweet>Bologna, the Boss, and the Balkans. 2023 Travelogue: Berlin 🚝 München 🚝 Bologna 🚝 Ferrara 🚝 Rome 🛫 Vienna 🛫 Pristina 🚌 Skopje 🛬 Berlin</tweet></item><item><title>Bologna, the Boss, and the Balkans 2023 Photos</title><link>https://emilygorcenski.com/post/bologna-the-boss-and-the-balkans-2023-photos/</link><pubDate>Mon, 29 May 2023 10:51:41 +0200</pubDate><guid>https://emilygorcenski.com/post/bologna-the-boss-and-the-balkans-2023-photos/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/German%20Telekom-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/German%20Telekom-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/German%20Telekom-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/bologna-boss-balkans-2023/German%20Telekom-thumb.jpg" width="600"/></media:content><description/><tweet>I undertook an epic, 11-day trip through Italy, Austria, and the Balkans. Here are a couple photos.</tweet></item><item><title>Book Report: Like a Thief in Broad Daylight, by Slavoj Žižek</title><link>https://emilygorcenski.com/post/book-report-like-a-thief-in-broad-daylight-by-slavoj-%C5%BEi%C5%BEek/</link><pubDate>Sun, 28 May 2023 11:54:31 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-like-a-thief-in-broad-daylight-by-slavoj-%C5%BEi%C5%BEek/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/dogwood.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/dogwood.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/dogwood.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/dogwood.jpeg" width="600"/></media:content><description>&lt;p>Žižek is a popular debate among the left. Something of a post-Marxist, Žižek has the ability to infuriate just about everyone on the left, while also somehow hitting many of the right notes. Part of this is because of how he defines &amp;ldquo;the left.&amp;rdquo;&lt;/p>
&lt;p>I&amp;rsquo;m not really one for reading political philosophy. In the eternal debate of theory v. praxis, I fall so far on the praxis side that I&amp;rsquo;m perpetually at risk of falling off the ledge. But it&amp;rsquo;s true, one should read some theory from time to time, and since Žižek is so often discussed in leftist circles, when I found myself taking shelter from the rain in the English section of a Roman bookstore with nothing to read, I decided to pick up &lt;em>Like a Thief in Broad Daylight&lt;/em>, Žižek&amp;rsquo;s 2018 evaluation of &amp;ldquo;the Left&amp;rdquo; in reflection of ascending technocapitalism.&lt;/p>
&lt;p>The thing about Žižek is that sometimes he absolutely nails some points, and then as soon as you&amp;rsquo;ve found yourself nodding along in agreement, he comes out with the most incredible head-ass take you&amp;rsquo;ve seen in a while. I&amp;rsquo;ll save the exposition: I loved his assessment of the left&amp;rsquo;s failure to materialize true revolutionary change, his presentation of the paradoxes of the far right (for instance, &amp;ldquo;Islamophobic respect for Islam&amp;rdquo;), and his clearheaded assessment of how choosing candidates like Macron simply reaffirm the creation of the conditions that allow the fascist right to emerge. I will spend more of my time here focusing on his ridiculous positions on identity politics, Charlottesville, and the anarchist left.&lt;/p>
&lt;p>It&amp;rsquo;s pretty hard actually to read anything substantial of politics in the Trump era without a mention of Unite the Right, and without fail Žižek wades into these waters. He begins with a discussion of how the &amp;ldquo;Liberal left&amp;rdquo; spent a not insignificant amount of time rehabilitating the image of Robert E. Lee and praises John Brown. He&amp;rsquo;s not incorrect here, morally or factually, although the breadth of his characterization of &amp;ldquo;the Left,&amp;rdquo; which ranges from Clintonite liberals to radical Marxist-Leninists, is so puzzling that it took my eyebrow three days to fall back into its proper place. Žižek then quotes Jamil Khader who states, &amp;ldquo;[Trump&amp;rsquo;s] points about violence on &amp;lsquo;many sides&amp;rsquo; and that there were &amp;lsquo;some very fine &lt;em>people&lt;/em> on both &lt;em>sides&lt;/em>&amp;rsquo; are symptomatic of the same humanist strategies that liberals and leftists had used during the culture and canon wars to relativize conflicts&amp;hellip;&amp;rdquo; Žižek doesn&amp;rsquo;t present any understanding of the anarchist or antifascist left in this book, though he positions himself as he does. The real issues are both simpler and more complex than what he argues. But I suspect this is a difficulty in trying to observe the left from 30,000 feet as he does; to my knowledge, Žižek isn&amp;rsquo;t in any of the group chats, or maybe I&amp;rsquo;m simply not cool enough to be in the ones he&amp;rsquo;s in.&lt;/p>
&lt;p>Žižek presents this as a form of &amp;ldquo;multiculturalism,&amp;rdquo; essentially arguing that Trump&amp;rsquo;s comments emerge from a centrist fixed mindset which insists that both sides have valid and valuable perspectives, and sides emerge simply as differences of opinion arising from differing perspectives on the same problem. He argues, &amp;ldquo;[w]hat lurks beneath the fight for statues of Lee is simply the refusal to bring the American revolution to an end.&amp;rdquo; He connects this to a claim that &amp;ldquo;Jefferson is an important link in the chain of modern emancipatory struggles.&amp;rdquo; (He does acknowledge Jefferson as a slave owner).&lt;/p>
&lt;p>There are two problems in this. First of all, I was fucking there, man. Our fight for statues had nothing to do with the American revolution, not even in the abstract sense. The fight for the statues had nothing to do with Jeffersonian ideals; if we had our way, we&amp;rsquo;d be tearing down the Jefferson statue before the Rotunda, too. Second, &lt;em>which left&amp;rsquo;s response&lt;/em>? Do we discount the left in Charlottesville, who started this fight, fought this fight, and continue this fight? Or does that simply get erased in some kind of insistence to glue this to some broader post-Marxist confusion? Žižek&amp;rsquo;s question in this book is whether we can continue to act local while thinking global, but he doesn&amp;rsquo;t seem to know what acting local actually looks like, nor does he accept that sometimes, &amp;ldquo;the Left&amp;rdquo; thinks local, too. What we did in Charlottesville does not belong to some sort of revolutionary leftist struggle to any degree more than what &lt;em>we&lt;/em> want it to be.&lt;/p>
&lt;p>The gap in Žižek&amp;rsquo;s reasoning is so large that the &lt;em>Ever Given&lt;/em> could sail through without difficulty. It reflects his disdain for identity politics. Look, &lt;em>mea culpa&lt;/em> in contributing to a particularly insipid form of identity politics in the vaguely post-2014ish era, and I agree with much of Žižek&amp;rsquo;s and the radical left&amp;rsquo;s disdain for identity politics as a liberalizing force that suppresses revolutionary ideals. But through his rambling discourse, which detours through &lt;em>La La Land&lt;/em> and &lt;em>Black Panther&lt;/em>, trying to shoehorn more contemporary trends into a broader political discourse (while &lt;em>Black Panther&lt;/em> remains beloved, &lt;em>La La Land&lt;/em> has had little lasting cultural impact), he swings and misses at the Me Too movement.&lt;/p>
&lt;p>He aims particularly intensely at a &amp;ldquo;trend&amp;rdquo; of creating sexual contracts as a form of consent negotiation, elevating this concept to a level much higher than it ever really reached. (I am sure some people have attempted to create sexual contracts, including on the blockchain, but plenty of feminist writers have thoroughly dismantled the idea as meaningful or practical, and I need not cover it here). Žižek here invents a thing to get mad at, and then gets mad at it. It gets worse when he describes an example of some women at a college pool who were being sexually harassed by construction workers working next door. The solution was to put a divider between the construction site and the pool, exemplifying what he considers a class divide and also a victory for identity politics in the battle against class struggle. His argumentation was that it was &amp;ldquo;obvious&amp;rdquo; that the women were predominantly offended because their harassers were hispanic, working class people. This implication is disgusting at its core.&lt;/p>
&lt;p>Žižek argues against the popular social justice idea that only people of X class can speak on issues that pertain to X, saying that it is only trivially philosophically true that, e.g. trans people can speak to trans experience. To some extent I agree, and I am rather frustrated myself by the way that individual identity axes override what should be intersectional discussions, examples of which I will &lt;em>not&lt;/em> provide to avoid further discursive discombobulation, but Žižek misses the power dynamics of the issue. The problem is not that cisgender people are unable to speak on transgender issues. The problem is that cisgender people are speaking to cisgender policymakers on transgender issues and depressing transgender concerns to a second class right, one that can be resolved if and only if all cisgender concerns are perfectly managed. The problem is cisgender people don&amp;rsquo;t know what the fuck they are talking about, and never step back and shut up.&lt;/p>
&lt;p>Any 21st century revolutionary struggle is going to have to respect the civil rights struggles and the multiculturalism that the liberal state has set the groundwork for. Marxist-Leninists can dream of recreating the gulags but the rest of us know that they&amp;rsquo;ll be populated by minorities just like the capitalist prisons of today. Žižek does accurately point out that the left has failed to materialize revolutionary change, and as long as class reductionists fail to mobilize people based on the things they care about, that revolutionary change will continue to fail. &lt;em>Like a Thief in Broad Daylight&lt;/em> already feels dated and never did live up to its back-cover promise to explore &amp;ldquo;our brave new world of Big Tech, [where] work is automated and money melts into air.&amp;rdquo; I want to read that book. This wasn&amp;rsquo;t it.&lt;/p></description><tweet>While traveling, I ran out of books. So to punish myself, I picked up some Žižek.</tweet></item><item><title>Book Report: Midnight's Children by Salman Rushdie</title><link>https://emilygorcenski.com/post/book-report-midnights-children-by-salman-rushdie/</link><pubDate>Sat, 27 May 2023 16:22:44 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-midnights-children-by-salman-rushdie/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/modern-library/karthik-chandran-4e0PvfHClnI-unsplash.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/modern-library/karthik-chandran-4e0PvfHClnI-unsplash.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/modern-library/karthik-chandran-4e0PvfHClnI-unsplash.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/modern-library/karthik-chandran-4e0PvfHClnI-unsplash.jpg" width="600"/></media:content><description>&lt;p>Salman Rushdie&amp;rsquo;s magical realism retelling of the history of India is as relevant now as when it was first published in 1981. It&amp;rsquo;s strange to think that more time has passed from that date to now, than from India&amp;rsquo;s 1947 independence to that date.&lt;/p>
&lt;p>&lt;em>Midnight&amp;rsquo;s Children&lt;/em> is often compared to Gabriel García Márquez&amp;rsquo;s &lt;em>One Hundred Years of Solitude&lt;/em> and for good reason. It&amp;rsquo;s a fantastic exploration of India&amp;rsquo;s history through the lens of Saleem Sinai, one of the first children born at the stroke of midnight on the day of India&amp;rsquo;s independence, August 15, 1947. Saleem and one thousand other children born in the first hour of the nation&amp;rsquo;s birthday are endowed with magical gifts; the closer to midnight their birth, the more powerful their gifts. Saleem, being the first born, has the strongest powers of all and can read minds and communicate with the other midnight&amp;rsquo;s children.&lt;/p>
&lt;p>In fact, the book begins much earlier, telling the stories of Saleem&amp;rsquo;s family and their roots in Kashmir. The book bounces through historical events, from the &lt;a href="https://en.wikipedia.org/wiki/Jallianwala_Bagh_massacre">Jallianwala Bagh massacre&lt;/a> to the case of &lt;a href="https://en.wikipedia.org/wiki/K._M._Nanavati_v._State_of_Maharashtra">Commander K. M. Nanavati vs. State of Maharashtra&lt;/a>, where story is told in fantastical fashion and the character is introduced as Commander Sabarmati. Saleem&amp;rsquo;s destiny, and by extension his family&amp;rsquo;s, weaves through these events, from the partition riots to the &lt;a href="https://en.wikipedia.org/wiki/Samyukta_Maharashtra_Samiti">Samyukta Maharashtra Samiti&lt;/a> protests. Saleem loses his telepathic powers during an extended stay in Pakistan—his family is Muslim—and gains in its place an enhanced sense of smell, able to sniff out trouble well in advance. Saleem ends up in the Sundarban jungle, using his sense of smell as a guide, and after a supernaturally long period, regains his mental connection and rejoins India&amp;rsquo;s destiny.&lt;/p>
&lt;p>The latter part of the book connects Saleem with Indira Gandhi&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/The_Emergency_(India)">Emergency&lt;/a> and the book is a scathing criticism of the political overreach of the Gandhi administration. Saleem&amp;rsquo;s powers end as the Emergency ends, his fate is connected with the fate of the nation finding its way. He has a son, not his by blood but the son of his rival, Shiva, the second of the Midnight&amp;rsquo;s Children and the second most powerful of them all, and his son&amp;rsquo;s fate is tied with India&amp;rsquo;s march forward into adulthood.&lt;/p>
&lt;p>&lt;em>Midnight&amp;rsquo;s Children&lt;/em> is a book laden with symbolism and mysticism. I read it before but was not clever enough to know and understand its historical allegory. Reading it today, I can only help but wonder what the book&amp;rsquo;s sequel could look like. The book is a treasure, and as a gateway into understanding the deeply complex history of the world&amp;rsquo;s most populous nation it serves well.&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;br>
&lt;small>Photo by &lt;a href="https://unsplash.com/@karthikchandrasekar?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Karthik Chandran&lt;/a> on &lt;a href="https://unsplash.com/photos/4e0PvfHClnI?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/small>&lt;/p></description><tweet>India's magical history remains relevant now as ever. Knocking off No. 90 of 100 in the Modern Library list, with Salman Rushdie's Midnight's Children</tweet></item><item><title>Florida's fascists' forthcoming failures</title><link>https://emilygorcenski.com/post/floridas-fascists-forthcoming-failures/</link><pubDate>Thu, 25 May 2023 14:13:03 +0200</pubDate><guid>https://emilygorcenski.com/post/floridas-fascists-forthcoming-failures/</guid><description>&lt;p>There&amp;rsquo;s no question that Ron DeSantis&amp;rsquo;s attacks on democracy represent an aggressive, fascistic step towards the evangelical vision of american christian theocracy. There should also be no doubt that it will fail.&lt;/p>
&lt;p>There&amp;rsquo;s a considerable amount of concern and fear about the direction Florida is heading. Florida&amp;rsquo;s legislature is passing bills hostile to civil rights and its administrative bodies are engaging in a coordinated assault on anyone who doesn&amp;rsquo;t fit the white evangelical vision of America as a theocratic ethnostate. These attacks have targeted trans people, of course, as we represent merely the latest in a sequence of right-wing bogeymen, but also Black folks, liberals, and anyone else who Republicans think they can hurt. Republican hatred is a big tent; it&amp;rsquo;s a politics built on fear and fragility, so there&amp;rsquo;s no shortage of people they can despise.&lt;/p>
&lt;p>It&amp;rsquo;s important to recognize that this fascist step forward was built on and fuelled by social media drama, so it&amp;rsquo;s fitting that Ron DeSantis kicked off his presidential campaign with an embarrassing and catastrophic failure on Elon Musk&amp;rsquo;s Twitter Spaces. This, too, should have been predictable; Musk&amp;rsquo;s track record on launch failures is robust. Nevertheless, I digress. The point is that Republican strategy has been built on &amp;ldquo;triggering the libs&amp;rdquo; for the past seven years, even as this strategy has progressively led to deeper and deeper Republican electoral failures. Republicans are evil, not clueless; they know that the only way to stop the bleeding is to assault democracy itself while we&amp;rsquo;re all outraged on Twitter.&lt;/p>
&lt;p>Trans people in particular, as some of the primary and most vulnerable targets of this hatred, have been raising alarms about this growing fascist threat. These alarms might be counterproductive—more on that in a moment—but they point to the many similarities between Florida today and Nazi Germany in the 1930s. Often cited is that one of the targets of the infamous Nazi book burning in May 1933 was Magnus Hirschfeld&amp;rsquo;s Institut für Sexualwissenschaft (Institute of Sexology), which at the time was the home of the most advanced and progressive research on gender and sexuality in the world. The comparisons are apt but overstated; the American queer community has a history of overrepresenting the extent to which Nazis targeted homosexuals,&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> though this perhaps balances against the broader trend of omitting these narratives from Holocaust discourse. It was &lt;a href="https://edition.cnn.com/2023/01/27/europe/germany-nazi-lgbt-victims-intl/index.html">only this year&lt;/a> that the German government put queer people into frame during its Holocaust remembrance.&lt;/p>
&lt;p>Hirschfeld was targeted during the Aktion wider den undeutschen Geist partly because of his support of homosexuals' and women&amp;rsquo;s rights, partly because of his outspoken politics against the Nazi party, and largely because he was a Jewish scholar. The stain on human history that these raids represent nevertheless does provide an entrypoint into understanding how the Nazi party cemented its power and consequently also gives us insight into how and why DeSantis will fail and what we can do to accelerate that failure.&lt;/p>
&lt;p>The historian &lt;a href="https://de.wikipedia.org/wiki/Ulrich_Schneider_(Historiker)">Ulrich Schneider&lt;/a>&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> writes:&lt;/p>
&lt;blockquote>
&lt;p>Another cause for the failure of the Weimar Republic can be seen in that too little support for democratic principals was given by elites and by the population. Weimar was a &amp;ldquo;Republic without Republicans.&amp;rdquo; In fact, the political anchoring of the parliamentary democracy was in the (Kaiserreich-socialized) ruling circles scarcely pronounced.&lt;/p>
&lt;/blockquote>
&lt;p>Schneider goes on to describe how the old ruling elites were allowed to stay in positions of power, and step by step the anti-republican forces were allowed to gather in strength, step by step. In this reading, assaults like the &lt;a href="https://en.wikipedia.org/wiki/Nazi_book_burnings">Aktion wider den undeutschen Geist&lt;/a> became a symptom of a corruption of democratic ideals, and not the cause of one.&lt;/p>
&lt;p>In examining Florida, I believe that these are the deeper concerns to have, and these are also the indications of how we can roll back the damage that&amp;rsquo;s been done. I am naturally deeply concerned by the assaults on transgender people in Florida, but I believe that this is a symptom of a deeper sickness in our democracy, one that scares me a lot more.&lt;/p>
&lt;p>I&amp;rsquo;ve &lt;a href="https://emilygorcenski.com/post/the-mythologies-of-genocide/">written before&lt;/a> how the use of the word &amp;ldquo;genocide&amp;rdquo; is unsuited to describe what&amp;rsquo;s happening in Florida, not only because it is incorrect&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> and &lt;a href="https://emilygorcenski.com/post/stop-catastrophizing-trans-hate/">can lead to undue panic&lt;/a>, but because it focuses on the wrong curative action. Fascism won&amp;rsquo;t be defeated simply by delaying its agenda. The roots must be poisoned and burned.&lt;/p>
&lt;p>One lesson to take from Nazi Germany is the potential of genocide and the Holocaust, but taking this lesson alone would be incomplete. There are civil rights struggles all around the world; most of them don&amp;rsquo;t lead to the Holocaust or to genocide. The lesson of Nazi Germany is not only the potential outcomes and the steps that led to them, but also in the actions not taken and the guardrails not put in place. Setting the standard of objectionability so high as genocide risks allowing more mundane transgressions against civil rights to slip in unopposed, step by step. In other words, we should care about transgender rights not (only) because the attack on transgender people may presage a potential future genocide, but because a society based on the principles of human dignity and democracy demands the equal and just treatment of all who live in it today.&lt;/p>
&lt;hr>
&lt;p>Florida&amp;rsquo;s crackdown on queer people is hardly unique in the world. In 2014, &lt;a href="https://en.wikipedia.org/wiki/Istanbul_Pride">Istanbul Pride&lt;/a> attracted an estimated 100,000 marchers. The following year, Istanbul police started cracking down on demonstrators, using water cannons to disperse the crowd and using flimsy &amp;ldquo;public safety&amp;rdquo; excuses to justify the ongoing ban of the event. Despite this, Istanbul takes place each year (albeit with a pause, like elsewhere, due to the COVID-19 pandemic). Each year, there are dozens of arrests, sometimes hundreds. But the march still continues.&lt;/p>
&lt;p>In Viktor Orbán&amp;rsquo;s Hungary, which &lt;a href="https://www.france24.com/en/20190210-hungarys-orban-vows-defence-christian-europe">he loudly proclaims to be a Christian country&lt;/a>, &lt;a href="https://www.thepinknews.com/2023/04/14/hungary-viktor-orban-lgbt-parent-law/">anti-LGBT laws&lt;/a> have been pushed forward. These laws include repressive restrictions on free speech, including banning education material, forbidding people from displaying pro-LGBT merchandise in shop windows, and more. The Hungarian Pride community did not back down; in fact, &lt;a href="https://budapestpride.com/">Budapest Pride&lt;/a> organizes over a hundred events each year and draws tens of thousands in support.&lt;/p>
&lt;p>Similar stories can be seen in Romania, a country that got &lt;a href="https://www.euronews.com/my-europe/2020/06/17/romania-gender-studies-ban-students-slam-new-law-as-going-back-to-the-middle-ages">a lot of publicity for banning Gender Studies&lt;/a> in universities, and Poland, which vocally announced the formation of &amp;ldquo;anti-LGBT&amp;rdquo; zones in the country. It&amp;rsquo;s not hard to find a lot of news about all of these queerphobic crimes against human rights. Perhaps it&amp;rsquo;s a little harder to find the good news. Romania&amp;rsquo;s &lt;a href="https://balkaninsight.com/2020/12/16/romanian-court-scraps-law-banning-gender-studies/#:~:text=The%20Constitutional%20Court%20of%20Romania,in%20the%20country's%20education%20system.">highest court overturned the Gender Studies ban&lt;/a> shortly after it was put into place. The &lt;a href="https://ec.europa.eu/commission/presscorner/detail/en/IP_22_2689">European Commission&lt;/a> started infringement proceedings against Hungary for breaching the EU Charter of Fundamental Rights. Perhaps most noteworthy is the ongoing battle known as the &lt;a href="https://en.wikipedia.org/wiki/Polish_constitutional_crisis">Polish rule-of-law crisis&lt;/a>, of which anti-LGBT sentiment is but one leg of a larger anti-democratic race taking place in Poland. The European Union has reacted strongly, and many Polish cities found themselves quickly cut off from some sources of EU funding.&lt;/p>
&lt;p>The wheels of democracy spin slowly, but they spin in the right direction. There are lessons in how our queer peers and institutions globally react to their oncoming threats. Undoubtedly, there are almost surely imperfections in how Pride events in Budapest or Istanbul or Bucharest or Krakow are organized. But let us not, as Žižek says,&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> attack the strongest link in the chain instead of the weakest. The democratic process is not limited to the official powers of courts and legislative bodies, but falls also on the people to resist.&lt;/p>
&lt;hr>
&lt;p>This is not to say that courts and legislative bodies are to be ignored. Street antifascism is a great response to street fascism. There&amp;rsquo;s a real glory to be had when a Proud Boy has a tooth knocked out in self-defense. But when the fascism has reached the governor&amp;rsquo;s office, there&amp;rsquo;s limited options that remain. In fact, there are exactly three paths through which Florida can be fixed: through the courts, through legislation, and through uprising.&lt;/p>
&lt;p>The battle in the courts is already taking place, and as much a fan of uprising that I am, the legal battles are an interesting watch. Like in Poland, Florida may have overreached in a self-harming way. In the case &lt;a href="https://www.courtlistener.com/docket/67082532/doe-v-ladapo/">&lt;em>Doe v. LADAPO&lt;/em>&lt;/a> (N.D. Florida 4:23-cv-114), parents of transgender minors are suing over the recently-passed SB 254. The legal argument they make is an interesting one: rather than attacking the law on the basis of &lt;em>healthcare rights&lt;/em>, such as those guaranteed under Section 1557 of the Affordable Care Act, &lt;a href="https://www.courtlistener.com/docket/67082532/30/doe-v-ladapo/">they&amp;rsquo;re arguing on the basis of &lt;em>parental rights&lt;/em>&lt;/a>. This argument is interesting because it represents a sort of reversal on the evangelical right.&lt;/p>
&lt;p>The &lt;a href="https://en.wikipedia.org/wiki/Parents%27_rights_movement">parental rights movement&lt;/a> is a decades-long evangelical project that attempts to constitutionally encode the absolute right of a parent to control their child. This includes factors of education, healthcare, and legal rights. The parental rights movement is an extremist movement that fits into the same theocratic goals I mentioned above. It&amp;rsquo;s important to understand that that right&amp;rsquo;s hatred of LGBT+ people is not due to ignorance; it&amp;rsquo;s a necessary component of their white christian ethnostate project. The same is true with parental rights.&lt;/p>
&lt;p>In moving for a preliminary injunction to block SB 254, plaintiffs in &lt;em>Doe&lt;/em> argue that the law interferes with their parental rights. They cite substantial case law, including Supreme Court&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and 11th Circuit&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> (of which Florida is a part) precedent, arguing that the laws establish that parents, and not the state, are best positioned to decide on the medical needs of their children. The legal arguments appear sound; they establish that transgender kids are treated medically, in conjunction with nationally-accepted best practices, and that prior case law establishes a &lt;em>strict scrutiny&lt;/em> standard of judicial review. Strict scrutiny means that the government&amp;rsquo;s infringement on rights must have a legitimate aim and be narrowly construed.&lt;/p>
&lt;p>This argument is interesting. If a court corruptly tries to reject their argument, then the court also risks weakening parental rights. If the court accepts the argument, parental rights aren&amp;rsquo;t really strengthened at all, as it simply affirms existing precedent. I&amp;rsquo;m not an expert, but there doesn&amp;rsquo;t seem to be a lot of wiggle room. A corrupt district court may still find an excuse, as might a corrupt circuit court, even one assessing the case &lt;em>en banc&lt;/em>. Any ruling against the plaintiffs might open a can of worms to leverage the courts for all sorts of similar arguments that go &lt;em>against&lt;/em> the right.&lt;/p>
&lt;p>It is exactly this sort of thing that we can and should prepare for. Many legal experts find &lt;a href="https://www.eqfl.org/Anti-Trans-Care-Bill-Filed-Senate">various elements of unconstitutionality&lt;/a> in what Florida is doing. Florida&amp;rsquo;s democratic overreach is not without a whole array of blowback effects. We should be looking for test cases and topping up legal funds. There&amp;rsquo;s very little chance that Florida&amp;rsquo;s laws can stand up in court.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> If they do, we can and should be prepared to turn them against the right. I&amp;rsquo;ve been in a few fights in my life and I can tell you with certainty that the only thing honor gets you is a black eye. Fight dirty and fight like hell.&lt;/p>
&lt;p>While I have a little more faith in the courts than many, we shouldn&amp;rsquo;t put too much faith in the same system that brought us to this point. Which is why we shouldn&amp;rsquo;t take uprising off the table. In America, we live in a state of saturated outrage, anger flows through us in dynamic equilibrium, like too much sugar in a cup of coffee. Every new outrage displaces some older one, and this cycle repeats with ceaseless rapidity. It&amp;rsquo;s popular to scream at cisgender people to wake up, but what are they supposed to wake up and do? The counter-productivity I mentioned before in constant references to the Holocaust is that they set the bar to an impossible level. Genocides happen neither often nor overnight, but rather only under conditions of substantial social decay. What do we expect people to do with the outrage to help prevent that decay? Let me suggest a few constructive actions anyone can take, regardless of what state they live in:&lt;/p>
&lt;ol>
&lt;li>Work with your own legislators to prevent something similar from happening in your state, city, county.&lt;/li>
&lt;li>Run for local office, particularly things like library boards or other administrative roles. This is often boring as dirt but you can beat the fascists, who often slide in unopposed.&lt;/li>
&lt;li>Donate to your local queer rights organization. The Equality Federation is not perfect, but again, let&amp;rsquo;s not go after the strongest links. I have my own gripes about the ACLU, but I&amp;rsquo;ll follow my own advice here and save that for another post.&lt;/li>
&lt;li>Attend Pride. Even if it&amp;rsquo;s been &amp;ldquo;outlawed.&amp;rdquo; Especially if it&amp;rsquo;s been outlawed.&lt;/li>
&lt;li>Denounce corporate Pride. The time for parties and celebrations is over. The time for loudly demanding equality is back.&lt;/li>
&lt;li>Network with and support your local activist groups, especially immigrant and Black activist groups. As much as the latest trend is to assault trans people, we&amp;rsquo;re spring chickens in the fight for civil rights and we should be following the leadership of others. We&amp;rsquo;re far from the first groups to be targeted by today&amp;rsquo;s Republicans.&lt;/li>
&lt;li>Stop spreading panic on social media. It does nothing and adds nothing to drown in a sea of everyday negativity. For some reason, Americans are obsessed with raising awareness, as if problems magically go away when people find out about them. I&amp;rsquo;d rather we be obsessed with raising barricades. Or money.&lt;/li>
&lt;li>Learn about queer struggles across time and space. This means understand our history and understand what is happening around the globe. There is a lot to learn about how people survive(d) under conditions that are considerably and objectively worse than what we have anywhere in America in 2023.&lt;/li>
&lt;/ol>
&lt;p>As we explore these histories, it&amp;rsquo;s important not to forget that the trans rights fight today probably has more in common with the civil rights struggles in the latter half of the 20th Century in the US than it does with Nazi Germany. It&amp;rsquo;s easy to look at the &lt;em>mechanics&lt;/em> of Nazi Germany while overlooking the &lt;em>scale&lt;/em>, even in the early days. The Nazis grabbed power because of the lack of democratic speedbumps to retard their progress. No genocide has ever been prevented by warning about genocide. But several have been prevented by protecting a people&amp;rsquo;s right to self-determine. It is not too late for us to strengthen the bulwark of democracy.&lt;/p>
&lt;p>Of course, a critical element of that democracy is the ability of people to make themselves heard. I mentioned earlier that there are three paths to resolving the situation in Florida—the courts, the legislature, and uprising—and of these I have covered the first two. It&amp;rsquo;s important to prepare equally well for the third.&lt;/p>
&lt;p>Uprising can look like getting in the streets and shutting things down, but it can also look like upheaving the social norms that govern us.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> Maybe you can&amp;rsquo;t risk arrest at a sit-in, but you can cover the bail of someone who can. Maybe you can&amp;rsquo;t march in the streets, but you can be ready to tell a friend or family member why you&amp;rsquo;re not OK with transphobia. If people in Istanbul can support each other marching headfirst into a water cannon, surely we can find ways to support trans people to march headfirst into a water closet. Ask yourself, how will you respond to a Karen playing bathroom cop? How will you help people retain access to their meds, or provide access to the forbidden books?&lt;/p>
&lt;p>I don&amp;rsquo;t expect that we&amp;rsquo;ll see protests the scale of those that happened in the wake of the police murder of George Floyd, nor do I think that that would be necessary or effective. The state has only as much power as we&amp;rsquo;re willing to grant it. The times seem really bad right now, but I am resolute that we stand much closer to the brink of liberation than the brink of disaster. Antifascsim is fundamentally a politics of hope. There are lessons we can learn from Nazi Germany, but there are also lessons we can learn from the &lt;a href="https://www.out.com/today-gay-history/2016/10/14/today-gay-history-gay-activist-pies-anita-bryant-face">pie-ing of Anita Bryant&lt;/a>, from the Civil Rights Movement, from the AIDS crisis, from the queer liberation movements from &lt;a href="https://www.theguardian.com/world/2022/jun/03/bangkok-pride-parade-new-hope-lgbt-rights">Bangkok&lt;/a> to Budapest, from the immigrant rights struggle in the US and in Europe, from disability rights movements, from ex-vangelicals, from intersectional feminists. Florida&amp;rsquo;s fascist project will crash and burn spectacularly, because we have all of the tools and all of the power to guarantee that outcome. All we have to do is organize and be ready to use them.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>von Wahl, Angelika, &amp;ldquo;How sexuality change agency: Gay men, Jews, and transitional justice&amp;rdquo;, &lt;em>Gender in Transitional Justice (Governance and Limited Statehood)&lt;/em>, ed: Buckley-Zistel, S. and Stanley R., Palgrave Macmillan, 2011, citing J. Steakly, &amp;ldquo;&lt;a href="https://digi20.digitale-sammlungen.de/de/fs1/object/goToPage/bsb00044943.html?pageNo=53">Selbstkritische Gedanken zur Mythologisierung der Homosexuellenverfolgung im Dritten Reich&lt;/a>.&amp;rdquo;&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>&lt;em>1933: Der Weg ins Dritten Reich&lt;/em>, Papy Rossa, 2023. Translated by me.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3" role="doc-endnote">
&lt;p>A popular call on social media is that the evangelical right is &amp;ldquo;trans eliminationist&amp;rdquo; and comparisons to Nazi Germany abound; nevertheless, as J. Steakly&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> &lt;a href="https://digi20.digitale-sammlungen.de/de/fs1/object/display/bsb00044943_00064.html">writes&lt;/a>, the persecution of homosexuals and other groups &amp;ldquo;differentiates itself fundamentally from the Nazi persecution of the Jews, which was conducted up to the last man, woman, and child.&amp;rdquo; In other words, even the Nazis were not explicitly &amp;ldquo;trans eliminationist.&amp;rdquo;&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4" role="doc-endnote">
&lt;p>Žižek, S., &lt;em>Like a Thief in Broad Daylight&lt;/em>, Allen Lane, 2018&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5" role="doc-endnote">
&lt;p>Plaintiffs cite Troxel v. Granville, 530 U.S. 57, 66, 68 (2000). &amp;quot;&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6" role="doc-endnote">
&lt;p>Plaintiffs cite Bendiburg v. Dempsey, 909 F.2d 463, 470 (11th Cir. 1990)&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7" role="doc-endnote">
&lt;p>We have to remember that even a corrupted, conservative Supreme Court voted positively in &lt;em>Bostock&lt;/em>, and we should not presume they will casually overturn established free speech law, either.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8" role="doc-endnote">
&lt;p>I&amp;rsquo;m not going to put a call for illegal action on my blog.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description><tweet>Florida's fascists are in for an ass-kicking. And we can speed that up.</tweet></item><item><title>2023 Travelogue: Sofia</title><link>https://emilygorcenski.com/post/2023-travelogue-sofia/</link><pubDate>Fri, 19 May 2023 16:13:45 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-sofia/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/sofia/socialist.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/sofia/socialist.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/sofia/socialist.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/sofia/socialist.jpg" width="600"/></media:content><description>&lt;p>Easter is always a four-day weekend in Germany. As someone who doesn&amp;rsquo;t celebrate Easter, this makes for a great travel opportunity&amp;hellip; as long as you travel to somewhere that also doesn&amp;rsquo;t celebrate that Easter.&lt;/p>
&lt;p>Since Germany celebrates the Protestant/Catholic Easter weekend, which consists of Good Friday, Easter Sunday and Easter Monday, this means we have a nice four-day weekend that should hopefully coincide with the weather improving. This also means that everything is closed on the Friday, Sunday, and Monday. A four day weekend with little to do locally makes for a great opportunity to travel. The downside is that most of the other countries with Catholic or Protestant backgrounds also are shut down for the weekend, which rules out a big fraction of Europe. That leaves Orthodox countries, as Orthodox Easter is a week later, and Muslim countries. Last year I visited Tirana and had a blast. This year, I headed to Sofia, Bulgaria, to continue my eastward exploration.&lt;/p>
&lt;p>This time, Christine joined me for the weekend. She flew out to Bulgaria and arrived not too long before I did. Together we caught a cab to our hotel, which I again accidentally booked as a theme hotel. This time, the theme was art.&lt;/p>
&lt;p>Unfortunately, for much of the time I was there, I was not feeling well. So we didn&amp;rsquo;t get out to see as much of the city as I would have liked to, but we were able to get out and visit the Museum of Socialist Art, which is small but enjoyable. They have a large garden with a large collection of statues from the socialist era, and a gallery with some interesting art, including propaganda posters from communist states around the world. It was in the museum that I learned of &lt;a href="https://en.wikipedia.org/wiki/Vela_Peeva">Vela Peeva&lt;/a>, a Bulgarian partisan who was killed and beheaded by fascists after she was betrayed, but not without holding out for forty days and putting up a righteous fight.&lt;/p>
&lt;p>Sofia is not on the Black Sea; Varna is Bulgaria&amp;rsquo;s main city on that coast. Nevertheless, the city had a Black Sea sort of cultural vibe, similar to what I sensed in Romania. It&amp;rsquo;s markedly different than other former communist states like Poland or Czechia, but the influence of socialist utopianism is unmistakable on it. To Sofia&amp;rsquo;s southeast lies Vitosha, a national park and looming mountain peaks. It makes for a rather spectacular backdrop to the city.&lt;/p>
&lt;p>Like Bucharest, it was easy to see Sofia&amp;rsquo;s public infrastructure in a transitional state. Sidewalks were haphazard and public transit was functional, though the metro stations felt a bit like they would feel at the end of the world. Bulgaria&amp;rsquo;s population is in decline and the aging demographic was certainly visible in the Women&amp;rsquo;s Market, where Christine and I were the youngest people present by a large margin. Nevertheless, our cab ride from the airport gave us the opportunity to notice the offices of many tech companies opening development centers there, taking advantage of cheaper but skilled IT labor.&lt;/p>
&lt;p>I found many of the people to be quite friendly and helpful, and I felt confident enough to try out a few phrases in Bulgarian. I was actually surprised at how much I could understand; my limited Czech knowledge helps with slavic languages like my Spanish knowledge helps with the romance languages.&lt;/p>
&lt;p>I don&amp;rsquo;t know that I enjoyed Sofia enough to schedule another pleasure trip back there, but I&amp;rsquo;d love to see Varna someday. Bulgaria marks the 25th European country I&amp;rsquo;ve been to.&lt;/p></description><tweet>Spending (Catholic) Easter in Sofia. 2023 Travelogue: Berlin 🛫 Sofia</tweet></item><item><title>2023 Travelogue: Hamburg-Stuttgart-Zürich-Vaduz</title><link>https://emilygorcenski.com/post/2023-travelogue-hamburg-stuttgart-z%C3%BCrich-vaduz/</link><pubDate>Sun, 14 May 2023 10:27:40 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-hamburg-stuttgart-z%C3%BCrich-vaduz/</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>About a month or so ago, I had a rather intensive sequence of travel that took me through four cities in three countries in four days, including Hamburg, Stuttgart, and Zürich on the same day. But it gave me the opportunity to cross a new country off my list: Liechtenstein!&lt;/p>
&lt;p>My job is a little bit weird. I&amp;rsquo;m not doing day-to-day project work and I&amp;rsquo;m not in sales, either, but I spend a significant amount of my time working with clients. I&amp;rsquo;m also in our country and regional leadership teams. This means I travel a lot to visit clients, attend events, and have meetings. Which is the entire motivation of me writing this travelogue in the first place. What this travel does give me is the ability to explore the world a little bit, or at least Europe. I&amp;rsquo;ve been trying to visit every European nation, and of course this includes the six microstates. So when I had an intense work trip that took me to Hamburg on a Wednesday, Stuttgart on a Thursday, and Zürich on a Friday, I definitely seized the occasion to do some weekend travel in the Swiss alps.&lt;/p>
&lt;p>I actually love Zürich. One of my fonder memories of the city is drinking bubbly on the top deck of a ferry on a round trip around the lake with friends. The water is clear and the people are friendly. So I finished my business Friday afternoon, spent some time walking around the city and window shopping, and woke up Saturday morning to catch a train to Sargans. The train ride is absolutely stunning; it rides around the lake and then along Walensee, ending up at Sargans Bahnhof, tucked between craggy alpine peaks.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Sargans-bhf.jpg" alt="A view of a mountain with a ski slope on it, the snow melting and its turning green">&lt;/p>
&lt;p>From there, I took a short bus ride into Liechtenstein. The fourth-smallest of the European micronations, one can conceivably walk across the country in the east-west direction in only a couple of hours. I took the bus into Vaduz, the capital of the principality and its second-largest city. (Schaan, just to the north, is more populous). Like in Andorra la Vella, the capital city is basically a couple of streets and a nice pedestrian area. The city itself lies in the Rhine valley, and on its eastern flank are large mountains, beyond which lies Austria.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Kathedrale-St-Florin-thumb.jpg" alt="The Kathedrale St. Florin sits along a street with snow-covered peaks in the background">&lt;/p>
&lt;p>There&amp;rsquo;s not a long going on overall in Liechtenstein. There&amp;rsquo;s a bunch of casinos, and I can imagine that the tourism seasons in the summer and winter can be quite busy, but in early spring, there were hardly any people there at all. I checked into one of those hotels with the self-checkin, and in all honesty I didn&amp;rsquo;t see a single other person in the hotel the entire time I was there: no guests, no staff, no housekeeping. I took the Saturday afternoon to go for a nice walk, and walked the 20-minute stretch from Vaduz to Schaan, which in honesty was slightly ruined by the rather heavy amount of traffic that passes the country&amp;rsquo;s main artery, Landstrasse. Sadly, I didn&amp;rsquo;t have enough time there to take a hike up to the castle or through the mountains.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Postmuseum-thumb.jpg" alt="The facade of the Postmuseum">&lt;/p>
&lt;p>While I was there, however, I discovered that the &lt;a href="http://www.via-alpina.org/en/">Via Alpina&lt;/a> passes through, and the beauty of the mountains and the clean air kind of got me thinking that maybe, some day in the future, taking a few months off to hike part of the trail might be a good way to detox from society. After living in Berlin for so long, I&amp;rsquo;m desperately missing something other than the endless flat horizon that we have here. I&amp;rsquo;m happiest when I have mountains near, and getting to spend a weekend stopover in that tiny corner of Europe that seems so far from the endless noise of social media and commerce felt really nice. Liechtenstein marks the 24th European country I&amp;rsquo;ve visited, and my second new country of 2023.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/vaduz/Alpine-thumb.jpg" alt="Snow-covered alpine peaks fade into a cloudy gray sky">&lt;/p></description><tweet>A weekend in the Swiss alps. 2023 Travelogue: Berlin 🚅 Hamburg 🛫 Stuttgart 🚅 Zürich 🚅🚌 Vaduz</tweet></item><item><title>Thoughtworks Technology Radar vol. 28</title><link>https://www.thoughtworks.com/en-de/radar</link><pubDate>Thu, 27 Apr 2023 11:16:56 +0200</pubDate><guid>https://emilygorcenski.com/post/thoughtworks-technology-radar-vol.-28/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/tr_28_meta_image.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/tr_28_meta_image.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/tr_28_meta_image.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/tr_28_meta_image.jpg" width="600"/></media:content><description>&lt;p>We&amp;rsquo;ve published Volume 28 of our Technology Radar over at Thoughtworks! I&amp;rsquo;m extra excited this time because we&amp;rsquo;ve got a ton of Data and AI related blips here reflecting a lot of work we&amp;rsquo;ve done over the past several months. It&amp;rsquo;s been really cool seeing the nuanced discussions happening around each of these blips.&lt;/p></description><tweet>Over at my day job, we've published Volume 28 of the Technology Radar, and I'm more excited than usual for it, due to all the Data and AI blips on it this time.</tweet></item><item><title>Book Report: American Antifa</title><link>https://emilygorcenski.com/post/book-report-american-antifa/</link><pubDate>Mon, 24 Apr 2023 21:32:22 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-american-antifa/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/20170809_214250.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/20170809_214250.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/20170809_214250.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/20170809_214250.jpg" width="600"/></media:content><description>&lt;p>There are a few academic explorations of modern antifascism. Stanislav Vysotsky&amp;rsquo;s &lt;em>American Antifa&lt;/em> explores the movement with an ethnographic lens, making for a dense but informative read.&lt;/p>
&lt;p>For all of the attention and hatred that the contemporary antifascist movement has received in the last few years, there&amp;rsquo;s shockingly little by way of academic treatment of the movement. The few texts that exist, among them Mark Bray&amp;rsquo;s &lt;em>Antifa: The Anti-Fascist Handbook&lt;/em> and the more recent anthology by Shane Burley, &lt;em>¡No Pasarán!&lt;/em>, of which I am a contributor, are often written by movement insiders, or at least those sympathetic to it. This is not a surprise. Antifascists are rarely the most talkative or approachable types, and a stern distrust of the media, the government, and the &lt;em>institution&lt;/em> in general don&amp;rsquo;t exactly make antifascists cooperative research subjects. The same is true for Stanislav Vysotsky&amp;rsquo;s &lt;em>American Antifa: The Tactics, Culture, and Practice of Militant Antifacsism&lt;/em>.&lt;/p>
&lt;p>Like others, Vysotsky makes no attempts to hide his affinity for the movement, nor even his former participation in the movement. He terms the work an &amp;ldquo;autoethnography,&amp;rdquo; and argues from a feminist perspective that restricting the study of movements only to those &lt;em>outside&lt;/em> the movement fails to achieve the objectivity it claims. Instead, Vysotsky takes on an &amp;ldquo;ethical danger&amp;rdquo; in his analysis, knowing full well that his work may expose him to legal, physical, or reputational risk. &lt;em>American Antifa&lt;/em> therefore must be read and judged as an insider&amp;rsquo;s perspective, with the full understanding that some of the analyses contained therein can only come from an insider&amp;rsquo;s perspective. You, the reader of this post, must be aware of my own antifascist organizing, and so I review the book as an insider would. While the text explores the antifascist movement in light of its methods, means, and goals, it is not a critical text.&lt;/p>
&lt;p>Vysotsky begins by introducing familiar concepts with academic language. He refers to the cornucopia of modern fascist movements as New Social Movements, or NSMs, an acronym I find rather inconvenient, as NSM also refers to the modern-day National Socialist Movement. Within this framing, he presents antifascism as a countermovement to these neo-fascist groups. Unlike other modern forms of protest activism in the West today, antifascism doesn&amp;rsquo;t position itself &lt;em>per se&lt;/em> against a corporation, policy, or government, but rather emerges as a counterbalance to the rise of fascist organizing.&lt;/p>
&lt;p>This is a critical difference, and one that I think should be more strongly understood. I recently spoke on a podcast about how antifascists can protest the hateful politics growing in some states in the US. &amp;ldquo;You don&amp;rsquo;t really want to go punch Ron DeSantis on the street,&amp;rdquo; I mentioned, referring to a common way that militant antifascism emerges to counter fascist organizing. &amp;ldquo;You could, but it would go way, way worse for you than if you did that to a neo-Nazi.&amp;rdquo; Similarly, other activist groups, such as climate protesters, generally abstain from violence. As it turns out, militant antifascism&amp;rsquo;s willingness to use violence is related to its orientation against fascist organizing. Vysotsky explores how the composition of antifascist groups differs from fascists, from racial and gender dynamics, to their apathy towards public opinion.&lt;/p>
&lt;p>Yet despite this, the willingness to use violence is still a seldom-used tactic among antifascists, and the third chapter of the book explores the repertoire that antifascist activists use to counter fascist recruitment and harm. This ranges from public education, to doxing, and to intelligence gathering, among others. Each of these segments could merit a chapter (or volume) in its own right, but Vysotsky stays at the surface level, dedicating never more than a few pages to each.&lt;/p>
&lt;p>It was well worth it, however, to save focus for what I found the most interesting chapter of the book, which is the analysis of antifascist culture. Vysotsky explores what Travis Linnemann refers to as &amp;ldquo;proof of death&amp;rdquo; and &amp;ldquo;proof of life.&amp;rdquo; Proof of death are the trophy shots antifascists share, the images of a neo-Nazi getting clock in the nose, the lamentable Twitter post admitting defeat, or &lt;a href="https://edition.cnn.com/videos/world/2017/08/17/christopher-cantwell-fearful-jpm-orig.vice-news-chris-cantwell">the video of a &amp;ldquo;Crying Nazi&amp;rdquo;&lt;/a> sobbing over his impending arrest and imprisonment. I, of course, took great pleasure seeing Vysotsky reference this in his book. By contrast, proof of life is the evidence of antifascists thriving in the face of adversity, showing resilience and an unwillingness to give in even when all seems lost. I&amp;rsquo;ve wrote in &lt;em>¡No Pasarán!&lt;/em> that antifascism is fundamentally a politics of hope, and this, too, is a lesson that is well-received in a troubling time in American history.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/hamburg-cville.jpg" alt="Hamburg antifascists hold a banner in solidarity with Charlottesville.">&lt;/p>
&lt;p>&lt;em>American Antifa&lt;/em> gets a little deeper in its penultimate chapter, &amp;ldquo;The anarchy police (revisited),&amp;rdquo; which explores antifascism as a form of community-oriented policing. Indeed, much of the work that antifascists have done is an ersatz for an incompetent and hostile official police institution; antifascists organize to handle fascists threats without the use of the state, but these actions are, Vysotsky argues are policing actions. Intelligence gathering, surveillance, and physical confrontation are things that normally in the remit of the state monopoly on violence. The text explores the ramifications of this, not least of which is the resulting criminalization of antifascism as a movement, an ideology, and a praxis.&lt;/p>
&lt;p>I mentioned earlier that &lt;em>American Antifa&lt;/em> is not a critical text, and while I don&amp;rsquo;t find this to be an omission, I still hunger for a more reflective, retrospective antifascist politick. There&amp;rsquo;s no secret to the arguments I&amp;rsquo;ve had with other antifascists, but independent of this I find the lack of retrospective, the lack of inclusivity, and the parochial and patriarchal nature of the current movement to be a weakness. Vysotsky has written a dense but informative academic introduction to the subject, but steers away from too deep of an analysis of any given topic. The book aims for breadth, not depth.&lt;/p>
&lt;p>I found myself learning from the text, from its detailed history to its cerebral treatment of things that I&amp;rsquo;ve taken for granted. It&amp;rsquo;s a worthwhile read for any antifascist, and moreso for those outside the movement wanting to know more. It&amp;rsquo;s a thin text, but the writing is dense and the font is small. It&amp;rsquo;s nicely broken up into bite-sized sections, but like most academic prose it will tire you if you try to read it all in a sitting. That&amp;rsquo;s ok. You can come back to it. I know I will, time and again.&lt;/p>
&lt;p>&lt;em>American Antifa: The Tactics, Culture, and Practice of Militant Antifascism&lt;/em>&lt;br>
Stanislav Vysotsky&lt;br>
Routledge Studies in Fascism and the Far Right, 2021&lt;br>
ISBN 9780367210601&lt;/p></description><tweet>It took me a while but I finally read Stanislav Vysotsky's American Antifa. This is my book report.</tweet></item><item><title>Stockholm and Madrid 2022</title><link>https://emilygorcenski.com/post/stockholm-and-madrid-2022/</link><pubDate>Sun, 23 Apr 2023 16:05:23 +0200</pubDate><guid>https://emilygorcenski.com/post/stockholm-and-madrid-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/stockholm-madrid-2022/Color%20Gives%20Way.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/stockholm-madrid-2022/Color%20Gives%20Way.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/stockholm-madrid-2022/Color%20Gives%20Way.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/stockholm-madrid-2022/Color%20Gives%20Way.jpg" width="600"/></media:content><description/><tweet>I had a whirlwind trip last November that hit Madrid, Stockholm, and a few other places. Here are some photos. I'm unhappy with them but a couple are mediocre I guess.</tweet></item><item><title>2023 Travelogue: A week on the Elbe</title><link>https://emilygorcenski.com/post/2023-travelogue-a-week-on-the-elbe/</link><pubDate>Sun, 02 Apr 2023 13:55:23 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-a-week-on-the-elbe/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/sunset.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/sunset.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/sunset.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/sunset.jpg" width="600"/></media:content><description>&lt;p>Berlin&amp;rsquo;s been wearing on me, and my best friend and I have been meaning to get away and spend a week together doing some co-working. So we found a quiet little in Pillnitz in Dresden and headed down to spend a week.&lt;/p>
&lt;p>I&amp;rsquo;m finding Berlin an increasingly ugly city. It&amp;rsquo;s dirty and loud. The people can be rude. The weather is shit. Solidly half of my intense 2023 travel has been finding reasons to get out of Berlin.&lt;/p>
&lt;p>When my best friend texted me suggesting we spend a week together doing some coworking in a remote location in Germany, I didn&amp;rsquo;t hesitate to say yes. We were both in love with the little villages along the river on the train route down to Prague, and so we started looking for Airbnbs to spend a week at together before the tourist season began in earnest. The closer to the Czech border we could get, the better.&lt;/p>
&lt;p>Actually, we got a bit distracted while exploring online, quickly falling in love with the idea that housing in the area was actually &lt;em>affordable&lt;/em>. &lt;em>What if we bought a place here&lt;/em>? I found an old adminstrative building for sale for less than $300k. &lt;em>What if we bought an old Bürgeramt?&lt;/em> The thought is still compelling.&lt;/p>
&lt;p>Neither of us had spent time in Dresden, only ever passing through, and when we needed to come to a decision point, they found a cute little Gesindehäuschen in Pillnitz, a village that is technically part of Dresden proper, but about as far upriver as you can get. Pillnitz sits on the Elbe&amp;rsquo;s right bank and its main draw is Schloss Pillnitz and the associated English garden and grounds. The town sits in the foothills of Saxon Switzerland and there&amp;rsquo;s plenty of hiking and nature to explore.&lt;/p>
&lt;p>After work, we&amp;rsquo;d walk along the river or hike up to the artificial ruins, built a few hundred years ago by the prince. The ruins were then and are now usable as an event space, sitting on a hill overlooking the Elbe valley. Most beautiful perhaps is the nearly 600 year-old vineyard overlooking the palace grounds. We watched a big rainbow touch down in the distance as the sun set. Beautiful.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/vineyard.jpg" alt="A view over a vineyard as the sun sets">&lt;/p>
&lt;p>The relaxation was only a setback when I had to commit to a trip to Stuttgart for work. Getting from Dresden to Stuttgart is no easy task; the trains are rather long, and direct flights don&amp;rsquo;t happen every day. I opted for the hybrid approach to save some time: I flew DRS to FRA, and then took the ICE down to Stuttgart. It was long and brutal, but I was amused by Dresden&amp;rsquo;s airport. With only 12 gates, half of which don&amp;rsquo;t really need to be used, it reminded me more of Little Rock&amp;rsquo;s airport than the main terminal serving one of Germany&amp;rsquo;s larger cities.&lt;/p>
&lt;p>We found Dresden absolutely beautiful. Unlike Berlin, filled with streets of connected five-over-ones, Dresden is full of smaller buildings set apart by a small garden. It feels more intimate and smaller. The mountains and the river offer beautiful natural landscape for the city. Nevertheless, the German grumpiness did not fade away. As we departed Pillnitz, we opted for a more scenic trip back, taking the ferry across the river. As we departed, the ferry man asked us if we were heading back home. I confirmed, and he replied with a gruff, &amp;ldquo;good.&amp;rdquo; We had a similar experience our first night, where we went to a local restaurant to eat. The people were friendliest to us as we were leaving.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/pillnitz/pillnitz.jpg" alt="A village center with classical architecture and tightly nestled buildings">&lt;/p>
&lt;p>Yet despite this, the area is absolutely one I&amp;rsquo;d return to. Beer gardens along the river, quaint village vibes, and a slower city pace feel quite attractive to me now. Maybe I&amp;rsquo;ll head back for the Elbhang festival later this year. I still love Berlin but increasingly I need a change of pace. It&amp;rsquo;s true: Berlin is not Germany.&lt;/p></description><tweet>A 'workcation' on the Elbe. 2023 Travelogue: Berlin 🚝 Pillnitz 🛫🚝 Stuttgart</tweet></item><item><title>Screaming in the cloud</title><link>https://www.lastweekinaws.com/podcast/screaming-in-the-cloud/the-realities-of-working-in-data-with-emily-gorcenski/</link><pubDate>Sun, 26 Mar 2023 13:44:17 +0100</pubDate><guid>https://emilygorcenski.com/post/screaming-in-the-cloud/</guid><description>&lt;p>I sat down with Corey Quinn and screamied in the cloud, mostly about how cloud services have made it easy to spin things up, but hard to spin them back down.&lt;/p></description><tweet>I sat down with Corey Quinn and screamied in the cloud, mostly about how cloud services have made it easy to spin things up, but hard to spin them back down.</tweet></item><item><title>2023 Travelogue: Art and Science in Amsterdam &amp; Mannheim</title><link>https://emilygorcenski.com/post/2023-travelogue-art-and-science-in-amsterdam-mannheim/</link><pubDate>Sat, 25 Mar 2023 12:52:05 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-art-and-science-in-amsterdam-mannheim/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/canal.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/canal.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/canal.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/canal.jpg" width="600"/></media:content><description>&lt;p>When I saw that the Rijksmuseum in Amsterdam was having a once-in-never again Vermeer exhibition, I immediately bought tickets, and took the opportunity to explore a bit of a city I&amp;rsquo;ve only ever traveled to for conferences.&lt;/p>
&lt;p>One of my goals for 2023 was to read more real news, start subscribing to useful newsletters, and to get the hell off Twitter. When one of those newsletters had a recap of what&amp;rsquo;s new in the art world in 2023, I learned that the Rijksmuseum was having a major Vermeer exhibit, collecting nearly all of his 35 or so known works from around the world. I bought tickets immediately.&lt;/p>
&lt;p>I never really grew up as a big art person. It wasn&amp;rsquo;t until I was taking advanced Spanish courses, studying Picasso and Dalí that I began to understand it. I&amp;rsquo;ve always entangled the study of art with language and culture, and I almost always make it a habit to visit a museum of some sort when I&amp;rsquo;m in a new city. I was able to buy tickets early enough to manage the trip to take advantage of a Berlin federal holiday: International Women&amp;rsquo;s Day, March 8. The exhibition has of course long since been sold out.&lt;/p>
&lt;p>Vermeer&amp;rsquo;s paintings are as spectacular as people say. I&amp;rsquo;m not nearly educated enough in the field to say smart things about his use of light or perspective, but I do know that when looking at a painting like &lt;a href="https://en.wikipedia.org/wiki/The_Procuress_%28Vermeer%29">&lt;em>The Procuress&lt;/em>&lt;/a>, you could almost &lt;em>feel&lt;/em> the fibers of the rug in the painting. It&amp;rsquo;s fantastic. I was also surprised by how small some of his more famous works are, like &lt;em>The Girl in the Pearl Earring&lt;/em>.&lt;/p>
&lt;p>Amsterdam is a city I&amp;rsquo;ve been to a few times before, almost always for a conference. I&amp;rsquo;ve not had much chance to explore the city, so I took the weekend to get around. It&amp;rsquo;s one of those cities that looks and feels exactly like it does in the movies. The canals are as annoyingly pretty as you might see in a movie, and the vibe is exactly what you expect—right down to the mass of British tourists doing marijuana tourism. It&amp;rsquo;s a city I get right from the beginning, but I think my favorite part of it was the fact that it has decent bagels.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/canal.jpg" alt="A view of a boat tied up on an Amsterdam canal">&lt;/p>
&lt;p>I&amp;rsquo;ll say one thing, though. I stayed in the worst hotels I&amp;rsquo;ve ever been in in my life there. I&amp;rsquo;ve done the math, and I&amp;rsquo;ve almost surely stayed in hotels for more than a year of my life. I&amp;rsquo;m 40, so 1/40th of my life is 2.5%. That&amp;rsquo;s a lot of overnight stays, and putting not one, but two hotels on my list of worst hotel experiences is quite a remarkable feat. I&amp;rsquo;m pretty sure both hotels I stayed in were crime fronts. I felt like I was an extra in the movie &lt;em>Hostel&lt;/em>. One of them smelled like a rotting corpse. Folks, when staying in Amsterdam, pay the money for a proper Marriot or something. It was awful.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/amsterdam-mannheim/hotel.jpg" alt="A view looking down a stairwell at some loose boards and sketchy woodwork in an Amsterdam hotel">&lt;/p>
&lt;p>After my weekend at the museum, I hung around a couple days and did some work out of my company&amp;rsquo;s beautiful Amsterdam office. Catching up with some coworkers who transferred a year or so ago was pretty nice, and it was good to do some planning and co-working with my colleagues in the Netherlands. It&amp;rsquo;s good to see what capabilities exist around the company.&lt;/p>
&lt;p>Sadly, my holiday off was a little less restful. Since I was out west anyways, I planned a trip to visit a client in Mannheim, and took the direct train there from Amsterdam. It wasn&amp;rsquo;t long, but with delays it took longer than it should have. It was essentially a working holiday, and I took the time on the train to get some writing done. My client team and I enjoyed a nice dinner that night, had a nice workshop, and then I headed back to Berlin. I made a mistake, though. I needed to be back in Berlin the next morning and didn&amp;rsquo;t want to take a 5+ hour train from Mannheim, so I flew. But I flew from Stuttgart instead of Frankfurt, and I found myself remembering again how much I despise Stuttgart Hauptbahnhof right now. Seriously it&amp;rsquo;s a solid 15 minute walk between an intercity train and a train that goes to the airport. Like what the heck.&lt;/p>
&lt;p>Anyways, I think the lesson of this trip is that I&amp;rsquo;m living in the heart of tons of culture, which I can pretty easily just &lt;em>go and see&lt;/em> whenever I want. It&amp;rsquo;s not that expensive to get around, and I don&amp;rsquo;t even need to take time off of work to do it. I can end my workday and be sleeping in a seedy Amsterdam hotel &lt;em>that night&lt;/em>. I could be in Paris whenever I feel like it. That&amp;rsquo;s pretty cool. Definitely beats Twitter.&lt;/p></description><tweet>Art and science in a loop through through north-central Europe. 2023 Travelogue: Berlin 🚝 Amsterdam 🚝 Mannheim 🚝 Stuttgart 🛫 Berlin</tweet></item><item><title>The Mythologies of Genocide</title><link>https://emilygorcenski.com/post/the-mythologies-of-genocide/</link><pubDate>Wed, 08 Mar 2023 09:22:50 +0100</pubDate><guid>https://emilygorcenski.com/post/the-mythologies-of-genocide/</guid><description>&lt;p>The horrific proposed anti-transgender legislation in the United States has a lot of people afraid, and the word &amp;ldquo;genocide&amp;rdquo; is being used like it&amp;rsquo;s going out of style. That&amp;rsquo;s both wrong and dangerous.&lt;/p>
&lt;p>You&amp;rsquo;ve probably seen the image before. It&amp;rsquo;s a clever infographic, sometimes presented as a list, or sometimes presented as a meandering path through ten stepping stones, elaborating the &amp;ldquo;Ten Stages of Genocide.&amp;rdquo; This is a popular image in Holocaust education, and one that has been used effectively to describe the path to the Holocaust in Nazi Germany. It&amp;rsquo;s an image that fits nicely into a meme, which gives the viewer enough details to feel informed but not overwhelmed. The problem is that it&amp;rsquo;s also completely misused.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/10-stages.jpg" alt="A poster from the Holocaust Memorial Day Trust showing the ten stages of genocide as described by Stanton.">&lt;/p>
&lt;p>The Ten Stages of Genocide model comes from Gregory Stanton, a former resesarch professor at George Mason University and the founder of &amp;ldquo;Genocide Watch,&amp;rdquo; a think-tank studying global conflict. Stanton&amp;rsquo;s model proposes that Genocide occurs in ten stages, ranging from Classification to Denial, with stops in between leading from Discrimination to Killing. It&amp;rsquo;s easily digestible, and it&amp;rsquo;s easy to point at it with a &amp;ldquo;you are here&amp;rdquo; sign as a sort of alarmist way of calling attention to civil rights issues and the risk of future atrocity. Since 2017, I recall seeing it float around social media with various contexts, first to describe the treatment of the Trump Administration of Muslims, and later of immigrants at the southern U.S. border. Lately, it&amp;rsquo;s being shared as a callout of the various state-level proposed legislation winding through American statehouses.&lt;/p>
&lt;p>Yet despite its recurring popularity, often presented alongside variations on the Niemöller poem (which rarely acknowledge that two years ago we were saying that some other group fits the pattern &amp;ldquo;first they came for the&amp;hellip;&amp;quot;), I&amp;rsquo;ve seen comparatively little critique on the model. This doesn&amp;rsquo;t mean this criticism doesn&amp;rsquo;t exist.&lt;/p>
&lt;p>Among genocide scholarship exists a subfield of &amp;ldquo;critical genocide studies,&amp;rdquo; which seeks to reflect on both the means and motivations of a field with little governance or accountability. Genocide scholar A. Dirk Moses &lt;a href="https://www.sciencespo.fr/mass-violence-war-massacre-resistance/en/document/toward-theory-critical-genocide-studies.html">wrote in 2008&lt;/a>, &amp;ldquo;[t]he inability of Genocide Studies to predict or interdict genocides is a problem (&lt;a href="https://web.archive.org/web/20190118212941/http://howgenocidesend.ssrc.org/Moses/">Moses, 2006&lt;/a>) and it is worthwhile considering why. Constituted mainly by social scientists from North America, the field has been dominated by the &lt;em>nomoethic&lt;/em> approach that seeks hard knowledge in the form of universal laws with predictive potential.&amp;rdquo;&lt;/p>
&lt;p>The genocide scholar, Professor Henry Thierault, &lt;a href="https://armenianweekly.com/2020/11/04/an-open-letter-to-members-of-the-international-association-of-genocide-scholars/">recently addressed Stanton&amp;rsquo;s ten-stage model more directly&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>First, the “stages” of genocide assume genocide happens in a consistent and teleological manner that defines it. But even a shallow examination of any reasonably large set of genocides shows that this is not the case. The stage approach is actually what I will call a “backwards teleology,” that is, produced by working in reverse from a completed genocide. By working backwards, a supposed causal sequencing magically appears. The problem is, there are genocides that have not followed anything close to the pattern claimed, while there are many non-genocides that have included many of the stages indicated, even extermination. The latter means that there are many false negatives: imminent or even accomplished genocides do not register as such according to the “10 stages” approach&amp;hellip;. The “10 stages” approach is completely unscientific. The only way it could be established scientifically is if the “10 stages” method were shown to apply only to genocides as well as necessarily to genocide; but the facts show neither of these are the case. This exposes a basic logical fallacy in the inference from all or some of the “10 stages” to the claim that genocide is happening or imminent.&lt;/p>
&lt;/blockquote>
&lt;p>Thierault&amp;rsquo;s critique claims that the linearity of Stanton&amp;rsquo;s model reduces genocide to a simplified grand narrative. To Stanton&amp;rsquo;s credit, &lt;a href="https://armenianweekly.com/2020/12/02/a-rebuttal-to-theriaults-open-letter-regarding-genocide-watch/">the linearity assumption need not strictly hold&lt;/a>. Nevertheless, as the infographic above shows, it quite clearly presents genocide as an escalating and unidirectional model. Thierault also addresses the problem in reverse, providing a useful analogy:&lt;/p>
&lt;blockquote>
&lt;p>Blood is a red liquid that dries when exposed to low-humidity air. Wine can also be a red liquid that dries when exposed to low-humidity air. The fact that we observe a red liquid drying in low-humidity air does not justify our asserting that the substance is blood, any more than the occurrence of all or some of the “10 stages” determines that an event is genocide. This reflects another basic logical fallacy. Thus, the “10 stages” approach leads inevitably to false positives.&lt;/p>
&lt;/blockquote>
&lt;p>Put more simply, it can be that all ten stages in Stanton&amp;rsquo;s model can be met, and yet genocide does not happen (per legal definition or otherwise), and it is equally possible that genocide does happen without all of the stages being met. This means that the model lacks both predictive and explanatory power.&lt;/p>
&lt;p>Other recent efforts have tried to build stronger predictive models for genocide. In her book &lt;em>On the Path to Genocide&lt;/em> which explores the Rwandan and Armenian genocides of the 20th century, Deborah Meyerson explores &lt;a href="https://www.berghahnbooks.com/downloads/intros/MayersenOn_intro.pdf">the difficulty of the stage models to explain genocide&lt;/a>, emphasis mine:&lt;/p>
&lt;blockquote>
&lt;p>[E]xamining constraints that inhibit genocide is crucial to developing our understanding of the aetiology of the crime. For genocide to occur, not only must certain risk factors be present, &lt;strong>but inhibitory factors must also be absent&lt;/strong>.&lt;/p>
&lt;/blockquote>
&lt;p>Inhibitory factors have received far less study and analysis that risk factors, and they would be much harder to present in a pithy infographic. Addressing these challenges, Meyerson presents a temporal model of genocide whith eight stages that attempt to account for conditions that can work to slow or prevent genocide from occurring. These factors, which I reproduce here, are:&lt;/p>
&lt;ol>
&lt;li>The presence of an outgroup. This can be defined as a relatively powerless minority, with whom relations are politicized, and which is subject to legal discrimination.&lt;/li>
&lt;li>Significant internal strife. Significant, ongoing destabilization that affects the dominant group and the outgroup, and for which there is no clear solution.&lt;/li>
&lt;li>The perception of the outgroup as posing some kind of existential threat to the dominant power.&lt;/li>
&lt;li>Local precipitants and constraints determine the nature and time of the dominant group&amp;rsquo;s response. A violent response is typical, with the onset of massacres quite likely.&lt;/li>
&lt;li>A process retreat from the intensity of the circumstance, or further escalation. While the process is commonly one of retreat, repeated cycles of escalation through the proceeding stages followed by retreat ultimately facilitates further escalation.&lt;/li>
&lt;li>The emergence of a genocidal ideology within the dominant pwer, typically accompanied by concerted efforts by the dominant group to further augment their power, and a deepening perception of the outgroup as posing an existential threat.&lt;/li>
&lt;li>An extensive propaganda campaign, a key component of which features attempts to present the victim group as a grave threat to the dominant power.&lt;/li>
&lt;li>Case-specific precipitants and constraints determine the precise timing of an outbreak of genocide.&lt;/li>
&lt;/ol>
&lt;p>What&amp;rsquo;s interesting about the temporal model is that it compares the Armenian genocide, which predated the risk models by several decades, to the Rwandan genocide, which commenced after many such models had been published. Therefore, these cases offer a sort of &amp;ldquo;control&amp;rdquo; by which the predictive or descriptive power of the earlier models can be evaluated.&lt;/p>
&lt;p>Meaningful study of inhibitory factors is harder to find; in &lt;a href="https://repository.library.northeastern.edu/files/neu:1020/fulltext.pdf">his Ph.D. thesis 12 years ago&lt;/a>, William Pruitt performs a qualitative comparative analysis that explores five factors using four dichotomous variables: autocratic governments vs. democratic governments, socially-constructed groups present vs. absent, high vs. low individualization, collectivisation present vs. absent, and triggering catalysts present vs. absent. In his analysis of seven cases, all cases shared in common that they had autocratic governments with socially-constructed groups present. Emerging from this analysis, one might infer that social diversity and functional democracy are strong genocide inhibitors. These inhibitory factors are missing from the popular ten-stage model, which conflates their absence with the presence of risk factors. From the perspective of avoiding and preventing genocide, perhaps the attention should be in the reverse; rather than avoidance of risk factors, perhaps we should position for the strengthening of inhibitory factors.&lt;/p>
&lt;hr>
&lt;p>An understated and often overlooked aspect in the critique of genocide studies is the western, largely North American focus on the field. &lt;a href="https://www.genocidewatch.com/the-call">Stanton&amp;rsquo;s call to action on Genocide Watch&lt;/a> includes &amp;ldquo;the establishment of a United Nations rapid response force in accordance with Articles 43-47 of the U.N. Charter.&amp;rdquo; Calls for early warning for and early intervention against genocide are often coupled with a neoliberal attachment to policing and militarization, yet the interventions almost always come too late, after the genocides have been underway (e.g. Bosnia, Ukraine). There is a lack of self-reflection in the scholarship, as the calls to public education of genocide often focus on genocides in the developing world presented as internecine conflicts between ethnic groups, and rarely affords developed, industrialized nations the duty of historical retrospective. The analyses of genocides therefore rarely include the escalatory risk factors present in the colonial genocides of the western powers, or the ongoing persecution of indigenous people by favored nations.&lt;/p>
&lt;p>The presentation of the current struggle for transgender rights as an ongoing or imminent genocide is therefore problematic on two fronts: first, it relies on flawed models that lack predictive accuracy or stopping power, and second, it leverages models that whitewash genocide as something that morally compels the policing power of the (white, western) savior nation.&lt;/p>
&lt;p>Even if we ignore these critiques, Stanton&amp;rsquo;s model is misapplied in the current framing. Stage Two of the model, Symbolization, says that outgroup minorities are compelled to identify themselves. The opposite is the case in America, where current legislation seeks to &lt;em>prevent&lt;/em> people from identifying themselves. Likewise, Stanton&amp;rsquo;s Stage Five, Organization, describes the early phases of organized killings, often with the tacit or implicit support of a regime. As bad as the Proud Boys are, they have not engaged in systematic killings of transgender people in America, and while anti-transgender violence is rising, including murders, these still fail to rise to the level of killing that we see in early-phase genocides around the world.&lt;/p>
&lt;p>Applying the temporal model presented above, we can see that the situation is quite a bit farther from imminent genocide. While transgender people are being targeted and persecuted by hateful laws, and while we are victims of hate crimes at an alarming rate, we do not have &amp;ldquo;significant, ongoing destabilization that affects &lt;strong>the dominant group and the outgroup&lt;/strong>, and for which there is no clear solution.&amp;rdquo; And while many column-inches have been spent on the death of American democracy, the reality is that the many hundreds of anti-LGBT bills introduced in the last several years have been effectively killed by democratic processes, and many of those that have become law have been stopped by the courts. It is difficult to argue in the face of the evidence (&lt;a href="https://www.equalitytexas.org/wp-content/uploads/2022/10/EQTX-2021-SCORECARD.pdf">Texas killed 75 of 76 anti-LGBT bills in 2021&lt;/a>!) that America has shifted into a strong autocracy, as Pruitt&amp;rsquo;s model would require. The opposite appears to be true: the Democratic party had a historically strong mid-term performance in 2022. Analysis of &lt;em>multiple&lt;/em> models of genocide paint a vastly different picture than the infographics we spread around Twitter.&lt;/p>
&lt;hr>
&lt;p>Genocide is a big word. Not every civil rights struggle becomes a genocide; not even every war becomes a genocide. In many cases, societies at high risk for genocide, including those which met all ten stages of Stanton&amp;rsquo;s model, including killing, did not fall into genocide. It is difficult to describe the magnitude and scale of genocide; I saw it myself when &lt;a href="(/post/my-experience-on-the-border/)">I drove into the Ukranian border checkpoint&lt;/a> at the start of the war and saw a level of human suffering and resilience that I never before understood. Not all bad things that target minorities are genocides, and even when some of what is being proposed in America bears superficial similarity to genocidal behaviors, this does not make them genocides.&lt;/p>
&lt;p>When the Polish lawyer Raphael Lemkin defined the term &amp;ldquo;genocide&amp;rdquo; to as a legal term to describe the Holocaust and similar horrors that came before it, he defined eight factors of genocide. These include factors such as ethnic, religious, and language differences between groups. While not all of these factors need to be present, and in fact the United Nations' definition is more limited, it&amp;rsquo;s hard to apply most of them to the current context in transgender rights. By way of example, transgender people do not speak a different language from the dominant group as a general rule; if they do, it&amp;rsquo;s usually for reasons other than the fact that they are transgender. Simply put, there&amp;rsquo;s no known hereditary element to being trans, and in fact this is a crucial difference for why we admit that people can be transgender, but not transracial. A transgender person is not necessarily born to transgender parents, although if they are, maybe they have an easier time coming out. The converse also holds. This is relevant in the analysis of genocide in both a legal and cultural context.&lt;/p>
&lt;p>For instance, the horrific proposed legislation in Florida that would remove children from households of transgender parents appears to meet genocide condition of forcible removal of children. Yet this differs in key ways. First, this is a criteria of genocide when it is done to &lt;em>erase ethnic identity by reducing populations&lt;/em>. This is not true in the case of taking kids from transgender parents: the children of transgender parents are not necessarily transgender themselves, nor would removing them to foster care make them more or less likely to be transgender. Second, there are cases of the state removing children from parents, for instance when parents have substance abuse problems. This is a forcible removal of children, yet we do not consider this to be a genocide of alcoholics. Of course, saying that this proposed law isn&amp;rsquo;t genocide is not an endorsement of the bill; something does not need to be the &lt;em>worst thing&lt;/em> in order for us to decry it.&lt;/p>
&lt;hr>
&lt;p>I suspect that the invocation of the term &amp;ldquo;genocide&amp;rdquo; is done as an attempt to beg the attention of the apathetic, that by caring about our struggle, perhaps we won&amp;rsquo;t have to struggle. Yet the track record of genocide studies here paints a bad picture. The call to attention of actual genocides around the world has rarely resulted in timely policing or military intervention. Simply put, the word does not have the shocking or staying power we hope it to have, even in the case of widely documented ongoing atrocities. It&amp;rsquo;s not likely to have any similar rhetorical effect to compel action to a civil rights struggle where the level of killing is still several orders of magnitude lower than what is happening elsewhere in the world. The average American remains only superficially aware of genocides of Rohingya, Uyghur, or other peoples in the world, and what opposition exists may even be motivated by a sense of moral, political, or even racial supremacy. There is a distinct element of white privilege present in the invocation by largely white American transgender women of the word &amp;ldquo;genocide.&amp;rdquo; It is true that everyone is entitled to their own feelings and reactions to trauma, and that intersectional analyses should refrain us from engaging in oppression olympics. But genocide &lt;em>is&lt;/em> worse. It is worse on every measure and every axis, by a staggering margin.&lt;/p>
&lt;p>Using the word &amp;ldquo;genocide&amp;rdquo; to describe the current struggle is not only misleading, it may actually be harmful. Spreading a message that transgender people are on the brink of an imminent genocide is not a message that sends hope for the future. And the more transgender people that feel like their deaths are imminent, the more they look around and see a society that is not organizing to stop these deaths, further reinforcing the feeling of helplessness. The worse things seem, the easier it is to demand explanation for why the others aren&amp;rsquo;t &lt;em>doing anything&lt;/em>. This is a dangerous spiral for a population that is already at increased risk for self-harm, economic insecurity, and substance abuse.&lt;/p>
&lt;p>The central problem with using a flawed and simplified model to define the current situation as an imminent genocide is that the model provides no guidance for active intervention. Stanton&amp;rsquo;s own organization calls for U.N. policing and military intervention to stop genocide. The United States is not a society with a capacity for self-organizing to stop mass killing (and, of course, there are no plausible indicators that organized mass killing is imminent). The solution to a Republican politician introducing proposed anti-transgender legislation is not to take that politician out back and shoot him nor is it to have him arrested; it is to organize to stop the bill in subcommittee, committee, the general assembly, or at the governor&amp;rsquo;s desk. The solution to the current state of affairs is a civic remedy, because the current state of affairs is a civil rights struggle, and not a genocide. And while things may get even worse for trans people in America, the efficacious solutions still appear to be things like internal relocation, legal aid, and organized direct action; responses more commonly found in active civil rights struggles than in societies under threat of genocide.&lt;/p>
&lt;p>The thinking goes that if genocide is to be prevented, it must first be predicted, and it is an alluring belief that a simple model built on historical wrongs can neatly and flawlessly predict genocide in such a way that it can be stopped. Less attention is paid on &lt;em>how&lt;/em> precisely the genocide is to be stopped, and what the costs of a false positive or false negative could be. If the political fate of a people could be reduced to a simple ten factor model so simple that it fits into a meme, then we would have a far easier and safer world. Alas, these ideas traffic well but do very little, serving more as mythologies of neoliberalism than proactive or productive ways to secure human rights.&lt;/p>
&lt;p>The demand to respond to impending genocide is a futile call to action if only because of the terrible historical track record of stopping genocides. It relies on a flawed model that implicitly calls for more western policing and hegemony and draws focus away from more effective, targeted calls to action. Simply put, there is almost nothing that someone can do in the face of an early warning alert for genocide, but there are many things that people can do to support a growing civil rights movement. Our energies are probably better spent not raising a shocking alarm, but by constructively organizing a multi-layered and escalatory approach for demanding our civil liberties, starting with legislative lobbying and rising to include many forms of direct action. As the war in Ukraine continues and mass killings take place in various corners of the world, it&amp;rsquo;s hard to convince anyone the current round of anti-transgender legislation rises to that level. A stronger appeal must include a more realistic and grounded language, and ideally one with a stronger track record of success. But most of all, we owe each other better than to spread the despair of our imminent deaths. We can and will beat back the wave of hateful legislative assaults.&lt;/p></description><tweet>There's a lot of talk about the 'genocide' of trans people in America. I find this language dangerous and wrong. To explain why, I spent some time exploring several models of genocide and dove into critical genocide studies.</tweet></item><item><title>2023 Travelogue: Bucharest</title><link>https://emilygorcenski.com/post/2023-travelogue-bucharest/</link><pubDate>Sun, 05 Mar 2023 10:42:55 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-bucharest/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/clock.JPG"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/clock.JPG" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/clock.JPG" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/clock.JPG" width="600"/></media:content><description>&lt;p>I spent most of a week in Bucharest for work, and took the opportunity to do one of my favorite things: exploring how post-communist cities have gotten on.&lt;/p>
&lt;p>In the last year, I&amp;rsquo;ve added a pan-European responsibility to my job. I pair with my colleague in the UK to help shape our data business across Europe, and one of the implications of this is that I have to travel from time to time to visit offices in our various countries and to convene with regional leadership. I was actually thrilled to learn that we&amp;rsquo;d be setting up a series of workshops in Romania this winter, as it meant I&amp;rsquo;d get the chance to see a city I&amp;rsquo;ve wanted to see for a while: Bucharest.&lt;/p>
&lt;p>When I started traveling Europe in early 2017, I was fascinated by how communism fell in Europe. As an American, I was taught/propagandized that life in the communist era was dictatorial and restrictive. I know now that this was overblown; at the same time, the Berlin Wall existed, and the revolutions to overthrow communist dictators happened. I started my travels in Prague six years ago. Last year, I visited Albania, one of the last regimes to fall. A few months ago, I visited Gdańsk, where Lech Wałęsa helped lead a workers' movement and helped found the &lt;a href="https://en.wikipedia.org/wiki/Solidarity_(Polish_trade_union)">Solidarność&lt;/a> movement.&lt;/p>
&lt;p>In 1989, a wave of revolutions swept across communist nations in Europe. These ranged from the &lt;a href="https://en.wikipedia.org/wiki/Singing_Revolution">Singing Revolution&lt;/a> in the Baltics to the &lt;a href="https://en.wikipedia.org/wiki/Velvet_Revolution">Velvet Revolution&lt;/a> in Czechoslovakia. Most of these revolutions were peaceful; of them, only Romania&amp;rsquo;s involved large-scale deadly violence.&lt;/p>
&lt;p>Visiting post-communist cities is like watching capitalism as an experiment in real-time. In Tirana, a boom of competing investment between Türkiye and the European Union has led to a somewhat chaotic and imbalanced investment, visible in conflicting architectural styles and infrastructural conditions from street to street. In Czechia, EU membership (and proximity to Germany) has led to significant development investment in the urban centers, but the satellite cities still bear crumbling façades of the unkept soviet concete.&lt;/p>
&lt;p>Bucharest remains in a similar transitional phase. Smog-stained concrete buildings slowly chip and weather in front of sidewalks and streets dotted with construction zones. The wide, straight, planned city boulevards are designed now for cars. Modern standards like curb cuts are largely missing, making the few times I rented a scooter somewhat perilous. I crashed once, twisting my ankle but ending no worse for wear. At time I couldn&amp;rsquo;t really determine if the city was half coming apart or half coming together. There&amp;rsquo;s probably a bit of both that&amp;rsquo;s true.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/tv-tower.JPG" alt="The Bucharest TV building, a gorgeous brutalist structure with a big antenna on top">&lt;/p>
&lt;p>Still, it&amp;rsquo;s hard to determine what forces are to blame? Is it the lingering legacy of Ceaușescu&amp;rsquo;s failed economic policies that held the people in poverty, or is it the viscious indifference of capitalism that has had the greater effect? I visited the week of the horrific earthquake in Türkiye. On a tour, our guide told us, &amp;ldquo;we are worried here because we had an earthquake in 1977. But we are scared of the new buildings, because after the earthquake Ceaușescu ordered buildings to be built as strong as possible, and today they just make them cheap.&amp;rdquo;&lt;/p>
&lt;p>The tour was arranged by my company, and we took a small excursion to Ceaușescu&amp;rsquo;s mansion, which is a fantastic example both in the contradictions (see what I did there) of his regime as well as the somewhat overstatedness of the western propaganda. His mansion was certainly decadent, with its own indoor swimming pool and apartments for each of his three children, particularly when viewed in comparison to the poverty of rural Romania, but compared to western elegance, it was fairly mundane. It was certainly no &amp;ldquo;let them eat cake&amp;rdquo; vibe.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/pool.JPG" alt="Mural in the pool room of Ceaușescu&amp;rsquo;s mansion">&lt;/p>
&lt;p>Bucharest&amp;rsquo;s old city is punctuated by clubs and strip bars, by hispter cafés and quirky shops. It&amp;rsquo;s pleasant, like the Innenstädte of so many other cities. One of my colleagues told me, &amp;ldquo;sometimes people come here and ask, &amp;lsquo;do you have coffee?&amp;rsquo; Come on, we are a European city.&amp;rdquo; Indeed, &amp;ldquo;Paris of the East&amp;rdquo; is an appropriate moniker for its architectural charm, just with a bit more Brutalism sprinkled between the Art Nouveau and Neoclassicalism.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/clateatarie.JPG" alt="A creperie food truck">&lt;/p>
&lt;p>Bucharest&amp;rsquo;s jewel is the Palatul Parlamentului, which after the Pentagon claims the title of second largest administrative building in the world. It is truly a wonder to behold, a massive structure built as the &amp;ldquo;House of the People&amp;rdquo;. Ceaușescu demolished parts of the old city to build a massive civic district, following North Korea&amp;rsquo;s lead. He wouldn&amp;rsquo;t live to see it finished, as he was executed years before its completion in 1997.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/bucharest/palace.JPG" alt="A couple hugs in the plaza in front of Palatul Parlamentului">&lt;/p>
&lt;p>If there is one complaint to make about my trip, it&amp;rsquo;s that Berlin&amp;rsquo;s airport is so badly connected that our only direct flight is with the unforgivably bad Ryanair. I was happy enough to transit through Vienna, but it added significant time to my travel in both directions. Berlin not having direct flagship carrier connections to EU capital cities is unforgivable. But my complains about Berlin&amp;rsquo;s airport will come in a future post. Bucharest is a city whose charms lie in its blemishes and its history. It&amp;rsquo;s people are charming and hospitable, and it endeavours very much to be like its western counterparts. I&amp;rsquo;m looking forward to a summer visit sometime soon.&lt;/p></description><tweet>Going east. 2023 Travelogue: Berlin 🛫 Bucharest</tweet></item><item><title>2023 Travelogue: Stuttgart-Mannheim-Heidelberg</title><link>https://emilygorcenski.com/post/2023-travelogue-stuttgart-mannheim-heidelberg/</link><pubDate>Sat, 11 Feb 2023 15:30:13 +0200</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-stuttgart-mannheim-heidelberg/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/theater.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/theater.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/theater.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/theater.jpg" width="600"/></media:content><description>&lt;p>A whirlwind week&amp;rsquo;s worth of workshops weaving through Baden-Württemberg while watching Wednesday.&lt;/p>
&lt;p>In keeping with my habits of writing about my travels while on my next trip, I am starting to discover that this is less a function of my procrastination and more one of my incomprehensibly busy schedule. So it was when I decided to economize a work trip to Stuttgart for a client workshop and weave in a short daytrip in Mannheim for a &lt;em>different&lt;/em> client workshop. I&amp;rsquo;ll state for the record that I am not complaining. I have no basis to. My schedule is entirely the manifestation of my own choices.&lt;/p>
&lt;p>I travel to Stuttgart a few times a year for work, and on this trip I had a multi-day workshop with a client. The way I prefer to structure multi-day workshops involves at least one day&amp;rsquo;s break before the final day, to give people time to digest, think, and prepare final presentations. It&amp;rsquo;s an effective strategy, and also one that conveniently gives me time to explore around a bit. Stuttgart has a reputation of being little more than a hub for the auto industry, but I remember my first time to the area being struck by how beautiful the surroundings are. The area outside Stuttgart reminds me a bit of the area around Roanoke, Virginia, with hills and vineyards and small factories all around.&lt;/p>
&lt;p>After a few days in Stuttgart, which included a team dinner at what I would later discover was a Michelin Star restaurant, I took the early train up to Mannheim. It&amp;rsquo;s a short journey of around 45 minutes on the ICE. Mannheim is a weird city. It&amp;rsquo;s one of the few cities in Germany with a grid layout, at least in one section, and exists kind of squeezed in at the confluence of the Rhine and the Neckar.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/mannheim-hbf.jpg" alt="Pre-dawn at the Mannheim Hauptbahnhof">&lt;/p>
&lt;p>One thing about the city, however, is that it has fantastic train connections. It&amp;rsquo;s quite easy to get to and from the city, and so instead of dining in town, the team and I decided to take the short journey over to Heidelberg. Heidelberg is also a weird city. For a reason I can&amp;rsquo;t quite divine, it&amp;rsquo;s extremely popular among American tourists. Sure, it&amp;rsquo;s small and pretty, but I still don&amp;rsquo;t get it. I&amp;rsquo;ve been to dozens of European towns with the similar cute old towns and picturesque buildings. The Americanness of it all struck me as I rode on a bus with a bunch of nineteen year old American exchange students. The piercing nasal tones of the American accent always drills into my brain, I can&amp;rsquo;t hear anything else.&lt;/p>
&lt;p>What Heidelberg does have, however, is an outstanding Thai restaurant. &lt;a href="https://bay-jok.de/">Bay Jok&lt;/a> is authentic northern Thai food done right, and it&amp;rsquo;s the kind of restaurant you&amp;rsquo;ll need to book in advance. When we arrived, the restaurant hadn&amp;rsquo;t opened yet, and the crowd was already waiting at the door. Each table was prepared with the patron&amp;rsquo;s name written on a slate, and the entire restaurant filled promptly after opening. I made a mistake not ordering a starter, as the food is not your traditional street food, dash and done type of cuisine. Instead, it&amp;rsquo;s a well-prepared meal, with a lot of attention paid to how it&amp;rsquo;s presented. The food did not come out fast, but it was worth it. It&amp;rsquo;s a great place for conversation.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/stuttgart-mannheim-heidelberg/theater.jpg" alt="Theater Heidelberg">&lt;/p>
&lt;p>After a long, exhausting week, I packed my things back up and rode the ICE back to Berlin. It&amp;rsquo;s a long way back from BW to Berlin, but as the train dashed through the snow-covered fields, I was glad that I had the option of rail.&lt;/p></description><tweet>A whirlwind week's worth of workshops weaving through Baden-Württemberg while watching Wednesday. 2023 Travelogue: Berlin 🚅 Stuttgart 🚅 Mannheim 🚅 Heidelberg</tweet></item><item><title>Book Report: Ethical Machines</title><link>https://emilygorcenski.com/post/book-report-ethical-machines/</link><pubDate>Sun, 29 Jan 2023 12:57:30 +0100</pubDate><guid>https://emilygorcenski.com/post/book-report-ethical-machines/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/ethical-machine.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/ethical-machine.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/ethical-machine.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/ethical-machine.jpg" width="600"/></media:content><description>&lt;p>Reid Blackman&amp;rsquo;s book on AI ethics provides a good and practical overview of the field, but conspicuously avoids the trickier and more studious questions of technology ethics.&lt;/p>
&lt;p>The ethics of Artificial Intelligence (AI) and Machine Learning (ML), and internet technology in general, has been an increasingly vivacious topic in the last few years, in particular after &lt;a href="https://www.wired.com/story/google-timnit-gebru-ai-what-really-happened/">the high-profile firing of Timnit Gebru&lt;/a> from Google. The public demos of technology like Dall-E, Stable Diffusion, and ChatGPT have added to the fury of the discussion. On the one hand, a generally left-leaning crowd is speaking as loudly as they can about the possible harms that unregulated AI can bring; on the other, data scientists, capitalists, and techno-futurists have lauded the technology and the benefits it can provide. I will not &amp;ldquo;both sides&amp;rdquo; this debate. Rather, it serves as a frame for what Reid Blackman&amp;rsquo;s recent text, &lt;em>Ethical Machines&lt;/em>, leaves in and leaves out.&lt;/p>
&lt;p>I&amp;rsquo;ve personally nearly abandoned the topic of technology ethics, having spent a few years using my training as an aeronautical engineer, and later as a medical device researcher, to attempt to bring a frameworked approach to the IT industry. I&amp;rsquo;ve left the discussion because I frankly felt it has been going nowhere. It&amp;rsquo;s been a few years now that we have shown that &lt;em>o bir hemşire&lt;/em> sometimes gets autotranslated to &amp;ldquo;she is a nurse&amp;rdquo; while &lt;em>o bir bilim adamı&lt;/em> becomes &amp;ldquo;he is a scientist.&amp;rdquo; In 2023, anyone who cares about this is already aware of it, and anyone who&amp;rsquo;s aware of it and doesn&amp;rsquo;t care never will. The risk curve with these more fundamental examples of AI bias has stabilized. We&amp;rsquo;ve already seen &lt;a href="https://www.theverge.com/2021/4/27/22406673/basecamp-political-speech-policy-controversy">previously &amp;ldquo;woke&amp;rdquo; CEOs make hard-right shifts&lt;/a>.&lt;/p>
&lt;p>The racism exhibited by many AI tools is shocking, but the developers have gotten better at bottling up those output modes. It&amp;rsquo;s not perfect, not by any means, but it is also true that they have listened, and they are working to remove or eliminate at least the most egregious examples. Whether that&amp;rsquo;s enough is a subject for a debate that we desperately need to have.&lt;/p>
&lt;p>What I&amp;rsquo;ve found missing in these discussions is a structured framework for identifying and modeling ethical problems in the field of AI. The biggest fallacy I see is people asking whether something is &amp;ldquo;ethical,&amp;rdquo; as if there is a single universal ethical framework we abide by in the world. This is a trap; there are many ethical frameworks, some in tension with each other, which we apply day-to-day. The rules that a journalist holds themselves to are different than an activist. A doctor follows a different code than a lawyer. In medical research, we&amp;rsquo;ve learned by human kind&amp;rsquo;s most tragic dance with the devil. Out of it came frameworks like the &lt;a href="https://en.wikipedia.org/wiki/Nuremberg_Code">Nuremberg Code&lt;/a>, the &lt;a href="https://en.wikipedia.org/wiki/Declaration_of_Helsinki">Declaration of Helsinki&lt;/a>, and later, the &lt;a href="https://en.wikipedia.org/wiki/Belmont_Report">Belmont Report&lt;/a>. These have provided us with concrete and clear guidelines for how to manage, criticize, and assess medical research from an ethical vantage. While medical research abuse gives us to outrage, we have tools and structures to handle any such transgressions. It&amp;rsquo;s an imperfect system, but it is a system.&lt;/p>
&lt;p>No such practical analogue exists in technology. Sure, some societies have ethical codes, but these are weak and rarely have teeth. What we need is a way to evaluate technology and AI ethics in a meaningful way. In medical research, we have the principles of beneficence, justice, and respect for persons. In AI, we can begin to look at bias, explainability, and privacy. This is precisely the structure that Blackman takes in his work.&lt;/p>
&lt;p>With this framework, Blackman takes aim at the fluffy nothingness of many companies' ethics statements. Worse than meaningless, these positions provide no guidance on how to do AI development, what to avoid, and how to redress any ethical issues that may arise. To this end, Blackman&amp;rsquo;s framework gives at least constructive guidance.&lt;/p>
&lt;p>The second reason I have stopped engaging in tech ethics discussions arises from nihilism. All of the ethical codes and frameworks in the world won&amp;rsquo;t matter if they never are used. Ethical codes must have some bite. They must sometimes &lt;strong>stop&lt;/strong> people from doing wrong things. They must sometimes close the valves on the flow of capital. This is the point that many are trying to make when speaking out against AI ethics. It is not &lt;em>only&lt;/em> that the AI could be unfair, biased, privacy-violating, or intransparent, but that there is nothing &lt;em>stopping&lt;/em> the companies from using, deploying, and profiting off it. A bad thing should happen to an AI developer who behaves with willful, negligent, or reckless disregard of ethical norms. Not only does no such framework currently exist, none of our discussions about AI ethics seem to be willing to put one in place.&lt;/p>
&lt;p>Blackman, like me, is a technology consultant with high-paying clients. He therefore studiously avoids this topic in his book, restricting the discussion of AI ethics largely to point treatment of point problems, and not how to establish guiding AI ethics at a scale that shapes the technology to a more positive and global vision of human advancement. I will not accuse him of ethics-washing, as he does not, but his text is a neoliberal treatment of the field: ethics issues are ones to be handled atomically, with at best high-level guidance from the executive team. &lt;a href="https://www.nytimes.com/2022/12/28/opinion/jack-dorseys-twitter-signal-privacy.html">His neoliberalism&lt;/a> leaks into his privacy analysis in appalling ways. He does not seem to be willing to say that behaving ethically sometimes might mean leaving millions or billions of dollars on the table for the betterment of humankind. In medical research we have these discussions. Technology needs them, too. Blackman&amp;rsquo;s book came out before the public release of ChatGPT. In hindsight, what Blackman elides says as much as what he does not.&lt;/p></description></item><item><title>2023 Travelogue: Hamburg-Harburg</title><link>https://emilygorcenski.com/post/2023-travelogue-hamburg-harburg/</link><pubDate>Sun, 22 Jan 2023 10:16:01 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-hamburg-harburg/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/eisdisco.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/eisdisco.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/eisdisco.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/eisdisco.png" width="600"/></media:content><description>&lt;p>I spent a week back in Berlin before darting off to Harburg for a handful of days to visit my best friend, and we accidentally discovered the coolest club in Germany.&lt;/p>
&lt;p>The first time I overnighted in Hamburg was some time in 2019. I had a fairly short notice thing for work, where I had to be in Hamburg the next day, and spend a couple days there. I logged into my travel booking app, found some relatively cheap lodging—cheaper than I actually needed, I make this mistake often—and set off only to discover that I had not booked a ho_t_el, but a ho_st_el. A hostel in the Reeperbahn. So began my relationship with Hamburg, a city I&amp;rsquo;ve rarely had the chance to explore and vibe with, although I&amp;rsquo;ve traveled there a bunch of times for work. After a week back in Germany and re-adjusting to the time zone, I decided to change that.&lt;/p>
&lt;p>I&amp;rsquo;ve been meaning to visit my dearest friend, Em, at their place in Harburg for a while. They moved from Berlin a couple years ago and we don&amp;rsquo;t spend nearly enough time together lately, so I was excited to head out for five days or so and do some exploring of the area. The Ukrainian refugees I had taken in last year wanted to come do some hanging out in Berlin for the week, so it worked perfectly. They took the redeye bus up from the Stuttgart area and arrived on a Saturday morning. I welcomed them, caught up a bit, handed over my keys and set off to Germany&amp;rsquo;s second-largest city.&lt;/p>
&lt;p>Hamburg is a city with a reputation for radicalism. Berlin is hardly the antifa capital of Germany. Those honors go to the port city in the north, where recent G20 riots galvanized the radical left against capitalism and the state. There&amp;rsquo;s a fantastic documentary, &lt;a href="https://www.hamburger-gitter.org/">&lt;em>Hamburger Gitter&lt;/em>&lt;/a>, that covers the events by exploring the behaviors of the police. I admit, however, that as an American, I find this a little striking. If our police acted as described in the film, it would represent a massive &lt;em>reduction&lt;/em> in the police violence. It&amp;rsquo;s refreshing to see this kind of resistance in a more civilized nation, one not perpetually on the brink. We&amp;rsquo;re so far past this point in America; we became inured to mass shootings and police brutality. Never let that happen, Hamburg.&lt;/p>
&lt;p>Among the many things Em and I have in common is that we both play hockey, so on the Saturday that I arrived, we got a group together and headed over to &lt;a href="https://www.eisland-hamburg.de/">&lt;em>Eisland&lt;/em>&lt;/a>, a sports facility in the north of Hamburg. They host an &lt;em>Eisdisco&lt;/em>, similar to the roller-rink afternoons I spent growing up, with disco balls and club music. I&amp;rsquo;d never seen anything like it on an ice rink.&lt;/p>
&lt;p>Entry and skate rentals were refreshingly cheap, but what we didn&amp;rsquo;t account for was the crowd. There were hundreds of people there! We waited an hour for skate rentals, but by the time we got there, they were out of all of our sizes. The staff were great, apparently they weren&amp;rsquo;t used to such a large crowd, and they refunded our entry fee. It&amp;rsquo;s hard to describe the atmosphere: the music was good, the lighting was good, they had a fog machine going. Honestly it was better than Berghain. It&amp;rsquo;s the coolest club in Germany, and not only because of the ice. Lesson learned: show up early and bring your own skates.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/eisdisco.gif" alt="People skate around a colorfully-lit ice rink">&lt;/p>
&lt;p>Years ago, a friend came through Charlottesville for a job interview, and we met up at a bar to catch up. She had recently been in Hamburg and was raving about the Fischhalle. This was long before I&amp;rsquo;d been to Germany or traveled to Europe, even; it was a lifetime ago, a year before Charlottesville got spicy. Her description left an impression, and I&amp;rsquo;ve been longing to visit ever since.&lt;/p>
&lt;p>I was finally able to get there on this trip and found it rather lovely. It&amp;rsquo;s the kind of place I&amp;rsquo;ve missed, but only through faults of my own. I miss the open mic scene and the coffee-shop meeting place vibe. That exists in Charlottesville. Actually, there&amp;rsquo;s no shortage of it. It almost surely exists in Berlin, too, although I worry it&amp;rsquo;ll be a little harder to find. There are no reasons I can&amp;rsquo;t have those things in my life. I just have to make space for them.&lt;/p>
&lt;p>I think that&amp;rsquo;s the lesson from this trip. I have to go to the things I want. They&amp;rsquo;re not missing. I&amp;rsquo;m missing.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/hamburg-harburg/dancing-lights.gif" alt="Colored lights appear to dance like automata as they reflect off the protective netting around the rink">&lt;/p></description><tweet>The coolest club in Germany. 2023 Travelogue: Hamburg-Harburg. Berlin 🚅 Hamburg</tweet></item><item><title>Charlottesville neo-nazis and other white supremacists were on no-fly lists</title><link>https://emilygorcenski.com/post/charlottesville-neo-nazis-and-other-white-supremacists-were-on-no-fly-lists/</link><pubDate>Sat, 21 Jan 2023 15:46:27 +0100</pubDate><guid>https://emilygorcenski.com/post/charlottesville-neo-nazis-and-other-white-supremacists-were-on-no-fly-lists/</guid><description>&lt;p>A leaked 2019 partial no-fly list and subset of the Terrorist Screening Database reveals that Charlottesville neo-Nazis and white supremacists, among others, were placed on government anti-terror watchlists.&lt;/p>
&lt;p>&lt;a href="https://www.forbes.com/sites/suzannerowankelleher/2023/01/20/jackpot-hacker-snags-tsa-no-fly-list/?sh=45157afa1251">As reported&lt;/a>, the Swiss hacktivist &lt;a href="https://maia.crimew.gay/">maia arson crimew&lt;/a> discovered a 2019-era copy of subsets of the US Government&amp;rsquo;s Terrorist Screening Database, often coloquially referred to as the &amp;ldquo;No-fly List.&amp;rdquo; These lists contain thousands of names, mostly of foreign nationals. However, I was able confirm that these lists also contain the names of American citizens involved in neo-Nazi and white supremacist activity, particularly those who participated in the Unite the Right rally in Charlottesville, Virginia in 2017. People on the SELECTEE list are often subjected to extended screening and questioning by TSA, although they are not necessarily strictly forbidden from flying.&lt;/p>
&lt;p>The list contains some redacted information, but in some cases also contains birthdate information. This is useful in verifying that the names refer to specific white supremacist and neo-Nazi actors who were active in the United States on or before 2019. I&amp;rsquo;m publishing the noteworthy names, as I believe that the presence of American citizens on no-fly lists is undoubtedly also newsworthy, as is the use of the anti-terror apparatus to control white supremacist violence in America.&lt;/p>
&lt;p>Some of these names include:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.npr.org/2019/07/15/741756615/virginia-court-sentences-neo-nazi-james-fields-jr-to-life-in-prison">James Alex Fields, Jr&lt;/a>, the Charlottesville terrorist, in the SELECTEE list;&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Elliot_Kline">Elliot Robert Kline&lt;/a>, including his neo-Nazi alias, &amp;ldquo;Eli Mosley&amp;rdquo;, in the SELECTEE list;&lt;/li>
&lt;li>Self-professed &amp;ldquo;antifa hunter&amp;rdquo; &lt;a href="https://apnews.com/article/va-state-wire-race-and-ethnicity-technology-us-news-nc-state-wire-bae21d9b066e5469c0a914a283a0235b">Daniel McMahon&lt;/a>, including his neo-Nazi alias, &amp;ldquo;Jack Corbin&amp;rdquo;, in the SELECTEE list;&lt;/li>
&lt;li>&lt;a href="https://www.thesentinel.com/communities/greg-conte-the-neo-nazi-ex-substitute-teacher-you-probably-didn-t-know-about/article_228d392a-336c-11ec-95cc-579dcabc0e87.html">Greg Conte&lt;/a>, including his neo-Nazi alias, &amp;ldquo;Greg Ritter&amp;rdquo;, in the SELECTEE list;&lt;/li>
&lt;li>&lt;a href="https://www.cnbc.com/2019/08/05/cesar-sayoc-sentenced-to-20-years-for-sending-bombs-to-trump-critics.html">Cesar Sayoc&lt;/a>, in the NOFLY list;&lt;/li>
&lt;li>&lt;a href="https://www.splcenter.org/fighting-hate/extremist-files/individual/nathan-benjamin-damigo">Nathan Damigo&lt;/a>, in the SELECTEE list.&lt;/li>
&lt;/ul>
&lt;p>Notably, this 2019 list leaves out some notable names in the white supremacist movement. Matthew Heimbach is not on it, nor are Jason Kessler, Richard Spencer, or Christopher Cantwell. However, as the list is only a subset of the full database, and was a snapshot from some time in 2019, this does not mean these individuals are not on the list, either then or now. These these names also do not represent the entirety of Charlottesville-involved white supremacists in the list. Further stories are developing.&lt;/p>
&lt;p>&lt;small>Update: Added clarification about the SELECTEE list&lt;/small>&lt;/p></description><tweet>BREAKING: Thanks to maia arson crimew @_nyancrimew, it's revealed that Charlottesville white supremacists were put on no-fly lists</tweet></item><item><title>2023 Travelogue: Back to Berlin</title><link>https://emilygorcenski.com/post/2023-travelogue-back-to-berlin/</link><pubDate>Wed, 18 Jan 2023 20:56:51 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-back-to-berlin/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bmw.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bmw.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bmw.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bmw.jpg" width="600"/></media:content><description>&lt;p>I spent the holidays back home (Charlottesville) before heading home (Berlin), renewed once again my the energy I had while back in Virginia. IAD 🛫 BRU 🛬 BER&lt;/p>
&lt;p>Home&amp;rsquo;s a funny word, and I&amp;rsquo;ve never known really where &lt;em>home&lt;/em> home is. I moved around a bit when I grew up: five years here, five years there, another town for high school; university, recovering from a health crisis, finally a career. For a while, I called Connecticut my home. Certainly its the state I knew the best. I drove a lot, I knew those roads. When I was recovering from my thyroid issue, I played a lot of &lt;em>World of Warcraft&lt;/em>. But on Sunday mornings, I would get in my car, get a cup of Dunkin' coffee, and drive randomly around the state.&lt;/p>
&lt;p>I spent ten years in Virginia before moving to Berlin and never developed that intimacy for the state. I was home last August, and I went for a run. After ten years of owning my house, I discovered that the next road over wasn&amp;rsquo;t a dead-end. There was simply never any reason to go down it. Charlottesville never felt like home until I had to fight for it. Then it became my hometown.&lt;/p>
&lt;p>Berlin is a home now, too, and I recognize the privilege of being rich enough to have two homes (though I rent in Berlin), and I try not to squander that. I&amp;rsquo;m able to work some days a year from Virginia; I try to take the most advantage of this that I can. But to do so that means I have to make the increasingly difficult trip back across the ocean each winter.&lt;/p>
&lt;p>I left Charlottesville for my safety but also for my mental health. The city, &lt;a href="https://emilygorcenski.com/post/the-relentlessness-of-trauma/">the trauma&lt;/a>, drained me, and every time I left the city for work, I found myself invigorated. The same keeps holding true. When I&amp;rsquo;m home, I&amp;rsquo;m working on projects around the house, reading books, and partaking in hobbies. Most work on this website that I do, I do while home for the holidays. This year, I replaced our kitchen faucet, and in a classic software engineer yakshave, that meant resealing and buffing the counters, fixing the kitchen caulk, and repainting the trim. The results ain&amp;rsquo;t half bad.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/before.jpg" alt="Kitchen counter before">
&lt;br>&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/after.jpg" alt="Kitchen counter after, with a pro-style copper faucet and less clutter">&lt;/p>
&lt;p>I also built a scale model of my first car that I&amp;rsquo;ve had for years. I&amp;rsquo;m not so good working with my hands, so it didn&amp;rsquo;t come out &lt;em>great&lt;/em>, but honestly, the real car wasn&amp;rsquo;t great. What is a model if not a faithful reproduction of the original.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bmw.jpg" alt="A scale model of a white 1980s BMW, hood open">&lt;/p>
&lt;p>In 2022, I &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">wrote&lt;/a> about how there&amp;rsquo;s a time for builders and a time for breakers, and how I want to spend more time being more of a builder than a breaker. I think that having life in two places is forcing me to focus on that building: building my relationships, building my home, and building myself.&lt;/p>
&lt;p>Heading back to Berlin, I was grateful that the trip was seamless and fast. Under seven hours, Dulles to Brussels, a short layover, and another 90 minutes to Berlin. No lost luggage, and no delays. I&amp;rsquo;m pleasantly surprised at some of the improvements at Dulles. The millimeter wave baggage scanners are a game-changer.&lt;/p>
&lt;p>The Berlin, airport, is world-class awful. After such a long wait, it&amp;rsquo;s sad to see how little they have their shit together. As you walk out of the baggage claim, there are lots of signs about how licensed taxi drivers will not approach you in the airport. Yet as you step out of the customs zone, you are absolutely accosted by unlicensed taxis. Outside the airport, the drivers swarm the taxi rank. I had a hard time finding the actual usher to get a real, licensed taxi. Tip for the first-timers: licensed taxis get transponders, so they can enter the taxi lane at the airport. The unlicensed taxis will make you cross to the rideshare lot. Don&amp;rsquo;t take an unlicensed taxi. They will rip you off.&lt;/p>
&lt;p>Better yet, take the FEX or the Regiobahn. Alas, my luggage was too heavy and the redeye is ever more brutal, so I opted for the climate crime option. Add it to my ledger.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/back-to-berlin/bru.jpg" alt="A large sign that says &amp;ldquo;Beers &amp; Cheers&amp;rdquo;">&lt;/p>
&lt;p>Back to Berlin means back to work, and my company has a new office that opened at the end of last year. 2023 seems to be a year of new starts, and although I spent the holiday break more than a little grumpy about my workload, I figured that if I&amp;rsquo;m going to manage life across continents, I need to get a lot better at time management. So, at risk of sounding like I&amp;rsquo;m making a New Year&amp;rsquo;s Resolution, I&amp;rsquo;m trying new techniques for calendar management, and so far it&amp;rsquo;s working nicely.&lt;/p>
&lt;p>Maybe the year won&amp;rsquo;t be so bad.&lt;/p></description><tweet>2023 Travelogue: Back to Berlin. IAD 🛫 BRU 🛬 BER. Musing on life split across continents.</tweet></item><item><title>From Misogynist Incels to “One of the Shooters”: What Can Help College Sexual Violence Prevention Confront Male Supremacism?</title><link>https://www.tandfonline.com/doi/full/10.1080/26379112.2022.2132951</link><pubDate>Mon, 16 Jan 2023 10:32:52 +0100</pubDate><guid>https://emilygorcenski.com/post/from-misogynist-incels-to-one-of-the-shooters-what-can-help-college-sexual-violence-prevention-confront-male-supremacism/</guid><description>&lt;p>This paper by Dr. Miriam Arbeit, et al, explores how college sexual violence prevention can help recognize and stop threats of violent incels and male supremacists.&lt;/p></description><tweet>A paper by my lovely friend and colleage Dr. Miriam Arbeit on preventing incel and male supremacist violence</tweet></item><item><title>2023 Travelogue: Boston and the Winter Classic</title><link>https://emilygorcenski.com/post/2023-travelogue-boston-and-the-winter-classic/</link><pubDate>Sat, 14 Jan 2023 13:43:11 +0100</pubDate><guid>https://emilygorcenski.com/post/2023-travelogue-boston-and-the-winter-classic/</guid><image><url>https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/fenway.jpeg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/fenway.jpeg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/fenway.jpeg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/fenway.jpeg" width="600"/></media:content><description>&lt;p>I traveled to Boston to see the Bruins take on the Pittsburgh Penguins for the Winter Classic at Fenway Park.&lt;/p>
&lt;p>There&amp;rsquo;s a certain gender of guy in New England. This guy has his tricks, and he is &lt;em>proud&lt;/em> of them. He&amp;rsquo;s certain he&amp;rsquo;s cracked the secrets of the world, can talk himself into any space, and envisions himself some kind of master player of the game. The thing is, this kind of guy is not necessarily bullshitting. There&amp;rsquo;s a solidarity of sorts, and every once in a while, player recognizes player, and they let it pass, a sort of &lt;em>Pay it Forward&lt;/em> for a faux middle-class exclusivity.&lt;/p>
&lt;p>Other regions have this gender of guy, too, but New England&amp;rsquo;s is unique. As my wife and I waited in line to take a photo with the Stanley Cup, a guy wearing cargo shorts in winter (another, if you may, gender of guy) talked loudly in his Boston accent about how he was going to talk himself into the game, despite having no tickets. I wonder if it worked. We didn&amp;rsquo;t see him again.&lt;/p>
&lt;p>The last time I saw the Bruins play in person was in 2012, a playoff game against the Washington Capitals. They won that game, but lost the series, dashing all hopes of a follow-up Cup year. I proposed to Christine later that night, which I&amp;rsquo;ll be honest was a formality, since she had already proposed to me weeks before, and I had already said yes. I proposed anyways, and she called me a big nerd. She wasn&amp;rsquo;t wrong.&lt;/p>
&lt;p>Fenway I hadn&amp;rsquo;t seen in even longer. My last trip there was during my senior skip day in the year 2000, a game against the Toronto Blue Jays. It must have been only days before my 18th birthday, but I don&amp;rsquo;t really remember that.&lt;/p>
&lt;p>When I found out the Bruins were playing Fenway, I figured it might be the last time that happens, and I waffled back and forth on whether I should buy the remarkably expensive tickets. Christine encouraged me, so on New Years Day we packed up and embarked on the 10-ish hour drive from Charlottesville to Boston.&lt;/p>
&lt;hr>
&lt;p>Boston&amp;rsquo;s a city I&amp;rsquo;ve never really vibed with, despite my roots in the area. My father grew up in Dorchester, and I was born in northeastern Massachusetts, though I moved to the faraway land of Connecticut when I was five or so years old. In my early 20s, I&amp;rsquo;d drive up from time to time, just to get out of the suburban Connecticut routine. I&amp;rsquo;d never tell anyone I was going; I&amp;rsquo;d just try to find something interesting to do. In Connecticut, I grew up in the country. Cities call to me. I need their energy and vibrance. But not every city vibes. I like Boston well enough, but I have never really worn it proper.&lt;/p>
&lt;p>I told Christine to count how many times my New England accent would slip out. Learning German has brought the R-drop back into my speech, and when the self-confident, self-declared VIP guy mentioned earlier asked me if I knew Barstool Sports (ugh), I responded, &amp;ldquo;BAHstool? Yeahr, of course.&amp;rdquo; Christ.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/stanley-cup.jpeg" alt="Christine and I standing next to the Stanley Cup">&lt;/p>
&lt;p>We didn&amp;rsquo;t touch the Stanley Cup, by the way. I studied mathematics and engineering, but belief in The Curse was stitched into my soul on the day I was born, and it&amp;rsquo;s rare that a game day goes by without me silently wearing a Bruins t-shirt. I&amp;rsquo;d never forgive myself if they were to lose in some heartbreaking fashion.&lt;/p>
&lt;hr>
&lt;p>The more I learn German, the more reflective I am about how I communicate, and as Christine and I sat in Right Field Box 7, the nonstop griping from our neighbors about the view gave me pause to think about my own day-to-day grumpiness. I&amp;rsquo;ll be honest; the seats weren&amp;rsquo;t great for watching the game. We had very limited view of the ice, and ended up watching the game on the field screen, a strange experience without the play-by-play and color commentary.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/winter-classic.jpeg" alt="Christine and I standing next to the Stanley Cup">&lt;/p>
&lt;p>The complaining got worse as the game wore on, with the B&amp;rsquo;s down 1-0 heading into the third. Christine asked why my team wasn&amp;rsquo;t scoring. I told her, &amp;ldquo;just wait, when they do, you&amp;rsquo;ll have never heard anything like it.&amp;rdquo; Sure enough, when Jake DeBrusk tied the game some nine minutes in, Fenway erupted in a way that is quite unlike any experience on earth. American sports fans aren&amp;rsquo;t like European ones. We don&amp;rsquo;t fucking sing. We watch the damn game. So when the game is tense, the stadium is quieter, people biting their lips and clenching their jaws. When the puck hits the back of the net, then, it becomes a madhouse, 0-110% in a heartbeat, and it&amp;rsquo;s sublime. I looked over at Christine. She chuckled and shouted, &amp;ldquo;YELLING!&amp;rdquo; as the stadium cheered. It&amp;rsquo;s the same way she mocks our cats when they loudly demand food. She doesn&amp;rsquo;t love sports, but she does love me, and she loves me loving sports.&lt;/p>
&lt;hr>
&lt;p>Despite being a frequent traveler, I&amp;rsquo;ve never built any loyalties to a hotel brand. I&amp;rsquo;m a lightweight nomad, so I use a complicated algorithm of price, location, and hoping I don&amp;rsquo;t accidentally book a hostel, which I lament has happened more than once. I ended up booking The Verb Hotel, which is a very strange theme 50s-style motel situated just a short walk from the Van Ness gates at Fenway. The whole area there is something else now, the entire Fenway neighborhood seems to be new development, barely five years old, or at least it seems. The Verb therefore is a sort of anomaly, and when I sent Christine the booking details, she asked, &amp;ldquo;did you mean to book a themed hotel?&amp;rdquo; Oh no.&lt;/p>
&lt;p>Thankfully, it actually turned out amazing. The hotel has leaned into a rock&amp;rsquo;n&amp;rsquo;roll theme, and their kitsch is to put a turntable in each room. The encourage you to pick a favorite album from vinyl rack in the lobby. I was thrilled to find Springsteen&amp;rsquo;s &amp;ldquo;Born to Run,&amp;rdquo; the greatest album of all time, and dropped the needle on it each morning we stayed. &amp;ldquo;Thunder Road&amp;rdquo; is one hell of a wake-up jam.&lt;/p>
&lt;p>We ended our trip to Legal Seafood, which I hadn&amp;rsquo;t eaten at in forever and a day. I wanted to visit the No Name Restaurant, which my grandmother always raved about, but a quick search told us they closed in 2020 during the pandemic, after 100+ years of service. Sad. Echoes of the pandemic that will probably be forgotten about in a generation or two.&lt;/p>
&lt;p>Christine always found it funny that I always complained about New England never changing. I say it&amp;rsquo;s the land that time forgot. You drive down the road and the same tractor is still rusting in the same spot in the same field where it broke down in 1994. And then sometimes something small changes, like the exit numbers on the Mass Pike, which I had still memorized. Christine laughed as we passed the sign that said, &amp;ldquo;Old Exit 14.&amp;rdquo; &amp;ldquo;Look, &lt;em>old&lt;/em> exit 14, they put it there just for you, &lt;strong>grandma&lt;/strong>.&amp;rdquo; The tax for her watching sports is that she gets to roast me. It&amp;rsquo;s a good relationship.&lt;/p>
&lt;hr>
&lt;p>We made our way back down to Charlottesville the next day, stopping in my old hometown area to eat at the Willimantic Brew Pub, which we hadn&amp;rsquo;t been to in several years at least, and which my wife enjoys quite a lot. A long but uneventful drive brought us back home to our pets, who greeted us hungrily with YELLING. I rubbed their fuzzy heads and went to sleep, a brand new work year waiting to begin the next day.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/travel/2023/boston-winter-classic/christine.jpeg" alt="Christine and I standing next to the Stanley Cup">&lt;/p></description><tweet>2023 Travelogue: The Winter Classic</tweet></item><item><title>Stop catastrophizing trans-hate</title><link>https://emilygorcenski.com/post/stop-catastrophizing-trans-hate/</link><pubDate>Wed, 11 Jan 2023 22:10:58 +0100</pubDate><guid>https://emilygorcenski.com/post/stop-catastrophizing-trans-hate/</guid><description>&lt;p>The anti-transgender sentiment rising from the American political right is a travesty, not a catastrophe, and panic is only making things worse.&lt;/p>
&lt;p>It&amp;rsquo;s not been fun to be a trans person this year, and it&amp;rsquo;s been unusually bad in America, where anti-transgender sentiment has become the latest battlefield in the American right&amp;rsquo;s ongoing political culture war. While right-wing politics have never been particularly trans-friendly, this year has seen everything from a wave of anti-transgender legislation, to attacks by Proud Boys on drag events at public libraries. For trans people, it&amp;rsquo;s easy to despair. It seems like at every turn, more and more hate is rising against us, and our allies now, as ever, are rarely rising to our defense.&lt;/p>
&lt;p>Despite the wave of hate, or rather, &lt;em>because&lt;/em> of the wave of hate, it&amp;rsquo;s more important than ever to keep some context. Things are bad, yes. But things have never exactly been &lt;em>good&lt;/em>. Despair is an ugly emotion. Despair robs us of joy and denies us freedom. It locks us into a belief that because things have gotten bad, they are destined to get &lt;em>worse&lt;/em>, and that we are powerless to swim against the current. In the worst cases, despair can lead to the worst, and &lt;a href="https://www.thetrevorproject.org/survey-2022/assets/static/trevor01_2022survey_final.pdf">steal one&amp;rsquo;s very will to live&lt;/a>.&lt;/p>
&lt;p>The latest round of in-community fear mongering has been a devastatingly harmful article by Vice, titled &lt;a href="https://www.vice.com/en/article/dy7qnj/trans-people-fleeing-us-seek-asylum">&amp;ldquo;Some Trans People Are Preparing to Flee the US and Seek Asylum Abroad&amp;rdquo;&lt;/a>. The subtext of the article is that it&amp;rsquo;s high time for trans people to begin exit planning from the United States. Hey, I get that. I&amp;rsquo;m down with that. I emigrated America in 2018 and have lived a life of remarkable privilege in Germany. I&amp;rsquo;ve been saying for years that trans folks should work on language skills, get name changes on passports and other documents, and make connections overseas. I&amp;rsquo;m very supportive of the idea of trans migration.&lt;/p>
&lt;p>When I moved to Germany, it was the hardest thing I had ever done, and I had survived a terrorist attack only half a year prior. Migration drains you; you don&amp;rsquo;t understand the culture or the language, simple things become devastatingly impossible, like how to buy ibuprofen or how to get a bus pass. Migration nearly bankrupted me, and for the first time in my life I had to beg for money. It is devastatingly hard to move overseas.&lt;/p>
&lt;p>But the article does not simply talk about trans migration, it specifically references &lt;em>asylum&lt;/em>. This is a dangerous and misleading word. Asylum has a specific meaning, and applying for asylum is a specific path to migration. Among all paths, it&amp;rsquo;s perhaps the hardest and most brutal. It&amp;rsquo;s tempting to read international law and believe it applies to you. It&amp;rsquo;s especially easy when you think things are as bad as they can get at home. But unfortunately, asylum seeking is one of the most shocking affronts to human rights we have in the developed world.&lt;/p>
&lt;p>Consider Germany, where asylum seekers must live in an &lt;em>Ankunftzentrum&lt;/em>, or AnKER Center. Consider &lt;a href="https://asylumineurope.org/reports/country/germany/reception-conditions/housing/conditions-reception-facilities/">this page&lt;/a> in the Asylum Information Database published by the European Council on Refugees and Exiles, an alliance of over 100 European NGOs:&lt;/p>
&lt;blockquote>
&lt;p>A typical room in an initial reception centre has between 2 and 4 beds, there are chairs and a table and each resident has a locker for herself or himself. Size of rooms may vary, but rooms with a single bed are highly exceptional&amp;hellip; Bath and toilet facilities usually consist of shower rooms and toilets which people have to share. Where guidelines are available, it is recommended that one shower should be available for 10 to 12 persons, but in some reception centres the ratio is worse than that, particularly in situations of overcrowding. Cleaning of shared space (halls, corridors) as well as of sanitary facilities is carried out by external companies in the initial reception centres&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>in AnkER centres, for instance, cooking is not allowed. Refrigerators for the use of asylum seekers are available in some initial reception centres, but this seems to be the exception. In some centres, the management does not allow hot water boilers for asylum seekers as this would be forbidden by fire regulations. This poses an obstacle to mothers with infants.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>According to statistics compiled by NGOs, the number of attacks on reception centres during 2020 was significantly higher – namely 992 attacks on facilities, including 6 arson attacks, compared to 93 attacks including 3 arson attacks in 2019.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The duration of stay in initial reception centres has been generally set at a maximum of 18 months following the reform in 2019 (see &lt;a href="https://asylumineurope.org/reports/country/germany/reception-conditions/access-and-forms-reception-conditions/freedom-movement/">Freedom of Movement&lt;/a>). Following the initial reception period, a stay in other collective accommodation centres is also obligatory, until a final decision on the asylum application is reached. This often takes several years since the obligation applies to appeal procedures as well.&lt;/p>
&lt;/blockquote>
&lt;p>Or in the Freedom of Movement page linked there above, consider:&lt;/p>
&lt;blockquote>
&lt;p>The freedom of movement of asylum seekers is restricted and they have no right to choose their place of residence. According to the Asylum Act, their right to remain on the territory under a permission to stay (&lt;em>Aufenthaltsgestattung&lt;/em>) is generally limited to the district of the foreigners’ authority in which the responsible reception centre is located. This “residence obligation” (&lt;em>Residenzpflicht&lt;/em>), legally called “geographical restriction” (&lt;em>räumliche Beschränkung&lt;/em>), means that asylum seekers are not allowed to leave that area even for short periods of time without permission of the BAMF.&lt;/p>
&lt;/blockquote>
&lt;p>Or, perhaps consider &lt;a href="https://asylumineurope.org/reports/country/spain/reception-conditions/special-reception-needs-vulnerable-groups/">a similar report&lt;/a> in Spain:&lt;/p>
&lt;blockquote>
&lt;p>The LGTBI+ group Lambda in Valencia reported three attacks in one month against its office. Homophobic incidents have been reported in Melilla, where a Moroccan boy was brutally assaulted, and in Valencia, where a transsexual person was insulted and harassed. A transphobic graffiti was drawn in Huelva, and one against the trans law at the office of the LGTBI+ group COGAM in Madrid was also reported. The NGO Kifkif’s office in Madrid was vandalised, with excrement being left at its the entrance. The rise of homophobic assaults and incidents gave origin to many demonstrations across Spain, aimed at denouncing the raise hate crimes against the in LGTBI+ population, and at urging the Government to adopt measures against LGTBI+ phobia. A police raid in Madrid, Barcelona, Valencia and Alicante at the end of January 2022 led to the dismantlement of a neo-Nazi group who disseminated hate messages and also attacked a LGTBI+ office near Alicante&amp;hellip; The NGO Accem expressed concerns about the multiple obstacle and the discrimination faced by LGBTQI+ asylum seekers in Spain, affecting in particular transsexual women.&lt;/p>
&lt;/blockquote>
&lt;p>European frameworks rarely consider Americans as at-risk for needing asylum. An American asylum seeker will need to prove that the entire country is off-limits, and that will be a big challenge in a country built on top of 50+ different legal systems. The migration office will ask why you chose a European country over a blue state. Being a victim of a crime is not enough. Having some transphobic legislation is not enough, particularly when Europe itself is &lt;a href="https://ilga-europe.org/report/annual-review-2022/">hardly something to brag about&lt;/a> regarding transgender rights. Asylum didn&amp;rsquo;t work for &lt;a href="https://twitter.com/danniaskini/status/1159400637609709568">Danni Askini&lt;/a>, who did not seem to have a good time in the several months she spent in Sweden. Planning for asylum can even be a strike against your asylum claim, if a court feels that you are &lt;a href="https://www.bverwg.de/en/181208U10C27.07.0">&amp;ldquo;creating the conditions for obtaining asylum status.&amp;quot;&lt;/a>&lt;/p>
&lt;p>Asylum seekers in Europe are people who have spent their entire life savings to make a devastatingly treacherous journey, often across the sea, to find safety. As bad as trans hate in America is now, it is nothing compared to what these brave souls have endured.&lt;/p>
&lt;hr>
&lt;p>It&amp;rsquo;s ok to be concerned over the state of anti-transgender legislation in America. In 2022, &lt;a href="https://www.npr.org/2022/11/28/1138396067/transgender-youth-bills-trans-sports">over 300 anti-trans bills&lt;/a> were introduced, the worst year on record. But it&amp;rsquo;s important in this analysis to keep things in context. In 2017, &lt;a href="https://www.aclu.org/news/lgbtq-rights/legislatures-gear-target-transgender-people-we-gear-fight-back">the ACLU counted more than 200 anti-LGBT bills&lt;/a>. Of these, some 50 targeted trans people. In 2018, the story was much the same, where &lt;a href="https://www.hrc.org/news/despite-anti-lgbtq-efforts-equality-pushing-forward">the HRC tracked 113 such bills&lt;/a>.&lt;/p>
&lt;p>Yet &lt;a href="https://www.aclu.org/legislation-affecting-lgbtq-rights-across-country">a closer look&lt;/a> at the history of this proposed legislation shows that the vast majority of it does not succeed, few even make it out of their committees. Those that do are likely to be immediately challenged in court, and many have little chance of surviving a protracted legal battle. It&amp;rsquo;s easy to by cynical, but also don&amp;rsquo;t forget: in 2020, even a conservative-majority Supreme Court &lt;a href="https://www.npr.org/2020/06/15/863498848/supreme-court-delivers-major-victory-to-lgbtq-employees">voted to affirm trans rights are protected by Title VII&lt;/a>.&lt;/p>
&lt;p>One should moreover remember that alongside these scores of hateful bills are even more pro-civil rights laws. Per the HRC&amp;rsquo;s report above, 2018&amp;rsquo;s 113 anti-LGBT bills were countered by 178 pro-equality drafts. The state of trans rights is stronger now than it was ten years ago; &lt;em>Grimm v. Gloucester County&lt;/em>, &lt;em>Obergefell v. Hodges&lt;/em>, and &lt;em>Bostok v. Clayton County&lt;/em> set strong precedents that will be hard to undo, even by a court that committed the &lt;em>Dobbs&lt;/em> tragedy: the Gloucester County School Board was denied its writ of certiorari only 18 months ago, and &lt;em>Bostok&lt;/em> is less than three years old.&lt;/p>
&lt;p>When we &amp;ldquo;spread awareness&amp;rdquo; of these anti-trans bills, it&amp;rsquo;s critical to remember that shouting does very little. What is the intent with this scaremongering? Where is the call to action? Sure: contact your representative, if you feel that matters. But also, we can find who funds these bigoted politicians. We can find their corporate donors. We can protest outside their homes. We can fund legal aid groups. We can organize. We can &lt;em>fight back&lt;/em>.&lt;/p>
&lt;hr>
&lt;p>There is a lot to fear as a trans person in America. There are still places I don&amp;rsquo;t go when I am back home. I&amp;rsquo;ve been targeted by neo-Nazis and beaten by a mob. I know firsthand how violent it can be, and that&amp;rsquo;s why I left. But fear cannot lead us to panic. There&amp;rsquo;s nothing to gain with today&amp;rsquo;s breathless jamming of anti-trans content across our social media feeds. Trans people tend to follow lots of other trans people, and when some of us are worked up, and feeling like the situation is hopeless, it&amp;rsquo;s easy for the rest of us to feel that way, too.&lt;/p>
&lt;p>That can have deadly consequences. Sharing far-right content legitimizes far-right content. Sharing worst-case scenarios leads to despair, and despair can lead to dark places. We have to be better than to share only fear and no hope. Sometimes hope looks like fighting back, and sometimes hope looks like a safer haven overseas. But if you do want to flee, please, consult an immigration attorney in the country you want to flee to. America has &lt;a href="https://www.henleyglobal.com/passport-index/ranking">the 7th most powerful passport in the world&lt;/a>. Explore your many visa options. Consider Albania, a beautiful country where you can live &lt;a href="https://al.usembassy.gov/u-s-citizen-services/additional-resources/entering-and-residing/">up to a year&lt;/a> (but not work) visa free, or a &lt;a href="https://nomad.residencymalta.gov.mt/">nomad visa&lt;/a> in Malta. Are you an artist? Berlin has a special &lt;a href="https://co-germany.de/the-artist-visa/">artist visa&lt;/a>.&lt;/p>
&lt;p>Trans hate is rising worldwide, but so is our ability to fight it. We have more tools now than at any point in history. The worst thing we can do is spread panic and push people to irrational, reckless, life-altering decisions. We can and must do better. Speak to the experts. Listen to people who have been through this before. We can win, and we will win.&lt;/p></description><tweet>Despair causes us to lose hope rather than fight back. Trans people deserve more than just bad news.</tweet></item><item><title>Data Mesh Accelerate Workshop</title><link>https://martinfowler.com/articles/data-mesh-accelerate-workshop.html</link><pubDate>Mon, 09 Jan 2023 23:59:35 +0100</pubDate><guid>https://emilygorcenski.com/post/data-mesh-accelerate-workshop/</guid><description>&lt;p>My colleagues Steve and Paulo wrote an article about something we&amp;rsquo;ve been working on together for the last couple of years, the Data Mesh Accelerate workshop. Check it out!&lt;/p></description><tweet>A good article from my wonderful colleagues about something we've been working on for a couple years, Data Mesh Accelerate.</tweet></item><item><title>Posts without posting: building a social media sharing relay with F♯ and Azure Functions, part 4</title><link>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/</link><pubDate>Sun, 08 Jan 2023 20:53:40 +0100</pubDate><guid>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/shortcut1.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/shortcut1.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/shortcut1.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/shortcut1.jpg" width="600"/></media:content><description>&lt;p>In the first three parts of the series, I set up an Azure Functions endpoint to accept a URL and a comment and share it across various social media sources. The last step of making this a proper workflow is to build the iOS shortcut.&lt;/p>
&lt;p>The last two parts of this series were very long and tech heavy. This part is mercifully shorter and actually quite easy. The goal here is to create a shortcut in iOS to extract the URL and page title from a website I am visiting, prompt me for a comment, and then hit the API endpoint previously set up with an authentication key. This can be done with the built-in iOS Shortcuts app that ships with all current versions of iOS.&lt;/p>
&lt;blockquote>
&lt;h4 id="posts-without-posting-a-series">Posts without posting, a series&lt;/h4>
&lt;ol>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/">Architecting a relay&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/">Writing the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/">Configuring Azure Functions with Terraform&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/">Setting up an iOS Shortcut&lt;/a>&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>This is a very simple seven step process. In the iOS Shortcuts app, let&amp;rsquo;s create a shortcut called &amp;ldquo;Post Link&amp;rdquo;. The steps are as follows:&lt;/p>
&lt;ol>
&lt;li>Get &lt;code>Any&lt;/code> input from &lt;code>Share Sheet&lt;/code> (Sharing -&amp;gt; System -&amp;gt; Share)&lt;/li>
&lt;li>Ask for &lt;code>Text&lt;/code> with &lt;code>Comment&lt;/code> (Scripting -&amp;gt; Notification -&amp;gt; Ask for Input)&lt;/li>
&lt;li>Set variable &lt;code>Tweet&lt;/code> to &lt;code>Provided Input&lt;/code> (Scripting -&amp;gt; Variables -&amp;gt; Set Variable)&lt;/li>
&lt;li>Get &lt;code>Page URL&lt;/code> from &lt;code>Shortcut Input&lt;/code> (Web -&amp;gt; Safari -&amp;gt; Get Details of Safari Web Page)&lt;/li>
&lt;li>Get &lt;code>Name&lt;/code> from &lt;code>Shortcut Input&lt;/code> (Web -&amp;gt; Safari -&amp;gt; Get Details of Safari Web Page)&lt;/li>
&lt;li>Enter URL of endpoint (Web -&amp;gt; URLs -&amp;gt; URL)&lt;/li>
&lt;li>Get Contents of URL (Web -&amp;gt; Web Requests -&amp;gt; Get Contents of URL)&lt;/li>
&lt;li>Set &lt;code>Method&lt;/code> to &lt;code>POST&lt;/code>&lt;/li>
&lt;li>Add a header with &lt;code>key&lt;/code> set to &lt;code>x-functions-key&lt;/code> and &lt;code>text&lt;/code> set to your function key as found in the Azure Function you just set up&lt;/li>
&lt;/ol>
&lt;p>That&amp;rsquo;s it! Here are some images of how mine looks. To use this, whenever I am viewing a website, I can simply open the share tray and click &amp;ldquo;Post Link.&amp;rdquo;&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/shortcut1.jpg" alt="First page of the shortcut described above as shown in the iOS app">
&lt;img src="https://emilygorcenski.com/photo-gallery/writing/shortcut2.jpg" alt="Second page of the shortcut described above as shown in the iOS app">&lt;/p></description><tweet>Part 4 of Post without posting: setting up an iOS shortcut for sharing links across platforms.</tweet></item><item><title>Posts without posting: building a social media sharing relay with F♯ and Azure Functions, part 3</title><link>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/</link><pubDate>Sat, 31 Dec 2022 04:08:30 +0100</pubDate><guid>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/</guid><description>&lt;p>In the first two parts of the series, I introduced the architecture for building a link sharing relay and then built it with a little bit of F# code. This post covers setting up the infrastructure and deploying the code as an Azure Function.&lt;/p>
&lt;p>Azure functions offer a really nice way to build serverless endpoints. Azure functions are phenomenally flexible, and in the &lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/">previous part&lt;/a> I showed how to set up an F# Azure function with an &lt;code>HttpTrigger&lt;/code>. It runs locally, but to make it useful we need to deploy it to Azure. We&amp;rsquo;ll need to configure not a small amount of infrastructure to do so.&lt;/p>
&lt;blockquote>
&lt;h4 id="posts-without-posting-a-series">Posts without posting, a series&lt;/h4>
&lt;ol>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/">Architecting a relay&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/">Writing the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/">Configuring Azure Functions with Terraform&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/">Setting up an iOS Shortcut&lt;/a>&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>This post will be a little lengthy, but hopefully not as long as the last. I&amp;rsquo;ll use terraform to set things up, but there&amp;rsquo;s one step that doesn&amp;rsquo;t seem to be working. Configuring a Custom Domain for the Azure Function seems not to work, so this will be a small manual step. It&amp;rsquo;s not ideal, but it&amp;rsquo;s only one extra step for managing DNS. Some of my terraform scripts are inherited from previous work, but I&amp;rsquo;ll do my best to present them here as if I am using them for the first time.&lt;/p>
&lt;p>To deploy the function, we&amp;rsquo;ll do the following:&lt;/p>
&lt;ol>
&lt;li>Set up an Azure Resource Group&lt;/li>
&lt;li>Set up Azure Storage for deploying the function code&lt;/li>
&lt;li>Set up Azure Insights for monitoring&lt;/li>
&lt;li>Set up a Key Vault for secrets management&lt;/li>
&lt;li>Set up a Service Plan for the Azure Function&lt;/li>
&lt;li>Set up an Azure Function&lt;/li>
&lt;li>Configure a Key Vault Access Policy for the Azure Function&lt;/li>
&lt;li>Deploy the function&lt;/li>
&lt;/ol>
&lt;p>Let&amp;rsquo;s get started!&lt;/p>
&lt;h4 id="create-an-azure-resource-group">Create an Azure Resource Group&lt;/h4>
&lt;p>First, we&amp;rsquo;ll set up a couple variables and data source in terraform.&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-terraform" data-lang="terraform">&lt;span style="color:#75715e"># variables.tf
&lt;/span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">variable&lt;/span> &lt;span style="color:#e6db74">&amp;#34;domain&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">type&lt;/span> = &lt;span style="color:#a6e22e">string&lt;/span>
&lt;span style="color:#a6e22e">default&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;emilygorcenski.com&amp;#34;&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">variable&lt;/span> &lt;span style="color:#e6db74">&amp;#34;regions&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">type&lt;/span> = map(&lt;span style="color:#a6e22e">string&lt;/span>)
&lt;span style="color:#a6e22e">default&lt;/span> = {
&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;germanywestcentral&amp;#34;&lt;/span>
&lt;span style="color:#e6db74">&amp;#34;functions-eu&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;northeurope&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Not every region allows you to deploy Azure functions with a consumption plan (serverless), so I create some options in my variables. Next, we&amp;rsquo;ll set up our terraform provider. I&amp;rsquo;m ignoring the part where I have a remote terraform backend, but I recommend adding that, as well. My versions here are almost surely out of date, but I didn&amp;rsquo;t have time to fix that before writing this post. I&amp;rsquo;m on a schedule here!&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-terraform" data-lang="terraform">&lt;span style="color:#75715e"># main.tf
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#a6e22e">terraform&lt;/span> {
&lt;span style="color:#a6e22e">required_providers&lt;/span> {
&lt;span style="color:#a6e22e">azurerm&lt;/span> = {
&lt;span style="color:#a6e22e">source&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;hashicorp/azurerm&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">version&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;&amp;gt;= 2.91&amp;#34;&lt;/span>
}
&lt;span style="color:#a6e22e">azuread&lt;/span> = {
&lt;span style="color:#a6e22e">source&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;hashicorp/azuread&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">version&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;~&amp;gt; 2.0.0&amp;#34;&lt;/span>
}
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Finally, we can add the following to our &lt;code>main.tf&lt;/code> file. Of course, variable names in &lt;code>ALL_CAPS&lt;/code> should be replaced with something that makes sense for you.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_resource_group&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;rg&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;RESOURCE_GROUP_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = var.&lt;span style="color:#a6e22e">regions&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span>]
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;h4 id="setting-up-azure-storage">Setting up Azure storage&lt;/h4>
&lt;p>Once we have the resource group set up, we can configure a storage bucket that we can deploy our code into. Let&amp;rsquo;s create a new file, &lt;code>link-sharer.tf&lt;/code>, and put the following block in it.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_storage_account&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;links_app_storage&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;STORAGE_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">resource_group_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = var.&lt;span style="color:#a6e22e">regions&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;functions-eu&amp;#34;&lt;/span>]
&lt;span style="color:#a6e22e">account_tier&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Standard&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">account_replication_type&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;LRS&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>No further action is needed here.&lt;/p>
&lt;h4 id="configure-azure-insights">Configure Azure Insights&lt;/h4>
&lt;p>We&amp;rsquo;ll want to monitor our function, and while this step might be a little out of order, that&amp;rsquo;s ok. Let&amp;rsquo;s configure Azure Insights to let us monitor our function once we deploy. In &lt;code>link-sharer.tf&lt;/code>, add:&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_application_insights&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;links_afapp_insights&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;APP_INSIGHTS_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = var.&lt;span style="color:#a6e22e">regions&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;functions-eu&amp;#34;&lt;/span>]
&lt;span style="color:#a6e22e">resource_group_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">application_type&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;web&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="set-up-a-key-vault">Set up a Key Vault&lt;/h4>
&lt;p>This step is a little more difficult. Let&amp;rsquo;s create a new file, &lt;code>key-vault.tf&lt;/code>. We&amp;rsquo;ll start by configuring the Key Vault.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;links_afapp_keyvault&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;KEYVAULT_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">location&lt;/span>
&lt;span style="color:#a6e22e">resource_group_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">tenant_id&lt;/span> = data.&lt;span style="color:#a6e22e">azurerm_client_config&lt;/span>.&lt;span style="color:#a6e22e">current&lt;/span>.&lt;span style="color:#a6e22e">tenant_id&lt;/span>
&lt;span style="color:#a6e22e">sku_name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;standard&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">soft_delete_retention_days&lt;/span> = &lt;span style="color:#ae81ff">7&lt;/span>
&lt;span style="color:#a6e22e">access_policy&lt;/span> {
&lt;span style="color:#a6e22e">tenant_id&lt;/span> = data.&lt;span style="color:#a6e22e">azurerm_client_config&lt;/span>.&lt;span style="color:#a6e22e">current&lt;/span>.&lt;span style="color:#a6e22e">tenant_id&lt;/span>
&lt;span style="color:#a6e22e">object_id&lt;/span> = data.&lt;span style="color:#a6e22e">external&lt;/span>.&lt;span style="color:#a6e22e">account_info&lt;/span>.&lt;span style="color:#a6e22e">result&lt;/span>.&lt;span style="color:#a6e22e">object_id&lt;/span>
&lt;span style="color:#a6e22e">certificate_permissions&lt;/span> = [
&lt;span style="color:#e6db74">&amp;#34;Create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;DeleteIssuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;GetIssuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;List&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;ListIssuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;ManageContacts&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;ManageIssuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;SetIssuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>
]
&lt;span style="color:#a6e22e">key_permissions&lt;/span> = [
&lt;span style="color:#e6db74">&amp;#34;Backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Decrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Encrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;List&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Sign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;UnwrapKey&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Verify&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;WrapKey&amp;#34;&lt;/span>
]
&lt;span style="color:#a6e22e">secret_permissions&lt;/span> = [
&lt;span style="color:#e6db74">&amp;#34;Backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;List&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;Set&amp;#34;&lt;/span>
]
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>This will allow you to set up your Key Vault and gives your user account full permissions to manage keys. I think this is probably suboptimal, but I haven&amp;rsquo;t really dove into finding a better way to do this yet.&lt;/p>
&lt;p>Next, in your &lt;code>main.tf&lt;/code> file, put the following:&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">provider&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">features&lt;/span> {
&lt;span style="color:#a6e22e">key_vault&lt;/span> {
&lt;span style="color:#a6e22e">purge_soft_delete_on_destroy&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span>
}
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>This is needed because &lt;a href="https://github.com/hashicorp/terraform-provider-azurerm/pull/10088">as of December 2020&lt;/a>, all Key Vaults need to have &amp;ldquo;Soft Delete on Destroy&amp;rdquo; enabled.&lt;/p>
&lt;p>Also in &lt;code>main.tf&lt;/code>, let&amp;rsquo;s load our local data from our JSON for the secrets. I suppose we could also be reading these from environment variables, too, but this is how I do it.&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-terraform" data-lang="terraform">&lt;span style="color:#a6e22e">locals&lt;/span> {
&lt;span style="color:#a6e22e">twitter_data&lt;/span> = jsondecode(file(&lt;span style="color:#e6db74">&amp;#34;PATH/TO/TWITTER/CREDS/twitter-api.json&amp;#34;&lt;/span>))
&lt;span style="color:#a6e22e">mastodon_data&lt;/span> = jsondecode(file(&lt;span style="color:#e6db74">&amp;#34;PATH/TO/MASTODON/CREDS/mastodon-api.json&amp;#34;&lt;/span>))
&lt;span style="color:#a6e22e">google_data&lt;/span> = jsondecode(file(&lt;span style="color:#e6db74">&amp;#34;PATH/TO/GOOGLE/CREDS/google-key.json&amp;#34;&lt;/span>))
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Now, we can use this data in our &lt;code>key-vault.tf&lt;/code> file to set up the secrets.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;google-sheets-key&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;GOOGLE-SERVICE-ACCOUNT-CREDENTIAL&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = base64encode(&lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">google_data&lt;/span>.&lt;span style="color:#a6e22e">GOOGLE_SERVICE_ACCOUNT_CREDENTIAL&lt;/span>)
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;google-sheet-id&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;GOOGLE-SHEET-ID&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">google_data&lt;/span>.&lt;span style="color:#a6e22e">GOOGLE_SHEET_ID&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;twitter-consumer-key&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;twitter-consumer-key&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">twitter_data&lt;/span>.&lt;span style="color:#a6e22e">TWITTER_CONSUMER_KEY&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;twitter-consumer-key-secret&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;twitter-consumer-key-secret&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">twitter_data&lt;/span>.&lt;span style="color:#a6e22e">TWITTER_CONSUMER_KEY_SECRET&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;twitter-access-token&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;twitter-access-token&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">twitter_data&lt;/span>.&lt;span style="color:#a6e22e">TWITTER_ACCESS_TOKEN&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;twitter-access-token-secret&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;twitter-access-token-secret&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">twitter_data&lt;/span>.&lt;span style="color:#a6e22e">TWITTER_ACCESS_TOKEN_SECRET&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;mastodon-server&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mastodon-server&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">mastodon_data&lt;/span>.&lt;span style="color:#a6e22e">MASTODON_SERVER&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;span style="color:#66d9ef">
&lt;/span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_secret&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;mastodon-access-token&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;mastodon-access-token&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">value&lt;/span> = &lt;span style="color:#a6e22e">local&lt;/span>.&lt;span style="color:#a6e22e">mastodon_data&lt;/span>.&lt;span style="color:#a6e22e">MASTODON_ACCESS_TOKEN&lt;/span>
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>That&amp;rsquo;s it for now. We&amp;rsquo;ll come back to this.&lt;/p>
&lt;h4 id="set-up-a-service-plan">Set up a Service Plan&lt;/h4>
&lt;p>We need to set up a Service Plan where we specify our compute SKU and other details for the Azure function. This is easy. We want to use a &lt;code>Y1&lt;/code> SKU on a &lt;code>Windows&lt;/code> OS. This is a consumption (serverless) SKU where you pay for what you use.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_service_plan&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;links_afapp_service_plan&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;SERVICE_PLAN_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">resource_group_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = var.&lt;span style="color:#a6e22e">regions&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;functions-eu&amp;#34;&lt;/span>]
&lt;span style="color:#a6e22e">sku_name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Y1&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">os_type&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;Windows&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="set-up-the-azure-function">Set up the Azure Function&lt;/h4>
&lt;p>With all this done, we can finally set up the Azure Function. In your &lt;code>main.tf&lt;/code>, add the following:&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_windows_function_app&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;links_app&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">name&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;AZURE_FUNCTION_NAME&amp;#34;&lt;/span>
&lt;span style="color:#a6e22e">resource_group_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_resource_group&lt;/span>.&lt;span style="color:#a6e22e">rg&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">location&lt;/span> = var.&lt;span style="color:#a6e22e">regions&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;functions-eu&amp;#34;&lt;/span>]
&lt;span style="color:#a6e22e">service_plan_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_service_plan&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_service_plan&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
&lt;span style="color:#a6e22e">storage_account_name&lt;/span> = &lt;span style="color:#a6e22e">azurerm_storage_account&lt;/span>.&lt;span style="color:#a6e22e">links_app_storage&lt;/span>.&lt;span style="color:#a6e22e">name&lt;/span>
&lt;span style="color:#a6e22e">storage_account_access_key&lt;/span> = &lt;span style="color:#a6e22e">azurerm_storage_account&lt;/span>.&lt;span style="color:#a6e22e">links_app_storage&lt;/span>.&lt;span style="color:#a6e22e">primary_access_key&lt;/span>
&lt;span style="color:#a6e22e">identity&lt;/span> {
&lt;span style="color:#a6e22e">type&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;SystemAssigned&amp;#34;&lt;/span>
}
&lt;span style="color:#a6e22e">site_config&lt;/span> {
&lt;span style="color:#a6e22e">use_32_bit_worker&lt;/span> = &lt;span style="color:#66d9ef">false&lt;/span>
}
&lt;span style="color:#a6e22e">app_settings&lt;/span> = {
&lt;span style="color:#e6db74">&amp;#34;FUNCTIONS_WORKER_RUNTIME&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;dotnet&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;AzureWebJobsDisableHomepage&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;true&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;GOOGLE_SERVICE_ACCOUNT_CREDENTIAL&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">google&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">sheets&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">key&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;GOOGLE_SHEET_ID&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">google&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">sheet&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">id&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;APPINSIGHTS_INSTRUMENTATIONKEY&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">azurerm_application_insights&lt;/span>.&lt;span style="color:#a6e22e">il_afapp_insights&lt;/span>.&lt;span style="color:#a6e22e">instrumentation_key&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;TWITTER_CONSUMER_KEY&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">twitter&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">consumer&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">key&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;TWITTER_CONSUMER_KEY_SECRET&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">twitter&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">consumer&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">key&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">secret&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;TWITTER_ACCESS_TOKEN&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">twitter&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">access&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">token&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;TWITTER_ACCESS_TOKEN_SECRET&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">twitter&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">access&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">token&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">secret&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;MASTODON_SERVER&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">mastodon&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">server&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;MASTODON_ACCESS_TOKEN&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@Microsoft.KeyVault(SecretUri=&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">azurerm_key_vault_secret&lt;/span>.&lt;span style="color:#a6e22e">mastodon&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">access&lt;/span>&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#a6e22e">token&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span>,
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>The app settings here are very important, this is how we load secrets in from the Azure Key Vault. This should automatically load in the secrets. However, in my experience, if I change a secret, it does not load the latest version. I&amp;rsquo;ll figure that out later.&lt;/p>
&lt;p>Before we can make this work, however, we need to let the Function App read from the Key Vault.&lt;/p>
&lt;h4 id="read-secrets-from-the-key-vault">Read secrets from the Key Vault&lt;/h4>
&lt;p>In your &lt;code>main.tf&lt;/code>, add the following at the end.&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-terraform" data-lang="terraform">&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_access_policy&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;il-managed-id-policy-eu&amp;#34;&lt;/span> {
&lt;span style="color:#a6e22e">key_vault_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_key_vault&lt;/span>.&lt;span style="color:#a6e22e">links_afapp_keyvault&lt;/span>.&lt;span style="color:#a6e22e">id&lt;/span>
&lt;span style="color:#a6e22e">tenant_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_windows_function_app&lt;/span>.&lt;span style="color:#a6e22e">links_app&lt;/span>.&lt;span style="color:#a6e22e">identity&lt;/span>.&lt;span style="color:#ae81ff">0&lt;/span>.&lt;span style="color:#a6e22e">tenant_id&lt;/span>
&lt;span style="color:#a6e22e">object_id&lt;/span> = &lt;span style="color:#a6e22e">azurerm_windows_function_app&lt;/span>.&lt;span style="color:#a6e22e">links_app&lt;/span>.&lt;span style="color:#a6e22e">identity&lt;/span>.&lt;span style="color:#ae81ff">0&lt;/span>.&lt;span style="color:#a6e22e">principal_id&lt;/span>
&lt;span style="color:#a6e22e">secret_permissions&lt;/span> = [
&lt;span style="color:#e6db74">&amp;#34;Get&amp;#34;&lt;/span>
]
}
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Sometimes, on re-running terraform, this does not stick. I don&amp;rsquo;t know why. Sometimes I have to manually find the Principal ID, which is under &amp;ldquo;Identity&amp;rdquo; in the left nav in the Function App, and then copy the GUID into the &amp;ldquo;Access Policies&amp;rdquo; section within the Key Vault.&lt;/p>
&lt;h4 id="set-up-dns">Set up DNS&lt;/h4>
&lt;p>I can&amp;rsquo;t terraform this, perhaps because of lack of supported functionality, but in the Function App you can configure a custom CNAME domain under &amp;ldquo;Custom Domains.&amp;rdquo; Simply copy the relevant information to your DNS provider.&lt;/p>
&lt;h4 id="deploy-the-function">Deploy the function&lt;/h4>
&lt;p>If the terraform works, then go ahead and apply the changes to your cloud, and let&amp;rsquo;s get ready to deploy the app! This is very simple. Navigate to your folder and type &lt;code>func azure functionapp publish AZURE_FUNCTION_NAME&lt;/code>, replacing the last bit with your function name, of course.&lt;/p>
&lt;p>You&amp;rsquo;ll want to go to &amp;ldquo;Configuration&amp;rdquo; in your Function App to see that secrets are being properly read. If so, great! Go ahead and send a cURL request and see how it works!&lt;/p>
&lt;p>If it doesn&amp;rsquo;t, &lt;a href="mailto:ejgorcenski+efg@gmail.com">email me&lt;/a> and I will try to help. I probably missed something or made a mistake, because what I present here is a bit modified from my own setup.&lt;/p>
&lt;p>Thanks for following along. Next up, integrating with an iOS shortcut!&lt;/p></description><tweet>Part 3 of Post without posting: setting up the Azure Function infrastructure.</tweet></item><item><title>Posts without posting: building a social media sharing relay with F♯ and Azure Functions, part 2</title><link>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/</link><pubDate>Tue, 27 Dec 2022 18:52:54 +0100</pubDate><guid>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/railway-posting.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/railway-posting.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/railway-posting.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/railway-posting.jpg" width="600"/></media:content><description>&lt;p>In the first part of the series, I introduced the architecture for building a link sharing relay. This post covers the actual code needed to make that relay work. I&amp;rsquo;m writing in F#, a beautiful language.&lt;/p>
&lt;h1 id="part-2-writing-the-code">Part 2: Writing the code&lt;/h1>
&lt;p>Azure functions provide a simple environment to deploy code, requiring a minimum of development overhead. Nevertheless, Azure Functions are not low-code or no-code solutions. We will need to write some code. For this project, I chose F#, so that I could develop my skills in the language and learn a bit more about functional programming. I also wanted to try out the &lt;a href="https://fsharpforfunandprofit.com/posts/recipe-part2/">Railway Pattern&lt;/a>, which absolutely blew my mind when I first read about it. It&amp;rsquo;s an awesome way to write code, and I can&amp;rsquo;t say I&amp;rsquo;ve mastered it, but I wanted to try it out.&lt;/p>
&lt;blockquote>
&lt;h4 id="posts-without-posting-a-series">Posts without posting, a series&lt;/h4>
&lt;ol>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/">Architecting a relay&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/">Writing the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/">Configuring Azure Functions with Terraform&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/">Setting up an iOS Shortcut&lt;/a>&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>To get started, you&amp;rsquo;re going to need the &lt;a href="https://dotnet.microsoft.com/en-us/download/dotnet/6.0">.Net 6.0 runtime&lt;/a> and the &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=v4%2Cwindows%2Ccsharp%2Cportal%2Cbash#install-the-azure-functions-core-tools">Azure Functions Core Tools&lt;/a>. I strongly recommend using VSCode with the &lt;a href="https://ionide.io/">Ionide&lt;/a> extension. I&amp;rsquo;m developing on Ubuntu 20.04 LTS on Windows System Linux (WSL) 2, but you should be able to do this on Mac, Linux, or Windows, if you prefer.&lt;/p>
&lt;p>This will be a long post, so I&amp;rsquo;ll try to break it down for you. We&amp;rsquo;ll do the following steps.&lt;/p>
&lt;ol>
&lt;li>Set up an Azure Function and familiarize with some key files and configurations&lt;/li>
&lt;li>Build the &lt;code>run&lt;/code> function and configure it to accept &lt;code>POST&lt;/code> requests&lt;/li>
&lt;li>Introduce the railway pattern and how to adapt it for async programming&lt;/li>
&lt;li>Integrate external services&lt;/li>
&lt;li>Test locally&lt;/li>
&lt;/ol>
&lt;h3 id="step-1-set-up-an-azure-function">Step 1: Set up an Azure Function&lt;/h3>
&lt;p>Let&amp;rsquo;s begin at the beginning. We&amp;rsquo;re going to set up an azure function. You can do this wherever you&amp;rsquo;d like, but I did it in my static site repository. This might have been a mistake, so I&amp;rsquo;ll recommend you do this in its own folder. You won&amp;rsquo;t have to create it, the tools should set everything up for you. Assuming you&amp;rsquo;ve installed the Azure Functions Core Tools linked above, simply type&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-sh" data-lang="sh">func init &lt;span style="color:#f92672">[&lt;/span>PROJECT NAME&lt;span style="color:#f92672">]&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Replace &lt;code>[PROJECT NAME]&lt;/code> with your project&amp;rsquo;s name. This should prompt you to select a worker runtime:&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-sh" data-lang="sh">Select a number &lt;span style="color:#66d9ef">for&lt;/span> worker runtime:
1. dotnet
2. dotnet &lt;span style="color:#f92672">(&lt;/span>isolated process&lt;span style="color:#f92672">)&lt;/span>
3. node
4. python
5. powershell
6. custom
Choose option:
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Choose Option 1, for &lt;code>dotnet&lt;/code>. Option 2 might resolve the issue I was having with .Net 7.0, but I haven&amp;rsquo;t tested this yet, so let&amp;rsquo;s stick with what&amp;rsquo;s known and easy. You&amp;rsquo;ll next be prompted to pick a language. Choose F#, if you dare.&lt;/p>
&lt;p>This should create a project folder for you, initialize it as a git repository, create a &lt;code>.gitignore&lt;/code>, and create a handful of files: &lt;code>[PROJECT NAME].csproj&lt;/code>, &lt;code>host.json&lt;/code>, &lt;code>local.settings.json&lt;/code>, and a couple of directories.&lt;/p>
&lt;p>Navigate to this file, and let&amp;rsquo;s initialize a new function. Type &lt;code>func new -n [FUNCTION NAME] -l F#&lt;/code> to create a new function &lt;code>[FUNCTION NAME]&lt;/code>. This can be the same as your project name, but need not be. This is because a single function app deployment can have multiple endpoints, each pointing to a different function. When prompted, choose &lt;code>HttpTrigger&lt;/code>. Running this command should add a couple of new files: &lt;code>[FUNCTION NAME].fs&lt;/code>, &lt;code>metadata.json&lt;/code>, and &lt;code>function.json&lt;/code>.&lt;/p>
&lt;p>Let&amp;rsquo;s go ahead and rename &lt;code>[PROJECT NAME].csproj&lt;/code> to &lt;code>[PROJECT NAME].fsproj&lt;/code>. I don&amp;rsquo;t know that it matters, but I feel a little weird calling an F# project like a C# project.&lt;/p>
&lt;p>Let&amp;rsquo;s open the &lt;code>.fsproj&lt;/code> file, which should have some XML inside. Find the block that says&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-xml" data-lang="xml">&lt;span style="color:#f92672">&amp;lt;ItemGroup&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;None&lt;/span> &lt;span style="color:#a6e22e">Update=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;host.json&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToOutputDirectory&amp;gt;&lt;/span>PreserveNewest&lt;span style="color:#f92672">&amp;lt;/CopyToOutputDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/None&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;None&lt;/span> &lt;span style="color:#a6e22e">Update=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;local.settings.json&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToOutputDirectory&amp;gt;&lt;/span>PreserveNewest&lt;span style="color:#f92672">&amp;lt;/CopyToOutputDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToPublishDirectory&amp;gt;&lt;/span>Never&lt;span style="color:#f92672">&amp;lt;/CopyToPublishDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/None&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/ItemGroup&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>We need to do some small changes here. Update the block as follows:&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-xml" data-lang="xml">&lt;span style="color:#f92672">&amp;lt;ItemGroup&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;Compile&lt;/span> &lt;span style="color:#a6e22e">Include=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;[FUNCTION NAME].fs&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;None&lt;/span> &lt;span style="color:#a6e22e">Include=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;host.json&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToOutputDirectory&amp;gt;&lt;/span>PreserveNewest&lt;span style="color:#f92672">&amp;lt;/CopyToOutputDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/None&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;None&lt;/span> &lt;span style="color:#a6e22e">Include=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;local.settings.json&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">Condition=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Exists(&amp;#39;local.settings.json&amp;#39;)&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToOutputDirectory&amp;gt;&lt;/span>PreserveNewest&lt;span style="color:#f92672">&amp;lt;/CopyToOutputDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;CopyToPublishDirectory&amp;gt;&lt;/span>Never&lt;span style="color:#f92672">&amp;lt;/CopyToPublishDirectory&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/None&amp;gt;&lt;/span>
&lt;span style="color:#f92672">&amp;lt;/ItemGroup&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>The first change ensures that we compile our F# code and include it in the build. The second changes involve modifying the &lt;code>Update&lt;/code> attribute to be &lt;code>Include&lt;/code>. This is necessary for local testing. Finally, we add a &lt;code>Condition&lt;/code> attribute to further simplify local testing.&lt;/p>
&lt;p>Open your &lt;code>.fsproj&lt;/code> file, and in the second &lt;code>&amp;lt;ItemGroup&amp;gt;&lt;/code> block, just before &lt;code>&amp;lt;None Include=&amp;quot;host.json&amp;quot;&amp;gt;&lt;/code> add the following snippet: &lt;code>&amp;lt;Compile Include=[FUNCTION NAME].fs&amp;quot; /&amp;gt;&lt;/code>. This ensures that your code is compiled and built. You&amp;rsquo;ll need to do this for every file that you add.&lt;/p>
&lt;p>In VSCode (or your preferred IDE), open &lt;code>[FUNCTION NAME].fs&lt;/code>. It should have an autogenerated template that looks something like this. From now on, I&amp;rsquo;ll be using &lt;code>LinkSharer&lt;/code> as my project name and function name.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">namespace&lt;/span> LinkSharer
&lt;span style="color:#66d9ef">open&lt;/span> System
&lt;span style="color:#66d9ef">open&lt;/span> System.IO
&lt;span style="color:#66d9ef">open&lt;/span> Microsoft.AspNetCore.Mvc
&lt;span style="color:#66d9ef">open&lt;/span> Microsoft.Azure.WebJobs
&lt;span style="color:#66d9ef">open&lt;/span> Microsoft.Azure.WebJobs.Extensions.Http
&lt;span style="color:#66d9ef">open&lt;/span> Microsoft.AspNetCore.Http
&lt;span style="color:#66d9ef">open&lt;/span> Newtonsoft.Json
&lt;span style="color:#66d9ef">open&lt;/span> Microsoft.Extensions.Logging
&lt;span style="color:#66d9ef">module&lt;/span> LinkSharer &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#75715e">// Define a nullable container to deserialize into.
&lt;/span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#f92672">[&amp;lt;&lt;/span>AllowNullLiteral&lt;span style="color:#f92672">&amp;gt;]&lt;/span>
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">NameContainer&lt;/span>() &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">member&lt;/span> &lt;span style="color:#66d9ef">val&lt;/span> Name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#66d9ef">with&lt;/span> get&lt;span style="color:#f92672">,&lt;/span> set
&lt;span style="color:#75715e">// For convenience, it&amp;#39;s better to have a central place for the literal.
&lt;/span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#f92672">[&amp;lt;&lt;/span>Literal&lt;span style="color:#f92672">&amp;gt;]&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> Name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>
&lt;span style="color:#f92672">[&amp;lt;&lt;/span>FunctionName&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LinkSharer&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&amp;gt;]&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> run &lt;span style="color:#f92672">([&amp;lt;&lt;/span>HttpTrigger&lt;span style="color:#f92672">(&lt;/span>AuthorizationLevel.Function&lt;span style="color:#f92672">,&lt;/span> &lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>&lt;span style="color:#f92672">,&lt;/span> &lt;span style="color:#e6db74">&amp;#34;post&amp;#34;&lt;/span>&lt;span style="color:#f92672">,&lt;/span> Route &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">null&lt;/span>&lt;span style="color:#f92672">)&amp;gt;]&lt;/span>req&lt;span style="color:#f92672">:&lt;/span> HttpRequest&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>log&lt;span style="color:#f92672">:&lt;/span> ILogger&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
log&lt;span style="color:#f92672">.&lt;/span>LogInformation&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;F# HTTP trigger function processed a request.&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> nameOpt &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">if&lt;/span> req&lt;span style="color:#f92672">.&lt;/span>Query&lt;span style="color:#f92672">.&lt;/span>ContainsKey&lt;span style="color:#f92672">(&lt;/span>Name&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#66d9ef">then&lt;/span>
Some&lt;span style="color:#f92672">(&lt;/span>req&lt;span style="color:#f92672">.&lt;/span>Query&lt;span style="color:#f92672">.[&lt;/span>Name&lt;span style="color:#f92672">].[&lt;/span>0&lt;span style="color:#f92672">])&lt;/span>
&lt;span style="color:#66d9ef">else&lt;/span>
None
&lt;span style="color:#66d9ef">use&lt;/span> stream &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> StreamReader&lt;span style="color:#f92672">(&lt;/span>req&lt;span style="color:#f92672">.&lt;/span>Body&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let!&lt;/span> reqBody &lt;span style="color:#f92672">=&lt;/span> stream&lt;span style="color:#f92672">.&lt;/span>ReadToEndAsync() &lt;span style="color:#f92672">|&amp;gt;&lt;/span> Async.AwaitTask
&lt;span style="color:#66d9ef">let&lt;/span> data &lt;span style="color:#f92672">=&lt;/span> JsonConvert.DeserializeObject&lt;span style="color:#f92672">&amp;lt;&lt;/span>NameContainer&lt;span style="color:#f92672">&amp;gt;(&lt;/span>reqBody&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> name &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">match&lt;/span> nameOpt &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Some n &lt;span style="color:#f92672">-&amp;gt;&lt;/span> n
&lt;span style="color:#f92672">|&lt;/span> None &lt;span style="color:#f92672">-&amp;gt;&lt;/span>
&lt;span style="color:#66d9ef">match&lt;/span> data &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> &lt;span style="color:#66d9ef">null&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> nc &lt;span style="color:#f92672">-&amp;gt;&lt;/span> nc&lt;span style="color:#f92672">.&lt;/span>Name
&lt;span style="color:#66d9ef">let&lt;/span> responseMessage &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">(&lt;/span>String.IsNullOrWhiteSpace&lt;span style="color:#f92672">(&lt;/span>name&lt;span style="color:#f92672">))&lt;/span> &lt;span style="color:#66d9ef">then&lt;/span>
&lt;span style="color:#e6db74">&amp;#34;This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">else&lt;/span>
&lt;span style="color:#e6db74">&amp;#34;Hello, &amp;#34;&lt;/span> &lt;span style="color:#f92672">+&lt;/span> name &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#e6db74">&amp;#34;. This HTTP triggered function executed successfully.&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> OkObjectResult&lt;span style="color:#f92672">(&lt;/span>responseMessage&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;span style="color:#f92672">}&lt;/span> &lt;span style="color:#f92672">|&amp;gt;&lt;/span> Async.StartAsTask
&lt;/code>&lt;/pre>&lt;/div>&lt;p>This is boilerplate code and it should run locally. Fun &lt;code>func host start&lt;/code> and try sending a request with &lt;code>curl&lt;/code> to the URL that it displays, typically something like &lt;code>curl http://localhost:7071/api/FUNCTION NAME&lt;/code>. You should see a message like, &lt;code>This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.&lt;/code> If so, congratulations! We&amp;rsquo;ve configured our F# function, let&amp;rsquo;s move onto the next step.&lt;/p>
&lt;h3 id="step-2-build-the-run-function">Step 2: Build the &lt;code>run&lt;/code> function&lt;/h3>
&lt;p>To build our link sharer, we&amp;rsquo;re going to strip out a lot of the boilerplate and cruft. This is actually going to be very simple. We&amp;rsquo;ll start with the &lt;code>run&lt;/code> function. In your &lt;code>LinkSharer.fs&lt;/code> file, let&amp;rsquo;s modify it as follows.&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-fsharp" data-lang="fsharp">&lt;span style="color:#f92672">[&amp;lt;&lt;/span>FunctionName&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LinkSharer&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&amp;gt;]&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> run &lt;span style="color:#f92672">([&amp;lt;&lt;/span>HttpTrigger&lt;span style="color:#f92672">(&lt;/span>AuthorizationLevel.Function&lt;span style="color:#f92672">,&lt;/span> &lt;span style="color:#e6db74">&amp;#34;post&amp;#34;&lt;/span>&lt;span style="color:#f92672">,&lt;/span> Route &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">null&lt;/span>&lt;span style="color:#f92672">)&amp;gt;]&lt;/span>req&lt;span style="color:#f92672">:&lt;/span> HttpRequest&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>log&lt;span style="color:#f92672">:&lt;/span> ILogger&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
log&lt;span style="color:#f92672">.&lt;/span>LogInformation&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;F# HTTP trigger function processed a request.&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span>&lt;span style="color:#f92672">!&lt;/span> &lt;span style="color:#f92672">(&lt;/span>data&lt;span style="color:#f92672">:&lt;/span> LinkData&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span> getPostFromReq req
&lt;span style="color:#66d9ef">let&lt;/span> tweet&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getTwitterClient
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeTweet data
&lt;span style="color:#66d9ef">let&lt;/span> sheet&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getSheetService
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeToGoogleSheet data
&lt;span style="color:#66d9ef">let&lt;/span> toot&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getMastodonClient
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeToot data
&lt;span style="color:#66d9ef">let&lt;/span>&lt;span style="color:#f92672">!&lt;/span> &lt;span style="color:#f92672">(&lt;/span>result&lt;span style="color:#f92672">:&lt;/span> Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
tweet
&lt;span style="color:#f92672">&amp;gt;&amp;gt;==&lt;/span> toot
&lt;span style="color:#f92672">&amp;gt;&amp;gt;==&lt;/span> sheet
&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">match&lt;/span> result &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success s &lt;span style="color:#f92672">-&amp;gt;&lt;/span> OkObjectResult&lt;span style="color:#f92672">(&lt;/span>s&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;span style="color:#f92672">|&lt;/span> Failure f &lt;span style="color:#f92672">-&amp;gt;&lt;/span> StatusCodeResult&lt;span style="color:#f92672">(&lt;/span>500&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;span style="color:#f92672">}&lt;/span> &lt;span style="color:#f92672">|&amp;gt;&lt;/span> Async.StartAsTask
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>This is actually shockingly simple. First, I&amp;rsquo;ve stripped off &lt;code>get&lt;/code> from the function call, as this will be a &lt;code>POST&lt;/code>-only endpoint. Notice &lt;code>AuthorizationLevel.Function&lt;/code>, this forces us to authenticate to use the API. We don&amp;rsquo;t want randos sharing to our social media!&lt;/p>
&lt;p>Next, we have &lt;code>let! (data: LinkData) = getPostFromReq req&lt;/code>. This takes the JSON payload attached to the request and processes it with a function called &lt;code>getPostFromReq&lt;/code>. Essentially, all this does is take the request data and format it using an F# Record type. Let&amp;rsquo;s create that code now. Above the &lt;code>run&lt;/code> method, add the following code.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">LinkData&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span>
url&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span>
title&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span>
comment&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span>
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> getPostFromReq &lt;span style="color:#f92672">(&lt;/span>req&lt;span style="color:#f92672">:&lt;/span> HttpRequest&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">use&lt;/span> stream&lt;span style="color:#f92672">:&lt;/span> StreamReader &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> StreamReader&lt;span style="color:#f92672">(&lt;/span>req&lt;span style="color:#f92672">.&lt;/span>Body&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span>&lt;span style="color:#f92672">!&lt;/span> &lt;span style="color:#f92672">(&lt;/span>reqBody&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span> stream&lt;span style="color:#f92672">.&lt;/span>ReadToEndAsync() &lt;span style="color:#f92672">|&amp;gt;&lt;/span> Async.AwaitTask
&lt;span style="color:#66d9ef">return&lt;/span> JsonConvert.DeserializeObject&lt;span style="color:#f92672">&amp;lt;&lt;/span>LinkData&lt;span style="color:#f92672">&amp;gt;(&lt;/span>reqBody&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#f92672">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>We probably don&amp;rsquo;t need the &lt;code>async&lt;/code> here, but let&amp;rsquo;s use it. What this does is reads the JSON data in the payload and deserializes it to a &lt;code>LinkData&lt;/code> type that we can use easily elsewhere in the code. This is the easy part. Let&amp;rsquo;s look now to the end of the function, where things start to get interesting.&lt;/p>
&lt;h3 id="step-3-introducing-the-railway-pattern">Step 3: Introducing the railway pattern&lt;/h3>
&lt;p>Let&amp;rsquo;s skip over some code and look at the final block, because this is where things get interesting.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">let&lt;/span>&lt;span style="color:#f92672">!&lt;/span> &lt;span style="color:#f92672">(&lt;/span>result&lt;span style="color:#f92672">:&lt;/span> Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
tweet
&lt;span style="color:#f92672">&amp;gt;&amp;gt;==&lt;/span> toot
&lt;span style="color:#f92672">&amp;gt;&amp;gt;==&lt;/span> sheet
&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">match&lt;/span> result &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success s &lt;span style="color:#f92672">-&amp;gt;&lt;/span> OkObjectResult&lt;span style="color:#f92672">(&lt;/span>s&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;span style="color:#f92672">|&lt;/span> Failure f &lt;span style="color:#f92672">-&amp;gt;&lt;/span> StatusCodeResult&lt;span style="color:#f92672">(&lt;/span>500&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>The &lt;code>&amp;gt;&amp;gt;==&lt;/code> operator isn&amp;rsquo;t standard F# syntax. I had to define this operation. This &lt;em>kind of&lt;/em> comes from the &lt;a href="https://fsharpforfunandprofit.com/posts/recipe-part2/#an-implementation-for-parallel-validation">Railway Oriented Programming blog post&lt;/a>, which introduces &lt;code>&amp;amp;&amp;amp;&amp;amp;&lt;/code> as a parallel operator. I won&amp;rsquo;t explain this all here, I encourage you to read the post and absorb it. It&amp;rsquo;s brilliant. However, the methods presented in the blog post don&amp;rsquo;t work as-is for &lt;code>async&lt;/code> programming. I had to modify them. Using a &lt;a href="https://codereview.stackexchange.com/questions/222235/async-in-railway-oriented-programming-in-f">Code Review Stackexchange post&lt;/a> as inspiration, I defined the &lt;code>&amp;gt;&amp;gt;==&lt;/code> operator to do async parallel railway switches, because with the Fira Code ligatures I use, it looks nicely parallel.&lt;/p>
&lt;p>To make this work at all, I have to introduce a couple helper functions and types.&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-fsharp" data-lang="fsharp">
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">Result&lt;/span>&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>TSuccess&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>TFailure&lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success &lt;span style="color:#66d9ef">of&lt;/span> &lt;span style="color:#66d9ef">&amp;#39;&lt;/span>TSuccess
&lt;span style="color:#f92672">|&lt;/span> Failure &lt;span style="color:#66d9ef">of&lt;/span> &lt;span style="color:#66d9ef">&amp;#39;&lt;/span>TFailure
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">ID&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span> id &lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span> &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> bindAsync&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>t&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>s&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#f92672">(&lt;/span>binder&lt;span style="color:#f92672">:&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>t &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>s&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&amp;gt;)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>result&lt;span style="color:#f92672">:&lt;/span>Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>t&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&amp;gt;)&lt;/span> &lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>s&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let!&lt;/span> res &lt;span style="color:#f92672">=&lt;/span> result
&lt;span style="color:#66d9ef">match&lt;/span> res &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success s &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span>&lt;span style="color:#f92672">!&lt;/span> binder s
&lt;span style="color:#f92672">|&lt;/span> Failure f &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure f
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> plusAsync addSuccess addFailure &lt;span style="color:#f92672">(&lt;/span>switch1 &lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>s&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&amp;gt;)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>switch2 &lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>s&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">&amp;#39;&lt;/span>terr&lt;span style="color:#f92672">&amp;gt;&amp;gt;)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let!&lt;/span> res1 &lt;span style="color:#f92672">=&lt;/span> switch1
&lt;span style="color:#66d9ef">let!&lt;/span> res2 &lt;span style="color:#f92672">=&lt;/span> switch2
&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">match&lt;/span> &lt;span style="color:#f92672">(&lt;/span>res1&lt;span style="color:#f92672">),(&lt;/span>res2&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success s1&lt;span style="color:#f92672">,&lt;/span>Success s2 &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Success &lt;span style="color:#f92672">(&lt;/span>addSuccess s1 s2&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Failure f1&lt;span style="color:#f92672">,&lt;/span>Success &lt;span style="color:#f92672">_&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Failure f1
&lt;span style="color:#f92672">|&lt;/span> Success &lt;span style="color:#f92672">_&lt;/span> &lt;span style="color:#f92672">,&lt;/span>Failure f2 &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Failure f2
&lt;span style="color:#f92672">|&lt;/span> Failure f1&lt;span style="color:#f92672">,&lt;/span>Failure f2 &lt;span style="color:#f92672">-&amp;gt;&lt;/span> Failure &lt;span style="color:#f92672">(&lt;/span>addFailure f1 f2&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> &lt;span style="color:#f92672">(&amp;gt;&amp;gt;@)&lt;/span> twoTrackInput switchFunction &lt;span style="color:#f92672">=&lt;/span>
bindAsync switchFunction twoTrackInput
&lt;span style="color:#66d9ef">let&lt;/span> &lt;span style="color:#f92672">(&amp;gt;&amp;gt;==)&lt;/span> v1 v2 &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> addSuccess r1 r2 &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span>id&lt;span style="color:#f92672">=&lt;/span>r1&lt;span style="color:#f92672">.&lt;/span>id &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#e6db74">&amp;#34;; &amp;#34;&lt;/span> &lt;span style="color:#f92672">+&lt;/span> r2&lt;span style="color:#f92672">.&lt;/span>id&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> addFailure s1 s2 &lt;span style="color:#f92672">=&lt;/span> s1 &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#e6db74">&amp;#34;; &amp;#34;&lt;/span> &lt;span style="color:#f92672">+&lt;/span> s2
plusAsync addSuccess addFailure v1 v2
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>The key here is the introduction of the &lt;code>Result&amp;lt;'TSuccess, 'TFailure&amp;gt;&lt;/code> type and the terribly named &lt;code>ID&lt;/code> record type, which will capture relevant information for successful posts; namely, the post ID.&lt;/p>
&lt;p>The &lt;code>&amp;gt;&amp;gt;@&lt;/code> function is an asynchronous (hence the &lt;code>@&lt;/code>) version of the &lt;code>&amp;gt;&amp;gt;=&lt;/code> &lt;a href="https://fsharpforfunandprofit.com/posts/recipe-part2/#bind-as-a-piping-operation">bind-with-piping&lt;/a> operator, which calls the &lt;code>bindAsync&lt;/code> function which, as you can guess, is the &lt;code>async&lt;/code> equivalent of the &lt;code>bind&lt;/code> operator from the original blog post. The &lt;code>plusAsync&lt;/code> function is the asynchronous version of the &lt;code>plus&lt;/code> function from the original blog post. All in all, if you can grok the Railway Oriented Programming post, these modifications are not that much more complex. They&amp;rsquo;re simply adapted for the &lt;code>Async&amp;lt;Result&amp;lt;'s,'terr&amp;gt;&amp;gt;&lt;/code> return type.&lt;/p>
&lt;p>When we get to the end of the code, we have:&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#66d9ef">match&lt;/span> result &lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> Success s &lt;span style="color:#f92672">-&amp;gt;&lt;/span> OkObjectResult&lt;span style="color:#f92672">(&lt;/span>s&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;span style="color:#f92672">|&lt;/span> Failure f &lt;span style="color:#f92672">-&amp;gt;&lt;/span> StatusCodeResult&lt;span style="color:#f92672">(&lt;/span>500&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">:&amp;gt;&lt;/span> IActionResult
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>This is a really nice way to either return a &lt;code>200 OK&lt;/code> status code, along with a message that includes our successful IDs, or a &lt;code>500 Server Error&lt;/code> code, which, unfortunately, I haven&amp;rsquo;t figured out how to better manage.&lt;/p>
&lt;p>If you&amp;rsquo;ve made it this far, then the remaining code in this function should be very easy to understand.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">let&lt;/span> tweet&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getTwitterClient
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeTweet data
&lt;span style="color:#66d9ef">let&lt;/span> sheet&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getSheetService
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeToGoogleSheet data
&lt;span style="color:#66d9ef">let&lt;/span> toot&lt;span style="color:#f92672">:&lt;/span> Async&lt;span style="color:#f92672">&amp;lt;&lt;/span>Result&lt;span style="color:#f92672">&amp;lt;&lt;/span>ID&lt;span style="color:#f92672">,&lt;/span>&lt;span style="color:#66d9ef">string&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
getMastodonClient
&lt;span style="color:#f92672">&amp;gt;&amp;gt;@&lt;/span> writeToot data
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>All that this does is define functions that use the &lt;code>&amp;gt;&amp;gt;@&lt;/code> async bind-with-pipe operator to post the link to the various services. I really like this code. The &lt;code>run&lt;/code> method is very clean, and aside from the subtleties of the syntax, the structure of the code makes it very clear what is happening. A little bit of work makes the code much, much cleaner. All we need to do now is write the code for each of these services. Ready for that? Let&amp;rsquo;s move onto the next part.&lt;/p>
&lt;h3 id="step-4-integrate-external-services">Step 4: Integrate external services&lt;/h3>
&lt;p>For my link sharing function, I want to push content to (at least) three different sinks: a Google Sheets, which serves as kind of a bootleg database; Twitter; and Mastodon. To do this, I&amp;rsquo;ll use the &lt;a href="https://developers.google.com/api-client-library/dotnet/apis/sheets/v4">Google Sheets API&lt;/a>, &lt;a href="https://github.com/linvi/tweetinvi">Tweetinvi&lt;/a>, and &lt;a href="https://github.com/glacasa/Mastonet">Mastonet&lt;/a>. These are all fairly easy to install with the dotnet package manager.&lt;/p>
&lt;p>One of the beautiful things about F# is that you can use any .Net library with it, even if it wasn&amp;rsquo;t built for F#. That means any C# library works with F# equally well. This is a long post and I&amp;rsquo;m not going to belabor how to do all of these things, but rather, I&amp;rsquo;ll cover the key steps and present the code.&lt;/p>
&lt;h4 id="google-sheets">Google Sheets&lt;/h4>
&lt;p>This is by far the most complex integration because to make this work you need to use Google Cloud. Start by creating a new Google Sheet (you can just go to &lt;a href="https://sheets.new">sheets.new&lt;/a>), or if you don&amp;rsquo;t have a Gmail account, create one first and then create a new Google Sheet. You can name it whatever, I called mine &amp;ldquo;Interesting Links&amp;rdquo;. In the first row, name the columns as follows: &lt;code>url&lt;/code>, &lt;code>title&lt;/code>, &lt;code>added&lt;/code>, &lt;code>comment&lt;/code>.&lt;/p>
&lt;p>Next, navigate to &lt;a href="https://console.cloud.google.com">the Google Cloud console&lt;/a>. Create a new project, and call it something obvious, like &lt;code>Interesting Links&lt;/code>. Select the project and navigate to the project dashboard. In the hamburger menu in the top left, go to &amp;ldquo;APIs &amp;amp; Services&amp;rdquo; and click &amp;ldquo;Enabled APIs &amp;amp; Services&amp;rdquo;. There, at the top of the screen, click &amp;ldquo;+ Enable APIs and Services&amp;rdquo;. In the search bar, click &amp;ldquo;Google Sheets&amp;rdquo; and enable the API.&lt;/p>
&lt;p>Once done, click &amp;ldquo;Manage&amp;rdquo;. On the left, you should see &amp;ldquo;Credentials&amp;rdquo;. Click this and you should see &amp;ldquo;API Keys&amp;rdquo;, &amp;ldquo;OAuth 2.0 Client IDs&amp;rdquo;, and &amp;ldquo;Service Accounts&amp;rdquo;. We&amp;rsquo;ll use a Service Account, although this may not be the best option. Perhaps in a future update I will fix this. Click &amp;ldquo;Create Credentials&amp;rdquo; at the top and choose &amp;ldquo;Service Account&amp;rdquo;.&lt;/p>
&lt;p>Give the Service Account a meaningful name, and click &amp;ldquo;Create and Continue.&amp;rdquo; On the next screen, it will ask you to choose a role. In the search box, type &amp;ldquo;Service Account Token Creator&amp;rdquo;. Skip the next step and click &amp;ldquo;Done&amp;rdquo;. This will return you to the Credentials screen. Click the Service Account you created, and at the top of the screen, click &amp;ldquo;Keys.&amp;rdquo; Next, click &amp;ldquo;Add Key&amp;rdquo; and &amp;ldquo;Create New Key&amp;rdquo;. This should pop a dialog box. Select &amp;ldquo;JSON&amp;rdquo; and click &amp;ldquo;Create&amp;rdquo;. This will create a JSON file for you and download it. Copy it somewhere meaningful, such as &lt;code>~/.config/gcloud&lt;/code>.&lt;/p>
&lt;p>We&amp;rsquo;ll base64 this string, and the easiest way with the command line is simply &lt;code>base64 -w 0 ~/.config/gcloud/[KEY FILE].json&lt;/code>.&lt;/p>
&lt;p>For local testing, we can either create an environment variable with this file, or we can put it in &lt;code>local.settings.json&lt;/code> with a field named &lt;code>GOOGLE_SERVICE_ACCOUNT_CREDENTIAL&lt;/code>. While we&amp;rsquo;re doing this, go to the spreadsheet you created and copy the sheet ID. It&amp;rsquo;s the long alphanumeric string that should be between &lt;code>d/&lt;/code> and &lt;code>/edit&lt;/code>. Put this in a variable called &lt;code>GOOGLE_SPREADSHEET_ID&lt;/code>.&lt;/p>
&lt;p>Lastly, copy the Service Account email you created, which can be found on the Credentials page we visited earlier. In your Google Sheet, in the top right click &amp;ldquo;Share&amp;rdquo; and paste this email, giving it Editor permissions.&lt;/p>
&lt;p>All of this could have probably been done with terraform, but I&amp;rsquo;m going to be real. This is a one-time setup, and it&amp;rsquo;s complicated. I might have gotten it wrong here, but you can also Google how to set up a Google Sheets API credential. I don&amp;rsquo;t think it&amp;rsquo;s worth figuring out the terraform. Alternatively, we could have used Workload Identity Federation, but this, too, is overkill.&lt;/p>
&lt;p>Once we have the account set up, we can write the code to write to a spreadsheet. It&amp;rsquo;s fairly straightforward. First, we have to build a &lt;code>SheetsService&lt;/code> using the Google Cloud SDK. This requires our credential. Here, I define &lt;code>getSheetService&lt;/code> which does all of the work to turn the environment variable into a credential and uses this to initialize a &lt;code>SheetsService&lt;/code>. Here, we&amp;rsquo;re returning a &lt;code>Success&lt;/code> type containing the object we just initialized, so we need to create a record type, &lt;code>Sheet&lt;/code>, for that as well.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">open&lt;/span> Google.Apis.Auth.OAuth2
&lt;span style="color:#66d9ef">open&lt;/span> Google.Apis.Sheets.v4
&lt;span style="color:#66d9ef">open&lt;/span> Google.Apis.Sheets.v4.Data
&lt;span style="color:#66d9ef">open&lt;/span> Google.Apis.Services
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">Sheet&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span> service &lt;span style="color:#f92672">:&lt;/span> SheetsService &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> getSheetService &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> scopes&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span> &lt;span style="color:#66d9ef">list&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">[&lt;/span> SheetsService.Scope.Spreadsheets &lt;span style="color:#f92672">]&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> getServiceAccountCredential &lt;span style="color:#f92672">(&lt;/span>googleCredential&lt;span style="color:#f92672">:&lt;/span> GoogleCredential&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
googleCredential&lt;span style="color:#f92672">.&lt;/span>CreateScoped&lt;span style="color:#f92672">(&lt;/span>scopes&lt;span style="color:#f92672">).&lt;/span>UnderlyingCredential
&lt;span style="color:#f92672">:?&amp;gt;&lt;/span> ServiceAccountCredential
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> credential &lt;span style="color:#f92672">:&lt;/span> ServiceAccountCredential &lt;span style="color:#f92672">=&lt;/span>
System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;GOOGLE_SERVICE_ACCOUNT_CREDENTIAL&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#f92672">|&amp;gt;&lt;/span> Convert.FromBase64String
&lt;span style="color:#f92672">|&amp;gt;&lt;/span> Text.Encoding.UTF8.GetString
&lt;span style="color:#f92672">|&amp;gt;&lt;/span> GoogleCredential.FromJson
&lt;span style="color:#f92672">|&amp;gt;&lt;/span> getServiceAccountCredential
&lt;span style="color:#66d9ef">let&lt;/span> initializer&lt;span style="color:#f92672">:&lt;/span> BaseClientService.Initializer &lt;span style="color:#f92672">=&lt;/span>
&lt;span style="color:#66d9ef">new&lt;/span> BaseClientService.Initializer&lt;span style="color:#f92672">(&lt;/span>HttpClientInitializer&lt;span style="color:#f92672">=&lt;/span>credential&lt;span style="color:#f92672">,&lt;/span>
ApplicationName&lt;span style="color:#f92672">=&lt;/span>ApplicationName&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span>service&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">new&lt;/span> SheetsService&lt;span style="color:#f92672">(&lt;/span>initializer&lt;span style="color:#f92672">)}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> ex &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> writeToGoogleSheet &lt;span style="color:#f92672">(&lt;/span>data&lt;span style="color:#f92672">:&lt;/span> LinkData&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>input &lt;span style="color:#f92672">:&lt;/span> Sheet&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> service&lt;span style="color:#f92672">:&lt;/span> SheetsService &lt;span style="color:#f92672">=&lt;/span> input&lt;span style="color:#f92672">.&lt;/span>service
&lt;span style="color:#66d9ef">let&lt;/span> sheetId&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span> &lt;span style="color:#f92672">=&lt;/span> System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;GOOGLE_SHEET_ID&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> range&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;A:D&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> newItem&lt;span style="color:#f92672">:&lt;/span> List&lt;span style="color:#f92672">&amp;lt;&lt;/span>IList&lt;span style="color:#f92672">&amp;lt;&lt;/span>Object&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> List&lt;span style="color:#f92672">&amp;lt;&lt;/span>IList&lt;span style="color:#f92672">&amp;lt;&lt;/span>Object&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>()&lt;span style="color:#f92672">;&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> obj&lt;span style="color:#f92672">:&lt;/span> List&lt;span style="color:#f92672">&amp;lt;&lt;/span>Object&lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> List&lt;span style="color:#f92672">&amp;lt;&lt;/span>Object&lt;span style="color:#f92672">&amp;gt;([|&lt;/span>data&lt;span style="color:#f92672">.&lt;/span>url &lt;span style="color:#f92672">:&amp;gt;&lt;/span> Object&lt;span style="color:#f92672">;&lt;/span>
data&lt;span style="color:#f92672">.&lt;/span>title&lt;span style="color:#f92672">;&lt;/span>
DateTime.UtcNow&lt;span style="color:#f92672">;&lt;/span>
data&lt;span style="color:#f92672">.&lt;/span>comment&lt;span style="color:#f92672">|]);&lt;/span>
newItem&lt;span style="color:#f92672">.&lt;/span>Add&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#66d9ef">obj&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> request &lt;span style="color:#f92672">=&lt;/span>
service&lt;span style="color:#f92672">.&lt;/span>Spreadsheets&lt;span style="color:#f92672">.&lt;/span>Values&lt;span style="color:#f92672">.&lt;/span>Append&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#66d9ef">new&lt;/span> ValueRange&lt;span style="color:#f92672">(&lt;/span>Values&lt;span style="color:#f92672">=&lt;/span>newItem&lt;span style="color:#f92672">),&lt;/span>
sheetId&lt;span style="color:#f92672">,&lt;/span>
range&lt;span style="color:#f92672">,&lt;/span>
InsertDataOption&lt;span style="color:#f92672">=&lt;/span>SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum.INSERTROWS&lt;span style="color:#f92672">,&lt;/span>
ValueInputOption&lt;span style="color:#f92672">=&lt;/span>SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">let!&lt;/span> response &lt;span style="color:#f92672">=&lt;/span> request&lt;span style="color:#f92672">.&lt;/span>ExecuteAsync() &lt;span style="color:#f92672">|&amp;gt;&lt;/span> Async.AwaitTask
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span>id&lt;span style="color:#f92672">=&lt;/span>response&lt;span style="color:#f92672">.&lt;/span>Updates&lt;span style="color:#f92672">.&lt;/span>UpdatedRange&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> &lt;span style="color:#f92672">(&lt;/span>ex&lt;span style="color:#f92672">:&lt;/span> &lt;span style="color:#66d9ef">exn&lt;/span>&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>In &lt;code>writeGoogleSheets&lt;/code>, we consider each row to be a list of objects, and each sheet range to be a list of rows, and hence a list of lists of objects. I know I have four columns, so I can simply define my sheet range using open-ended columns, or &lt;code>A:D&lt;/code>. We create a new row with the relevant fields, &lt;code>url&lt;/code>, &lt;code>title&lt;/code>, &lt;code>added&lt;/code>, and &lt;code>comment&lt;/code>, although they appear here unnamed, and simply append this using the API. We construct the request, and by using &lt;code>try-with&lt;/code>, we can either return a &lt;code>Success&lt;/code> if the operation succeeds, or a &lt;code>Failure&lt;/code> containing an exception message if the operation fails.&lt;/p>
&lt;p>This code is again very simple. We&amp;rsquo;re simply fetching a credential, initializing a sheet service, crafting the data to be added, and adding it.&lt;/p>
&lt;h4 id="twitter">Twitter&lt;/h4>
&lt;p>Google Sheets was very complicated, but Twitter is a bit easier. To post to Twitter, the important thing to know is you&amp;rsquo;ll need an &lt;strong>Individual Developer Account&lt;/strong> with &lt;strong>elevated privileges&lt;/strong>. This can be done at the &lt;a href="https://developer.twitter.com/en/portal/dashboard">Twitter Developer Portal&lt;/a>, but I&amp;rsquo;ll be honest the portal is badly designed and things are really hard to find. It took me an hour, and now that I&amp;rsquo;ve done it once, I can&amp;rsquo;t go back to figure out how to tell you how to do it. All I can tell you are the important words: &lt;strong>individual developer account&lt;/strong> and &lt;strong>elevated privileges&lt;/strong>. Click around. Godspeed.&lt;/p>
&lt;p>You&amp;rsquo;ll need to create a new project, I called mine &amp;ldquo;Emily&amp;rsquo;s Syndicator&amp;rdquo;. This allows me to post statuses to Twitter. Once you do this, on the left you should see your project. Click it, and toward the top of the screen you should see &amp;ldquo;Keys and tokens.&amp;rdquo; Here, you can generate the required keys. I&amp;rsquo;m using an &amp;ldquo;Access token and secret&amp;rdquo;, which I copy to a JSON file locally and also can put in &lt;code>local.settings.json&lt;/code> in fields called &lt;code>TWITTER_ACCESS_TOKEN&lt;/code> and &lt;code>TWITTER_ACCESS_TOKEN_SECRET&lt;/code> for local testing.&lt;/p>
&lt;p>Next, generate an API key and secret, sometimes called a consumer key and secret, and store these locally in fields named &lt;code>TWITTER_CONSUMER_KEY&lt;/code> and &lt;code>TWITTER_CONSUMER_KEY_SECRET&lt;/code>.&lt;/p>
&lt;p>There are better ways to authenticate with Twitter, but everything is badly documented. This works, and I&amp;rsquo;ll improve it later. To post, I&amp;rsquo;m using the Tweetinvi SDK. Tweetinvi hasn&amp;rsquo;t been updated in a couple of years, but it works. Just like with Google Sheets, we&amp;rsquo;ll need to create a record type to receive the &lt;code>Success&lt;/code> case, otherwise the workflow is even simpler.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">open&lt;/span> Tweetinvi
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">Twitter&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span> twitterClient &lt;span style="color:#f92672">:&lt;/span> TwitterClient &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> buildPostFromData &lt;span style="color:#f92672">(&lt;/span>data&lt;span style="color:#f92672">:&lt;/span> LinkData&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
data&lt;span style="color:#f92672">.&lt;/span>comment &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#ae81ff">\n\n&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#f92672">+&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>url
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> getTwitterClient &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span>twitterClient&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">new&lt;/span> TwitterClient&lt;span style="color:#f92672">(&lt;/span>System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;TWITTER_CONSUMER_KEY&amp;#34;&lt;/span>&lt;span style="color:#f92672">),&lt;/span>
System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;TWITTER_CONSUMER_KEY_SECRET&amp;#34;&lt;/span>&lt;span style="color:#f92672">),&lt;/span>
System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;TWITTER_ACCESS_TOKEN&amp;#34;&lt;/span>&lt;span style="color:#f92672">),&lt;/span>
System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;TWITTER_ACCESS_TOKEN_SECRET&amp;#34;&lt;/span>&lt;span style="color:#f92672">))}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> ex &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> writeTweet &lt;span style="color:#f92672">(&lt;/span>data&lt;span style="color:#f92672">:&lt;/span> LinkData&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>input &lt;span style="color:#f92672">:&lt;/span> Twitter&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> client &lt;span style="color:#f92672">=&lt;/span> input&lt;span style="color:#f92672">.&lt;/span>twitterClient
&lt;span style="color:#66d9ef">let&lt;/span> tweet &lt;span style="color:#f92672">=&lt;/span> buildPostFromData data
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> post &lt;span style="color:#f92672">=&lt;/span> client&lt;span style="color:#f92672">.&lt;/span>Tweets&lt;span style="color:#f92672">.&lt;/span>PublishTweetAsync&lt;span style="color:#f92672">(&lt;/span>tweet&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span>id&lt;span style="color:#f92672">=&lt;/span>post&lt;span style="color:#f92672">.&lt;/span>Result&lt;span style="color:#f92672">.&lt;/span>Id&lt;span style="color:#f92672">.&lt;/span>ToString()&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> ex &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>This code is extremely straightforward. First, we construct the client using the Twitter credentials obtained as described above. Then, we construct a post from the &lt;code>comment&lt;/code> and &lt;code>url&lt;/code> fields in the JSON payload. Last, we publish the Tweet and return the Tweet ID. It really could not be simpler.&lt;/p>
&lt;h4 id="mastodon">Mastodon&lt;/h4>
&lt;p>Mastodon is even easier than Twitter. The setup is quite simple. From your Mastodon account on web, click on &amp;ldquo;Preferences&amp;rdquo; and then choose &amp;ldquo;Development&amp;rdquo;. Create a new application, give it a meaningful name, and unselect all scopes except &lt;code>write:statuses&lt;/code>. Click &amp;ldquo;Submit&amp;rdquo; and you&amp;rsquo;ll retrieve an Authentication token. Store this in a local environment variable (or in &lt;code>local.settings.json&lt;/code>, as before) called &lt;code>MASTODON_ACCESS_TOKEN&lt;/code> and while we&amp;rsquo;re here, put your server name in as well, as &lt;code>MASTODON_SERVER&lt;/code>.&lt;/p>
&lt;p>Once complete, we&amp;rsquo;ll follow nearly the identical steps we did for Twitter, just using the Mastonet SDK instead.&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-fsharp" data-lang="fsharp">&lt;span style="color:#66d9ef">open&lt;/span> Mastonet
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">type&lt;/span> &lt;span style="color:#a6e22e">Mastodon&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">{&lt;/span> mastodonClient&lt;span style="color:#f92672">:&lt;/span> MastodonClient &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#75715e">// ...
&lt;/span>&lt;span style="color:#75715e">&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> getMastodonClient &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> client &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> MastodonClient&lt;span style="color:#f92672">(&lt;/span>System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;MASTODON_SERVER&amp;#34;&lt;/span>&lt;span style="color:#f92672">),&lt;/span>
System.Environment.GetEnvironmentVariable&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;MASTODON_ACCESS_TOKEN&amp;#34;&lt;/span>&lt;span style="color:#f92672">))&lt;/span>
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span> mastodonClient&lt;span style="color:#f92672">=&lt;/span>client &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> ex &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> writeToot &lt;span style="color:#f92672">(&lt;/span>data&lt;span style="color:#f92672">:&lt;/span> LinkData&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">(&lt;/span>input&lt;span style="color:#f92672">:&lt;/span> Mastodon&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">=&lt;/span>
async &lt;span style="color:#f92672">{&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> client &lt;span style="color:#f92672">=&lt;/span> input&lt;span style="color:#f92672">.&lt;/span>mastodonClient
&lt;span style="color:#66d9ef">let&lt;/span> post &lt;span style="color:#f92672">=&lt;/span> buildPostFromData data
&lt;span style="color:#66d9ef">try&lt;/span>
&lt;span style="color:#66d9ef">let&lt;/span> result &lt;span style="color:#f92672">=&lt;/span> client&lt;span style="color:#f92672">.&lt;/span>PublishStatus&lt;span style="color:#f92672">(&lt;/span>post&lt;span style="color:#f92672">).&lt;/span>Result
&lt;span style="color:#66d9ef">return&lt;/span> Success &lt;span style="color:#f92672">{&lt;/span> id&lt;span style="color:#f92672">=&lt;/span>result&lt;span style="color:#f92672">.&lt;/span>Id &lt;span style="color:#f92672">}&lt;/span>
&lt;span style="color:#66d9ef">with&lt;/span>
&lt;span style="color:#f92672">|&lt;/span> ex &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">return&lt;/span> Failure ex&lt;span style="color:#f92672">.&lt;/span>Message
&lt;span style="color:#f92672">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>Piece of cake.&lt;/p>
&lt;p>With each of these, notice how I split the process up into two steps: first we construct the client or service, and then we execute the posting. These are all asynchronous operations, and we chain them together using the &lt;code>&amp;gt;&amp;gt;@&lt;/code> async bind-with-piping operator. We bind each of those, which lets us then parallelize them as described earlier. Altogether, the code should be very easy and very minimal. The hard part is configuring the various accounts.&lt;/p>
&lt;p>Once we put this all together, it should come out to ~200 lines of code. I&amp;rsquo;ve copied my file (which might have some small differences) to &lt;a href="https://gist.github.com/Gorcenski/ac5e3f08c4302f30d4a5d877ec182a70">a public Gist&lt;/a>.&lt;/p>
&lt;h3 id="testing-locally">Testing locally&lt;/h3>
&lt;p>If everything is working right, then you should be able to execute this locally fairly easily. As before, run &lt;code>func host start&lt;/code>, and it should fire up a webserver at &lt;code>localhost:7071&lt;/code>. Use a cURL request to post a JSON payload as follows:&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-sh" data-lang="sh">curl -X POST http://localhost:7071/api/LinkSharer -d &lt;span style="color:#e6db74">&amp;#39;{&amp;#34;url&amp;#34;: &amp;#34;test&amp;#34;, &amp;#34;title&amp;#34;: &amp;#34;test title&amp;#34;, &amp;#34;comment&amp;#34;: &amp;#34;test comment&amp;#34;}&amp;#39;&lt;/span> -v
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If everything works, go check your social media services! You should see test messages. Don&amp;rsquo;t forget to delete these messages, of course ;)&lt;/p>
&lt;h3 id="wrapping-up">Wrapping up&lt;/h3>
&lt;p>This was a very long post, but hopefully you followed it. I tried to structure it step-by-step. Of course, you can skip any of the social media services. If you don&amp;rsquo;t want to use Google Sheets as a data store, then you can just ignore all that! Altogether this isn&amp;rsquo;t a lot of code, and I like how the code can be very structured and clean. There&amp;rsquo;s very little boilerplate, and you can really focus on the functional flow of the code, rather than state management and object handling. The railway pattern works &lt;em>really well&lt;/em> with asynchronous programming. I like this result, even if the setup was a pain in the ass.&lt;/p>
&lt;p>We&amp;rsquo;re still not out of the woods yet. We still need to set up Azure to deploy this function to a live environment. I&amp;rsquo;ll write that post tomorrow.&lt;/p>
&lt;p>For now, I hope you liked this F#-based approach, and thanks for sticking it out with this long post!&lt;/p></description><tweet>Part 2 of Posts without Posting, I build a syndication relay in F# using the railway pattern.</tweet></item><item><title>Posts without posting: building a social media sharing relay with F♯ and Azure Functions, part 1</title><link>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/</link><pubDate>Tue, 27 Dec 2022 04:20:56 +0100</pubDate><guid>https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/link-sharing.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/link-sharing.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/link-sharing.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/link-sharing.png" width="600"/></media:content><description>&lt;p>Social media is getting more complicated, and building tools to automate sharing content can help simplify the fragmentation of social networks. Here&amp;rsquo;s how I post without having to log into social media.&lt;/p>
&lt;h1 id="part-1-architecting-a-relay">Part 1: Architecting a relay&lt;/h1>
&lt;p>Sharing content across multiple social media feeds can be a real pain. Social media links are fragile. Networks can ban you, or force you to remove your posts. They often use link shorteners, modifying the original link, which adds another possible point of failure. Social media is built for the moment, and it&amp;rsquo;s not built to make bridging networks easy. If you want to share in multiple places, or to keep a record of what you&amp;rsquo;re sharing, including the original, unmodified URL, that can be a challenge.&lt;/p>
&lt;blockquote>
&lt;h4 id="posts-without-posting-a-series">Posts without posting, a series&lt;/h4>
&lt;ol>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-1/">Architecting a relay&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-2/">Writing the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-3/">Configuring Azure Functions with Terraform&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/posts-without-posting-building-a-social-media-sharing-relay-with-f-and-azure-functions-part-4/">Setting up an iOS Shortcut&lt;/a>&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>After Elon Musk&amp;rsquo;s takeover of Twitter, I &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">decided to stop using the site&lt;/a> day-to-day. Instead, I want to use it, and my relatively large following there, to act as a syndication engine, following the Indieweb principles of &lt;a href="https://emilygorcenski.com/post/posse-comitatus-twitter-as-a-syndication-engine/">POSSE&lt;/a>: &lt;strong>P&lt;/strong>ublish &lt;strong>Own&lt;/strong> &lt;strong>S&lt;/strong>ite, &lt;strong>S&lt;/strong>yndicate &lt;strong>E&lt;/strong>lsewhere. I still want to share what I find interesting, and I want to share what I write and create. But as I migrate to the &lt;a href="https://indieweb.social/@emilygorcenski">indieweb.social&lt;/a> server on Mastodon, I want my sharing to be automated and mindless. My ideal workflow is to read an interesting article, press a button, type a message, and automatically share the link to the article with my comment everywhere I have an online presence, all without requiring any third-party apps.&lt;/p>
&lt;p>For me currently, that means sharing in three places: &lt;a href="https://twitter.com/EmilyGorcenski">Twitter&lt;/a>, &lt;a href="https://indieweb.social/@emilygorcenski">Mastodon&lt;/a>, and the &lt;a href="https://emilygorcenski.com">front page&lt;/a> of this site. Before building this solution, I was using Zapier to serve as a relay for this content. However, Zapier&amp;rsquo;s free tier does not let you use webhooks, and the service does not have a Mastodon plug-in. This mean that to use REST functionality, including cross-posting &lt;em>to&lt;/em> Mastodon, I had to subscribe to their cheapest tier, which at around $20 a month is not cheap. I wanted a cheaper solution, one I could manage entirely myself. Technically, I could have done all of this entirely with an iPhone Shortcut, &lt;em>if&lt;/em> I had the Twitter app installed. Since I haven&amp;rsquo;t had the app on my phone in almost a year, this wouldn&amp;rsquo;t do. As I&amp;rsquo;ll explain in this post, I&amp;rsquo;ll still use an iPhone Shortcut, but I&amp;rsquo;m pushing most of the business logic to a serverless Azure Function App. This is a solution that is practically free, if you know how to do it. Lucky you, over the next few posts, I&amp;rsquo;m going to show you how.&lt;/p>
&lt;p>In this post, I&amp;rsquo;m going to describe the architecture of how I set this up. I do not know how to build something similar with Android; I do not have access to an Android phone at the moment. I&amp;rsquo;m almost positive, however, that it can be done with similar ease.&lt;/p>
&lt;p>To get started, here&amp;rsquo;s the tech I&amp;rsquo;m going to use.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Microsoft Azure&lt;/strong> — For low-cost hosting, and because I use it to host the rest of my site&lt;/li>
&lt;li>&lt;strong>Terraform&lt;/strong> — For setting up the Azure Functions App using Infrastructure-as-Code&lt;/li>
&lt;li>&lt;strong>F#&lt;/strong> — Because I love the language and I want to practice it more&lt;/li>
&lt;li>&lt;strong>VSCode&lt;/strong> — A fantastic development environment&lt;/li>
&lt;li>&lt;strong>iOS Shortcuts&lt;/strong> — A built-in app on my iPhone to let me build the workflow for free&lt;/li>
&lt;li>&lt;strong>Google Sheets&lt;/strong> — A simple, free, high-performance data store for efficient reads, infrequent writes, with an unbeatable SLA for the cost&lt;/li>
&lt;li>&lt;strong>Github Actions&lt;/strong> — A simple, low-cost CI/CD environment&lt;/li>
&lt;/ul>
&lt;p>To get started, you&amp;rsquo;ll need:&lt;/p>
&lt;ul>
&lt;li>A Github account (free)&lt;/li>
&lt;li>An Azure account (costs vary and you need a credit card to set this up, but I pay ~$9 a month for almost all my hosting needs. The feature described in this post costs me $0.01 monthly)&lt;/li>
&lt;li>A Gmail account (free)&lt;/li>
&lt;li>A Google cloud account attached to that Gmail account (free, you might need a credit card here as well, but what I am discussing costs exactly $0 monthly)&lt;/li>
&lt;/ul>
&lt;p>The link sharing workflow begins when I read an interesting article on my phone. Using the default iOS share tray, I add a sharing option that collects the page URL, the page title, and opens a dialog for me to write a comment about the post. I&amp;rsquo;ll call this shortcut &lt;code>Post Link&lt;/code>. After writing a comment, I click Submit, and the shortcut packages everything into a small JSON payload and calls a serverless Azure Function App REST API authenticated with an authentication token, which gets passed along in a header.&lt;/p>
&lt;p>The Function App, which I call &lt;code>LinkSharer&lt;/code>, takes the JSON payload, crafts a simple post, and performs a sequence of asynchronous API calls to put the link and the comment to various social media outlets. For my website, I also write another Function App called &lt;code>LinkFetcher&lt;/code> which collects the last &lt;code>n&lt;/code> links and displays them on my website.&lt;/p>
&lt;p>Altogether, the workflow looks something like this.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/link-sharing.png" alt="Component diagram of the above-described workflow.">&lt;/p>
&lt;p>The first question you might ask is, &amp;ldquo;Google Sheets? &lt;em>Really?&lt;/em>&amp;rdquo; My answer is yes, really. For mostly-read, seldom-write, rarely-update workflows, Google Sheets is probably the lowest friction, lowest cost option you have for a durable backing store out there. Simply put, you&amp;rsquo;re not going to beat Google&amp;rsquo;s SLA with a free offering. You don&amp;rsquo;t have to worry about backups, it&amp;rsquo;s dirt-simple to set up, hand-editable, and it is highly-performant. Heck, it even comes with an out-of-the-box JSON API if you don&amp;rsquo;t want to write your own reader facade. Google Sheets has limitations, big ones. But for quick-and-dirty JAM stack development, there are worse options out there. Eventually, I will replace this with a proper database. But I&amp;rsquo;m not ready to spend the money yet and I want to focus on the rest of the feature work. So Google Sheets it is.&lt;/p>
&lt;p>In terms of my choice of Azure, &lt;a href="https://emilygorcenski.com/post/migrating-a-static-site-to-azure-with-terraform/">I&amp;rsquo;ve been on Azure&lt;/a> for a couple of years now. It has limitations, but for personal use, it&amp;rsquo;s great. I spend $5-10 monthly for &lt;em>everything&lt;/em>. That will increase when I set up a proper database, but most of the cost right now is the CDN. Essentially, for $5 monthly I can host my site and have incredible DDoS protection. It&amp;rsquo;s not bad. But my favorite feature of Azure is that I can deploy Azure Functions written in .Net, which means I can write F#. If you haven&amp;rsquo;t tried F#, it&amp;rsquo;s an &lt;em>amazing&lt;/em> language. I&amp;rsquo;m not a very good functional programmer; if you ask me what a monad is, I&amp;rsquo;m going to lecture you how real mathematicians think Category Theory is a bunch of abstract useless gibberish, and I&amp;rsquo;m also not going to answer your question because I don&amp;rsquo;t actually know. I like F# because the community is averse to this kind of jargon, but also because the language is beautiful and fun to write. Honestly, I wish I could write it every day.&lt;/p>
&lt;p>Enough asides. To get started on the above workflow, I&amp;rsquo;ll develop in three phases.&lt;/p>
&lt;p>First, I&amp;rsquo;ll actually code up the Azure Function and run it locally. This will let me test everything before deployment. I&amp;rsquo;ll need the &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=v4%2Cwindows%2Ccsharp%2Cportal%2Cbash#install-the-azure-functions-core-tools">Azure Functions Core Tools&lt;/a> and the &lt;a href="https://dotnet.microsoft.com/en-us/download/dotnet/6.0">.Net runtime&lt;/a> installed for this. (As of this writing, I am using .Net 6.0, as .Net 7.0 still has some kinks when it comes to Azure Functions.)&lt;/p>
&lt;p>In the second step, I&amp;rsquo;ll set up my infrastructure so that I can actually deploy the code to Azure Functions. This will involve setting up the function, and also setting up some Azure Key Vault secrets. There are a couple bits I haven&amp;rsquo;t figured out how to do, so it&amp;rsquo;s not pure infra-as-code here. Namely, it seems like Azure Function App Custom Domains aren&amp;rsquo;t working with Terraform as of this writing. In this step I&amp;rsquo;ll also set up a CI/CD workflow with Github actions to automate the deployment of the Azure Function.&lt;/p>
&lt;p>Third, I&amp;rsquo;ll shift my focus to a low-code environment, and build a simple iOS shortcut to use the workflow.&lt;/p>
&lt;p>The writeups for these posts I&amp;rsquo;ll be publishing in the following days. In the meanwhile, this post should give you an overview of the workflow and the architecture. It&amp;rsquo;s not complex, but some of what I describe might feel overly technical. If you want a simplified version of these posts at some point, &lt;a href="https://indieweb.social/@emilygorcenski">let me know&lt;/a>. I&amp;rsquo;m confident that the average person familiar with a computer can get this working for themselves with some help.&lt;/p>
&lt;p>In the meantime, I&amp;rsquo;m really enjoying being able to share content with &lt;em>all&lt;/em> of my followers without having to log into social media.&lt;/p>
&lt;p>Until tomorrow.&lt;/p></description><tweet>I'm not using Twitter, but I'm still sharing content here. This is part 1 in a 4 part series in how I share content across networks without having to log in or use third-party services.</tweet></item><item><title>Data Mesh revisited</title><link>https://www.thoughtworks.com/insights/podcasts/technology-podcasts/data-mesh-revisited</link><pubDate>Mon, 26 Dec 2022 23:56:02 +0100</pubDate><guid>https://emilygorcenski.com/post/data-mesh-revisited/</guid><description>&lt;p>Recently, I talked with current and former colleagues about the current state of Data Mesh theory and practice, some three years since Zhamak published her original article. Have a listen.&lt;/p></description><tweet>Recently, I talked with current and former colleagues about the current state of Data Mesh theory and practice, some three years since Zhamak published her original article. Have a listen.</tweet></item><item><title>Zuckerberg's Basilisk: The coercive threat of the singularity</title><link>https://emilygorcenski.com/post/zuckerbergs-basilisk-the-coercive-threat-of-the-singularity/</link><pubDate>Sun, 30 Oct 2022 22:43:39 +0100</pubDate><guid>https://emilygorcenski.com/post/zuckerbergs-basilisk-the-coercive-threat-of-the-singularity/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/metaverse-art-deco.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/metaverse-art-deco.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/metaverse-art-deco.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/metaverse-art-deco.jpg" width="600"/></media:content><description>&lt;p>Futurists' visions of digital immortality and the Metaverse may not be as utopian as they seem. Do big tech&amp;rsquo;s current models betray a coercive future of data piety? I extend a well-known thought experiment to explore the darker possibilities of digital life after death.&lt;/p>
&lt;p>&lt;small>Content Warning: if you believe in the Singularity and information hazards, stop here. Discussion of Roko&amp;rsquo;s Basilisk and a related idea follow.&lt;/small>&lt;/p>
&lt;p>The Metaverse is no joke. Investment in the technology ranks among the billions per year, and Facebook recently rebranded its parent company as Meta. Serious people are spending serious money to develop this technology. Yet at the same time, it’s hard to understand why. When you speak with Metaverse enthusiasts, they’ll tell you about potential applications, ranging from rethinking remote working and education, to providing persistent digital worlds to reshape entertainment.&lt;/p>
&lt;p>None of this is really correct. The level of investment doesn’t match the potential value. If Mark Zuckerberg wanted to compete against Zoom, he probably wouldn’t need &lt;a href="https://www.businessinsider.com/meta-lost-15-billion-building-the-metaverse-reality-labs-money-2022-10">$15B a year&lt;/a> to do so. Zoom’s market capitalization (&lt;a href="https://companiesmarketcap.com/zoom/marketcap/">~$25B as of today&lt;/a>) is a fraction of Meta’s. There’s no visible consumer demand for VR meetings. Creating 3D, high-resolution digital environments is very expensive. There’s a reason it hasn’t caught on as a serious way to augment education.&lt;/p>
&lt;p>To understand the Metaverse, one needs to incorporate two different, but related perspectives. The first is how the Metaverse is often mentioned in the same breath as “web3;” namely, blockchain, cryptocurrency, and NFTs. One could also add deep fakes and generative AI, such as &lt;a href="https://huggingface.co/spaces/stabilityai/stable-diffusion">Stable Diffusion&lt;/a>, &lt;a href="https://openai.com/dall-e-2/">DALL-E&lt;/a>, or &lt;a href="https://openai.com/blog/gpt-3-apps/">GPT-3&lt;/a>, to the discussion.&lt;/p>
&lt;p>The second perspective is &lt;a href="https://futurism.com/kurzweil-claims-that-the-singularity-will-happen-by-2045">Singularity&lt;/a> theory, which posits that at some point in the future, technology will become sufficiently powerful that superintelligent AI will arise, and that humans will be able to interface with computers to the point that neural interaction and digital consciousness are possible. In other words, futurists hypothesize, it will be possible to &lt;a href="https://www.forbes.com/sites/alexknapp/2011/06/24/whats-the-likelihood-of-the-singularity-part-two-uploading-the-brain/">upload human consciousness&lt;/a> into a machine, and that humans will live on in digital universes, even after their corporal forms have passed.&lt;/p>
&lt;p>This is a deep and radical idea, once that is perhaps irresponsible to introduce so casually. To determine whether this is a genuine possibility requires a philosophical deep dive that attempts to definitively answer some of the greatest unanswerable questions of humankind. I don’t believe we presently have the theological, philosophical, biological, or psychological knowledge to definitively conclude whether this outcome is real or simply fantasy.&lt;/p>
&lt;p>But it is not necessary for us to evaluate this possibility within these frameworks, because regardless of what we know, believe, or can determine, what is definitely true is that there are a number of very serious futurists who truly believe that not only is this outcome possible, it is inevitable, and it is inevitable within their lifetime. It may be that this is nothing but dorm room philosophy, and I personally believe that it is, but it’s a dorm room philosophy that a lot of people with a lot of millions of dollars have chosen to invest in.&lt;/p>
&lt;p>A number of futurist movements have developed by taking the Singularity as axiomatic. Movements like &lt;a href="https://aeon.co/essays/why-longtermism-is-the-worlds-most-dangerous-secular-credo">longtermism&lt;/a> and some forms of effective altruism posit that the number of unborn future humans dwarfs the number of humans who have ever lived, and that by extension, our social responsibility lies with ensuring the survival of the trillions of humans to be. Setting aside many of the deeply troubling present-day implications of this school of thought, and the biases that leak from many of these thinkers, almost surely the only way that this viewpoint can be validated is if humanity learns to live on in digital spheres, spreading itself across the galaxy and harnessing the power of the stars. It does not matter that this technology is not currently possible. It matters that people with influence and money believe it is their responsibility to make it possible.&lt;/p>
&lt;p>In this exploration, I admit a couple of hypotheses&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> without any assumption that they are correct:&lt;/p>
&lt;ol>
&lt;li>The mapping of human consciousness into computer systems will happen;&lt;/li>
&lt;li>This mapping will be based on data and AI and can be independent of a physical brain;&lt;/li>
&lt;li>Technology will continue to follow its exponential growth of computing capabilities without major impediments;&lt;/li>
&lt;li>The consumer adoption of the Metaverse will be sufficiently compelling to survive the Metaverse through its initial phases.&lt;/li>
&lt;/ol>
&lt;p>We suppose that the Singularity occurs, and that the Singularity involves developing the capability not only for neural interfaces with the computer, but the simulation of human consciousness to some fidelity in a digital space. In other words, this is an AI, but it’s an AI built off of the very real experiences and neural pathways pertaining to specific human individuals. Such a model may involve local adaptation of more generic models trained on larger datasets, but each digital consciousness is ultimately the digital representation of exactly one person. In other words, we as humans are individuals, but we also develop behaviors relative to our environments–we inherit the mannerisms of our parents and our cultures, we adapt to fit in with friends and other peer groups–and therefore can be seen both as individuals and as representatives of a culture. We can infer that given a situation, most people will respond in a broadly socially-acceptable and therefore predictable way, but the specifics of that response will differ based on individual factors. Modeling digital consciousness would be no different. Machine learning techniques today use approaches like this all the time.&lt;/p>
&lt;p>The implications of creating a digital consciousness also imply the idea of a digital afterlife. Actually, the &lt;a href="https://restofworld.org/2021/revolutionizing-the-end-of-life/">idea of a digital afterlife&lt;/a> exists today. When you pass, your Facebook and Twitter accounts remain open and people can go relive your timelines and see how you reacted to the news, to events in your life, and to friends and family. With a digital consciousness, however, your &lt;a href="https://www.theatlantic.com/science/archive/2016/07/what-a-digital-afterlife-would-be-like/491105/">future digital afterlife&lt;/a> would no longer be static. The digital “you” could still chat with friends, could still react to the news. If your consciousness can live on in a computer, then the physical death of your corporeal form only means that you no longer occupy a place in the physical universe. Instead, you become an entity existing in the Metaverse.&lt;/p>
&lt;p>This idea doesn’t represent a particularly unique genre of science fiction. The concept has been explored dozens of times, usually in an exploration of an undying AI race hellbent on destroying humanity or in creating a utopia where people can recreate themselves as whoever they weren’t able to be in their mortal life. These stories usually create tension in one of two ways. In the first case, the super AI is positioned as an adversary to humanity, fighting against humans for freedom or domination. The human must therefore be opposed to the machine, for the sake of the preservation of humankind.&lt;/p>
&lt;p>In the second story, the tension represents the slow social change to embrace a new version of reality. In &lt;a href="https://en.wikipedia.org/wiki/San_Junipero">Black Mirror’s “San Junipero” episode&lt;/a>, the protagonist struggles in a choice of passing naturally or living happily ever after with someone she just met in the Metaverse. The conflict represents the choice between tradition and modernity and the meaning of the finiteness of mortality.&lt;/p>
&lt;p>There is, I believe, a third kind of tension, and one that represents a more eventual outcome should the Singularity actually arrive: the tension of being coerced or compelled against one’s will to live on in the Metaverse.&lt;/p>
&lt;p>&lt;a href="https://slate.com/technology/2014/07/rokos-basilisk-the-most-terrifying-thought-experiment-of-all-time.html">Roko’s Basilisk&lt;/a> is a thought experiment that goes something like this: the Singularity is inevitable, and therefore a super AI is inevitable. Using data and algorithms, the super AI would be able to determine if an individual was aware of the possibility of the super AI to exist at some point in the future, and to judge whether they did enough to bring about the AI’s existence. If not, the Basilisk could torture that person’s digital soul for all eternity.&lt;/p>
&lt;p>Regardless of whether this sounds ridiculous, the introduction of Roko’s Basilisk on the LessWrong forums represented a sort of “information hazard,” a model of truth that the reader is better off not knowing, for it compels the knower to act in a certain way or face eternal damnation.&lt;/p>
&lt;p>Roko’s Basilisk presumes the eventual creation of some omnipotent super AI. However, what if it wasn’t a singular entity, but rather a collective of other, smaller, less omnipotent yet nevertheless influential algorithms? Consider the following. Suppose, as we have been, that digital consciousness is possible, and that it is manifested not only through brain simulation but also through data-driven algorithms. The Metaverse exists and is populated by digital consciousness, or “digital souls.” As the Metaverse integrates more data, it grows in accuracy and fidelity. In other words, digital souls become more complete as they have access to ever more data.&lt;/p>
&lt;p>It’s actually not far-fetched to imagine this model. In the digital afterlife mentioned earlier, our (static, fixed) digital souls are reflected in the digital footprints we left behind. These data reflect a partial model of who we are. You can look at my Twitter feed to learn I am opposed to fascism, or that I studied mathematics, and you can use these data to guess how I might react to news like a neo-Nazi being arrested, or a new mathematical proof being discovered.&lt;/p>
&lt;p>Digital footprints are already being used to model how people might act. Deep fake technology can model how we would look in real life, saying things we never said, or being in situations we were never in. Generative AI models can produce text that isn’t just interesting and grammatically correct, it can accurately model word choice, tone, and character of someone’s speech or writing. A recent AI experiment generated &lt;a href="https://ritholtz.com/2022/10/ai-steve-jobs/">a deep faked podcast between Joe Rogan and Steve Jobs&lt;/a>. If I didn’t tell you it was a fake, you could very easily imagine Steve Jobs responding in this way to these prompts.&lt;/p>
&lt;p>The Metaverse benefits from data, and therefore would-be metaversal inhabitants are incentivized to contribute data to the Metaverse and to encourage others to do so. The more data that people feed into the system, the better the digital afterlife will be. The question is, could the Metaverse coerce or compel people to contribute data?&lt;/p>
&lt;p>Zuckerberg’s Basilisk, as I call it, does just this. The Metaverse benefits from your data. Your data is used to generate more realistic models of human interaction, to add richness and liveliness to the digital community, and to increase the overall knowledge base that the Metaverse can source its simulations from. Therefore, the AIs driving the Metaverse benefit when you give it your data, and they want to incentivize you to do so. People who contribute meaningful data are rewarded with a digital heaven, and those who know the stakes but refuse to cooperate receive instead a form of eternal torment for their reticence.&lt;/p>
&lt;p>Today, even if you are not on Facebook, and even if you have never created a Facebook account, Facebook probably knows something about you and has created a so-called &lt;a href="https://www.vox.com/2018/4/20/17254312/facebook-shadow-profiles-data-collection-non-users-mark-zuckerberg">&lt;em>shadow profile&lt;/em>&lt;/a>. Suppose your friend gets a new phone and installs the Facebook app. The app asks permission to read your friend’s contacts, and he grants them. Now, Facebook knows something about your contact information and your social network. Moreover, Facebook integrations on websites might be able to infer your identity and start to build information about you, even without you being a user of the service. You have no way to prevent this.&lt;/p>
&lt;p>Put another way, Facebook probably already has a partial digital model of you, regardless whether you agreed to it or not.&lt;/p>
&lt;p>In this thought experiment, even if you choose not to upload your consciousness, the Metaverse likely has an incomplete model of who you are. Therefore, the cost of your noncompliance is that your metaversal personhood is restricted to an incomplete representation of yourself. Imagine being represented by your Twitter feed for all eternity. By not actively pushing data into the Metaverse, the Metaverse simply chooses to let you be a digital lost soul: essentially an NPC. Your punishment is digital purgatory. Put another way, if the Metaverse can represent digital heaven, it can also represent digital hell, and the unforgivable sin would be to knowingly withhold the data needed to build that heaven.&lt;/p>
&lt;p>The prospect of digital torture as presented in this example or in Roko’s Basilisk probably isn’t worth worrying about if you don’t believe in the Singularity, if you don’t believe your digital consciousness is you, or if you have no intention to “upload” yourself to the Metaverse to live on forever digitally. But to those who do believe in the Singularity, this can create quite a bit of angst. The original post about Roko’s Basilisk reportedly caused anxiety attacks among some of the readers.&lt;/p>
&lt;p>A metaversal representation might be scarier, however. In theory, people living on after death in a Metaverse could still interact through digital interfaces with people in the physical world. In other words, you could talk to your friends and family who have passed on, share your life with them, or ask them for advice. It’s one thing to opt out of a digital afterlife. It’s another thing to opt out when you can interact with it in real life. If people often interact with high-fidelity digital consciousness, then the threat of living on as a low-fidelity copy has real costs. Today, our digital afterlife is static and reflects a series of snapshots of who we once were. But with digital consciousness, our digital afterlife would be dynamic. We could continue to interact with loved ones, who would see us as only a husk of who we once really were.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The idea of a future supertechnology holding our present selves hostage even before such technology exists, is, if we discard the earlier hypotheses, a fairly outlandish idea. My intention is not to present this as a real or likely outcome. Nevertheless, lots of people took Roko’s Basilisk seriously, and what I present here is more of a specific case of the same idea, where the “super AI” is actually a collection of AIs governing the Metaverse and the eternal torment is a fragmentation or a depersonalization of your digital personhood. Roko’s Basilisk doesn’t say what one must do to help bring the super AI into existence, but in this model, the tithing of data keeps us in the system’s good graces.&lt;/p>
&lt;p>In a way, this is where we already are. It’s no secret that big tech companies like Meta and Google rely on our data. These companies are incentivized to extract data from us, so they do so by incentivizing us to give them data. They even retain digital traces of our identities after we die. The only thing missing is the ability to simulate consciousness. We may not be far off as it seems. While I remain skeptical that general AI is ever possible, we are making incredible progress in generating realistic text, conversation, and speech. The idea of high-fidelity simulations of a personality are perhaps not that far-fetched.&lt;/p>
&lt;p>The commercial viability for the kinds of applications that Metaverse proponents are advertising remains questionable. But when we look at what some technologists see as the future, it’s clear that they envision a world where humanity is radically altered by Metaverse and related technology. Very serious people believe that the Singularity will allow us to cheat death, by enabling us to live on in a digital space. However this occurs, it’s clear that vast amounts of personal data will be necessary to create this future. To some extent, what Zuckerberg’s Basilisk represents is original sin, where the price of our piety is the continuous surrender of our data, lest we sin against a vengeful and fickle god. To some other extent, we have already laid the foundations of this world. Speculative futures aside, we should take seriously the electric faith of techno-billionaires, as to understand their actions means we have to understand their motivations. Our real futures depend on that.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>Here I use the term hypothesis in the mathematical sense, in other words, a property assumed without cause.&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>There is more than a trace of latent ableism in this idea, as well, where abled people pity those who have lost physical or mental function to accident or disease. Nevertheless, this is a much larger discussion I am not equipped to present at this time, and relevant to that discussion is the prospect here of an &lt;em>eternal&lt;/em> existence in such a state.&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><tweet>Presenting Zuckerberg's Basilisk, or how big tech has already laid the groundwork for a terrifying and coercive model for a Singularity that may never occur</tweet></item><item><title>Book Report: The Metaverse by Matthew Ball</title><link>https://emilygorcenski.com/post/book-report-the-metaverse-by-matthew-ball/</link><pubDate>Sun, 16 Oct 2022 22:32:16 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-the-metaverse-by-matthew-ball/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/wow.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/wow.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/wow.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/wow.jpg" width="600"/></media:content><description>&lt;p>In 2022, we saw a flurry of &amp;ldquo;Web3&amp;rdquo; trends; among them, the Metaverse. Yet for all the talk, the Metaverse is still poorly defined, and understanding technologists' vision means we have to understand what problems they are trying to solve. There are good and bad bits in this futuristic vision, but the book provides only surface-level detail, and misses some easy targets.&lt;/p>
&lt;p>I&amp;rsquo;ve talked a lot about the Metaverse this year. The topic comes up in my day job, in my Twitter feeds. It&amp;rsquo;s a complex topic, poorly understood, and many people in my spheres have a rather negative outlook on the concept. This negativity is fair: Metaverse is often brought up with Web3, which is brought up with blockchain tech, which carries with it a litany of earned criticism. Perhaps some of the resistance to Metaverse comes from the people and companies who are pushing it so hard. The Zuckerbergs and Facebooks of the world have not done well to integrate with existing social values, and there is a rightful criticism that this technofuturism proffers little more than a bleak vision where the rich get richer.&lt;/p>
&lt;p>Before I go further, let me say that I am not negative on Metaverse myself. My own position is that the idea has promise, if used in the right ways, to solve for the right problems, and to provide the right innovations. This is not an endorsement of the Metaverse currently being sold, either. There is a deep techno-dystopianism lurking behind the concept, one that Matthew Ball briefly mentions a few times in his book, &lt;a href="https://openlibrary.org/books/OL35858081M/The_Metaverse">&lt;em>The Metaverse: And How it will Revolutionize Everything&lt;/em>&lt;/a>, as if for due diligence. Perhaps his references to Neal Stephenson and other sci-fi writers suffice.&lt;/p>
&lt;p>As Ball describes it, the Metaverse consists of some essential characteristics. Per him, the Metaverse is a &amp;ldquo;massively-scaled and interoperable network of real-time rendered 3D virtual worlds that can be experienced synchronously and persistently by an effectively unlimited number of users with an individual sense of presence, and with continuity of data, such as identity, history, entitlements, objects, communications, and payments.&amp;rdquo; In other words, the Metaverse is a virtual world (or worlds), layered on top of our own. Slicing through these layers are some fixed notions, such as identity and property.&lt;/p>
&lt;p>Using Ball&amp;rsquo;s definition, it&amp;rsquo;s easy to see many parallels with online gaming, and in fact, Ball spends an immense amount of time in his book describing the Metaverse and its future needs and capabilities through the lens of gaming. He&amp;rsquo;s not wrong. I used to play hardcore &lt;em>World of Warcraft&lt;/em>, and I was good at it. I have a Paladin tattoo on my chest. I spent years in that game, building community, leveling my character, and participating in a virtual world with people from all over the globe. The identity of my character there is a part of me, one that is surprisingly more durable than my real identity. I have changed my name in real life, after all, but not in the game. I digress. The point is, the universe of &lt;em>World of Warcraft&lt;/em> made me friends, gave me memories, taught me real things, and is generally something I look fondly on. What if it were easier to extend what I did there to a context outside of their servers? It&amp;rsquo;s a compelling thought. Thoughtfully, Ball deconstructs how even the most advanced games today provide merely a fraction of the capabilities necessary to achieve the scale of the Metaverse. It&amp;rsquo;s precisely this technical challenge that has tickled so many talented developers.&lt;/p>
&lt;p>Through this comparison, however, the author misses some fairly easy discussion points, ones that could have made the book stronger, and less like a dewey-eyed techno-futuristic romance. There is a brief chapter about interoperability, a technical challenge as deep as the computing and networking requirements of the Metaverse, but it fails to deliver the nuanced discussion the topic deserves. Instead, it defers this to a rather windy discussion of blockchain.&lt;/p>
&lt;p>There&amp;rsquo;s something to this, actually. Suppose I wanted to take my &lt;em>World of Warcraft&lt;/em> achievements or my character&amp;rsquo;s gear with me, somewhere other than on the developer&amp;rsquo;s servers. I would need a universal data format, with a universal schema, and some accessible place to host the data. Blockchain does solve half of this problem, in a rather clever way. Nevertheless, I would need a way to render the data in the various Metaverse worlds, and in a lot of cases it doesn&amp;rsquo;t even make sense to do that. Do I want to show up to work in Judgment Armor? Do I want to play &lt;em>Call of Duty&lt;/em> with a Hand of Ragnaros? Blockchain doesn&amp;rsquo;t solve the burden of artists and developers having to implement these artifacts, unless interoperable standards are defined. This is far from practical currently, and it&amp;rsquo;s not clear that there would be any value in this at the end of the day. After all, I&amp;rsquo;m proud of what I did playing top-level WoW, but all that remains that has value is the storytelling it allows me to do, almost exclusively with peers who understand the context.&lt;/p>
&lt;p>This is precisely the weakness with the Metaverse concept as it is presented. Though Ball breathlessly describes the eye-popping revenue numbers of certain games, there is little evidence presented that these ideas have any staying power. There are many references in the book to previous internet revolutions, including the creation of the internet itself. But Ball makes a fatal assumption that because these revolutions evolved as they did in the past, the next revolutions will evolve the same way. No evidence is presented for this assumption. Games, for all their revenue-generating power, for all their craft and artistry, still have a limited cultural footprint. E-Sports have failed to generate the kind of recognizable celebrity like professional athletes are. Kids growing up today may dream of being famous YouTubers rather than famous actors or athletes, but there are still 24 hours in the day, and nowadays more, not less, electronic distractions compete for our attention. The likelihood of a child growing up to be a famous movie star is just as small as it was 30 years ago. Technologists have flirted with mainstreaming game concepts into daily life for years. Remember when &amp;ldquo;gamification&amp;rdquo; was the revolutionary new idea around the mid-2010s?&lt;/p>
&lt;p>It&amp;rsquo;s unlikely that people will want to turn more of their life into a game. Virtual worlds are a great pass-time, but the Metaversal vision shared by futurists is not being pulled forward by market demand. This is not to say that the concept is useless. Our lives are surrounded with invisible metadata. There exists a date when I last changed my water filter. There is a documented supply chain attached to my medication. These data are outside my reach, but what if they were not? What if it wasn&amp;rsquo;t a colossal pain in the ass to figure out what batteries you need for your bike light, or what if learning about a product safety recall didn&amp;rsquo;t require you essentially stumbling on that information on the news. Sure, there are deterministic ways to solve these problems. I could write down when I change my water filter. I could register my products with the manufacturer. But these are cumbersome, annoying exercises that siphon valuable time from our lives. My own vision of the Metaverse is one where humanity is augmented. I would love better tools for managing my life. I&amp;rsquo;d love to be able to create virtual spaces with my erstwhile WoW friends. I wonder often how Starvok and Psiranz&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> are doing, and lament that the tools I had to keep up with them are the Facebooks and Twitters of the world. Which is also why I am so disappointed with the Metaverse vision Ball sells.&lt;/p>
&lt;p>At the end of the day, the question of &amp;ldquo;what is the Metaverse&amp;rdquo; can only really be answered if we try to understand the vision of the people driving it forward. It is not hard to imagine. These are wealthy, powerful people, clamoring for more wealth, more power, and immortality. The Metaverse is a power play by major tech companies to create an irresistible world where they control the profits. The Metaverse lives in a parallel plane of existence; its governance is and will remain controlled by those who created it. Ball inks a remarkable number of pages describing existing payment infrastructure, despite the fact that nothing in the as-described vision of the Metaverse would require new payment infrastructure. When discussing the negatives of blockchain-based currencies, the environmental toll is barely mentioned. The proliferation of fraud and insecurity is dismissed with a handwave. The vision is to create a virtual universe unburdened by the controls of the real universe. Nothing is certain, the saying goes, except Death and Taxes. Perhaps the tagline for the Metaverse should simply add, &amp;ldquo;but what if it wasn&amp;rsquo;t?&amp;rdquo;&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>Names changed to protect the innocent, and me, the guilty; I was also a huge asshole in my WoW days.&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><tweet>The Metaverse has been the talk of the town this year. To prep for a talk, I read Matthew Ball's recent book and break it down, along with my own ideas of what Metaverse could be.</tweet></item><item><title>Infoshare 2022</title><link>https://emilygorcenski.com/post/infoshare-2022/</link><pubDate>Fri, 07 Oct 2022 09:59:19 +0200</pubDate><guid>https://emilygorcenski.com/post/infoshare-2022/</guid><description>&lt;p>This post accompanies my talk, &amp;ldquo;Polynomial Chaos: A technique for measuring uncertainty,&amp;rdquo; given in Gdańsk for Infoshare 2022, and contains the source code for the notebook I run.&lt;/p>
&lt;p>&lt;a href="https://emilygorcenski.com/files/polynomial-chaos-gorcenski-infoshare-2022.ipynb">Download the notebook here&lt;/a>&lt;/p></description></item><item><title>Why Charlottesville? Geography, history, racism and local politics all collided in 2017</title><link>https://www.cvilletomorrow.org/why-charlottesville-geography-history-racism-and-local-politics-all-collided-in-2017/</link><pubDate>Thu, 18 Aug 2022 12:15:20 +0000</pubDate><guid>https://emilygorcenski.com/post/why-charlottesville-geography-history-racism-and-local-politics-all-collided-in-2017/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/August12_MK45-scaled.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/August12_MK45-scaled.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/August12_MK45-scaled.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/August12_MK45-scaled.jpg" width="600"/></media:content><description>&lt;p>Why did Charlottesville become the flashpoint for far-right politics in America? I talked with Charlottesville Tomorrow about how I see it.&lt;/p></description><tweet>I talked with Angilee Shah from Charlottesville Tomorrow about why Charlottesville became the flashpoint of far-right politics in America</tweet></item><item><title>The Charlottesville rally 5 years later: 'It's what you're still trying to forget'</title><link>https://www.npr.org/2022/08/12/1116942725/the-charlottesville-rally-5-years-later-its-what-youre-still-trying-to-forget</link><pubDate>Mon, 15 Aug 2022 13:29:54 +0000</pubDate><guid>https://emilygorcenski.com/post/the-charlottesville-rally-5-years-later-its-what-youre-still-trying-to-forget/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/dscf9186_wide-2a3d74bd2353eb23ce536bdba13d78d964d56dc3.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/dscf9186_wide-2a3d74bd2353eb23ce536bdba13d78d964d56dc3.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/dscf9186_wide-2a3d74bd2353eb23ce536bdba13d78d964d56dc3.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/dscf9186_wide-2a3d74bd2353eb23ce536bdba13d78d964d56dc3.jpg" width="600"/></media:content><description>&lt;p>I talked with Deb Elliot from NPR about what comes next in Charlottesville, five years after we chased the Nazis away.&lt;/p></description><tweet>I chatted with NPR about what comes next in Charlottesville, five years after we chased the Nazis away.</tweet></item><item><title>Weekly Recap: 14 August 2022</title><link>https://emilygorcenski.com/post/weekly-recap-14-august-2022/</link><pubDate>Sun, 14 Aug 2022 22:56:13 +0000</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-14-august-2022/</guid><description>&lt;p>I hadn&amp;rsquo;t been planning travel, and I definitely hadn&amp;rsquo;t been planning to return to Charlottesville for the fifth anniversary of Unite the Right. Travel has been complicated for me lately. I&amp;rsquo;m still waiting on a visa renewal, and it wasn&amp;rsquo;t clear if I even &lt;em>could&lt;/em> travel.&lt;/p>
&lt;p>However, a couple weeks ago my wife&amp;rsquo;s grandmother fell ill. I called a German immigration attorney who advised me of my rights, including my right to travel even while awaiting my visa extension. I&amp;rsquo;m glad I got this advice, because my wife&amp;rsquo;s grandmother passed a week ago, and with only about 48 hours' notice, I was able to get a flight, return home, and be with family. That&amp;rsquo;s the most important thing. I&amp;rsquo;ll figure out the return situation soon, when I head back to Germany.&lt;/p>
&lt;p>I didn&amp;rsquo;t really know Christine&amp;rsquo;s grandmother really well, but I can see so much of her in Christine. I have many fond memories of the Christmases we spent together. When I transitioned, Grandma never had any difficulty getting my name or pronouns right. That always meant a lot to me. If someone in her 80s and 90s could get it right, then so can anyone else. You just have to love people. I&amp;rsquo;ll miss her.&lt;/p>
&lt;p>In the meanwhile, coming home so soon meant that I was around for the anniversary events. I wasn&amp;rsquo;t sure what to feel, or if I would feel anything. To be honest, I really didn&amp;rsquo;t. Enough has been written, said, studied, analyzed, and so on. At any rate, it was still really nice to see old friends, and to see the community holding space for the victims of the attacks.&lt;/p>
&lt;p>I was particularly impressed by the vigil organized by &lt;a href="https://congregatecville.com/">Congregate Charlottesville&lt;/a>. After so many &lt;a href="https://www.instagram.com/p/CgzWQ2SKvd6/">Berlin leftist demo clusterfucks&lt;/a>, it was really nice to see a well-executed event that connected time, space, historical context, community, and multiple calls to action, including calls for donations to:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://congregatecville.com/donate-to-a11a12-survivors">A fundraiser for survivors of the attacks&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://sipcville.com/">Swords into Plowshares&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>There are also a couple exhibits around town. The incredible Ézé Amos has &lt;a href="https://www.c-ville.com/the-story-of-us">an installation downtown&lt;/a>, and my friend and inspiration, Kendall King, has curated &lt;a href="https://news.library.virginia.edu/2022/08/08/august-12-collection/">an exhibit at the UVa Special Collections library&lt;/a>. It&amp;rsquo;s strange to see my objects there, my writing there. Twenty years ago, could I have imagined that my writing, my work would be forever stored alongside Jefferson, Poe, Faulkner?&lt;/p>
&lt;p>One day I&amp;rsquo;ll figure out how to reckon with that.&lt;/p>
&lt;h3 id="my-anniversary-works">My Anniversary Works&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/did-we-win/">Did we Win?&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.politico.com/news/magazine/2022/08/12/24-hours-in-charlottesville-00051241">‘I Always Wondered: Was She Afraid?’: Counter-Protesters Remember the Death of Heather Heyer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.npr.org/2022/08/12/1116942725/the-charlottesville-rally-5-years-later-its-what-youre-still-trying-to-forget">The Charlottesville rally 5 years later: &amp;lsquo;It&amp;rsquo;s what you&amp;rsquo;re still trying to forget&amp;rsquo;&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.npr.org/2022/08/11/1117015418/charlottesville-plans-to-melt-robert-e-lee-statue-to-create-public-art-installat">Charlottesville plans to melt Robert E. Lee statue to create public art installation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.cvilletomorrow.org/why-charlottesville-geography-history-racism-and-local-politics-all-collided-in-2017/">Why Charlottesville? Geography, history, racism and local politics all collided in 2017&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m Learning&lt;/h3>
&lt;p>I finished the Duolingo German course to Gold! Now I have to finish it to Legendary, which should take me 2-3 months. I swear to the gods, if they change the content yet again I am going to scream.&lt;/p>
&lt;ul>
&lt;li>Lingoda B2.2 (review): 58%&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Early mornings and travel is what I have in store for next week. I&amp;rsquo;ve got another 8 or so hours of German class waiting, and project work for the day job. I picked up the first three books of &lt;em>The Expanse&lt;/em> series. I&amp;rsquo;m looking forward to jumping into them.&lt;/p></description><tweet>A visit home, and trying to make sense of history. This week's recap is about family and legacy.</tweet></item><item><title>Did we win?</title><link>https://emilygorcenski.com/post/did-we-win/</link><pubDate>Tue, 09 Aug 2022 21:36:22 +0200</pubDate><guid>https://emilygorcenski.com/post/did-we-win/</guid><description>&lt;p>Reflecting on five years since Unite the Right, the meaning of &amp;ldquo;Charlottesville,&amp;rdquo; and what we accomplished.&lt;/p>
&lt;p>There’s a phenomenon in American English, that when something really bad happens, we perform a little ballet wherein we tiptoe &lt;em>en pointe&lt;/em> around referencing the specifics of the event. Instead, we refer to where the event took place, letting the listener fill in the gaps, as if describing the event reflects our complicity, as if it is taboo to talk about bad things in polite company. And so the neo-Nazi rally and terror attack that took place in Charlottesville is simply “Charlottesville;” the mass shooting of elementary school students at Sandy Hook Elementary School is just “Sandy Hook.”&lt;/p>
&lt;p>We flatten a city with all its dynamism and living challenges into a point in time that we can more easily bundle into “good” or “bad” categories, ignoring the substance and complexity of what made the event good or bad. Places and events both leave a tattoo on one’s soul, for those who have experienced those places and those events it is an ongoing reminder of a sequence of choice and consequence that can never be undone. When we reduce a city to a point, we leave it to those who made those choices and lived those consequences to reckon with the rest of the complexity all alone.&lt;/p>
&lt;p>And so it is that Charlottesville employs a man who stormed the US Capitol during the insurrection, while on probation for a violent road rage crime, who claimed to be working for Alex Jones, a man who recently settled &lt;a href="https://dailyprogress.com/news/august12/alex-jones-settles-unite-the-right-defamation-lawsuit/article_042e5c1c-ac6f-11ec-8816-bf61361681b0.html">a lawsuit&lt;/a> over the lies he told about a person who witnessed the neo-Nazi terror attack in Charlottesville and lost &lt;a href="https://www.nbcnews.com/news/us-news/alex-jones-must-pay-45-million-punitive-damages-family-sandy-hook-mass-rcna41738">an even bigger one&lt;/a> over the lies he told about the parents who were murdered in Sandy Hook.&lt;/p>
&lt;p>We have to say the words. A neo-Nazi committed a terror attack. Children were murdered.&lt;/p>
&lt;hr>
&lt;p>Five years and about a week ago, I was training for the many ways that Charlottesville would be distilled to a single point in time. In the meeting room of a disused church a short drive out of the city, my peers and I practiced for all manner of scenarios, throwing our bodies on the ground and crawling on our elbows to prepare for a mass shooting, running drills for how to deescalate a furious racist, walking around the grounds single-file and calling out potential hazards, like loose rocks or wasp nests. I sometimes say that there’s no real skill in surviving a terror attack, because the victims are so randomly chosen, but that’s not entirely true. These skills have value, and on the weekend of Unite the Right, I put several of the scenarios we modelled into practice.&lt;/p>
&lt;p>I was not naïve then. I knew the risks and knew the consequences. Throughout the summer, I would tell people, “some people are doing activism, and some are fighting a war, figure out which you’re doing.” We knew violence was coming—for months there were far-right rallies all around the country, each with increasing intensity and violence over the last. The community watched the alt-right openly discuss bringing firearms, egging each other on about the kind of violence they were going to commit and to whom. We were also prepared for violence of a different sort. Just a month before Unite the Right, the KKK held a rally in town, and police deployed tear gas grenades against peaceful counter-protestors with their backs turned.&lt;/p>
&lt;p>Between July and August, the media affinity group I organised with put our focus in three areas. First, we organised a response to the police violence at the July 8 KKK rally. Second, where we put most of our energy, we focused on driving a media campaign to pressure the city to revoke the permit for the August 12 Unite the Right rally. Third, we explored what August 13 would look like. How would we respond to mass arrests? How would we respond to violence? How would we respond to terror? What if someone died?&lt;/p>
&lt;p>&lt;a href="https://emilygorcenski.com/post/what-is-victory-what-is-failure/">For me then, the outcomes were clear&lt;/a>. Either we would win, and fade into obscurity, Unite the Right just another distant memory remembered only by a small handful of obsessive journalists and activists, or we would lose, the alt-right gaining a key tactical victory in their political ascent.&lt;/p>
&lt;p>Looking back, I don’t know why I didn’t foresee that we would win the battle and lose the war. I knew that Donald Trump was a fascist, but I was surprised to hear his “both sides” comments. I knew that the FBI sides with Nazis almost every time, but I was still shocked to see them leave easy PR victories on the table. I never predicted that Charlottesville would be reduced to a single point.&lt;/p>
&lt;hr>
&lt;p>What happened in Charlottesville left an enduring legacy on American politics. Whatever dignity was still afforded the Office of the presidency was stripped away when the President gave cover to terrorists, a massive breach of political norms. It wasn’t the first of those norms to wither under the tainted boot heel of the Trump administration, but it was certainly the most noteworthy. For years, the twisted, vengeful, shouting white faces, lit as they were by tiki-torch flame, was the go-to image for hate in America, and oh boy was hate every increasing. That trauma, my trauma, was a daily fixture, even when I wasn’t spending hundreds of hours poring over video, looking for the next neo-Nazi to chase from the shadows. It was unescapable.&lt;/p>
&lt;p>America is no stranger to political scandal. We have a playbook for this. A shamed leader resigns in disgrace after sufficient flogging in the press. Politicians distance themselves. We all come together and celebrate the fulsomeness of our democracy. Indeed, dozens of civil servants with bipartisan White House experience left their posts. Steve Bannon, who already had one foot out the door by August, had that same door slammed on his ass. Washington Post ran Mark Bray. A massive civil suit was filed. For a moment there, it felt like maybe that glorious fade into obscurity would happen after all. America is really good at getting the stain out, and when it can’t, it’s really good at convincing you that that’s just the print.&lt;/p>
&lt;p>But that’s not what happened this time. We let up. We ran 26.1 miles and decided to call it quits. Charlottesville did its part. We stood up to an ascendant fascist movement and made them sit the fuck down. We weren’t Portland and we weren’t Berkeley; we were a tiny community that half of the country thinks is in North Carolina, a soft target that had no right fighting in that weight class. But the people who were supposed to follow through and preserve our decency-based system of governance failed to do so. Several politicians raced to his defence. Media spent as much time wondering if maybe Trump was right, that maybe Antifa were the bad guys, too. Even fellow activist communities let us down. In October 2017, I joined some friends for a private meeting in Little Rock, where national activists were gathering to talk about what to do in a world after Unite the Right. The Charlottesville delegation came with a list of no fewer than 50 immediate requests for support. Everyone else came wanting to talk about a 100-year plan for fighting racism.&lt;/p>
&lt;hr>
&lt;p>Five years after Unite the Right, the antifascist movement claimed several victories over the alt-right. Many of the neo-Nazi groups that organized the rally disbanded, rebranded, or dissolved. Dozens of formerly-anonymous fascists were unmasked. Social media policy turned on a dime: within a year, several alt-right influencers found themselves banned and deplatformed. Entire businesses that cropped up to support neo-Nazi fundraising were shuttered.&lt;/p>
&lt;p>In Charlottesville, we ran our mayor out of town, and terminated the political careers of a couple city councillors. The city manager left, and the next one, too; the police chief left, and the next one, too. One by one, we showed the municipal officials who failed us the door. Lead rally organizer Jason Kessler was run out of town, more or less literally, and several fascist leaders have loudly refused to ever set foot in the city again. By every measure, the Battle for Charlottesville was decisively won by the community.&lt;/p>
&lt;p>Yet we stand now five years later, our mouths agape at the horrifying news of teenagers being charged with having abortions, of newly-formed fascist groups assaulting community drag events, of libraries being shuttered after withering threats from right-wing terror organisations, who operate in the open. Joe Biden, not Donald Trump, is President of the United States of America, having successfully won a campaign that he launched with the words, “Charlottesville, Virginia.” Despite this, America is more fascist now than it was five years ago.&lt;/p>
&lt;p>We won the Battle for Charlottesville, but we’re losing the war. I ask myself, was our stand too little, was our stand too late?&lt;/p>
&lt;p>I don’t know the answers to those questions. But I do know many of the people that fought for what is right, and I do know that our resistance is worth more than the collapsing of Charlottesville to a simple point in a timeline. The fight is not over because the people of Charlottesville refuse to let the fight be over. What I learned in Charlottesville and in the five years that have passed is that we &lt;em>can&lt;/em> win. I learned that decency is a great principle for life, but a terrible foundation for government. I learned that small people can do enormous things. I learned that small decisions can reshape the world. I learned that courage isn’t when you don’t have fear, but is what you do despite the fear. I learned that the universe will always surprise you when you look upon the reflection of your impact on it.&lt;/p>
&lt;p>Five years later I’ve never been less sure of whether we won. I’ve never been less certain on what a victory will cost. I do know that we are people, not numbers; communities, not moments. As long as we don’t forget that, then I am certain that no matter the cost, no matter the time, that the demons of fascism will be returned to hell once again. And when that happens, the people of Charlottesville will keep working, because I know now that victory looks like liberation.&lt;/p></description><tweet>Nearly five years after Unite the Right, I wonder if we won. I was so certain of what victory would look like then. I think I know what it will look like now. My 5-year anniversary piece.</tweet></item><item><title>Weekly Recap: 07 August 2022</title><link>https://emilygorcenski.com/post/weekly-recap-07-august-2022/</link><pubDate>Mon, 08 Aug 2022 00:00:30 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-07-august-2022/</guid><description>&lt;p>Visiting the Strawberry Homeland with friends, and trying to ignore what this coming week means.&lt;/p>
&lt;p>In May, and going right until August, a strange sight appears in Berlin. All around the city, but particularly in the U-Bahn stations, at busy streetcorners, and anywhere else you find foot traffic, a bunch of red, strawberry-shaped huts pop up. Interestingly, Strawberry &lt;em>Hütten&lt;/em> park themselves mostly in the same locations that you&amp;rsquo;ll find religious missionaries throughout the year. If one of these popups is open, you can buy strawberries, of course, but I suspect something else is going on. There&amp;rsquo;s no reason for strawberries and religious missionaries to compete over the same space, unless&amp;hellip;&lt;/p>
&lt;p>That&amp;rsquo;s when I discovered Karl&amp;rsquo;s Erlebnis-Dorf, which I&amp;rsquo;ve decided is the Strawberry Homeland. The strawberry huts are simply strawberry acolytes spreading the strawberry word. For years, I&amp;rsquo;ve been meaning to make a visit. There&amp;rsquo;s a location right outside Berlin.&lt;/p>
&lt;p>Now, you might be saying, Emily, this is ridiculous, strawberry picking is an old pasttime that many people enjoy. And this is where I&amp;rsquo;ll tell you you&amp;rsquo;re wrong, because there is no strawberry picking there, at least from what I could tell. There, parked off the highway, in the middle of truly nowhere, sits a small amusement park frenetic as it is but committed to its theme. Entrance is free, but you have to pay to go on the few rides, including a potato-themed (??) small rollercoaster that sounds and feels like it is going to come apart at the seams. Biblically-accurate strawberry angels&amp;ndash;that is, animatronic strawberry faces with eyes and a mouth on the front &lt;em>and back&lt;/em>&amp;ndash;watch over the park, spreading the good word of the prophet Karl. Karl traveled the world trying to understand the Strawberry Way, and he has brought it here to Brandenburg.&lt;/p>
&lt;p>For the sake of a short trip out of Berlin, accessible now via OPNV with the 9-Euro-Ticket, it&amp;rsquo;s definitely worth a pilgrimage. There are goats and pigs and screaming children and an incredible amount of kitschy, strawberry-themed giftware. There are worse ways to cap off a week of hard work.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m Learning&lt;/h3>
&lt;ul>
&lt;li>Lingoda B2.2 (review): 54%&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>A quick trip to Munich, lots of German lessons, and doing my damndest to not think about the anniversary coming this week.&lt;/p></description><tweet>Have you ever noticed how the strawberry huts that pop up in Berlin are in the same places that religious missionaries set up? I decided to make a pilgrimage to the Strawberry Homeland.</tweet></item><item><title>Privacy and Data Mesh, Part 1</title><link>https://www.thoughtworks.com/en-de/insights/articles/privacy-first-data-via-data-mesh</link><pubDate>Fri, 05 Aug 2022 19:09:41 +0200</pubDate><guid>https://emilygorcenski.com/post/privacy-and-data-mesh-part-1/</guid><description>&lt;p>My brilliant colleague Katharine Jarmul is writing a multi-part series on Data Mesh and privacy. This is the first part.&lt;/p></description><tweet>My really cool colleague Katharine is doing some amazing work in the data privacy space, and here is the first of a four-part series about how Data Mesh architectures can improve data security.</tweet></item><item><title>Copenhagen 2021</title><link>https://emilygorcenski.com/post/copenhagen-2021/</link><pubDate>Mon, 01 Aug 2022 20:30:43 +0200</pubDate><guid>https://emilygorcenski.com/post/copenhagen-2021/</guid><image><url>https://emilygorcenski.com/photo-gallery/copenhagen-2021/Vor%20frelsers%20kirke-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/copenhagen-2021/Vor%20frelsers%20kirke-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/copenhagen-2021/Vor%20frelsers%20kirke-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/copenhagen-2021/Vor%20frelsers%20kirke-thumb.jpg" width="600"/></media:content><description/><tweet>Photos from a trip to Copenhagen made in 2021, that I've just got around to uploading.</tweet></item><item><title>Weekly Recap: 31 July 2022</title><link>https://emilygorcenski.com/post/weekly-recap-31-july-2022/</link><pubDate>Sun, 31 Jul 2022 22:33:11 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-31-july-2022/</guid><description>&lt;p>Head down, chin up: working my way through the week, and feeling kind of alright.&lt;/p>
&lt;p>This week was one of those weeks that you can see coming a mile away and there&amp;rsquo;s absolutely nothing you can do about it. To start with, I had more than 30 hours of meetings this week. That&amp;rsquo;s too many. Most of them were absolutely necessary, but the repeated context switching can absolutely break one&amp;rsquo;s soul. Friday 3:30p rolled around and I was officially done. No more thoughts. No more data. Just food, rest, and recovery.&lt;/p>
&lt;p>Unfortunately, Friday is also when I confirmed something that I&amp;rsquo;ve been reluctant to really embrace for a while: I absolutely cannot drink beer anymore. This is a shame, I loved beer, but one beer is a headache, and two beers will make me sick. Mind you, I can drink two ciders, two wines, or two cocktails with nearly no difficulty. Gluten free beer doesn&amp;rsquo;t help, not that that would make any sense, since I eat bread like wheat is going extinct. Alas, I guess I&amp;rsquo;ll have to lay off beer for the rest of forever. Maybe I should swear off booze entirely.&lt;/p>
&lt;p>Not only did I have way too much work this week, I also somehow found time to sneak in 6 hours of German classes. Marching my way through solidifying my B2 skills, because my push to fluency and C1 is going to be something I want to focus on without constant distraction from fundamental mistakes. I&amp;rsquo;ve been playing &lt;em>Horizon: Forbidden West&lt;/em> in German, and it&amp;rsquo;s always fun when you can realize that you understand what&amp;rsquo;s happening fluently. That&amp;rsquo;s pretty cool.&lt;/p>
&lt;p>In other news, TERFs are weird. Katelyn Burns wrote &lt;a href="https://katelynburns.medium.com/war-of-the-noses-621f36aa5d8b">a great piece&lt;/a> about the latest in Gender Critical Phrenology, this time a bunch of rabid transphobes dissecting the graphic design of the Women&amp;rsquo;s March logo, saying one of the profiles was a man. Susan, it&amp;rsquo;s a photoshopped face. Relax. Anyways, TERFs love this kind of thing because even though there is absolutely no foundation to even form such an argument, it&amp;rsquo;s perfect for stoking imaginary fears and inflaming a culture war against trans people. The thing is, even though that that is the goal of the people with enough foresight to be waging a political war on this turf, there&amp;rsquo;s a lot of people who saw it and became Prilosec-levels of acid reflux furious. I can&amp;rsquo;t even imagine that life, getting mad at a logo. What goes through your brain to make you believe that is the biggest problem you need to address right now? Get a life.&lt;/p>
&lt;p>Anyways, while my week was hell, my weekend was great. I was happy to join Trans Pride this weekend in Berlin, and had a nice housewarming with some friends. I took a nice 20km bike ride today, and finished the MCU up through &lt;em>Avengers: Endgame&lt;/em>. Now I&amp;rsquo;m going to be stuck on another &lt;em>Spiderman&lt;/em> movie, ugh.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m Learning&lt;/h3>
&lt;ul>
&lt;li>Lingoda B2.2 (review): 28%&lt;/li>
&lt;li>&lt;em>Deutsche Üben B1&lt;/em> (review): 100%&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>The week looks simpler, and I can spend more time solving problems. I&amp;rsquo;ve got another 8 hours or so of German classes planned, that&amp;rsquo;s alright. I&amp;rsquo;ll make it through.&lt;/p></description><tweet>This week's recap is boring because my week was boring but sometimes boring is good because at least no one tried to kill me.</tweet></item><item><title>Weekly Recap: 23 July 2022</title><link>https://emilygorcenski.com/post/weekly-recap-23-july-2022/</link><pubDate>Sun, 24 Jul 2022 23:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-23-july-2022/</guid><description>&lt;p>Berlin&amp;rsquo;s leftist scene tries to figure out Pride, German lessons, and running: an obnoxiously wholesome week.&lt;/p>
&lt;p>For whatever reason, Germany celebrates Pride in July. I joke that it&amp;rsquo;s because Germany is always a little behind on matters of social justice, but in reality Berlin&amp;rsquo;s Pride is a multi-faceted event, with celebrations, protests, and parties. Last year, I joined the mainstream Christopher Street Day event. This year, I opted to join some friends and coworkers at the Internationalist Queer Pride event, a protest demo that started at Hermannplatz and avoided the corporate celebrations of the CSD event.&lt;/p>
&lt;p>I had a good time, but I also find the demo scene in Berlin a little repetitive and frustrating. Trying to be everything all at once, it ends up being nothing clear. Emcees tried leading chants, but 40 meters away was a boombox blasting techno on a Lastenrad. It was hard to figure out the theme. In preparation for the event, I gave a reading from a part of my chapter in the forthcoming &lt;em>¡No Pasarán!&lt;/em> anthology by Shane Burley to some folks at work. It was the first time I&amp;rsquo;ve ever done a reading of something I&amp;rsquo;ve published. I&amp;rsquo;m hoping to do a bit more of that soon.&lt;/p>
&lt;p>Otherwise, the week was mostly preparatory for lots and lots of work. I got back to German lessons, doing 8 hours of course time during the week. If I can keep this pace, I can knock out my review of B2 in 3 months, while using some development budget from my job to begin C1 lessons. I also signed back up for Czech classes at the local Volkshochschule, and started working back through the textbook.&lt;/p>
&lt;p>Oh, and finally, after 3 months post-COVID, I was able to start running. I&amp;rsquo;m restarting the C25K program from day 1. It&amp;rsquo;s not bad, and although I absolutely hate getting up in the morning, I love how I feel after. Otherwise, mostly I played &lt;em>Horizon: Forbidden West&lt;/em> on my new PS5 and let me tell you, having a PS5 is amazing.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m Learning&lt;/h3>
&lt;ul>
&lt;li>Lingoda B2.2 (review): 14%&lt;/li>
&lt;li>&lt;em>Deutsche Üben B1&lt;/em> (review): 89%&lt;/li>
&lt;li>&lt;em>Česky Krok za krokem 1&lt;/em>: 8%&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Work will be absolute chaos next week, my schedule is incredibly full of workshops. Otherwise, knocking out more running, German lessons, and resuming MCU phase 3. I&amp;rsquo;m on the first MCU &lt;em>Spiderman&lt;/em> movie. Honestly, and I&amp;rsquo;m gonna be problematic here, I don&amp;rsquo;t like these movies. But I&amp;rsquo;ll power through anyways.&lt;/p></description><tweet>Pride! In the name of love!</tweet></item><item><title>Tagesspiegel Background Porträt</title><link>https://background.tagesspiegel.de/digitalisierung/emily-gorcenski</link><pubDate>Wed, 20 Jul 2022 18:15:22 +0200</pubDate><guid>https://emilygorcenski.com/post/tagesspiegel-background-portr%C3%A4t/</guid><description>&lt;p>Ich habe mit Tagesspiegel über Data Science, Aktivismus und Digitalisierung gesprochen und sie haben dieses kurze, nette Porträt geschrieben.&lt;/p></description><tweet>Ich wurde über Data, Aktivismus und Digitalisierung interviewt. Leider muss man sich anmelden, um den Artikel zu lesen.</tweet></item><item><title>Kønskrigerne 3: Sørg ikke, gå på internettet!</title><link>https://cybernauterne.dk/podcast/konskrigerne-episode-3-sorg-ikke-ga-pa-internettet/</link><pubDate>Tue, 19 Jul 2022 06:09:04 +0200</pubDate><guid>https://emilygorcenski.com/post/k%C3%B8nskrigerne-3-s%C3%B8rg-ikke-g%C3%A5-p%C3%A5-internettet/</guid><description>&lt;p>I joined Cybernauterne to talk about transphobes and white supremacy. The podcast is in Danish, but my part is in English.&lt;/p></description></item><item><title>Weekly Recap: 17 July 2022</title><link>https://emilygorcenski.com/post/weekly-recap-17-july-2022/</link><pubDate>Sun, 17 Jul 2022 23:37:41 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-17-july-2022/</guid><description>&lt;p>This week was all about meeting friends, new and old. It&amp;rsquo;s been a few years since we&amp;rsquo;ve had the charm of Berlin&amp;rsquo;s serendipity and incredible possibilities for socializing. I&amp;rsquo;ve missed it.&lt;/p>
&lt;p>Berlin sprawls. From East to West, it can take a solid 2 hours by public transit, depending on where you&amp;rsquo;re going. Everything in this city is half an hour away from everything else. And at the same time, everybody who&amp;rsquo;s been here for a few years knows every street, or at least every street inside the ring. For all its size, for all its people, Berlin is the biggest small town in the world.&lt;/p>
&lt;p>Berlin officially divides itself into 12 districts, or &lt;em>Bezirke&lt;/em>, but unofficially, there are dozens, if not hundreds, of &lt;em>Kiez&lt;/em>. This word does not really exist in German; if you ask someone from Munich what Kiez they&amp;rsquo;re from, they&amp;rsquo;ll look at you with a grimace of confusion or disgust. People don&amp;rsquo;t live in a Kiez so much as they date one: for some it becomes a life partner; for others, they try them on one by one, a strange form of serial monogamy, the avoidance of the &lt;em>Anmeldungsbestätigung&lt;/em> similar to the avoidance of a ring. A particularly bad breakup might find you escaping to another Kiez in another part of town. (Eventually, I suspect, this is how people end up in Schöneberg). You return one day, perhaps by accident, like bumping into a scorned former lover on the street. You find one that you love, and you&amp;rsquo;ll do anything to hold onto it. It&amp;rsquo;s smell even grows on you and becomes familiar, comforting like the scent your partner leaves on bed pillow.&lt;/p>
&lt;p>People say that Berlin is not Germany. Berlin is multicultural, vibrant, reckless, &lt;em>arm aber sexy&lt;/em>, while Germany is responsible, stolid, and provincial. But this is not true. Berlin is as provincial as they come. Berlin&amp;rsquo;s charm lies precisely in the quaintness that sits just beneath the graffiti, the flair it wears to convince you that it&amp;rsquo;s something it&amp;rsquo;s not. There&amp;rsquo;s no downtown, no single city center. Cut through the Bullshit, and you&amp;rsquo;ll find that Berlin is nothing more than a densely-connected collection of villages.&lt;/p>
&lt;p>In this city, you can depend on serendipity. Visit a new restaurant, bump into an old friend. Sit at a Biergarten in a Kiez 40 minutes and two connections away, see your neighbor. Berlin&amp;rsquo;s greatest trick is making you think it&amp;rsquo;s harder than it is, &lt;a href="https://twitter.com/squeed/status/741256677857591296">but even our punks wait at the Ampel&lt;/a>.&lt;/p>
&lt;p>At any rate, I was happy to see friends this week, new and old. From dinner in Kreuzberg to ice cream in Prenzlauer Berg to a boat rental in Köpenick, it was nice to get out and see people. This week was pretty great as a result.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m Learning&lt;/h3>
&lt;p>Part of my learning strategy for German is continuous review of material I have already learned. I find that it&amp;rsquo;s hard for things to stick with me; I have to keep going back to repeat them over and over. Eventually they sink in, but often I have to keep coming back to them. I guess that&amp;rsquo;s not special. But I&amp;rsquo;ll be glad to finish the last 3 chapters of my B1 review this week. I managed to knock off at least a chapter this week.&lt;/p>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>This week I&amp;rsquo;m excited to do a reading of part of my chapter in _&lt;a href="https://www.kickstarter.com/projects/shaneburley/no-pasaran-antifascist-anthology-from-ak-press?ref=section-publishing-view-more-discovery-p1">¡No pasarán!&lt;/a> at a Pride event at work.&lt;/p></description><tweet>Berlin is the biggest small town in the world, which makes it amazing for meeting friends, new and old.</tweet></item><item><title>Luxemburg and Trier 2022</title><link>https://emilygorcenski.com/post/luxemburg-and-trier-2022/</link><pubDate>Sat, 16 Jul 2022 23:22:31 +0200</pubDate><guid>https://emilygorcenski.com/post/luxemburg-and-trier-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/luxemburg-and-trier-2022/Fort%20Th%C3%BCngen.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/luxemburg-and-trier-2022/Fort%20Th%C3%BCngen.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/luxemburg-and-trier-2022/Fort%20Th%C3%BCngen.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/luxemburg-and-trier-2022/Fort%20Th%C3%BCngen.jpg" width="600"/></media:content><description/><tweet>A couple weekends ago I took a trip to Luxemburg and then back through Trier. The photos aren't so good, but here they are anyway.</tweet></item><item><title>Weekly Recap: 10 July 2022</title><link>https://emilygorcenski.com/post/weekly-recap-10-july-2022/</link><pubDate>Sun, 10 Jul 2022 21:50:40 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-10-july-2022/</guid><description>&lt;p>I&amp;rsquo;m stuck in Germany and there&amp;rsquo;s too much to do. Pride month is in July, and this Pride month I was reminded that Pride is an ongoing struggle.&lt;/p>
&lt;p>This week I feel like I got nothing done. Which isn&amp;rsquo;t true, of course, work kept me busy. The weird thing about being in leadership is that there&amp;rsquo;s always another horizon to be looking at. Planning for next year starts before your plans for this year barely even get underway. I like the challenge, but it can be exhausting.&lt;/p>
&lt;p>For bizarre reasons, most of Germany celebrates Pride in July. We call it &amp;ldquo;Christopher Street Day&amp;rdquo; here, and Germany, ever one step behind on social justice issues, seems to prefer the sweltering July heat over the milder early summer weather. That&amp;rsquo;s fine, it just means I get two months of Pride. In recent years, I&amp;rsquo;ve barely bothered to go. Last year I joined the main march, a rather crowded and exhausting walk down the same stretch of Mitte streets that every other large march follows: Alexanderplatz to Potsdamer Platz around Brandenburger Tor and up 17. Juni to the Siegesäule. I don&amp;rsquo;t know that I need to do that again this year.&lt;/p>
&lt;p>This year it feels different. Maybe it&amp;rsquo;s the ongoing political degradation in America, or maybe it&amp;rsquo;s absolute out-of-control transphobia, or maybe it&amp;rsquo;s the persistent reminder that queer people have to stand up for ourselves, that makes Pride feel more like a protest this year. I dealt with some bullshit last week. I can&amp;rsquo;t/won&amp;rsquo;t talk about it. But I&amp;rsquo;ll just say that hard work paid off, and my activism experience proved worth it once again, but it also took away about 95% of my emotional energy for the week. I told all my friends, &amp;ldquo;no plans this weekend, I&amp;rsquo;m staying in and cleaning my flat.&amp;rdquo; To be fair, I haven&amp;rsquo;t been able to park my butt in one place since May. I still haven&amp;rsquo;t done all the laundry from my trip to the US yet.&lt;/p>
&lt;p>Speaking of which, I now find myself in the opposite situation of so many of my peers who want to leave America: I can&amp;rsquo;t go back. Technically, I can&amp;rsquo;t go anywhere outside of Germany. My visa is expiring, and while I have the official letter from the Landesamt für Einwanderung saying that I may continue to live and work in Germany, it also means technically if I leave, I&amp;rsquo;m not allowed to reenter. I&amp;rsquo;m hoping that my permanent residency card comes soon. Being trapped, even trapped in an entire country, feels claustrophobic.&lt;/p>
&lt;p>I spent most of my spare time this week socializing. I had a couple nice dinners, and otherwise finished Phase 2 of the MCU. The movies got better over time, for sure, but I can still hardly reconcile their release date with my memories of seeing them. I did nothing else this week. No reading, writing, studying. It felt liberating. And now I&amp;rsquo;m itching to do more.&lt;/p>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>I resolve to write at least one more chapter in my book this week, and to finish my book proposal. I&amp;rsquo;ve got my best friend in town, and I&amp;rsquo;m caring for someone with COVID. Maybe I&amp;rsquo;ll hunt down a 4th shot.&lt;/p></description><tweet>The opposite problem: I can't go back to America. This week's recap.</tweet></item><item><title>Book Report: My Monticello</title><link>https://emilygorcenski.com/post/book-report-my-monticello/</link><pubDate>Sun, 10 Jul 2022 20:14:31 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-my-monticello/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/klan.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/klan.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/klan.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/klan.jpg" width="600"/></media:content><description>&lt;p>Jocelyn Nicole Johnson&amp;rsquo;s debut presents a chilling vision of a future civil war in America, but it is not about the future. Instead, this collection of short stories, told through a lens of Blackness, excellence, sorrow, and futility, is a mirror that shows us the many blemishes and scars that mark our soul. It&amp;rsquo;s a heartbreaking, piercing work.&lt;/p>
&lt;p>&lt;em>My Monticello&lt;/em> is a collection of short stories, each of which is built around the mythology of Charlottesville; that is, the municipal body in which Thomas Jefferson&amp;rsquo;s Academical Village serves as the beating heart. Charlottesville&amp;rsquo;s mythology is America&amp;rsquo;s founding myth: that through hard work, anything is possible. The stories in this collection all handle the topic of scholarship, but more specifically, scholarship through the lens of Blackness. And it&amp;rsquo;s through this lens that we can see that the mythology of Charlottesville, and by extension America, is nothing more than a paper-thin lie.&lt;/p>
&lt;p>I am not qualified to comment on the experiences these stories convey, experiences of success, and of futility despite success, and the uphill treadmill of Black life in white America. I can recognize them, because these are the experiences that one sees every day in Charlottesville. These stories are painted on the streets and the roadsigns, they&amp;rsquo;re the fragrance wafting off the slow-cooker, they&amp;rsquo;re the hollers of the basketball games every weekend at Tonsler Park.&lt;/p>
&lt;p>The title story, which occupies the latter two-thirds of the book, is less a story, and more a warning. Or maybe a prophecy.&lt;/p>
&lt;p>Set a few years in the future, maybe five or ten, the story starts with the last veneer of American democracy finally chipping off. A white supremacist raid on a Black neighborhood, clear from the story but not named as Friendship Court, sets the protagonists on the run. They steal a Jaunt bus and escape the torch-bearing militia and head off to safety. The protagonist herself is a descendant of Thomas Jefferson, and the refuge they seek is in the same building where Jefferson repeatedly raped Sally Hemings: Monticello.&lt;/p>
&lt;p>Johnson&amp;rsquo;s protagonist interned at the historical site in the summer before the story takes place, the summer before she started classes at the University. &amp;ldquo;I let them see what they wanted to see: a local brown girl made good.&amp;rdquo; But in the story, little of that matters. The climate apocalypse has come, heat waves devastate the country, thousands die in riots nationwide. It sets the stage, but truly the stage has already been set. &amp;ldquo;As girls, we all heard about the young white woman killed by an outraged white man who sped his car into a crowd of marchers raising signs in our defense.&amp;rdquo; Heather Heyer appears, and along with her, the &lt;em>post hoc&lt;/em> justifications and conspiracy theories so many white people so eagerly adopted, lies about her weight, or that she had a heart attack. &amp;ldquo;I took it to mean that young women could die of wanting too much.&amp;rdquo;&lt;/p>
&lt;p>&amp;ldquo;In the years that followed,&amp;rdquo; continues the story, &amp;ldquo;the men came again and again.&amp;rdquo;&lt;/p>
&lt;p>Indeed, the story of Charlottesville is not what has happened, but what has not. Charlottesville, Virginia, the birthplace of American democracy, the home of Thomas Jefferson, the owner of slaves, the city that stood by and let the Nazis come, the city who can&amp;rsquo;t admit what it did wrong, the city that continues to lie by omission, to oppress by omission. The city where men have already come again and again. and where they&amp;rsquo;ll come again, too. Charlottesville, the heart of the new civil war.&lt;/p>
&lt;p>In the story, the protagonists wait in Monticello for the militia to come for them. Just like today, in the real Charlottesville.&lt;/p></description><tweet>My Monticello is a collection of short stories, but it's the title story that hits the hardest. A glimpse at a new civil war, or maybe the one that's already here.</tweet></item><item><title>Weekly Recap: 03 July 2022</title><link>https://emilygorcenski.com/post/weekly-recap-03-july-2022/</link><pubDate>Sun, 03 Jul 2022 17:26:52 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-03-july-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/rue-dicks.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/rue-dicks.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/rue-dicks.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/rue-dicks.png" width="600"/></media:content><description>&lt;p>Wanderlust and rage, using the best of my time in Europe while trying to anchor my fury with the rapidly decaying situation in America.&lt;/p>
&lt;p>Five years ago, I made a commitment to fight fascism and defend my home and my community. In that time since, I&amp;rsquo;ve searched out what it means to fight against hate, exploring across both time and space how people have used their minds and their bodies and their lives in the desperate combat to keep the needle of society pointed towards progress. The only thing I&amp;rsquo;ve learned is that regardless of how one activates themselves, it will be uncomfortable. There are no easy wins, no simple solutions, no victories without risk. One will lose in order to gain. I&amp;rsquo;m taking those lessons to heart, reminding myself that I have a privilege and a power to hold ground that maybe nobody else can. Sometimes it feels like wading upstream against a flood.&lt;/p>
&lt;p>That struggle also means that it&amp;rsquo;s necessary to take time out for yourself. Why fight for a better life if you can&amp;rsquo;t enjoy life? I remembered that this week, too.&lt;/p>
&lt;p>Oh yeah, and &lt;a href="https://emilygorcenski.com/post/anticipating-the-worst-online-behavior/">I got Andy Ngô locked out of Twitter for a day&lt;/a>.&lt;/p>
&lt;p>I found myself with the occasion to return to Stuttgart. I was there last week, and this week it was planned that I would speak at an event. But in a surprising twist, I ended up having to come a day earlier to speak an &lt;em>another&lt;/em> event, as the planned keynote speaker fell ill. I woke up early Wednesday morning, needing to take an early flight rather than the leisurely train through central Germany, and immediately felt regret. I was operating on less than three hours' sleep, and to top it off, I had food poisoning. Wednesday proved to be one of the longer mornings of my life, as the airport experience was unpleasant in every measurably way. Not only was I sick, but the #FlughafenChaos is real. Impossibly long security lines, flight delays, unhappy staff; all of this was on the itinerary Wednesday morning.&lt;/p>
&lt;p>I arrived 15 minutes before I was supposed to take the mic. The show must go on. It wasn&amp;rsquo;t my best talk, but I made it through.&lt;/p>
&lt;p>After two talks in two days, I spent a day working from our Stuttgart office and took advantage of being out west to spend a weekend traveling. I went to Luxembourg (how else would I have crossed that country off my list) and Trier, spending a sunny weekend wandering the cities and visiting old ruins. I decided that if my queer ass lived any time before the advent of the internal combustion engine I would simply die. There were a lot of rocks that got carted up a lot of hills to build those forts and I&amp;rsquo;m astonished it was even done at all. I&amp;rsquo;m writing this from the train now, but I&amp;rsquo;ll work up my photos this week. Nothing special, but it was nice to see some history. Oh, and I visited Karl Marx&amp;rsquo;s birthplace. Eat your hearts out, tankies.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/karl-marx.jpg" alt="A selfie of me in front of Karl Marx&amp;rsquo;s house">&lt;/p>
&lt;p>I don&amp;rsquo;t have any more travel in my future for the next few months. I&amp;rsquo;m excited to anchor myself in Berlin for a bit, continue learning German, and doing more reading and writing. Since the start of the war it&amp;rsquo;s been a relentless year. Respite will be welcomed.&lt;/p>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;ul>
&lt;li>There&amp;rsquo;s been a lot of, in the gentlest terms, rather shitty advice flying around about how to maintain data safety in light of the incoming abortion bans all over the country. I felt it important to add &lt;a href="https://emilygorcenski.com/post/period-tracker-fears-show-how-badly-overdue-an-american-data-protection-law-is/">some accessible context&lt;/a>, as a professional data scientist, about how to model your data threats.&lt;/li>
&lt;li>I also talked about how the recent situation underscores &lt;a href="https://emilygorcenski.com/post/the-onboarding-guide-for-new-extremists/">how carelessly we&amp;rsquo;ve wielded the term &amp;ldquo;extremist&amp;rdquo;&lt;/a>, and how you can fight back as that label begins to be applied to you.&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Next week, I&amp;rsquo;m looking forward to rest, watching Marvel movies, cleaning my flat, and planting my feet to hold the ground that matters.&lt;/p></description><tweet>Fighting hate, #FlughafenChaos, keynoting with food poisoning, hanging out at Karl Marx's house, and locking Andy Ngô out of Twitter: my week in review.</tweet></item><item><title>Period tracker fears show how badly overdue an American data protection law is</title><link>https://emilygorcenski.com/post/period-tracker-fears-show-how-badly-overdue-an-american-data-protection-law-is/</link><pubDate>Wed, 29 Jun 2022 22:14:48 +0200</pubDate><guid>https://emilygorcenski.com/post/period-tracker-fears-show-how-badly-overdue-an-american-data-protection-law-is/</guid><description>&lt;p>Fears around period tracker data are simultaneously missing the bigger picture and are somewhat over-wrought. But the fact that these fears exist and have gone viral shows how badly we need an effective, consumer-focused American data protection law.&lt;/p>
&lt;p>Since the Supreme Court ruling in &lt;em>Dobbs&lt;/em>, social media has erupted with exhortations for people to delete period tracker data. Fearing dragnet surveillance, other corners of the internet have called on cisgender men to start using period trackers to corrupt the data. Advice, good and bad, has been flowing rapidly through social media. Much of this advice misunderstands the technology, the applications of the data, and the law enforcement actions that could result from access to this data. Nevertheless, the simple fact that these fears are so visceral and relatable highlights a gap in American consumer protection law.&lt;/p>
&lt;h4 id="understanding-the-technology">Understanding the technology&lt;/h4>
&lt;p>To first understand why we need a structural, rather than an individual, solution to the problem, let&amp;rsquo;s first explore the dynamics of the data ecosystem as it relates to menstrual trackers.&lt;/p>
&lt;p>Most menstrual trackers consist of a mobile app with some basic inputs to allow a person to track their menstruation. Some have features to allow the user to specify how heavy their flow is, what their mood is, or a handful of other features that may be helpful to track ovulation, irregularities in cycles, hormone levels, birth control adherence, and so forth.&lt;/p>
&lt;p>There are three ways that these apps can store data: locally on the user&amp;rsquo;s device, in the public cloud, or in the app maker&amp;rsquo;s datacenter. Most of the time, you can find how how and where the app maker stores the data by reading the terms of use or the privacy policy, but let&amp;rsquo;s face it, almost nobody earnestly reads these. While to a non-technical user these different options may seem irrelevant, they actually have deep data privacy implications.&lt;/p>
&lt;p>Before we go into the details, let&amp;rsquo;s make one thing clear: regardless of how an app stores its data, &lt;strong>deleting the app alone is no guarantee that the data is deleted&lt;/strong>. Data in local storage may persist even after the app is deleted, although this depends on the phone, the operating system version, and the user settings. In Android, for instance, &lt;a href="https://umang91.medium.com/retain-app-data-after-uninstall-c07d7aa6972f">it&amp;rsquo;s possible to retain data after app deletion&lt;/a>, although this prompts a user dialog. Unfortunately, if you ignore or misunderstand the prompt, it&amp;rsquo;s very hard to find where the data resides unless you are highly competent navigating the Android file system. On some versions of iOS, the application can also store local data in iCloud (more later) or in the Keychain, and deleting the app does not remove this data. The &lt;a href="https://www.insider.com/how-to-delete-apps-iphone-save-data">&amp;ldquo;offload app&amp;rdquo; feature&lt;/a>, which some users may mistake for &amp;ldquo;uninstall app,&amp;rdquo; explicitly retains data. Backups, for instance on iTunes, can also create a local copy of data on a different device, and syncing your phone again can reload the data (and the app) back onto your phone. In short, one should never assume that deleting an app implies the permanent deletion of the data.&lt;/p>
&lt;p>With that said, let&amp;rsquo;s look at the differences between the storage methods described above.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Local Data&lt;/em> is stored on the device, and the only people who can see the data are people who have physical access to the device;&lt;/li>
&lt;li>&lt;em>Public Cloud&lt;/em> storage means data is stored on a public cloud provider, typically Amazon Web Services, Microsoft Azure, or Google Cloud Platform. The visibility of the data depends on many factors that the user almost certainly cannot determine alone;&lt;/li>
&lt;li>&lt;em>Data Center&lt;/em> storage means data is stored on computers that the app maker exclusively controls, although they may not own the data center itself. Again, the visibility of the data depends on many technical considerations.&lt;/li>
&lt;/ul>
&lt;p>These three modes of storage affect how easy or difficult it is for an American law enforcement agency can get access to the data. For locally stored data, law enforcement would require physical access to your device. If they cannot get access to your device, they cannot get the data (with a few exceptions I will describe in the next section).&lt;/p>
&lt;p>For data stored on the public cloud, law enforcement can get access to the data either by serving a search warrant to the app maker or the cloud provider itself. Acts like the &lt;a href="https://www.justice.gov/dag/cloudact">US CLOUD Act&lt;/a> can even compel the foreign release of data by companies that operate in the United States; this includes, of course, Amazon, Microsoft, and Google. In such a case, the app maker may resist providing access to the data, but if the cloud provider holds the encryption keys, then law enforcement has an alternative path to accessing the data. For this reason, I almost always advise technology companies using the public cloud to use a technique known as &lt;a href="https://en.wikipedia.org/wiki/Bring_your_own_encryption">&amp;ldquo;Bring Your Own Key.&amp;quot;&lt;/a> This helps remove this threat vector against user data.&lt;/p>
&lt;p>For data stored in a private data center, usually only the app manufacturer has access to the encryption keys. Even if law enforcement physically removes the drives, the data will be unreadable. Moreover, if the company that makes the app is domiciled overseas, and domiciles their data overseas, then it is much less likely that American courts will be able to reach the data. In my personal, not-a-lawyer opinion, this is the strongest way to protect your data.&lt;/p>
&lt;p>One weakness however: if the data is stored on someone else&amp;rsquo;s device, such as in a private data center, it&amp;rsquo;s possible that employees have access to that data. Here, you have to rely on the strength of data protection laws and personal and professional ethics to create a negative incentive for employees to misuse the data, but you cannot yourself guarantee a denial of access. For this reason and others, &lt;a href="https://medium.com/@Kendra_Serra/fear-uncertainty-and-period-trackers-340ab8fdff74">some people recommend using apps that only use local storage.&lt;/a> This has some drawbacks which I will now discuss.&lt;/p>
&lt;h4 id="understanding-local-storage">Understanding local storage&lt;/h4>
&lt;p>Local storage can feel like the safest way to prevent access to your data. However, there are a couple of weaknesses with this approach. First, local storage is only as strong as the access to your phone. This is the achilles heel to local storage as a data protection option. I don&amp;rsquo;t have statistics, but from my personal experience, most smartphone users I see use terribly insecure ways to guard access to their phones, using only 4-6 digit pins, swipe patterns, Face ID, Touch ID, or other biometric access methods. All of these are so insecure as to be useless when considering law enforcement capabilities.&lt;/p>
&lt;p>The ability for law enforcement to break a pin depends greatly on the device and its operating system version. But at least as of 2018, &lt;a href="https://www.macworld.com/article/231253/graykey-what-you-need-to-know-about-this-iphone-hacker-and-how-to-protect-yourself.html">it was clear&lt;/a> that 4 and 6 digit pins were trivially broken by GrayKey devices. The exact current capabilities of this technology are not known, as far as I can tell, but I would simply assume that any pin less than 8 digits is insecure.&lt;/p>
&lt;p>Biometric access methods are even worse. &lt;a href="https://www.thomasianlaw.com/blog/2021/october/can-police-force-me-to-unlock-my-phone-/">US Courts are still divided&lt;/a> on the question of whether police can force unlock a device using biometrics. In 2019, a Northern California district judge ruled it illegal; more recently, however, a judge ruled in a January 6 Insurrection case that biometrics could be used to force the device open. Regardless, once a law enforcement officer has your device physically in their hands, there&amp;rsquo;s little you can do to stop them. At least one video shows &lt;a href="https://mashable.com/article/police-try-to-unlock-handcuffed-man-iphone-face-id">a police officer pointing a phone at a handcuffed man&amp;rsquo;s face&lt;/a>, presumably to unlock it.&lt;/p>
&lt;p>That is to say, unless you strongly protect your phone by disabling biometrics and using a full-strength alphanumeric password, local storage may actually be the &lt;em>least&lt;/em> secure way to store your menstrual cycle data.&lt;/p>
&lt;p>There&amp;rsquo;s another angle to local storage, too, that I&amp;rsquo;ve already discussed: backups with iCloud or other syncs. Many iOS apps can store data in iCloud. Law enforcement authorities have leaned heavily on iCloud access to get data in the past, including iMessage data, and used that to prosecute &lt;a href="https://www.forbes.com/sites/thomasbrewster/2021/02/15/when-imessages-arent-private-government-raids-apple-icloud-in-a-dark-web-drug-investigation/?sh=516a238417ab">drug traffickers&lt;/a> and &lt;a href="https://www.businessinsider.com/apple-fbi-icloud-investigation-seattle-protester-arson-2020-9">civil rights protestors&lt;/a>. For newer iPhones, &lt;a href="https://support.apple.com/guide/security/protecting-access-to-users-health-data-sec88be9900f/1/web/1">Apple claims to no longer be able to provide this data&lt;/a>, but not everyone has a newer iPhone.&lt;/p>
&lt;p>Moreover, backing up your device to iTunes or your PC, for instance to transfer photos, can create local copies of data on another device. You might not think about these backups when trying to delete your data. Moreover, it&amp;rsquo;s possible that the next time you connect your phone, the sync tool puts the data &lt;em>back on your phone&lt;/em>. It&amp;rsquo;s annoying and hard to track down which backups contain what data, so the only guarantee here is to never sync your phone.&lt;/p>
&lt;p>In short, local storage can be made extremely secure, but it&amp;rsquo;s very easy to accidentally turn your local storage situation into a cloud situation without even realizing it. Last but not least, choosing a local storage option for securing your data means it&amp;rsquo;s up to you to keep the device up-to-date and secure. If you lose the device, you lose access to the data. These risks have to be considered when choosing a solution.&lt;/p>
&lt;h4 id="the-need-for-better-data-protection">The need for better data protection&lt;/h4>
&lt;p>If you made it past the many hundreds of words I&amp;rsquo;ve written on the particular benefits and drawbacks of various storage methods, then you might arrive at the conclusion that deleting data is hard. You&amp;rsquo;d be right. Because the United States has no federal data protection standard that applies to this kind of data, and has no federal legal right to be forgotten, what we&amp;rsquo;re left with is a bad situation where we either have to take the app developers at their word that they manage data securely, or we have to train millions of people on how to keep their devices secure and up-to-date. I&amp;rsquo;m going to be honest: I use a full-strength password for my phone, and it&amp;rsquo;s a huge pain in the ass. The battle for secure local storage is an uphill battle against the army of convenience.&lt;/p>
&lt;p>It would be much more scalable and secure if infrastructure and security experts could protect the data. To do this, we need a strong data protection regulation that guarantees the right to be forgotten and provides for independent audit to give users peace of mind that data has been deleted. Much like deleting an app is no guarantee that locally-stored data is erased, deleting an account is no guarantee that your data is deleted along with your account. Your data almost surely lives on in the company&amp;rsquo;s databases. Period tracking data is only a minor threat in the risk of prosecuting abortion, but stronger guarantees that we could enforce the deletion of data would remove the personal burden of data security and improve global health outcomes for people with periods.&lt;/p>
&lt;p>These fights are not new and not unique to period tracking. The period tracker outrage has underscored how little progress we&amp;rsquo;ve made in data protection regulation initiatives in the US overall. House Democrats, never missing the opportunity a good crisis presents, are working towards &lt;a href="https://www.engadget.com/house-democrats-legislation-period-tracker-data-033357063.html">legislation&lt;/a> to secure period data.&lt;/p>
&lt;p>But why stop there? Period tracker data is not the only data police use to politically prosecute people. Why not work towards a stronger, general data protection regulation? After all, if we secure period tracker data, the police will simply look to facial recognition data or mood tracker data or fitness tracker instead. In fact, &lt;a href="https://www.mic.com/articles/121319/fitbit-rape-claim">they already have&lt;/a>. The fight for digital privacy rights is the same fight as the same for abortion rights. Closing the data protection regulatory gap would not only protect people seeking abortions now, it will also help keep people safe in the next fight, whether its for the right to birth control access, trans healthcare, or consensual sex between adults. The time is now to solve the right problems.&lt;/p></description><tweet>Fears around period tracker data are largely overwrought, but their existence shows how badly we need an American data privacy law.</tweet></item><item><title>Anticipating the worst online behavior</title><link>https://emilygorcenski.com/post/anticipating-the-worst-online-behavior/</link><pubDate>Tue, 28 Jun 2022 12:27:09 +0200</pubDate><guid>https://emilygorcenski.com/post/anticipating-the-worst-online-behavior/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/tweet-violation.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/tweet-violation.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/tweet-violation.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/tweet-violation.jpg" width="600"/></media:content><description>&lt;p>Wir haben den Account gesperrt, nachdem unsere Überprüfung ergab, dass einige unserer Regeln verletzt wurden.&lt;/p>
&lt;p>Sometimes online hate mobs are really easy to anticipate. I&amp;rsquo;m expecting one today. Why?&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/case-0276773126.jpg"style="margin: 0" width="400px"
alt="A screenshot of an email from a twitter report showing my reporting of Andy Ngô was successful, and his account is locked" />&lt;/center>
&lt;center>A screenshot of an email from a twitter report showing my reporting of Andy Ngô was successful, and his account is locked&lt;/center>&lt;br />
&lt;p>Translated, this says, &amp;ldquo;thank you for your report. We have locked the account after our review showed that some of our rules have been violated.&amp;rdquo; As it turns out, it&amp;rsquo;s still against Twitter&amp;rsquo;s rules to deadname trans people.&lt;/p>
&lt;p>When you defend yourself against hate, you can expect a backlash in the form of hate. But that doesn&amp;rsquo;t mean we should stop fighting hate. I&amp;rsquo;m bracing myself in anticipation of outrage today, for having the temerity to suggest that Twitter upholds its own terms of service. How extreme!&lt;/p>
&lt;p>How do I prepare for online hate mobs? Well, first of all, I&amp;rsquo;m not actually &lt;em>on&lt;/em> Twitter. All of my posts now are driven through integrations, and I don&amp;rsquo;t look at my notifications. I know it&amp;rsquo;s not popular to suggest that ignoring hate works, but actually, in this case, not looking at it yourself and having friends who can keep an eye on any threats helps a ton. Preparing my friends, family, and employer for possible hate mobs is also useful. In this case, the pattern is already well-understood and clear: the backlash should not be taken seriously and any clear threats should be reported to the police.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>In this case, I&amp;rsquo;m stepping in front of it by calling out the behavior. We know that the reaction by many of these far-right radicals to even the slightest inconvenience is an attempt at intimidation. They&amp;rsquo;ll use lies, take things out of context, and try to generate hate mobs in an attempt to punish the &amp;ldquo;transgressor&amp;rdquo; for daring to suggest they deserve equal treatment. I&amp;rsquo;m timestamping this. If no hate comes, then great! If hate does come, then here I am saying it&amp;rsquo;s coming, and saying why it&amp;rsquo;s coming, so that its impact is blunted and its consequences are trivialized.&lt;/p>
&lt;p>With the rapid devolution of American civil rights, those who champion equality and speak out against hate will find themselves under increasingly vicious online attacks. We cannot let that silence us, because silence is the goal. Hate can&amp;rsquo;t defeat us, but we can defeat hate.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>yes, I don&amp;rsquo;t like working with the police, but my duty to the people around me trumps my personal politics.&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><tweet>Uh-oh, our least-favorite "journalist" has broken the rules again, so now I can anticipate a hate mob</tweet></item><item><title>The Onboarding Guide for New Extremists</title><link>https://emilygorcenski.com/post/the-onboarding-guide-for-new-extremists/</link><pubDate>Mon, 27 Jun 2022 20:59:04 +0200</pubDate><guid>https://emilygorcenski.com/post/the-onboarding-guide-for-new-extremists/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/j8.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/j8.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/j8.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/j8.jpg" width="600"/></media:content><description>&lt;p>Last week you had beliefs shared by a majority of Americans, beliefs in line with American law. This week you&amp;rsquo;re an extremist. Here&amp;rsquo;s what it means, and what to do about it.&lt;/p>
&lt;p>I&amp;rsquo;ve been called an extremist more times than I care to count. Before Unite the Right, a city councilor said that the activist group I organized with was &amp;ldquo;worse than terrorists.&amp;rdquo; British transphobes have called me a transgender extremist. Quasi-journalist Andy Ngô particularly loves using that term to describe me. I&amp;rsquo;m secretly hoping he sends me a cross-stitch sampler with the words &amp;ldquo;Antifa Extremist&amp;rdquo; some day. Despite never being charged with a crime, never being arrested&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, and never having been shown to raise a hand against anyone in anger, I&amp;rsquo;m regularly labeled by right wing media to be one of the most dreadful extremists in the world. It doesn&amp;rsquo;t end there. At work, I specialize in consulting in &lt;a href="https://en.wikipedia.org/wiki/Extreme_programming">&amp;ldquo;Extreme Programming.&amp;quot;&lt;/a> I even prefer the &lt;a href="https://sour-patch-kids.fandom.com/wiki/Sour_Patch_Extreme">Sour Patch Extreme&lt;/a>. What can I say, I&amp;rsquo;m a sucker for sour gummies.&lt;/p>
&lt;p>The term &amp;ldquo;extreme&amp;rdquo; is so overused that by now it should have lost its edge, but for how it gets weaponized. The FBI loves using the term to justify the further erosion of American civil rights. Over the years, we&amp;rsquo;ve seen the Justice Department and Department of Homeland Security wield the term freely. Some examples:&lt;/p>
&lt;ul>
&lt;li>a man arrested for being a felon in possession of a firearm was labeled a &lt;a href="https://storage.courtlistener.com/recap/gov.uscourts.scd.234014/gov.uscourts.scd.234014.1.1.pdf">White Supremacy Extremist&lt;/a>;&lt;/li>
&lt;li>in the lead-up to Unite the Right, the FBI tracked so-called &lt;a href="https://foreignpolicy.com/2017/10/06/the-fbi-has-identified-a-new-domestic-terrorist-threat-and-its-black-identity-extremists/">Black Identity Extremists&lt;/a>;&lt;/li>
&lt;li>an &lt;a href="https://www.fbi.gov/news/stories/animal-rights-extremists">FBI article&lt;/a> from 2016 refers to Animal Rights Extremists;&lt;/li>
&lt;li>&lt;a href="https://www.ojp.gov/ncjrs/virtual-library/abstracts/american-terrorism-more-bombast-or-bomb-blasts">a 1980 paper&lt;/a> hosted by the Justice Department refers to a smorgasbord of extremist categories: Jewish, Black, Indian and Feminist Extremists.&lt;/li>
&lt;/ul>
&lt;p>And finally, &lt;a href="https://www.documentcloud.org/documents/22068133-dhs-memo">a recent DHS memo&lt;/a> refers to &amp;ldquo;abortion-related violent extremists,&amp;rdquo; placing them among a broader category of &amp;ldquo;Domestic Violent Extremist[s].&amp;rdquo;&lt;/p>
&lt;p>Welcome to the club, I guess. We&amp;rsquo;ve got vegan rice and beans in a huge pot out back.&lt;/p>
&lt;p>The broader federal law enforcement apparatus has used these labels to justify increased surveillance and policing of dissenters, with little skill in differentiating between groups known to commit or prone to commit violence, and groups who organize for civil disobedience. These terms have been used to justify search warrants, secure indictments, and enhance sentencing. They are used to justify privacy breaches by the government, including broad surveillance of your social media. The FBI has a 12,051-page file on me; I&amp;rsquo;ve never committed a crime, but I was the victim of a hate crime and a terrorist attack. Stories of victims of racial violence finding bugs in their cars or homes abound.&lt;/p>
&lt;p>If you vocally oppose the &lt;em>Dobbs&lt;/em> decision, regardless of whether you have any intent to commit a crime, you&amp;rsquo;re probably going to be caught up in the surveillance network constructed under the guise of &amp;ldquo;counter-extremism.&amp;rdquo; This is because the label &amp;ldquo;extremist&amp;rdquo; has become simply a more polite way to say &amp;ldquo;enemy of the state.&amp;rdquo; The right to bodily autonomy is not the only right you have lost. Congratulations, you&amp;rsquo;re now a &lt;em>de facto&lt;/em> political target. I have good news, though. There are things you can do about this.&lt;/p>
&lt;h3 id="reject-the-legitimacy-of-protest-policing">Reject the legitimacy of protest policing&lt;/h3>
&lt;p>The FBI is not your friend. The FBI is out to catch the bad guys. But what you need to understand is that in their eyes you are now the bad guy. Despite the fact that your beliefs haven&amp;rsquo;t changed, were legal a mere handful of days ago, are shared by a majority of Americans, and have no correlation with violence at all, they will view you as a suspect or an enemy. They will try to use you to gather information on abortion-rights organizers, try to lead you to protest forms that are ineffective, to inform on your network of peers, and to erode your beliefs in what justice in America is.&lt;/p>
&lt;p>The only defense against this is to politically oppose this form of policing. The fight for abortion rights is the same fight as the fight for Black lives. The fight for abortion rights is the same fight as the fight against warrantless searches of metadata, or the use of facial recognition in policing, or the surveillance of social media. If you want to protest &lt;em>Dobbs&lt;/em>, you should also be protesting the unbearable surveillance infrastructure that the government has constructed.&lt;/p>
&lt;p>The police will shoot you in the face with tear gas, regardless of whether you&amp;rsquo;re breaking the law or not. And they&amp;rsquo;re going to do it with glee. 2020 showed us this.&lt;/p>
&lt;h3 id="understand-threat-modeling">Understand threat modeling&lt;/h3>
&lt;p>A lot of people are trying to be clever about posting about helping someone go &amp;ldquo;camping&amp;rdquo; or visiting their &amp;ldquo;aunt Annie.&amp;rdquo; This doesn&amp;rsquo;t work. Nobody was fooled when neo-Nazis talked about committing violence &amp;ldquo;in Minecraft&amp;rdquo; and no one is going to be fooled by &amp;ldquo;camping,&amp;rdquo; especially when roughly every third American is making a post like this. You&amp;rsquo;re not helping people in need and you&amp;rsquo;re not helping yourself.&lt;/p>
&lt;p>There&amp;rsquo;s also a lot of advice out there about deleting your period trackers. I don&amp;rsquo;t think this is a great idea, at least not by itself. There is no federal law against abortion (yet), and local police departments do not have the skills or resources to conduct massive dragnets of period tracker data. However, this data could be used against you in individual cases. In that scenario, there are several things to consider:&lt;/p>
&lt;ul>
&lt;li>deleting your period tracking app does not mean the data is gone;&lt;/li>
&lt;li>deleting your account with a period tracking service does not mean the data is gone;&lt;/li>
&lt;li>period tracking apps are not the only source of relevant data, but you also have to consider fitness apps, mood trackers, pill minders, and anything else;&lt;/li>
&lt;li>iCloud backups of app data is one of the most common ways for law enforcement to get data, so you have to make sure iCloud is turned off, even if you do delete your app and the data;&lt;/li>
&lt;li>locally-stored data is only as secure as your phone&amp;rsquo;s passcode, a 4- or 6-digit numeric PIN is not enough.&lt;/li>
&lt;/ul>
&lt;p>If you delete your tracking systems, and you rely on these apps to help manage your health, you might end up doing more harm than good. Instead, it&amp;rsquo;s better to put the data out of reach of US courts. The best way to do this is to use overseas-based companies who are domiciled in countries with strong data protection laws and clear opposition to things like the &lt;a href="https://www.documentcloud.org/documents/22068133-dhs-memo">CLOUD Act&lt;/a>. I am not a lawyer and this is not legal advice, but if you do need legal advice, I suggest finding a lawyer familiar with modern data protection law.&lt;/p>
&lt;p>Moreover, there are much more proximate threats than a prosecutor trying to explain the nuances of real-time data collection to a lay jury. It makes no sense to post about deleting your period tracker, and then follow that with a post doxing the conservative Supreme Court Justices' home addresses. That is definitely illegal and fairly easy to prosecute, and Twitter and Facebook tend to comply with those search warrants.&lt;/p>
&lt;h3 id="know-that-the-system-isnt-based-on-logic">Know that the system isn&amp;rsquo;t based on logic&lt;/h3>
&lt;p>Our justice system is not designed to use logic to find the truth, but rather is designed to incriminate you at every turn. People have been rightfully worried about cell phone usage. The police can track cell phones and use that data to incriminate you or others in a suspected crime. As a result, many people suggest using burner phones or leaving your phone at home when visiting abortion clinics. This is probably a good idea, but it&amp;rsquo;s not without its own complications.&lt;/p>
&lt;p>Consider the case of Samuel Gulick. Gulick was a teenager when he attacked an abortion clinic in the middle of the night. During his attack, he left his phone at home. Despite this, he was tracked by other means; namely, through a license plate reader. In &lt;a href="https://storage.courtlistener.com/recap/gov.uscourts.ded.71120/gov.uscourts.ded.71120.7.0.pdf">the criminal complaint&lt;/a> used to secure an arrest warrant against Gulick, the investigating agent writes&lt;/p>
&lt;blockquote>
&lt;p>The CDR location data indicated the phone was at the same tower location for that period of time and the tower location is consistent with the residence of REDACTED. In my training and experience, subjects are often aware that law enforcement can track a subject&amp;rsquo;s location through cellular telephone geographic data. Therefore, subjects often do not carry their cell phone or leave their cell phone behind in an effort to elude being connected to criminal acts.&lt;/p>
&lt;/blockquote>
&lt;p>What does this mean? It means that taking your phone with you is incriminating. It also means that not taking your phone with you is incriminating. The only law that matters here is the &lt;a href="https://en.wikipedia.org/wiki/Law_of_excluded_middle">Law of the Excluded Middle&lt;/a>, or in common parlance, &amp;ldquo;damned if you do, damned if you don&amp;rsquo;t.&amp;rdquo; This is because our system isn&amp;rsquo;t designed to figure out if you&amp;rsquo;re guilty. It&amp;rsquo;s designed to find reasons why you are. In Gulick&amp;rsquo;s case, good for humanity: a christofascist was caught. But this case is a perfect example of how criminal justice in America is a massive process of &lt;a href="https://en.wikipedia.org/wiki/Begging_the_question">begging the question&lt;/a>. You can&amp;rsquo;t beat an illogical system using logic. You have to beat an illogical system by building an alternative system to operate in. For this reason, rather than trying to outsmart the cops to get access to medically-necessary abortion care, it&amp;rsquo;s best to connect with the many existing abortion support networks that have been building this alternative structure for years.&lt;/p>
&lt;h3 id="understand-what-extremism-really-is-and-reject-the-concept">Understand what &amp;ldquo;extremism&amp;rdquo; really is, and reject the concept&lt;/h3>
&lt;p>The government and the media use the word &amp;ldquo;extremism&amp;rdquo; to make people sound like their beliefs are far from mainstream, that they are the beliefs of people on the fringe. But this is not the case. When we talk about &amp;ldquo;extremist&amp;rdquo; groups like the Proud Boys, or the beliefs of 4-chan mass shooters, we&amp;rsquo;re talking about actions that are extreme, not beliefs. When we see the horrific scenes of a mass shooting or a white supremacist car attack, it&amp;rsquo;s important to remember that many times, those perpetrators' beliefs have significant overlap with what you see on mainstream news. It&amp;rsquo;s only their commitment to violence that is out of the ordinary. Great Replacement Theory is on Fox News every day; they just don&amp;rsquo;t call it that.&lt;/p>
&lt;p>Likewise, as a supporter of abortion rights your beliefs could not be more mainstream. The developing world is slowly trending towards more permissive rights to abortion than not. Holding these beliefs, and even holding these beliefs strongly enough to engage in civil disobedience, is not on the &amp;ldquo;extremes.&amp;rdquo; The American political landscape is much more complex than simple right and left, and the continued use of the term &amp;ldquo;extremist&amp;rdquo; in the media flattens that. The moral value of a belief system isn&amp;rsquo;t dependent on how far away it is from a constantly-moving political center. Centrism is not virtuous by default; it is not automatically superior by its commitment to compromise.&lt;/p>
&lt;p>You, like me, may find yourself labeled an extremist by the media or the government, even though all you&amp;rsquo;re doing is sitting on your couch saying legally-protected things about legally-protected rights. The label is designed to intimidate you. Don&amp;rsquo;t let it. It means nothing. It has no relevance. Hold your commitments in your heart and keep them in relief against an ever-shifting society. The fight will be long, and we&amp;rsquo;ll need you in it.&lt;/p>
&lt;h3 id="recognize-that-voting-isnt-the-solution">Recognize that voting isn&amp;rsquo;t the solution&lt;/h3>
&lt;p>Simply put, the Democrats have been as responsible for the law enforcement apparatus as the Republicans have been. Vote if you want to, or don&amp;rsquo;t if you don&amp;rsquo;t. But don&amp;rsquo;t feel like rewarding the Democrats with your vote is a path out of this scenario. After all, they&amp;rsquo;re the ones who empowered the same system that is now being weaponized against your lawful and peaceful right to object. In fact, the Democrats are just as likely to discard you as an &amp;ldquo;extremist&amp;rdquo; than they are to embrace your commitment to social change. Pressure the Democratic Party to grow a backbone and change.&lt;/p>
&lt;hr>
&lt;p>For many people, this is the first time they&amp;rsquo;ll really find themselves on the wrong end of the government&amp;rsquo;s long stick. The label &amp;ldquo;extremist&amp;rdquo; is used to instill fear and compliance in people who are morally opposed to what the state is trying to enforce. You have to oppose the government sometimes; our democracy is supposed to be an ever changing reflection of our society, and while that democracy is eroding, the solution to that isn&amp;rsquo;t to play by the rules that others make up as they go. Opposing this doesn&amp;rsquo;t make you an &amp;ldquo;anti-government extremist.&amp;rdquo; Instead, it makes you a committed citizen to a society that believes in the equal rights for all. The right to hold in your heart what you know to be true isn&amp;rsquo;t granted by the state, and nobody can take that away from you. Don&amp;rsquo;t let them.&lt;/p>
&lt;p>&lt;small>For the federal agent and/or Andy Ngô superfan reading this post, this post is not an endorsement of extremist behaviors but rather a clear critique of the overly-broad use of the term &amp;ldquo;extremism&amp;rdquo; and how it is used to oppress social movements. This legally-protected opinion is not and shall not be interpreted as an endorsement or a call to violence against person or property, so go spend your time doing something better like catching the J6 bomb guy or learning how to not be a fascist.&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>Officer Stoddard of the Willimantic PD did once detain, or maybe arrest?, me and a friend for the extremely extremist crime of having our bikes on the sidewalk. We were 14 or 15. That all got expunged when the police chief realized that Officer Stoddard was a terrible cop.&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><tweet>Last week you had beliefs shared by a majority of Americans, beliefs in line with American law. This week you're an extremist. Here's what it means.</tweet></item><item><title>Weekly Recap: 26 June 2022</title><link>https://emilygorcenski.com/post/weekly-recap-26-june-2022/</link><pubDate>Mon, 27 Jun 2022 00:24:39 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-26-june-2022/</guid><description>&lt;p>On a shitty week in America, with the constant reminder that women and trans people are second class citizens, I arrived back in Berlin, with the constant reminder of war. What&amp;rsquo;s to do, but to try to find peace?&lt;/p>
&lt;p>America&amp;rsquo;s not doing so great. The Supreme Court overturned &lt;em>Roe v. Wade&lt;/em>, as it was long-predicted they would, and it sets America back 50 years. At the same time, the war in Ukraine still wages on. Everywhere I turn my head are people dying for no reason at all.&lt;/p>
&lt;p>I came back to Germany last weekend and had only a day in the country before having to pack my things and head to Stuttgart. The Ukrainian refugees I had taken in had been sent there by the Landesamt für Fluchtlingsangelegenheiten. (There&amp;rsquo;s your German word for the day.) They had left suddenly, and their bags were still at my place. I packed them up and with help, took the long train across Germany to deliver their goods. Thankfully, they&amp;rsquo;re doing alright, as alright as they could be doing under the circumstances. I&amp;rsquo;m furious with Germany&amp;rsquo;s nonsensical system for managing the refugee situation. I have plenty of space for them to stay, but the government won&amp;rsquo;t allow it. At any rate, I&amp;rsquo;m happy I could help, I just wish I could have done more. The war&amp;rsquo;s not over and it will take years for them to be able to return, if they ever can. We have to prepare for the long haul.&lt;/p>
&lt;p>Speaking of the long haul, the abortion fight in America had a huge setback, one that&amp;rsquo;s going to take years to recover from. I haven&amp;rsquo;t said much and won&amp;rsquo;t say much, because this isn&amp;rsquo;t really my lane, and also because I&amp;rsquo;m simply just tired of it. We&amp;rsquo;re once again doing better at fighting each other than fighting the system that put us here. I want no part of that. I&amp;rsquo;m not in a position to help; I just throw money at abortion funds. It&amp;rsquo;s not enough, but I&amp;rsquo;m not going to add my shout to the cacophony of shouting. Instead, I&amp;rsquo;m looking more to history. How do people fight? Let&amp;rsquo;s abstract it away a bit. Are we really using our full skillsets? I can engage with the theory. More to come.&lt;/p>
&lt;p>I &lt;a href="https://emilygorcenski.com/post/posse-comitatus-twitter-as-a-syndication-engine/">reactivated Twitter&lt;/a> to use it as a syndication engine this weekend. I spent some time setting up some automation: my blog posts should be automatically posted, and I built some clever integrations with Zapier to make sharing long-form content on other sites easier. This way, I don&amp;rsquo;t have to be logged in, but I can still drive content and use my Twitter to syndicate it. I&amp;rsquo;ll see how it works out. In any case, my life&amp;rsquo;s too busy these days, and I&amp;rsquo;m needing to have more automation in my digital space, so I can spend more time touching grass.&lt;/p>
&lt;p>On a more whimsical note, I&amp;rsquo;ve decided to power through the Marvel Cinematic Universe, now that I have Disney+ access, starting in the order the movies were released. I have to say, 2008 doesn&amp;rsquo;t seem that far away but after watching these movies again my god was it a lifetime ago. The movies are really rough. The CGI is shockingly bad; absolutely curious decisions were made for what scenes to include and what cuts to make. Thor and Loki look like actual babies. It was so long ago. Anyhow, I&amp;rsquo;m doing one film a night. It&amp;rsquo;s a good way to shut my brain off after working, German learning, and watching the world fall apart.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I finished &lt;em>My Monticello&lt;/em>. I&amp;rsquo;ll write a book report on it tomorrow. What a fantastic and heavy book.&lt;/p>
&lt;ul>
&lt;li>&lt;em>My Monticello&lt;/em>, Jocelyn Nicole Johnson &lt;small>(&lt;em>Progress: 100%&lt;/em>)&lt;/small>&lt;/li>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 12%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;ul>
&lt;li>I brought back the &lt;a href="https://emilygorcenski.com/post/posse-comitatus-twitter-as-a-syndication-engine/">tweets machine&lt;/a> and wrote about how it&amp;rsquo;s a strange website where your identity is whatever someone else wants it to be.&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>I have to, incredibly, head back to Stuttgart this week for a work event. And I might take a weekend trip afterwards, as it will be the last time I can leave Germany for a few months. I&amp;rsquo;m planning on doing a lot of writing this week, and long train rides are pretty well suited for that.&lt;/p></description><tweet>Back in Berlin and tying off loose ends, while fighting one war or another.</tweet></item><item><title>POSSE Comitatus: Twitter as a Syndication Engine</title><link>https://emilygorcenski.com/post/posse-comitatus-twitter-as-a-syndication-engine/</link><pubDate>Sat, 25 Jun 2022 12:09:59 +0200</pubDate><guid>https://emilygorcenski.com/post/posse-comitatus-twitter-as-a-syndication-engine/</guid><description>&lt;p>After a couple months away from Twitter, I&amp;rsquo;m reactivating the account. Not for posting, but rather to use it as a syndication engine. Twitter remains the worst, and time away only highlights how true that has become.&lt;/p>
&lt;p>A little while back I wrote about how Twitter really has &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">no idea what they&amp;rsquo;re doing&lt;/a>. Elon Musk is still trying to buy the company, and it&amp;rsquo;s unclear whether he&amp;rsquo;ll succeed or fail, but at this point even if he succeeds it seems like he will fail. Twitter has basically given up on trying to innovate or solve any of its problems; content moderation has given up the ghost and there&amp;rsquo;s no indication anyone will even attempt to improve it, regardless of Musk&amp;rsquo;s purchase. In any case, the company is a money pit and if we&amp;rsquo;re lucky, it&amp;rsquo;ll ruin Musk.&lt;/p>
&lt;p>But Musk isn&amp;rsquo;t the cause of the site&amp;rsquo;s many problems. No. He is an effect of the site&amp;rsquo;s many problems. He&amp;rsquo;s an emergent phenomenon, the first billionaire shitposter, a product of all of our billions of shitposts. Musk is rewarded for his behavior because we&amp;rsquo;re all rewarded for this behavior. Despite this, and not because of this, Twitter remains the best of only like two practical options to receive a variety of news on a variety of topics. Twitter is a dumpster, but the only other real site where this is possible, Facebook, is a dumpster sitting out back a fish market. Twitter remains the best English-language syndication engine to reach people who still believe the Earth is round.&lt;/p>
&lt;p>Time away from Twitter let me watch from a distance how people behave. The community is bizarre. Twitter is the only place where people practice Death of the Author by trying to bury the author alive. On Twitter, you have to be everything to everyone at all times, and if you&amp;rsquo;re not, they&amp;rsquo;ll just make you into whatever they want you to be anyways. Watching the reactions to my signoff piece from a distance was bizarre. &lt;a href="https://twitter.com/defnotbeka/status/1522723946138791936">One person&lt;/a> believed my reference to &amp;ldquo;Howl&amp;rdquo; was a callback to &lt;em>Hackers&lt;/em>, not a reference to one of the greatest poems of the 20th century, written by a Jewish man who was expelled from Columbia &lt;a href="https://www.thedailybeast.com/the-mystery-of-the-allen-ginsberg-diana-trilling-feud">for speech protesting anti-Semitism and for homosexual sex&lt;/a>. The same person also assumed that the word count of the article was a reference to &lt;em>Ghost in the Shell&lt;/em>, an anime series I have never seen. Another user &lt;a href="https://twitter.com/BrielleClaremo1/status/1540178006949302273">invoked my name&lt;/a> in an argument with someone I don&amp;rsquo;t know and have never met, accusing me of spreading anti-voting rhetoric in &amp;ldquo;activist spaces.&amp;rdquo; I don&amp;rsquo;t belong to any activist spaces and I don&amp;rsquo;t vote because Virginia sells voting records of absentee voters, including residential addresses, and this poses a major security risk for me. On Twitter, you&amp;rsquo;re just a character in everyone&amp;rsquo;s story, and they&amp;rsquo;ll write whatever backstory for you they want.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/voting.jpg" alt="Screenshot of an email from a voting official confirming that absentee records, including addresses, are sold">&lt;/p>
&lt;p>I restored Twitter for a couple simple reasons. One, I&amp;rsquo;m trying to embrace &lt;a href="https://indieweb.org/POSSE">the Indieweb principle of POSSE&lt;/a>: Publish on your Own Site, Syndicate Elsewhere. Thus, my social media feeds will be a syndication engine. I&amp;rsquo;m over the era of giving companies my content and my data. Second, &lt;a href="https://twitter.com/EmilyGorcenski/status/1518465772175122432">as I&amp;rsquo;ve said before&lt;/a>, I&amp;rsquo;m working on selling a book (or maybe two!), and some other media projects, so a social media account with a large following is necessary.&lt;/p>
&lt;p>Also, there are basic security reasons to keep the account active. A deactivated account can&amp;rsquo;t use two-factor authentication. Also, people have been creating alternative accounts in my name, a creepy and weird behavior. Having my account active prevents these fake accounts from defaming me.&lt;/p>
&lt;p>Shifting towards using Twitter as a syndication engine is a small step towards distributing more social networks. I&amp;rsquo;m shifting to API-delivered content through my website, and will post soon about how it&amp;rsquo;s easy to use free or nearly-free infrastructure to build an entirely event-driven distributed model for sharing and receiving content. As I am working on this, I&amp;rsquo;m realizing how poorly we&amp;rsquo;ve structured the internet. RSS is awful; even if Google Reader was magically brought back today, it doesn&amp;rsquo;t map to how we&amp;rsquo;re using and relating with content today. Tagging sucks. Sharing sucks. There&amp;rsquo;s so much more we can do. We need an internet designed by writers and artists, not technologists and venture capitalists. We&amp;rsquo;re not there yet. But until we are, the least I can do is stop giving Twitter my content.&lt;/p></description><tweet>Am I back? Nope. Twitter is still the worst, but it's a great syndication engine.</tweet></item><item><title>Weekly Recap: 19 June 2022</title><link>https://emilygorcenski.com/post/weekly-recap-19-june-2022/</link><pubDate>Sun, 19 Jun 2022 15:43:06 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-19-june-2022/</guid><description>&lt;p>Charlottesville remains Charlottesville&lt;/p>
&lt;p>After two weeks out west, with the second of those weeks in Alaska, I opted to take a bridge week in Charlottesville before heading back to Berlin, where I could gradually prepare myself for shifting back to Berlin time.&lt;/p>
&lt;p>Of course, every trip back to Charlottesville serves as a forceful reminder that Charlottesville is still the same city it&amp;rsquo;s always been. This week had a nice trifecta of neo-Nazi apologia.&lt;/p>
&lt;p>First, after neo-Nazi boys club Patriot Front was &lt;a href="https://www.npr.org/2022/06/11/1104405804/patriot-front-white-supremacist-arrested-near-idaho-pride">hilariously arrested&lt;/a> for allegedly conspiring to cause a riot at Pride event in Idaho, Mike Signer went on record with a DC local news station talking about how the Idaho case served as a prime example of how vigilant citizens can provide law enforcement with the tools to defeat white supremacists, if only we had had such people in Charlottesville. Except, &lt;a href="https://emilygorcenski.com/post/mike-signer-failed-charlottesville-and-continues-to-avoid-accountability/">as I wrote&lt;/a>, we did: me.&lt;/p>
&lt;p>To compare, in Idaho, Patriot Front was intercepted because of a single anonymous phone call, which may have come from the group itself as a way to get a free police escort. In Charlottesville, I handed Mike Signer a sourced and detailed dossier of clear threats of violence. Signer&amp;rsquo;s continual erasure of Charlottesville&amp;rsquo;s activists who told him so serves only to pad his ego and to further traumatize a community that put their lives on the line to protect the city from neo-Nazis while he stood by and did nothing.&lt;/p>
&lt;p>Mike Signer is an asshole.&lt;/p>
&lt;p>Not long after Signer&amp;rsquo;s lie parade was finished, the City of Charlottesville was graced with &lt;a href="https://www.wtvr.com/news/local-news/former-charlottesville-police-chief-rashall-brackney-files-lawsuit-against-charlottesville">a lawsuit&lt;/a> by former police chief RaShall Brackney. During her press conference, she revealed, among other things, that a City employee had attended the January 6 insurrection, and the city did nothing. The employee had supposedly claimed he was there as a videographer, and he was let into the building, according to city officials. It didn&amp;rsquo;t take long for &lt;a href="https://twitter.com/socialistdogmom/status/1537526819695603713">Molly Conger to identify the employee&lt;/a>, of course, and quickly video was uncovered that showed that the city employee was actually surrounded by Proud Boys who illegally breached the building. In fact, the employee, who is alleged to be one Donald Allen Groat II, is visible in a video used as evidence in &lt;a href="https://www.king5.com/article/news/politics/ethan-nordean-jan-6-breach-charges/281-972faa1a-c681-47b4-9263-62432d220c1d">the Seditious Conspiracy case against Proud Boy Ethan Nordean&lt;/a> and his fascist gang brothers.&lt;/p>
&lt;p>Not long after, I found court records that showed that Groat had been involved in a road rage incident in 2020 where he allegedly drew a gun and pointed it at a woman. He pleaded to an amended charge of reckless driving with intent to injure, and at the time of the January 6 insurrection, was on probation with a suspended sentence of 6 months in jail hanging over his head. It remains to be seen what comes next, but of course, &lt;a href="https://www.cbs19news.com/story/46708020/mayor-responds-to-concern-over-city-employee-present-at-january-6th-insurrection">the City&amp;rsquo;s knee-jerk reaction&lt;/a>, led by its mayor Lloyd Snook, was simply more of the same of what we saw in 2017. In the meantime, the city keeps in its employ someone who pleaded guilty to a violent road rage crime, one which involved a firearm.&lt;/p>
&lt;p>The week capped itself off with the eternally-millennial schadenfreude-poisoned &lt;a href="https://jezebel.com/richard-spencer-bumble-dating-profile-moderate-1849062955">Jezebel finding Richard Spencer&amp;rsquo;s Bumble profile&lt;/a> interesting. Unfortunately, they did a poor job at filtering Spencer&amp;rsquo;s retort through a bullshit sieve, running with the narrative that Spencer has changed and isn&amp;rsquo;t it oh so shocking that he thinks he&amp;rsquo;s a moderate now. Spencer isn&amp;rsquo;t a moderate and the article continued to be more of the same faux surprise at the political philosophies of a neo-Nazi. Spencer hasn&amp;rsquo;t changed. If he has, &lt;a href="https://emilygorcenski.com/post/spencer-not-a-repenter/">he would have apologized to me by now&lt;/a>.&lt;/p>
&lt;p>Beyond the usual Charlottesville drama, I feel incredibly privileged to have met legendary Puerto Rican activist &lt;a href="https://en.wikipedia.org/wiki/Tito_Kayak">Tito Kayak&lt;/a> this week. And I got to see my father-in-law play Fridays after Five downtown, which is always a nice way to cap off a week.&lt;/p>
&lt;p>At any rate, I&amp;rsquo;m writing this during a vicious eight-hour layover in Heathrow. I&amp;rsquo;m back to Berlin for a day before heading off to Southwestern Germany for some refugee support and some work events for a few days. I&amp;rsquo;m exhausted, but only from jetlag and redeyes. I&amp;rsquo;m looking forward to sleep, tying off some loose ends in Germany, and getting back to studying German.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I resumed German classes this week, and polished off my B2.1 Lingoda module, as review/skills maintenance.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Deutsch üben&lt;/em> &lt;small>(&lt;em>Progress: 74%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>No progress reading this week. The mountains told me all the stories I needed to hear.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 12%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;p>I banged out a few pieces about the white supremacist bullshit that keeps infecting Charlottesville:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/spencer-not-a-repenter/">Spencer not a Repenter&lt;/a>;&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/mike-signer-failed-charlottesville-and-continues-to-avoid-accountability/">Mike Signer continues to fail Charlottesville&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Back in Berlin, delivering some stuff to the refugees who were staying with me but had to move, and readjusting to Central European Time. A slow week, I&amp;rsquo;m hoping for minimal stress at work.&lt;/p></description><tweet>Charlottesville is still Charlottesville, and the long trip back to Berlin. My weekly recap for June 19.</tweet></item><item><title>Spencer not a Repenter</title><link>https://emilygorcenski.com/post/spencer-not-a-repenter/</link><pubDate>Wed, 15 Jun 2022 17:35:13 +0200</pubDate><guid>https://emilygorcenski.com/post/spencer-not-a-repenter/</guid><description>&lt;p>Richard Spencer hasn&amp;rsquo;t changed. If he had, his repentance might have begun with an apology to me.&lt;/p>
&lt;p>Jezebel recently published &lt;a href="https://jezebel.com/richard-spencer-bumble-dating-profile-moderate-1849062955">an article&lt;/a> about how Richard Spencer, the infamous neo-Nazi, is a leopard who seems to have changed his spots. The article trafficks in the typical millennial irony gossip characteristic of Jezebel; rather than diving deep into perhaps Spencer&amp;rsquo;s recent political activities, it instead bases itself off Spencer&amp;rsquo;s recently uncovered Bumble profile.&lt;/p>
&lt;p>Now, unearthing Bumble profiles is &lt;a href="https://www.businessinsider.com/bumble-banned-alt-right-man-profile-2018-1">a time-honored form of antifascism&lt;/a>; I brook no dissent with the approach. But where the article succeeds in its Mean Girls-esque roast, it falls short in its critical analysis of whether Spencer is actually telling the truth.&lt;/p>
&lt;p>He is not. Richard Spencer is not reformed. Despite his protestations, he is still a white nationalist.&lt;/p>
&lt;p>The article is careful to balance Spencer&amp;rsquo;s commentary with a retort from Integrity First for America, the organization that brought the devastating lawsuit &lt;em>Sines v. Kessler&lt;/em> to a successful verdict holding Spencer and his co-defendants liable for the rally violence. But it fails to look at the evidence.&lt;/p>
&lt;p>It&amp;rsquo;s true that Spencer&amp;rsquo;s political beliefs are more complex than reducing him to a basic 1970&amp;rsquo;s-era skinhead or 1955-era Klansman. These complexities do nothing to reduce the hatred or bigotry present in Spencer&amp;rsquo;s beliefs. Because of these nuances, which are really unimportant to anyone outside of a small handful of people who track and characterize far-right movements, it&amp;rsquo;s easy to get confused when Spencer comes out against the Republican party or in favor of Joe Biden. These political beliefs may even be sincerely held, I don&amp;rsquo;t know. It doesn&amp;rsquo;t really matter. Liking Joe Biden doesn&amp;rsquo;t make you not a white supremacist.&lt;/p>
&lt;p>The fact is that if Richard Spencer did want to repent for his many wrongs, there are paths to remediation he could take, but has not. He has in the past, before his life was ruined in Charlottesville, rejected &lt;a href="https://www.christianpicciolini.com/press/huffington-post-op-ed-intervention-richard-spencer-and-alt-right">attempts by Christian Picciolini&lt;/a>, a former neo-Nazi turned deradicalization expert, to help him find a way out of hate. Spencer faces no closed doors when it comes to embarking on this journey.&lt;/p>
&lt;p>Part of redemption is acknowledging harm, and precisely here is where Spencer is moving in the opposite direction. The former neo-Nazi leader—that&amp;rsquo;s former leader, not former neo-Nazi—has within this calendar year &lt;a href="https://twitter.com/IGD_News/status/1480150123287965701">participated actively&lt;/a> in the white nationalist scene. This is well after the devastating federal court verdict found him civilly liable for being part of a conspiracy to commit racially-motivated violence.&lt;/p>
&lt;p>And Spencer did commit racially-motivated violence. During direct examination during &lt;em>Sines v. Kessler&lt;/em>, Plaintiffs' attorney Michael Bloch embarked on a lengthy but effective process to get Spencer to admit to his violent participation. While Spencer&amp;rsquo;s participation in planning chats and networking with lead organizer Jason Kessler was damning in and of itself, it was Spencer&amp;rsquo;s actions on the night of August 11 that did him in. The key parts of the transcript follow, where I have omitted some procedural commentary, but the &lt;a href="https://files.integrityfirstforamerica.org/14228/1639753609-2021-nov-4-moon-sines-v-kessler-cvl-jt-day9-final.pdf">unedited version is publicly available&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>BLOCH: Okay. Let&amp;rsquo;s play the last ten seconds or so of the video.A Okay. I&amp;rsquo;ll listen.&lt;/p>
&lt;p>(Video playing.)&lt;/p>
&lt;p>BLOCH: Did you hear that, Mr. Spencer?&lt;/p>
&lt;p>SPENCER: I heard it this time. &amp;ldquo;We need some more guys to fill in this way to block them off,&amp;rdquo; is that &amp;ndash;&lt;/p>
&lt;p>BLOCH: &amp;ldquo;To block these guys off.&amp;rdquo;&lt;/p>
&lt;p>SPENCER: &amp;ldquo;To block these guys off.&amp;rdquo;&lt;/p>
&lt;p>BLOCH: Now, the fact of the matter is, Mr. Spencer, you surrounded them at the statue and you wouldn&amp;rsquo;t let them out; isn&amp;rsquo;t that true?&lt;/p>
&lt;p>SPENCER: They were surrounded, and for a time they were fully surrounded. They eventually did leave.&lt;/p>
&lt;p>BLOCH: And my question is you surrounded them at the statue and would not let them out, right?&lt;/p>
&lt;p>SPENCER: For a time, yes.&lt;/p>
&lt;p>BLOCH: Do you recognize this, Mr. Spencer, as a tweet you sent?&lt;/p>
&lt;p>SPENCER: Yes.&lt;/p>
&lt;p>BLOCH: &lt;a href="https://www.integrityfirstforamerica.org/exhibits?q=2500&amp;amp;v=0">This is a tweet&lt;/a>, Mr. Spencer, that you sent &amp;ndash; that you tweeted on August 11th, correct?&lt;/p>
&lt;p>SPENCER: Yes.&lt;/p>
&lt;p>BLOCH: And you&amp;rsquo;re replying to a tweet that says, &amp;ldquo;They surrounded us at the statue. They wouldn&amp;rsquo;t let us out,&amp;rdquo; right?&lt;/p>
&lt;p>SPENCER: Yes.&lt;/p>
&lt;p>BLOCH: And you retweeted that with a quote, and your quote was&amp;quot;fact checked, true,&amp;quot; right?&lt;/p>
&lt;p>SPENCER: Yes.&lt;/p>
&lt;p>BLOCH: Thanks. And would you agree with me, Mr. Spencer, that the reason why you were trying to pin them in at the statue was as a sign of dominance?&lt;/p>
&lt;p>SPENCER: Yes.&lt;/p>
&lt;/blockquote>
&lt;p>With this, Spencer&amp;rsquo;s entire defense fell apart. In the climax of a sequence of devastating questions, Spencer was forced to admit that he and his group forcefully surrounded counter-protesters, denied them exit, and beat them, as a purposeful display of dominance. This testimony alone met all the elements needed to find Spencer liable.&lt;/p>
&lt;p>The tweet in question was Richard Spencer quote tweeting me on August 11. I said, &amp;ldquo;they surrounded us at the statue. They wouldn&amp;rsquo;t let us out.&amp;rdquo; Spencer quote tweeted with three fatal words. &amp;ldquo;Fact check: true.&amp;rdquo;&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/spencer_tweet.jpg" alt="Spencer&amp;rsquo;s damning tweet">&lt;/p>
&lt;p>Richard Spencer will play at politics until his dying breath. But if he embarks on a path to redemption, a real, honest-souled journey of repentance, then I assure you I will be among the first to know: I&amp;rsquo;m near the head of the queue of people owed an apology. It hasn&amp;rsquo;t happened yet, and I won&amp;rsquo;t be holding my breath.&lt;/p></description></item><item><title>Mike Signer Failed Charlottesville and Continues to Avoid Accountability</title><link>https://emilygorcenski.com/post/mike-signer-failed-charlottesville-and-continues-to-avoid-accountability/</link><pubDate>Tue, 14 Jun 2022 04:58:28 +0200</pubDate><guid>https://emilygorcenski.com/post/mike-signer-failed-charlottesville-and-continues-to-avoid-accountability/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/a12.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/a12.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/a12.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/a12.jpg" width="600"/></media:content><description>&lt;p>Mike Signer bizarrely went on record regarding the recent arrest in Idaho of 31 Patriot Front members, and I prove why his comments are a self-serving lie.&lt;/p>
&lt;p>WTOP, a local station in the DC Metro Area, recently ran &lt;a href="https://wtop.com/local/2022/06/the-former-mayor-of-charlottesville-shares-tips-on-preventing-riots-following-the-arrest-of-31-patriot-front-members/">a story&lt;/a> about last weekend&amp;rsquo;s &lt;a href="https://www.npr.org/2022/06/11/1104405804/patriot-front-white-supremacist-arrested-near-idaho-pride">arrest of 31 Patriot Front members&lt;/a> at a Pride event in Idaho. Patriot Front is a neo-Nazi group that sprang out of Vanguard America in the wake of Unite the Right in Charlottesville, a &lt;a href="https://unicornriot.ninja/tag/patriot-front/">rebranding effort&lt;/a> that followed the wake of the revelations that Charlottesville terrorist James Alex Fields marched with Vanguard during the rally and before his fatal attack. Since their rebranding, Patriot Front has been popping up every few months at various locations around the country. DC was &lt;a href="https://www.washingtonpost.com/dc-md-va/2021/12/06/white-supremacist-dc-march-patriot-front/">one of them&lt;/a>.&lt;/p>
&lt;p>Unlike previous rallies where Patriot Front ended up with a rather robust police escort, in Idaho things turned out a little different: the 31 men were arrested on charges of conspiracy to riot, and while it is too early to judge whether the evidence will be sufficient for a local or even federal prosecution, Patriot Front&amp;rsquo;s violent behavior has been well documented for years.&lt;/p>
&lt;p>What I find strange is that when WTOP wrote the article, they elected to interview former Charlottesville mayor and failed City Councilor Mike Signer. Signer was mayor of Charlottesville during the summer of 2017, when multiple hate rally organizers found the City a welcoming home that offered little formal resistance to their plans. Of course, the local community was outraged that our small city was becoming the go-to place for neo-Nazi rallies in America. We spent a good deal of the summer actively working to prevent Unite the Right and all of the other affiliated rallies from taking place. Signer presided over all of this; he manifestly failed to prevent any of it, instead often working actively against the community.&lt;/p>
&lt;p>&lt;small>(Full disclosure: Signer is, or at least was &lt;a href="https://twitter.com/MikeSigner/status/1532367428419739648?s=20&amp;amp;t=Bzyeeqy4f9bEvShvpydHcw">until recently&lt;/a>, a co-worker of my wife).&lt;/small>&lt;/p>
&lt;p>In the WTOP article, Signer is quoted as saying, &amp;ldquo;in that way of linking together all these pieces, in a way that couldn’t really be done in Charlottesville, they avoided the biggest trap. In Charlottesville, everybody got to say, well, this is just free speech.&amp;rdquo; The problem with this is that this is complete bullshit and a bald-faced lie.&lt;/p>
&lt;p>Why?&lt;/p>
&lt;p>Because I am the person who personally handed Mike Signer exactly the kind of evidence he references in this case. And he is the one who said, in essence, &amp;ldquo;well, this is just free speech.&amp;rdquo;&lt;/p>
&lt;p>At a City Council meeting on July 17, 2017, I handed a lengthy dossier to Charlottesville City Council, including Signer and then-City Manager Maurice Jones. The dossier detailed numerous overt and implicit threats by known and unknown persons affiliated with Jason Kessler and his organizing of Unite the Right. These included direct threats against Signer and Vice Mayor Wes Bellamy. The dossier was assembled by me and several community members who helped source, analyze, and assess the threats. The document cited to the city code with clear rationale for why the permit for Unite the Right should have been denied.&lt;/p>
&lt;p>Before now, I have never published the dossier publicly. But I&amp;rsquo;m changing that now. The dossier can be read directly below.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/City%20Council%207-17.pdf" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/City%20Council%207-17.pdf">Click to download&lt;/a>
&lt;/div>
&lt;p>Signer has been challenged several times about his failures to take the community&amp;rsquo;s concerns seriously. Every time he is confronted, he blames city attorneys, saying they didn&amp;rsquo;t find the threats credible. Nevertheless, though those &lt;a href="https://archive.ph/EOx9g">threats did manifest&lt;/a>. Blaming the attorneys is one thing, but the city didn&amp;rsquo;t even try. In &lt;a href="https://storage.courtlistener.com/recap/gov.uscourts.vawd.108351.10.0.pdf">their response&lt;/a> to Jason Kessler&amp;rsquo;s lawsuit seeking a preliminary injunction against the city&amp;rsquo;s attempt to move the rally, the City failed to reference the threats. In fact, the only mention of threats of neo-Nazi violence is a reference to earlier rallies in Berkeley, where the City&amp;rsquo;s motion recklessly blames &amp;ldquo;both ends of the political spectrum.&amp;rdquo;&lt;/p>
&lt;p>Mike Signer was uniquely unqualified to lead Charlottesville and he is astonishingly unqualified to proffer any opinion on how to combat neo-Nazi threats.&lt;/p>
&lt;p>Mike Signer ignored me when I raised the alarm.&lt;/p>
&lt;p>Mike Signer and the City of Charlottesville left us to die.&lt;/p>
&lt;p>Mike Signer will never learn his lesson, because Mike Signer&amp;rsquo;s ego can&amp;rsquo;t be served by learning his lesson.&lt;/p>
&lt;p>Best of luck at your new gig, Mike. &lt;a href="https://www.washingtonpost.com/news/morning-mix/wp/2017/08/08/airbnb-boots-white-nationalists-headed-to-unite-the-right-rally-in-charlottesville/">Try not to let the Nazis rent out Charlottesville&lt;/a>.&lt;/p></description></item><item><title>Weekly Recap: 12 June 2022</title><link>https://emilygorcenski.com/post/weekly-recap-12-june-2022/</link><pubDate>Mon, 13 Jun 2022 02:17:45 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-12-june-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/40th/Grizzly-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/40th/Grizzly-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/40th/Grizzly-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/40th/Grizzly-thumb.jpg" width="600"/></media:content><description>&lt;p>Touching grass in Lake Clark National Park&amp;hellip; with bears!&lt;/p>
&lt;p>After spending nearly a week on Bowen Island, BC, Christine and I set off for someplace new-to-us: Homer, Alaska. When we came up with the idea of going back to Bowen, I wanted to try to use the opportunity out west to see some other sites. It&amp;rsquo;s hard for me to get back west while living in Berlin, and spring is the perfect time to go, in my opinion. Some of the ideas I floated were &lt;a href="https://banffnationalpark.com/">Banff National Park&lt;/a> or &lt;a href="https://en.wikipedia.org/wiki/Yellowknife">Yellowknife&lt;/a>, but Christine and I had talked about doing an Alaskan cruise in the past. We&amp;rsquo;re still not keen on getting on a cruise ship what with COVID, so I found us the next best thing: a bear viewing safari in a National Park.&lt;/p>
&lt;p>After a little bit of searching, I found us a small cottage in Homer, Alaska. I knew nothing about the city, but it seemed like some good wildlife safaris ran out of there. So, with a flight from Vancouver to Anchorage booked, and a way-too-expensive car rental reserved, we set out for Homer.&lt;/p>
&lt;p>Homer lies about a four hour plus drive from Anchorage. There&amp;rsquo;s really only one way into the city, but it is absolutely stunning. Route 1 takes you down around the Turnagain Arm of the Cook Inlet and winds through the Kenai mountains before finding its way to the flatlands along the coast. Once you hit the flatlands, you drive through a few dozen miles of burnt forest from the &lt;a href="https://en.wikipedia.org/wiki/Swan_Lake_Fire">Swan Lake Fire&lt;/a>.&lt;/p>
&lt;p>Homer itself is a charming little city of about 15,000 people. It&amp;rsquo;s exactly as I expected, having grown up near a small city about that size. The photos of our cabin didn&amp;rsquo;t really do it justice. We had a view of the Kachemak Bay and a panorama of the nearby mountain range, including a direct look at the glaciers across the bay.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/40th/Cabins-thumb.jpg" alt="A view from our cabin">&lt;/p>
&lt;p>We arrived on Friday and spent Saturday exploring the small city, including the Homer Spit, a touristy but cute spot with some decent food. On Sunday, we woke up early and headed over to Beluga Lake, where we met the amazing folks from &lt;a href="https://www.alaskaultimatesafaris.com/">Alaska Ultimate Safaris&lt;/a>. Can&amp;rsquo;t recommend them strongly enough. They were amazing, gracious guides and incredibly friendly.&lt;/p>
&lt;p>We jumped in a small helicopter with another tour-goer, a woman who was on a mission to see all 63 US National Parks. I admire her completionism. Our guide flew the small, four seat helicopter about 40 minutes over the bay to Lake Clark National Park. Right as we landed, we saw two Coastal Brown Bears. This is the same species as the Grizzly Bear, as is the better-known Kodiak Bear, but the behaviors of these bears tend to be different.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/40th/Six%20Bravo%20Hotel-thumb.jpg" alt="The helicopter we flew to Lake Clark National Park">&lt;/p>
&lt;p>This time of year, the bears like to eat the sedge grass that grows in the lowlands while waiting for the salmon to come in. It&amp;rsquo;s early in the mating season, and we watched as a female bear was trying to keep space from a pursuing male. At one point, the male came close enough to us that we could hear his breathing.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/40th/Nice%20to%20meet%20you-thumb.jpg" alt="A male grizzly bear pursuing a female">&lt;/p>
&lt;p>After a while watching them circle around, we headed off to another area only accessible by helicopter. I definitely suggest doing a helicopter tour, as floatplanes can only land in certain places and they tend to end up in larger groups together. After a short flight, we ended up near the Iniskin Bay. We landed behind a mountain and walked around to find a mama grizzly and her two cubs off in the distance. They kept their distance, though at one point mana bear turned and looked at us, and then she and her cubs decided to hurry off to make gap a bit bigger. We walked over to a small rock outcrop that overlooked a wide valley and saw bears everywhere. I never knew such places still existed.&lt;/p>
&lt;p>As we departed, the pilot took us around Iliamna, an active volcano that releases a pretty steady steam cloud. The peak sits at about 10,000 feet altogether, and on its slops are incredible glaciers.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/40th/Iliamna-thumb.jpg" alt="The peak of Iliamna">&lt;/p>
&lt;p>Altogether, this trip was amazing. Christine and I had an incredible time and cannot wait to go back again sometime in the future. Homer is hard to get to; you definitely need to want to come to Homer to end up there. As a result, the degree of obnoxiousness from fellow tourists is pretty low. There were definitely a lot of campers and caravans and a lot of people doing fishing tourism.&lt;/p>
&lt;p>We spent a day in Anchorage on our way back, and survived a redeye from Anchorage to Newark. Alaska was definitely one of my favorite places I&amp;rsquo;ve been so far. If you want to see the rest of the photos, they&amp;rsquo;re in &lt;a href="https://emilygorcenski.com/post/40th-birthday-travels-alaska-and-bowen-island-bc/">my gallery&lt;/a>.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I learned nothing this week. Just Duolingo practice. Head empty. No thoughts.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Deutsch üben&lt;/em> &lt;small>(&lt;em>Progress: 74%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>No progress reading this week. The mountains told me all the stories I needed to hear.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 12%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;p>I put another 3500 words or so into my book. It&amp;rsquo;s coming along nicely. I&amp;rsquo;m a little more than 1/3 of the way there. Right now, I&amp;rsquo;m working on my book proposal.&lt;/p>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Back in Virginia, I am back to working remotely this week while trying to adjust my body back Berlin time. I&amp;rsquo;ve got a lovely week planned connecting with friends. Daily German classes are starting back up, and I&amp;rsquo;ll be really focusing on getting my B2 skills to a level of perfection before thinking about scheduling my C1 test.&lt;/p></description></item><item><title>40th Birthday Travels: Alaska and Bowen Island, BC</title><link>https://emilygorcenski.com/post/40th-birthday-travels-alaska-and-bowen-island-bc/</link><pubDate>Sun, 12 Jun 2022 02:38:27 +0200</pubDate><guid>https://emilygorcenski.com/post/40th-birthday-travels-alaska-and-bowen-island-bc/</guid><image><url>https://emilygorcenski.com/photo-gallery/40th/Lake%20Clark-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/40th/Lake%20Clark-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/40th/Lake%20Clark-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/40th/Lake%20Clark-thumb.jpg" width="600"/></media:content><description/></item><item><title>Weekly Recap: 05 June 2022</title><link>https://emilygorcenski.com/post/weekly-recap-05-june-2022/</link><pubDate>Mon, 06 Jun 2022 05:48:42 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-05-june-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/Jetty-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/Jetty-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/Jetty-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/Jetty-thumb.jpg" width="600"/></media:content><description>&lt;p>Getting back to the sea, and finding out that some things don&amp;rsquo;t change and that&amp;rsquo;s good&lt;/p>
&lt;p>Last week, Christine and I went back to the B&amp;amp;B on Nex̱wlélex̱m, aka Bowen Island, BC, where we honeymooned eight years ago. We&amp;rsquo;ve been trying to get back there since 2020, but the COVID pandemic has stymied us time after time. Finally, this year, Canada allowed for international travel for vaccinated passengers, and we were able to get six days at the cottage with a sea view on Bowen Island.&lt;/p>
&lt;p>Bowen Island feels like an open secret. When I mention that we&amp;rsquo;re going to vacation on an island off the coast of Vancouver, everyone asks, &amp;ldquo;Vancouver Island?&amp;rdquo; Some folks have heard of Nanaimo or Gibsons. But Bowen is a special little place. Its permanent population is around 3,500 people, but it sits only a 20 minute ferry ride from the Horseshoe Bay terminal in West Vancouver. It&amp;rsquo;s accessible from Downtown by public transit. It&amp;rsquo;s a tiny, wooded, mountainous island with a very low pace of development. Bowen is also a fairly common set location for &lt;a href="https://en.wikipedia.org/wiki/Hollywood_North">the booming Vancouver film industry&lt;/a>.&lt;/p>
&lt;p>Bowen has changed very little in the last eight years. The same little café we brunched at is still there and thriving, the same pubs are there and largely unchanged. A cannabis shop has opened that wasn&amp;rsquo;t there before, and our favorite clothing store is still in the quaint Artisan Square, although customers are by appointment only these days. The B&amp;amp;B looks and feels exactly as it did eight years ago, despite new owners. Only the hot tub seems to have been replaced.&lt;/p>
&lt;p>Sitting in a hot tub overlooking the Salish Sea is about as good as it gets. The island is our own little piece of paradise, and I&amp;rsquo;m so glad we got to get back there for my 40th. Vancouver is a great place also to do some whale watching, so we went back to the place we had gone years before, &lt;a href="https://vancouverwhalewatch.com/">Vancouver Whale Watch&lt;/a> out of Stevetson. This time, we opted for riding in the smaller Zodiac, which seats only 12 people but is a hell of a fun ride. The last time we had gone out, we spotted &lt;a href="https://thewhaletrail.org/wt-species/j-pod/">J-Pod&lt;/a> with their matriarch, the now-deceased, &lt;a href="https://en.wikipedia.org/wiki/Granny_(orca)">J2 Granny&lt;/a>. This time, we followed a humpback north, incidentally off the coast of Bowen, and got to watch it feed.&lt;/p>
&lt;p>On our way back, we got to see some other wildlife: California sea lions, some seals, and some baby bald eagles. But perhaps the highlight of the trip was that we forgot to eat during the middle part of the tour, so I had to try to eat a sandwich while riding in a zodiac at full speed. Definitely a great way to wear a lunch.&lt;/p>
&lt;p>All in all, our only lament is that we didn&amp;rsquo;t get enough time to really see the city. We&amp;rsquo;ll be back again before another eight years pass. Of that I am certain.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>While traveling I refuse to do German lessons but I have steadily but slowly been working through my exercise book. I also learned that I passed my B2 exam but as expected not by the margins I would have liked. When I get back to Germany, I need to find ways to speak more German.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Deutsch üben&lt;/em> &lt;small>(&lt;em>Progress: 74%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>No progress reading this week. The sea told me all the stories I needed to hear.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 12%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;ul>
&lt;li>One of the reasons big tech has such a stranglehold on how we use the internet is that &lt;a href="https://emilygorcenski.com/post/its-hard-to-go-alone/">we&amp;rsquo;ve failed at usability&lt;/a> for almost everything else.&lt;/li>
&lt;/ul>
&lt;h3 id="longform-online-content">Longform Online Content&lt;/h3>
&lt;ul>
&lt;li>An &lt;a href="https://bigthink.com/strange-maps/kazungula-bridge/">older but relevant article&lt;/a> on a geographical quirk and how that informs infrastructure development in southern Africa;&lt;/li>
&lt;li>&lt;a href="https://www.newyorker.com/culture/infinite-scroll/the-online-spaces-that-enable-mass-shooters">Another look&lt;/a> into the online spaces that radicalize so many white supremacist youth;&lt;/li>
&lt;li>&lt;a href="https://www.berliner-zeitung.de/b-history/wohnen/eternithaus-berlin-traumhafte-maisonette-100-quadratmeter-denkmalgeschuetzt-li.224852">A neat glance&lt;/a> at a historical building in Berlin, still being used as living space.&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Wrapping up travel out west, and making the long voyage back east. Still have a few days left to explore and unwind.&lt;/p></description></item><item><title>It's Hard to Go Alone</title><link>https://emilygorcenski.com/post/its-hard-to-go-alone/</link><pubDate>Sat, 04 Jun 2022 22:58:22 +0200</pubDate><guid>https://emilygorcenski.com/post/its-hard-to-go-alone/</guid><description>&lt;p>Cutting the proverbial cable with big tech services is possible, but it&amp;rsquo;s still not plausible for most people. The goals of open source remain as distant as they were 25 years ago, and it&amp;rsquo;s only developers to blame.&lt;/p>
&lt;p>A few months ago, Spotify came under fire for their nine-figure contract with Joe Rogan, the podcast embodiment of clueless mediocrity, a man whose only claim to fame is making the guy at the airport bar with loud, provably-wrong opinions feel smart. Rogan&amp;rsquo;s show has often trafficked in the sort of casual bigotry commonplace in American society, racist and transphobic opinions grounded in unresolved insecurity rather than any sort of measurably objective fact, and Spotify pays him handsomely for it. I took a look at my 2021 Spotify Wrapped, the streaming service&amp;rsquo;s year-in-review feature that tells you exactly how many times you hurt your own feelings with a song. My list had largely the same songs as last year. I wasn&amp;rsquo;t using the full features of the service. And $10 monthly for unlimited access to music doesn&amp;rsquo;t feel like an ethical way to support artists, either. So I canceled my subscription, deleted my account, and banished the apps from my devices.&lt;/p>
&lt;p>This left me with a problem: my passion for music discovery may not be what it was in my teenage years, but I still want to listen to what I like. Moreover, I have a fairly decent collection of legally-owned music that I&amp;rsquo;ve digitized over the years. Why not rebuild my music library? I could host my own solution, set up my own infrastructure, and have exactly the music I want. I could even be inspired to actually buy the albums of those artists I had on repeat, who make fractions of a penny per stream. I would control my own data; no algorithm would be siphoning off my listening habits and constructing some profile of who some AI believes me to be. Sounds great, right?&lt;/p>
&lt;p>So I went looking around and clicked through some of the offerings on the &lt;a href="https://github.com/awesome-selfhosted/awesome-selfhosted#media-streaming---audio-streaming">awesome-selfhosted&lt;/a> repo that tracks these things. There are plenty of free, open source solutions for hosting a streaming media player. My theory goes something like this:&lt;/p>
&lt;ol>
&lt;li>Find a maintained FOSS media streaming app and host it on my Azure subscription;&lt;/li>
&lt;li>Mirror my music library to an Azure Storage Account and map this as a volume in my streaming app;&lt;/li>
&lt;li>Re-engage with music mindfully, rather than as a cheap commodity.&lt;/li>
&lt;/ol>
&lt;p>After clicking through some demos, I settled on &lt;a href="https://funkwhale.audio/">Funkwhale&lt;/a>. It had the features I wanted and is fully self-hostable. I got it running locally with minimal effort using Docker compose, but this is where my success ended and where my litany of complains about cloud and FOSS begin.&lt;/p>
&lt;h3 id="foss-documentation-remains-elusive-and-out-of-date">FOSS documentation remains elusive and out of date&lt;/h3>
&lt;p>Documentation is rarely a developer&amp;rsquo;s favorite task, and the open source movement has always promised that with open contributions, documentation will improve over time. This has never really been the case. The Funkwhale documentation is broken and sometimes wrong. The instructions for setting up with Docker Compose work well enough, but then it ends with, in essence, &amp;ldquo;ok now go configure nginx, it&amp;rsquo;s easy.&amp;rdquo; Unfortunately, when clicking through the link for how to do that, it seems to have conflicting information on what configuration files to use, where to run them (do I run them in my nginx running container, or download these alternative files prior to standing up the containers?), or what the recommended configurations are doing. Moreover, there are some strings in the docs evidently meant to be replaced, but which were not. This means you have to understand how the documentation is built in order to understand what it is telling you to do. Not great.&lt;/p>
&lt;h3 id="cloud-documentation-is-weak">Cloud documentation is weak&lt;/h3>
&lt;p>If this reads as a criticism of FOSS, don&amp;rsquo;t worry, as corporate documentation is no better at all. Reading through the documentation on how to get multi-container container instances running on Azure points you to &lt;a href="https://docs.microsoft.com/en-us/azure/container-instances/tutorial-docker-compose">documentation that doesn&amp;rsquo;t make any sense and doesn&amp;rsquo;t work&lt;/a>. In this case, the docs tell you to set up an Azure container registry and use that to host your images. This is easy enough. However, they tell you to point your &lt;code>docker-compose.yml&lt;/code> file to the registry you just created before pulling or building any images. This doesn&amp;rsquo;t work. Because it doesn&amp;rsquo;t work, it&amp;rsquo;s not clear what the intended set of actions is, rendering the documentation useless in the end.&lt;/p>
&lt;h3 id="containers-just-abstract-the-same-failure-modes-weve-always-fallen-prey-to">Containers just abstract the same failure modes we&amp;rsquo;ve always fallen prey to&lt;/h3>
&lt;p>Containers were supposed to solve a longstanding problem by allowing us to build software as a deployable unit, rather than as a compiled application with deep and potentially conflicting system dependencies. The ideal container should only require a set of environment variables to execute, and these variables should be obvious what their purpose and relation to the application is. We&amp;rsquo;ve failed in this mission.&lt;/p>
&lt;p>Instead, we have simply turned the container into a soft abstraction of the application. It&amp;rsquo;s no longer enough to stand a container up; no, instead we are once again relying on bash scripts and obscure and badly documented logics to get containers running right and working together. Not only does this add complexity where complexity shouldn&amp;rsquo;t be needed, but we&amp;rsquo;ve managed somehow to turn this into another source of resource consumption. Funkwhale&amp;rsquo;s documentation says it should run with about 350MB memory, suitable for running on a Raspberry Pi. I&amp;rsquo;m sure this is true, given enough tuning. However, a Standard B1ls Virtual Machine on Azure (1 vCPU, 0.5 GiB memory) was not enough to get the dockerized application up and running. Stepping up to a B1s ($9.13/mo) was also not enough, at least not with a lot of added effort. This means that for the most basic, out-of-the-box setup, I would have to pay more to host my own instance on the cloud than I would pay for Spotify in the end.&lt;/p>
&lt;p>This might not be such a problem, because&amp;hellip;&lt;/p>
&lt;h3 id="everything-demands-its-own-database">Everything demands its own database&lt;/h3>
&lt;p>Funkwhale has a database dependency, which makes sense when you look at its features. It uses PostgreSQL under the hood, and, interestingly enough, Redis. This seems like overkill for a personal streaming server, but Funkwhale is designed for more scalable uses. Fine.&lt;/p>
&lt;p>That would be one thing, but I also run a Monica instance (Monica is a personal CRM). Monica uses MySQL. So now to run two applications I have three completely different pieces of database tech. I could, with some work, migrate my Monica data to Postgres and then configure Monica to use Postgres. This might be enough to justify setting up a Postgres server on Azure. Which means I have to reverse engineer the docker deployment of Funkwhale to configure it to use this service. And that means I need to do more work to configure the virtual network attached to the VM in the cloud.&lt;/p>
&lt;p>I have done this all before. I have done this all so many times before. My question is thus: why do I have to keep doing this over and over? Why isn&amp;rsquo;t &lt;em>this&lt;/em> part of application development made to be as turnkey as possible?&lt;/p>
&lt;h3 id="developers-are-developing-for-developers-and-nobody-else">Developers are developing for developers (and nobody else)&lt;/h3>
&lt;p>One of the things big tech did was make it easy for normal people, people who aren&amp;rsquo;t developers, to use the internet. All of the alternatives to big tech keep trying to succeed on their moral merits. Look at Mastodon. Mastodon has a lot of great features, and might be a step towards solving &lt;a href="https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/">the many problems with social media&lt;/a> that Twitter has refused to address. But the greater ActivityPub community, of which Mastodon is certainly a part, can&amp;rsquo;t seem to stop with proselytizing. Even if you look at the &amp;ldquo;Guide for ActivityPub users,&amp;rdquo; it tells people to &amp;ldquo;spread the word,&amp;rdquo; saying, &amp;ldquo;the most effective way to promote a decentralized internet is by using it and encouraging others to do likewise.&amp;rdquo; This may be the case, but what this ends up as is people trying to sell me on a service because it is decentralized and not people trying to make decentralized services the obvious and easy choice for users.&lt;/p>
&lt;p>In other words, you are telling me to struggle because struggling is morally better. I may not disagree with this principle in general, but my most finite resource, time, does.&lt;/p>
&lt;p>Mastodon was developed for developers who really enjoy designing and implementing standards, and adds only a few novel minor features to the actual social networking functionality that Twitter offers. It doesn&amp;rsquo;t really understand how people &lt;em>use&lt;/em> Twitter. Static site generators are like candy for nerds. Every serious writer I know uses Substack or Medium or Wordpress. Nobody buys milk with the blockchain. Let&amp;rsquo;s get realistic about who actually uses the tech we&amp;rsquo;re building.&lt;/p>
&lt;h3 id="open-source-as-a-movement-is-laden-with-contempt">Open source as a movement is laden with contempt&lt;/h3>
&lt;p>The Code of Conduct wars of the mid-2010s revealed an uncomfortable truth about the tech industry and open source culture: developers think that we are smarter than everyone and therefore we hold immense contempt for everyone. Years ago, my friend Aurynn Shaw wrote about what she calls &lt;a href="https://blog.aurynn.com/2015/12/16-contempt-culture">&lt;em>Contempt Culture&lt;/em>&lt;/a>, the tendency for communities in technology to lift themselves up by putting others down. This mindset has weaved its way into all aspects of technology, but particularly open source. Read the comments on any almost any open source issue tracker. While they don&amp;rsquo;t (usually) say it outright, the tone is clear: if you cannot figure this out, it is your fault. This issue isn&amp;rsquo;t just maintainers, but in the community as well. This behavior is found all over the comment portions of Stack Overflow answers.&lt;/p>
&lt;p>Of course, this is rarely actually the case. Often, it&amp;rsquo;s because the user has a unique issue or is trying to do something that the developers hadn&amp;rsquo;t thought of yet or because the software is actually unreasonably difficult to get working. I freely admit that I am not the best developer in the world. There&amp;rsquo;s a lot I don&amp;rsquo;t understand. But I am intelligent enough to know two things: first, I can figure it out if I spend enough time on it; second, that my time is way too valuable to waste sinking it into reverse engineering source code or making sense of outdated or incorrect documentation. Hundreds of millions of people are on Twitter, tens of millions are on Spotify. A partial explanation for their success is that it is extremely easy to onboard onto these platforms.&lt;/p>
&lt;p>If you want me to use your software, &lt;em>make it worth my time&lt;/em>. One easy way to do that is to not ask for very much of it.&lt;/p>
&lt;h3 id="wrapping-up">Wrapping up&lt;/h3>
&lt;p>This is a long-winded way of saying that I really, really want to find alternatives to big tech. I want to control my own data. I have the skills to be able to do it. I still think it should be easier than it is.&lt;/p>
&lt;p>Funkwhale is a lovely piece of software. Monica is a lovely piece of software. I could pay for managed/hosted versions of both, if it was only a matter of using the software for the features. But I want a world where true decentralization of data is possible, which means I want to hold the keys to my online presence at all times. This is still too hard, even for experienced technologists.&lt;/p>
&lt;p>Choosing to leave Spotify and Twitter were decisions I made from my own set of personal principles, which involve criticism of the specific decisions that the executives of those companies have made. Choosing to go full &lt;a href="https://indieweb.org/">IndieWeb&lt;/a> means taking on an open source philosophy that &lt;em>de facto&lt;/em> embraces independence over usability and accessibility. Could I personally fix the issues I have with these approaches? Sure. It&amp;rsquo;s open source, after all. But do I find it worth my time? Not at all. At the end of the day, I&amp;rsquo;m the &lt;em>user&lt;/em>. I want to be &lt;em>convinced&lt;/em> that the approach is better. Sell me on it. Prove it to me. Don&amp;rsquo;t do it by telling me about the moral worth of open source or federation or any of those things. Care about my use case. Value how I value my time.&lt;/p></description></item><item><title>Weekly Recap: 29 May 2022</title><link>https://emilygorcenski.com/post/weekly-recap-29-may-2022/</link><pubDate>Mon, 30 May 2022 05:37:14 +0200</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-29-may-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/docks.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/docks.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/docks.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2022/docks.jpg" width="600"/></media:content><description>&lt;p>Travel is great but flying is awful, turning 40, and endless tragedy in America.&lt;/p>
&lt;p>Last week I wrote about the hell of flying in the US, and this week the story remains unchanged. Christine and I flew to Vancouver for vacation. We&amp;rsquo;ve been trying to get back to where we did our honeymoon for the past couple of years, but COVID derailed those plans over and over. Finally, we had luck this year, and we were able to book the same B&amp;amp;B we visited seven years ago. We tried not repeating the same mistakes: the island has public transportation, but the B&amp;amp;B is not easy to get to with it if you have luggage. Last time, we ended up renting a car on our second day. This time, I made sure to book a car rental.&lt;/p>
&lt;p>Alas, continuing struggles with American supply chains and a COVID-stricken labor force hurt once again. Air Canada cancelled the first leg of our flight. We were able to get into Vancouver the same day, but much later than planned. This meant that the car rental places were either closed, or unable to get us a car in time to make the last ferry to the island. There were no hotels in Vancouver available, so we rolled the dice and took a taxi as far as it would take us. We&amp;rsquo;d have to walk or hitchhike once we got on the island.&lt;/p>
&lt;p>Making matters worse, Christine is recovering from a sprained ankle. Despite my best efforts to find us a ride (perhaps I should not have been wearing a Bruins t-shirt), I couldn&amp;rsquo;t find anyone willing to give us a lift. So we hiked it, me dragging our luggage behind us, Christine on a bad ankle, nearly two and a half kilometers over hilly, barely paved roads after dark.&lt;/p>
&lt;p>Holiday inconveniences aside, there was a lot of really horrible stuff in the news this week. The Uvalde shooting is a stark reminder of how pointless and harmful it is that we draw political lines around foolish cultural identity boundaries. This was an avoidable event, much like the one before it, much like the one before that, and so on, and so on.&lt;/p>
&lt;p>As we learn more about the total ineffectiveness of the police in Uvalde, I think it&amp;rsquo;s important to remind ourselves that police will fail like this in every community. &lt;a href="https://www.nytimes.com/2019/06/04/us/parkland-scot-peterson.html">They failed like this in Parkland&lt;/a>. &lt;a href="https://www.propublica.org/article/police-stood-by-as-mayhem-mounted-in-charlottesville">They failed like this in Charlottesville&lt;/a>. They&amp;rsquo;ll fail like this in your town, too.&lt;/p>
&lt;p>While reeling from the harsh reminders of our failed attempts to solve the gun violence problem in America, I was grateful to reconnect with many old friends while I was in Charlottesville. There was a great community-organized BBQ fundraiser for abortion rights. I got to catch up with many people there, some who I haven&amp;rsquo;t seen in years. The people who all stood together five years ago have all found their own ways through the trauma, but I&amp;rsquo;m glad to see so many of them finding a way to make sense of it.&lt;/p>
&lt;p>Oh! I also turned 40 this week. That&amp;rsquo;s weird. 40 is an adult age. How the hell did that happen?!&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I jumped back into some German classes this week, and aim to finish off my B2.1 review in Lingoda before I head back to Germany. I&amp;rsquo;ll finish out the entire level with live lessons. I still have many conversational gaps, but I&amp;rsquo;m getting there. Polishing up my B1 grammar and vocabulary review hasn&amp;rsquo;t hurt, either.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Deutsch üben&lt;/em> &lt;small>(&lt;em>Progress: 68%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;ve also started learning more about India&amp;rsquo;s independence while reading through &lt;em>Midnight&amp;rsquo;s Children&lt;/em>.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I traveled fairly light with books this trip, but I hope to make some more progress with my Modern Library project, all while sitting staring at these beautiful mountains reflected in this beautiful sea.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 12%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-writing">What I&amp;rsquo;m writing&lt;/h3>
&lt;ul>
&lt;li>I worked on fixing some small bugs on the blog and explored &lt;a href="https://emilygorcenski.com/post/hosting-a-static-site-on-azure-cdn-vs-static-web-apps-a-comparison/">Azure Static Web Apps&lt;/a> as a hosting solution;&lt;/li>
&lt;li>Uvalde is the most American of tragedies, and &lt;a href="https://emilygorcenski.com/post/the-american-communion/">we try to find in it salvation&lt;/a> without addressing our real sins.&lt;/li>
&lt;li>I &lt;a href="https://emilygorcenski.com/post/book-report-free/">reviewed Lea Ypi&amp;rsquo;s incredible memoir&lt;/a>, &lt;em>Free&lt;/em>, about life in Albania as a child during and after the fall of communism.&lt;/li>
&lt;/ul>
&lt;h3 id="longform-online-content">Longform Online Content&lt;/h3>
&lt;ul>
&lt;li>An &lt;a href="https://www.propublica.org/article/fcc-faa-5g-planes-trump-biden">interesting piece&lt;/a> on 5G and air travel;&lt;/li>
&lt;li>Talia Lavin&amp;rsquo;s &lt;a href="https://theswordandthesandwich.substack.com/p/a-country-that-devours-its-children">personal reflection&lt;/a> on struggling to write in the aftermath of the Uvalde tragedy;&lt;/li>
&lt;li>&lt;a href="https://theintercept.com/2022/05/25/texas-uvalde-shooting-school-police/">Analysis&lt;/a> of the Uvalde Police&amp;rsquo;s failures despite their enormous budget.&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Relaxing and spending some time on the water. Reading, writing, and sitting in a hot-tub drinking cider, not thinking about work. Trying to figure out what being 40 means.&lt;/p></description></item><item><title>Hosting a Static Site on Azure CDN vs Static Web Apps: A Comparison</title><link>https://emilygorcenski.com/post/hosting-a-static-site-on-azure-cdn-vs-static-web-apps-a-comparison/</link><pubDate>Thu, 26 May 2022 20:24:30 +0200</pubDate><guid>https://emilygorcenski.com/post/hosting-a-static-site-on-azure-cdn-vs-static-web-apps-a-comparison/</guid><description>&lt;p>It&amp;rsquo;s cheap and easy to host a static site on Azure, and there are a few options for doing so. Depending on your use case, the option you choose might be forced by the platform&amp;rsquo;s feature set.&lt;/p>
&lt;p>A while back, &lt;a href="https://emilygorcenski.com/post/migrating-a-static-site-to-azure-with-terraform/">I wrote about migrating a static site to Microsoft Azure&lt;/a>. Since then, Azure has matured their Static Web Apps offering, which is intended to be a more or less turnkey way to get a simple JAM stack web application up and running. The potential benefits are many: it&amp;rsquo;s free tier is more than sufficient for hosting the required traffic for my blog, it offers out-of-the-box (public) staging environments, and it integrates seamlessly with Github actions without any need to muck with Docker images or CLI commands. The service also provides you with free SSL certificates.&lt;/p>
&lt;p>Before I go further, let me run down what&amp;rsquo;s needed to host a static site &amp;ldquo;by hand&amp;rdquo;:&lt;/p>
&lt;ul>
&lt;li>A Storage Account configured to host a static website;&lt;/li>
&lt;li>Front Door and/or a CDN to enable TLS and to prevent DDoS from running up your serving costs;&lt;/li>
&lt;li>A Key Vault to manage your SSL certificate;&lt;/li>
&lt;li>Custom domains configured in the CDN endpoint;&lt;/li>
&lt;li>A Log Analytics workspace;&lt;/li>
&lt;li>An externally-purchased SSL certificate;&lt;/li>
&lt;li>A DNS Zone (optionally);&lt;/li>
&lt;li>CI/CD configured to build and deploy using the Azure CLI.&lt;/li>
&lt;/ul>
&lt;p>Azure Static Web Apps gives you all of this out of the box, including automatic detection of your static site generator based on your repository structure. This is really convenient and extremely simple to get set up. Azure Static Web Apps gives you:&lt;/p>
&lt;ul>
&lt;li>Simple routing and reverse-proxy capabilities;&lt;/li>
&lt;li>Zero-configuration CDN;&lt;/li>
&lt;li>Free SSL certificates with zero management overhead;&lt;/li>
&lt;li>Free custom domains (you have to purchase the domain name itself but you can hook them up with no added charge);&lt;/li>
&lt;li>Basic logging and monitoring;&lt;/li>
&lt;li>Automatic Github actions CI/CD integration;&lt;/li>
&lt;li>Free staging environment;&lt;/li>
&lt;li>Authentication.&lt;/li>
&lt;/ul>
&lt;p>After poking around with it, I found it quite easy indeed to get my static site up and running on Azure&amp;rsquo;s Static Web Apps service. However, there was a huge missing feature that meant I need to keep hosting the site the hard way. Namely, the Static Web Apps service doesn&amp;rsquo;t expose a storage layer, so if you want to directly host any files, there&amp;rsquo;s no clear way to upload them. Even the Github actions obscures this process. This means that only items built in CI will be deployed, which means you have to somehow version control large files, such as photos.&lt;/p>
&lt;p>Moreover, the routing isn&amp;rsquo;t advanced enough to do stateful matching, meaning that even if I wanted to create my own storage solution for hosting my images, I couldn&amp;rsquo;t perform an automatic redirect to, for instance, a &lt;code>photos.emilygorcenski.com&lt;/code> subdomain. It just wasn&amp;rsquo;t possible using the routing rules as they were documented.&lt;/p>
&lt;p>These are two huge weaknesses, in my opinion. The Static Web Apps solution gets you up and running quickly, but there are a bunch of use cases I can think of where being able to host large files like photos, videos, or PDFs would get quickly out-of-hand if you tried integrating them with version control. Even git LFS has a fairly low limit. Another disadvantage is that the staging environment is public, unless you opt for the paid version, in which case you can implement password protection.&lt;/p>
&lt;p>Configuring all the services by hand, or with Terraform, is a lot of work. Especially if you want to set up multiple environments, which is a huge pain in the ass. But many of the services you&amp;rsquo;ll end up configuring, like Key Vault, will be useful if you want to extend your application to include other services. This makes it easier to change the architecture of your setup later on. Static Web Apps does so much for you and hides so much machinery under the hood that it makes it much more difficult to transition off later.&lt;/p>
&lt;p>Considering that it only takes a couple extra days to configure the services by hand, I&amp;rsquo;d say that unless you only expect very simple use-cases, your best bet is still to configure the site by hand. Altogether, my setup only costs me about $4 monthly and I have a lot more control for that cost. For very simple sites, Static Web Apps is the clear winner. But with even a little added complexity, setting up your own infrastructure is worth it in the end.&lt;/p></description></item><item><title>The American Communion</title><link>https://emilygorcenski.com/post/the-american-communion/</link><pubDate>Wed, 25 May 2022 19:10:48 +0200</pubDate><guid>https://emilygorcenski.com/post/the-american-communion/</guid><description>&lt;p>On the shootings in Buffalo and Uvalde, the ones that happened before, and the ones yet to come.&lt;/p>
&lt;p>Forensic teams scrape blood off of walls and desks and floor tiles using sterilized swabs, their methodology intended to meet the demands of both scientific inquiry and the mercurialness of our system of due process, their twin goals ever in frame: first, to ensure that legal due process does not allow that the perpetrator and his supporters evade justice on a technicality; second, to facilitate identification of the dead, their corpses too indecent to let the families identify by clothing, their appearances indescribably maimed by the rifle bullets designed to spall when they hit bone.&lt;/p>
&lt;p>&lt;em>To spall&lt;/em> is a verb that has taken on a uniquely American character. Likely derived from the Old German &lt;em>spaltan&lt;/em>, the verb means &amp;ldquo;to fragment&amp;rdquo; or &amp;ldquo;to chip.&amp;rdquo; It is used nowadays primarily in two contexts: to describe the behavior of bullets as they impact at 3,300 ft/sec, or to describe the condition of concrete as it existed before some tragic yet eminently foreseeable collapse of infrastructure.&lt;/p>
&lt;p>America mourns its dead once again; in fact, it really never stopped mourning, not after a presumed white supremacist walked into a Buffalo supermarket in a Black neighborhood and killed ten people, mostly elderly Black community members, after having written a rambling manifesto about the two-penny white supremacist &amp;ldquo;Great Replacement&amp;rdquo; theory. That was only ten days before another gunman, with motives yet to be unearthed, perhaps never to be unearthed, evaded armed police who failed to stop him from walking into an elementary school and killing nineteen. Both shooters were merely eighteen years old; their victims, either old enough to have become matriarchs and patriarchs of families who now mourn their loss, figures in a community that still addressed them by Mister or Miss; or too young to have ever been given that chance.&lt;/p>
&lt;p>We try to find the right way to say things. We search for the right way to hurt, the right way to grieve in public because the crime that was committed hurts us all, it hurts our sense of what America should be, what America could be. We went through this ritual three summers ago, when within the span of a week a gunman opened fire at a Garlic festival in an idyllic California town, and a white supremacist rampaged through a Walmart in El Paso, not yet a year after a neo-Nazi shot up a synagogue service, not yet eighteen months after a young man rampaged through a Florida high school.&lt;/p>
&lt;p>We search for the words because if we find the words we can find a reason for the blood. He was a loner. He was bullied. He had poor mental health. He played video games. He listened to Marilyn Manson. He spent time on the dark web. Grief is a process of absolution.&lt;/p>
&lt;p>We will find no absolution. There are no explanations, at least, none that we will accept. Instead we force ourselves to accept the violence because we cannot reject the violence. America is a country founded on blood, built on blood, its prosperity floated on rivers of blood. The blood that we scrape off the walls to help identify our dead is our blood of Christ, our communion. We drink the blood as we pray for our salvation, as we seek forgiveness for our sins, the sins of a society that has long abandoned its duty by seeking a sin-eater to make them go away. The spalling concrete under our bridges is a product of our neglect, of the emptiness of our social commitment to the public good, but we always find a way to make the building inspector pay.&lt;/p>
&lt;p>America is the land of democracy, the land of hope, the land whose streets were paved with gold, a land which has no honest hope of creating the reforms needed to prevent the next shooting. We didn&amp;rsquo;t make the changes after the shootings in Columbine, or Sandy Hook, or Aurora, or El Paso, or Poway, or Gilroy, or Pittsburgh, or Jonesboro, or Parkland, or Oak Creek, or after any of the 211 other mass shootings in the country during the 143 days so far this year. Yet we still believe somehow in the catechisms of both our democracy and our society, despite that &lt;em>Mass Casualty Survivor&lt;/em> has become an American persona. We wear it like a scouting badge. Other countries have violence; only in America do we treat it as a commodity while simultaneously trying to apologize for its existence.&lt;/p>
&lt;p>Like a rifle round hitting bone, like the aging concrete straining under the staccato of our daily commutes, American democracy is spalling. We have better tools for investigating bridge collapses than we do for securing funding for bridge repairs. We have better techniques for forensic analysis of blood splatters than we do for identifying and leading insecure teenage men and boys away from a place of hate and antipathy. We&amp;rsquo;re better practiced at stalling government than making government enact change. Our grief is become ritual. Every subsequent exposition of mass violence and death leaves us likely, not more, to be able to address both the causes and consequences of it. To do so would be to acknowledge violence as the defining feature of American culture and to reject it and the comfort of our ritual grief. To do so would be to reject the blood of the vulnerable and the innocent as our American communion.&lt;/p></description></item><item><title>An alias for getting an ISO-8601 compliant datetime string on WSL2</title><link>https://emilygorcenski.com/post/an-alias-for-getting-an-iso-8601-compliant-datetime-string-on-wsl2/</link><pubDate>Wed, 25 May 2022 00:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/an-alias-for-getting-an-iso-8601-compliant-datetime-string-on-wsl2/</guid><description>&lt;p>A quick alias for getting an ISO-8601 compliant formatted datetime using WSL 2 and Ubuntu.&lt;/p>
&lt;p>The ISO-8601 date format with timestamp, including timezone, &lt;a href="https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_date_format.htm">should be formatted&lt;/a> as &lt;code>YYYY-MM-DDThh:mm:ss[.mmm]TZD&lt;/code>.&lt;/p>
&lt;p>If you, like me, often need to get the fully-formatted string, this alias will save you some headache:&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-sh" data-lang="sh">isonow&lt;span style="color:#f92672">()&lt;/span> &lt;span style="color:#f92672">{&lt;/span>
inputs&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>$@&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
option&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>inputs%% *&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;span style="color:#66d9ef">case&lt;/span> $option in
-c&lt;span style="color:#f92672">)&lt;/span> date +%Y-%m-%dT%H:%M:%S%:z | tr -d &lt;span style="color:#e6db74">&amp;#39;\n&amp;#39;&lt;/span> | clip.exe;;
*&lt;span style="color:#f92672">)&lt;/span> date +%Y-%m-%dT%H:%M:%S%:z;;
&lt;span style="color:#66d9ef">esac&lt;/span>
&lt;span style="color:#f92672">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add this to your &lt;code>.bash_aliases&lt;/code> file or your &lt;code>.bashrc&lt;/code> file. Run &lt;code>isonow&lt;/code> to print the formatted string, or &lt;code>isonow -c&lt;/code> to copy it to directly your clipboard.&lt;/p></description></item><item><title>Data Mesh in practice: Getting off to the right start</title><link>https://www.thoughtworks.com/insights/articles/data-mesh-in-practice-getting-off-to-the-right-start</link><pubDate>Tue, 24 May 2022 16:00:18 +0200</pubDate><guid>https://emilygorcenski.com/post/data-mesh-in-practice-getting-off-to-the-right-start/</guid><description>&lt;p>My amazing colleagues wrote a four-part article series about some of the work we&amp;rsquo;ve done with one of our clients in the space of Data Mesh. This is a really ground-breaking implementation and this article series reflects an immense amount of hard work and innovation. I&amp;rsquo;m proud of what they have done and am honored to have been a part of this.&lt;/p></description></item><item><title>Book Report: Free</title><link>https://emilygorcenski.com/post/book-report-free/</link><pubDate>Mon, 23 May 2022 18:06:00 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-free/</guid><image><url>https://emilygorcenski.com/photo-gallery/tirana-2022/Love%20is%20in%20the%20Air-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/tirana-2022/Love%20is%20in%20the%20Air-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/tirana-2022/Love%20is%20in%20the%20Air-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/tirana-2022/Love%20is%20in%20the%20Air-thumb.jpg" width="600"/></media:content><description>&lt;p>After spending a long weekend in Tirana, I was recommended to read &lt;em>Free: Coming of Age and the End of History&lt;/em> by Lea Ypi, a memoir about growing up during the last days of the communist era and the painful experiences of the Albanian Civil War. I found the book magnificent, heartbreaking, and enlightening.&lt;/p>
&lt;p>I remember the fall of communism. I was old enough to remember the Berlin wall coming down, but not old enough to have any real understanding of politics. I remember my third grade teacher, Mrs. Kotilainen, telling us of her father escaping the Soviet regime in Latvia by altering his passport. And I remember the the US entering the first Gulf War, the first real modern war fought with the unquestioned supremacy of American military technology. I remember the green and black footage of Iraqi air defenses blindly firing at ghosts on the evening news. This is the world I grew up in.&lt;/p>
&lt;p>I&amp;rsquo;ve been fascinated about what came before it. I&amp;rsquo;m old enough to remember the jitters of the cold war, but my youth was colored by that unbridled techno-optimism that the 90s promised. It was ok for us to be soft now. The future had promise!&lt;/p>
&lt;p>And 9/11 happened and everything changed but America didn&amp;rsquo;t fall. And the Great Recession came and really mucked things up but America didn&amp;rsquo;t fall. And at some point, I began to wonder, what brings us to the fall? What did it look like in all those other places where the indefatigable power of the state came so suddenly to an end? What did it mean to people like my third grade teacher, for them to see the bailing twine that bound their societies begin to fray and give out? What did it mean to be free?&lt;/p>
&lt;p>If I could understand what freedom meant then, for those people, could I understand what freedom meant for me, an American brought up in the illusion and expectation of freedom, a free American who nevertheless has her government telling her where she can or cannot pee, a free American free from the protective aegis of civil rights laws, a free American who needed a psychiatrist&amp;rsquo;s permission to use her own name?&lt;/p>
&lt;p>When I began to travel the world, I wanted first to see those sites where people rebelled against their governments. I visited the steps of the Národní muzeum in Prague, where Jan Palach self-immolated to protest against the Soviet occupation of Czechoslovakia. I visited Berlin, where a cobblestone line, two stones thick, cuts through the city where the Berlin Wall once stood. I paid close attention to what it meant to transition from brutal communism to relentless capitalism. Were people better off? Were they free?&lt;/p>
&lt;p>Lea Ypi is a couple years older than I am, which means that like me, she grew up in the waning years of 20th Century communism. Unlike me, her childhood was spent in Albania, one of the countries we Americans congratulated on their newfound freedom. Ypi&amp;rsquo;s memoir, &lt;em>Free&lt;/em>, tells a story of a childhood in an Albania in transition: first, after &lt;a href="https://en.wikipedia.org/wiki/Enver_Hoxha">Enver Hoxha&amp;rsquo;s&lt;/a> death, where the adults in her life found themselves dodging informants and trying to network a grassroots resistance against the regime. As she comes of age, she comes also to the realization that her relatives were not away studying at university, a euphemism used by her adult relatives, but rather serving time in Albania&amp;rsquo;s forced labor camps. She learns that it is no coincidence that she shares a surname with the fascist collaborator &lt;a href="https://en.wikipedia.org/wiki/Xhafer_Ypi">Xhafer Ypi&lt;/a>, and that as her great-grandfather&amp;rsquo;s legacy her future opportunities under a communist Albania would always be limited.&lt;/p>
&lt;p>The first three-quarters of her book are a humorous and enlightening look at the last European holdout of Stalinism and the transitory years that followed its fall. But the book takes an increasingly desperate tone as she describes her family&amp;rsquo;s struggles with the ruthlessness of western capitalism, its rapacious greed fuelled by distant and uncaring European advisors. The book becomes dark when she tells of the Albanian Civil War, which she finds herself unable to describe except through excerpts from her journals at the time. She leaves Albania in the end, and ends up now teaching Marxism at a English university. The book is her self-admitted way to reconcile her choice to teach Marxist philosophy despite her family&amp;rsquo;s suffering at the hands of Hoxha&amp;rsquo;s regime.&lt;/p>
&lt;p>I find myself enamored with and identifying with Ypi&amp;rsquo;s description of her father, a wistful revolutionary:&lt;/p>
&lt;blockquote>
&lt;p>He romanticized revolutionary struggle. He was a free spirit stuck in a highly rigid political order, a man with a biography he had not chosen but which was enough to determine his place in the world&amp;hellip; He knew what he was against but found it hard to defend what he stood for. Sentences, theories, ideals crowded in his head, and he struggled to find a way to order them, to explain his priorities and to share his views. Everything eventually exploded in thousands of fragments: what he knew, what he was, what he tried to be, what he wanted to see happen. Like the lives of the revolutionaries whose heroic deaths he admired, like his favourite revolution, the one that had never taken place.&lt;/p>
&lt;/blockquote>
&lt;p>The Tirana skyline today is dotted with cranes and growing skyscrapers; it&amp;rsquo;s alleys still bearing the pockmark domes of the infamous Hoxha bunkers. Freedom today looks like the Turkish government and the European Union battling over the country&amp;rsquo;s future through investment, in the case of the former, by building the Balkan peninsula&amp;rsquo;s largest mosque; the latter, through restoring sites of cultural heritage like the National History Museum. The &lt;a href="https://en.wikipedia.org/wiki/Pyramid_of_Tirana">Pyramid of Tirana&lt;/a>, built in the last years of communism as the Enver Hoxha Museum, is being restored as a glassy IT hub and education center, the borders of its property wrapped with those construction fences that display some architect&amp;rsquo;s saccharine rendering of an idyllic future of the space. Tirana is a city living in liminal space. It&amp;rsquo;s people are free: free to wait for the next revolution, or to make the last the final one.&lt;/p></description><tweet>I read Lea Ypi's fantastic memoir about growing up in Albania at the fall of communism and reflected on what it means to seek freedom. My report:</tweet></item><item><title>Weekly Recap: 22 May 2022</title><link>https://emilygorcenski.com/post/weekly-recap-22-may-2022/</link><pubDate>Sun, 22 May 2022 18:05:00 -0400</pubDate><guid>https://emilygorcenski.com/post/weekly-recap-22-may-2022/</guid><description>&lt;p>I&amp;rsquo;m going to try to bring back writing weekly recaps, to help with writing and, if I&amp;rsquo;m being honest, replacing what I would normally use Twitter for!&lt;/p>
&lt;p>Since getting rid of my Twitter account temporarily (more on that to come), I have found myself with much more time to enjoy my life. Or rather, to get things done with my life. This past week was incredibly busy. I&amp;rsquo;ve had some administrative tasks to do in my personal life that were causing quite a lot of stress, but which were far easier than I had feared. You know those tasks that you dread for weeks but only take like an hour once you focus on them?&lt;/p>
&lt;p>Also, I took my B2 test in German at the Goethe-Institut this week. The test was fine. I made mistakes, but I think I probably passed all four modules. The computer was a bit annoying: it was slow switching between modules, had a needlessly sensitive trackpad, and headphones whose left ear speaker was badly damaged. Despite this, I think I probably did OK. After studying like hell for it for a month, all that pent up stress released and I spent the next two days fighting off a mighty tension headache.&lt;/p>
&lt;p>Work was also busy, I had a lot of loose ends to tie up before heading off for vacation for the next few weeks. I think I got most of them managed and most of the work delegated. I am grateful as ever to have an amazing team to help me build what we&amp;rsquo;re trying to build. Yesterday, I flew back into the US and endured the full weight of the collapsing labor supply. Brief thunderstorms caused havoc at Charlotte airport, and what should have been a 16 or 17 hour travel day turned into a 26 hour travel day. But I made it, and I&amp;rsquo;ve spent today relaxing and reading.&lt;/p>
&lt;p>On my flight(s), I read the entirety of &lt;a href="https://emilygorcenski.com/post/book-report-the-midlander-by-booth-tarkington/">Booth Tarkington&amp;rsquo;s &lt;em>The Midlander&lt;/em>&lt;/a>. This wraps up the first entry in my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library Top 100&lt;/a> project, rounding out the full trilogy attached to entry #100. Next, I&amp;rsquo;m onto Salman Rushdie&amp;rsquo;s &lt;em>Midnight&amp;rsquo;s Children&lt;/em> at #90. I have an interesting associated project with this read-through that I&amp;rsquo;m working on. I think I&amp;rsquo;m the only person I know who starts reading a book by spinning up neo4j in Docker. Overall, I&amp;rsquo;ve been reading much more since deleting my Twitter. This year has been shaping up to be my best reading year in probably a decade.&lt;/p>
&lt;h3 id="longform-online-content">Longform Online Content&lt;/h3>
&lt;ul>
&lt;li>Talia Lavin&amp;rsquo;s &lt;a href="https://theswordandthesandwich.substack.com/p/white-supremacys-warped-rationale">great piece&lt;/a> on the Buffalo shooting&lt;/li>
&lt;li>A &lt;a href="https://www.tor.com/2022/05/11/the-brilliant-ambiguity-of-conan-the-barbarians-riddle-of-steel/">look back&lt;/a> at &lt;em>Conan the Barbarian&lt;/em> after 40 years&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>After cramming for my B2 test, I&amp;rsquo;m taking the time to fill in gaps and work through some B1 and B2 content as a refresher, and as a low-effort way to stay engaged with learning German while on vacation. I brought with me a B1-level exercise book to finish out.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Deutsch üben&lt;/em> &lt;small>(&lt;em>Progress: 53%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I did some reading this week!&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-magnificent-ambersons-by-booth-tarkington/">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> &lt;small>(&lt;em>Progress: 100%&lt;/em>)&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-midlander-by-booth-tarkington/">&lt;em>The Midlander&lt;/em>, Booth Tarkington&lt;/a> &lt;small>(&lt;em>Progress: 100%&lt;/em>)&lt;/small>&lt;/li>
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie &lt;small>(&lt;em>Progress: 6%&lt;/em>)&lt;/small>&lt;/li>
&lt;li>&lt;em>My Monticello&lt;/em>, Jocelyn Nicole Johnson &lt;small>(&lt;em>Progress: 75%&lt;/em>)&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Vacation in the US and catching up with old friends.&lt;/p></description></item><item><title>Book Report: The Midlander by Booth Tarkington</title><link>https://emilygorcenski.com/post/book-report-the-midlander-by-booth-tarkington/</link><pubDate>Sun, 22 May 2022 12:18:08 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-the-midlander-by-booth-tarkington/</guid><description>&lt;p>The third book in Tarkington&amp;rsquo;s &lt;em>Growth&lt;/em> trilogy, &lt;em>The Midlander&lt;/em> rounds out the story of the fictional version of Indianapolis as it came of age in the early 20th century. Although only the second book in the trilogy made the Top 100, I found this entry to be the best of the series.&lt;/p>
&lt;p>The first two volumes of Booth Tarkington&amp;rsquo;s &lt;em>Growth&lt;/em> trilogy, &lt;em>&lt;a href="https://emilygorcenski.com/post/book-report-the-turmoil-by-booth-tarkington/">The Turmoil&lt;/a>&lt;/em> and &lt;em>&lt;a href="https://emilygorcenski.com/post/book-report-the-magnificent-ambersons-by-booth-tarkington/">The Magnificent Ambersons&lt;/a>&lt;/em> were critiques of the boundless consumption of the Second Industrial Revolution and the birth of the American Midwest. Although the books were clearly critical of this uncontrolled and uncontrollable growth, viewed by the characters, in a reflection of the times, as prosperity, the novels were also popular tales of the interactions between the everyman and high society. In each volume, the main character battles against growth but ultimately finds his salvation in it, usually after shunning his ties to old wealth and high society.&lt;/p>
&lt;p>So it goes also in &lt;em>The Midlander&lt;/em>, also titled &lt;em>National Avenue&lt;/em>. The book follows Dan and Harlan Oliphant, two grandsons of a wealthy and ornery matriarch. Dan and Harlan are polar opposites: Harlan is a snobby antisemite and conservative with his money and business; Dan, a pie-in-the-sky optimist who envisions a future suburban expansion for his city and puts his every penny into developing that future, against all prudent advice.&lt;/p>
&lt;p>Along the way, Dan falls in love with a New York socialite, Lena, while maintaining an uncommon for the era friendship with his childhood neighbor, Martha. Martha is in unrequited love with Dan. This hurts Lena, who finds the folksy midwestern vibe of the city absolutely unbearable. Lena devotes herself fully to Dan, even as his dreams ruin hers. Harlan, meanwhile, harbors unreturned feelings of his own for Martha.&lt;/p>
&lt;p>In the trilogy, women played only one of two roles: the helpless or hostile gossip, or the self-sacrificial nurturer who smooths our protagonists' paths with her own tears. In &lt;em>The Midlander&lt;/em>, Martha is the only exception to these archetypes. In fact, I find her the most interesting character in the entire trilogy.&lt;/p>
&lt;p>Against all odds and best advice, Dan Oliphant makes something of his dream for a suburban expansion of the unnamed midland city, but he fails to live long enough to see it prosper. Harlan, his effete and bigoted younger sibling, finally convinces Martha to marry him after he begrudgingly invests his own inherited wealth in ensuring the growth of Dan&amp;rsquo;s vision.&lt;/p>
&lt;p>In the trilogy, redemption is found only when the main characters yield to the wisdom of the everyman. In &lt;em>The Turmoil&lt;/em>, Sheridan&amp;rsquo;s unlikely son Bibbs takes over the family business. In &lt;em>The Magnificent Ambersons&lt;/em>, the young brat Georgie finally sees his love returned once he has found humility in financial ruin; his beloved&amp;rsquo;s new familial wealth generated by the industrial boom of the era. In &lt;em>The Midlander&lt;/em>, Dan stubbornly ignores all sensible advice and over-leverages his own inheritance to build a suburban expansion on an old farm far outside the city&amp;rsquo;s original core. He is singularly focused on this mission and is on the verge of financial ruin when his teenage son drink drives and is hurt in an automobile accident, a late wakeup call for Dan that allows him to repent. God, or Growth, absolves Dan of his sins in the afterlife: Dan&amp;rsquo;s life&amp;rsquo;s mission bears fruit, even as his wife and son abandon the midland city for Europe.&lt;/p>
&lt;p>It&amp;rsquo;s clear to see why these books were popular at the time. In them, growth and prosperity are both damnation and salvation, salvation only comes when one humbles himself before the common man. The dialog is charming and the characters' dramas entertaining. &lt;em>The Magnificent Ambersons&lt;/em> won a Pulitzer and Orson Welles' film version of the novel has &lt;a href="https://en.wikipedia.org/wiki/The_Magnificent_Ambersons_(film)">a legacy of its own&lt;/a>. I can see why the middle volume was given the honors it was, but I lament that the trilogy has largely faded from view over time. In fact, the reprinted copy of &lt;em>The Midlander&lt;/em> that I have contains a back-cover description unrelated to the text at all. I wish that all three books were placed together; they stand better together than any does alone.&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></description></item><item><title>PyCon 2022 Career Panel</title><link>https://www.youtube.com/watch?v=ae1IOcdonNE</link><pubDate>Wed, 18 May 2022 22:37:40 +0200</pubDate><guid>https://emilygorcenski.com/post/pycon-2022-career-panel/</guid><image><url>https://emilygorcenski.com/photo-gallery/talks/pycon-2022.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/talks/pycon-2022.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/talks/pycon-2022.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/talks/pycon-2022.jpg" width="600"/></media:content><description>&lt;p>My wonderful colleague Katharine invited me to speak about careers in Data Science at PyCon in Berlin this year. The full panel video is now available.&lt;/p></description></item><item><title>The Subtle Spread of Hateful Memes: Examining Engagement Intentions Among Parents of Adolescents</title><link>https://journals.sagepub.com/doi/10.1177/20563051221095100</link><pubDate>Tue, 17 May 2022 00:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/the-subtle-spread-of-hateful-memes-examining-engagement-intentions-among-parents-of-adolescents/</guid><description>&lt;p>A new publication by Sarah Burnham, et al, explores how hateful memes spread online and are accepted by youth and parents. It was done in conjunction with my colleague Dr. Miriam Arbeit&amp;rsquo;s Youth Equity and Sexuality Lab, of which I am an advisory board member, and I am cited in this work.&lt;/p></description></item><item><title>Book Report: The Magnificent Ambersons by Booth Tarkington</title><link>https://emilygorcenski.com/post/book-report-the-magnificent-ambersons-by-booth-tarkington/</link><pubDate>Mon, 16 May 2022 00:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-the-magnificent-ambersons-by-booth-tarkington/</guid><description>&lt;p>A review of book #100 on the Modern Library&amp;rsquo;s Top 100 list, and the second novel in Booth Tarkington&amp;rsquo;s &lt;em>Growth&lt;/em> trilogy. A prescient tale of the fall of old money under the ceaseless consumption of capitalism, the story follows the fate of young George Amberson, a precocious and irritating scion of wealth whose &amp;ldquo;comeuppance&amp;rdquo; is simultaneously a story of justice and redemption.&lt;/p>
&lt;p>Set in a fictional version of an unnamed Indianapolis at the dawn of the automobile, &lt;em>The Magnificent Ambersons&lt;/em> could have predicted the decline of Rust Belt cities, but its publication preceded that particular decay of American culture by half a century. Instead, the novel focuses on the collapse of old wealth and high American society, its mannerisms and refusal to change run over by the Second Industrial Revolution. The book itself ends when the main character, the darling George Amberson, spoiled only child of the city&amp;rsquo;s most notable family, himself is run over and badly injured by a car. His fate is a fitting and symbolic &amp;ldquo;comeuppance.&amp;rdquo; After all, young George despised the machines.&lt;/p>
&lt;p>&lt;em>The Magnificent Ambersons&lt;/em> could also serve as a premonition for what would happen with American society as cars became accessible to the average American. Cities decayed, urban flight led to the decline of urban centers, and the country sprawled under a mass of highways, borrowing an environmental debt that we pay are only today beginning to pay off. But this is not what bothered the focus of our book. Instead, the automobile allowed others to escape his influences. A spoiled only child, George had no intentions of making a career of much of anything but living off his inherited wealth, a wealth which slowly vanished as the city grew around him. Cars were also being built by the father of George&amp;rsquo;s love interest, Lucy, a man who George&amp;rsquo;s mother, Isabel, had a fling when she was younger. This complex family dynamic became more complicated after the death of George&amp;rsquo;s father.&lt;/p>
&lt;p>These complicated romances are meant to humanize the Amberson heir. George exhibited few emotions other than indignity, particularly when Lucy chose to have an independent life of her own. George forbade his mother from seeing her own love interest; the two fled toward Europe for a time as the family wealth was in decay. They came home when Isabel fell sick and soon died. Shortly after, the family wealth collapsed. Destitute, George took a job hauling explosives, humbled and unrecognized as Amberson Avenue found itself renamed, as the decaying fountain in front of his mansion was removed. His family&amp;rsquo;s legacy was erased from history under a haze of grease and gasoline and factory smog. Modern capital passed the Ambersons by.&lt;/p>
&lt;p>The book focuses on George, but there was little he could do to stop this. The family&amp;rsquo;s wealth was mismanaged by his elders. He was scarcely 22 years old when the bottom fell out. The townsfolk foretell of George&amp;rsquo;s comeuppance, but his only sin was being kind of a dick. The story was not without his redemption. As he lay on his hospital bed, his beloved Lucy came to take his hand, her family made wealthy by the booming automotive industry. Capitalism taketh away; capitalism giveth back again.&lt;/p>
&lt;p>With the hindsight of a hundred years the book serves as a frustrating echo of a lesson not learned. The same forces that led to the demise of the Amberson family led to the demise of the Midwestern Industrial City. Tarkington might have been the Springsteen of his era, so beloved of him was his Indianapolis. What we see, however, is the salvation of an irredeemable character who could have solved any of his problems at any point of his life simply by communicating or by acknowledging that women are people, too. Like in &lt;em>&lt;a href="https://emilygorcenski.com/post/book-report-the-turmoil-by-booth-tarkington/">The Turmoil&lt;/a>&lt;/em>, the story of George Amberson is the biblical story of Job; God, the Invisible Hand of the Market.&lt;/p>
&lt;p>&lt;em>The Magnificent Ambersons&lt;/em> tickles the American ethic. America is a constant process of rebirth, its renewal a cleansing of what is old. The novel constructs a Midwestern philosophy that we cannot let go of even today. In the story, there is a lesson, but I am not sure if any telling of it has ever really learned it.&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></description></item><item><title>Reliability in Data Mesh: Why SLAs and SLOs are Crucial</title><link>https://daappod.com/data-mesh-radio/driving-reliability-through-slas-and-slos-emily-gorcenski/</link><pubDate>Sat, 14 May 2022 14:08:05 +0200</pubDate><guid>https://emilygorcenski.com/post/reliability-in-data-mesh-why-slas-and-slos-are-crucial/</guid><description>&lt;p>I joined Scott on Data Mesh to talk about the importance of SLOs in shaping data products.&lt;/p></description></item><item><title>SLOConf 2022: A Better SLO for Data-intensive Systems</title><link>https://www.youtube.com/watch?v=F58JYWJJVnA&amp;list=PLLNq9CBV7AFy4yGD9GrtpjZqsvM7lqpeb&amp;index=3</link><pubDate>Tue, 10 May 2022 20:47:00 +0200</pubDate><guid>https://emilygorcenski.com/post/sloconf-2022-a-better-slo-for-data-intensive-systems/</guid><image><url>https://emilygorcenski.com/photo-gallery/talks/sloconf-2022.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/talks/sloconf-2022.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/talks/sloconf-2022.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/talks/sloconf-2022.jpg" width="600"/></media:content><description>&lt;p>My talk on creating a meaningful availability SLO for BI platforms, given at SLOConf 2022.&lt;/p></description></item><item><title>Kønskrigerne: Fra smal mærkesag til mainstream kulturkamp</title><link>https://cybernauterne.dk/blog/konskrigerne-fra-smal-maerkesag-til-mainstream-kulturkamp/</link><pubDate>Sat, 07 May 2022 12:08:04 +0200</pubDate><guid>https://emilygorcenski.com/post/k%C3%B8nskrigerne-fra-smal-m%C3%A6rkesag-til-mainstream-kulturkamp/</guid><description>&lt;p>I joined Cybernauterne to talk about transphobes and white supremacy. The podcast is in Danish, but my part is in English.&lt;/p></description></item><item><title>Angelheaded Hipsters Burning for the Ancient Heavenly Connection</title><link>https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/</link><pubDate>Thu, 28 Apr 2022 12:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/angelheaded-hipsters-burning-for-the-ancient-heavenly-connection/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/Vanaturu-Kael-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/Vanaturu-Kael-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/Vanaturu-Kael-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/Vanaturu-Kael-thumb.jpg" width="600"/></media:content><description>&lt;p>A requiem for the Twitter that could have been&lt;/p>
&lt;p>Twitter never really understood what it had. Facebook founder Mark Zuckerberg &lt;a href="https://www.huffpost.com/entry/zuckerberg-twitter_n_4256014">once described Twitter, the company&lt;/a>, as &amp;ldquo;a clown car that fell into a gold mine.&amp;rdquo; The organization languished under Jack Dorsey&amp;rsquo;s leadership for years, stagnating, rolling out mild feature upgrades here and there that served mostly to annoy its users without adding very much by way of value, either to its users or to the company. It found itself hauled before the very same Congressional firing squads that were taking aim at Facebook, except without making Facebook kinds of money. Twitter injected themselves into a handful of social narratives and then, like most Twitter users who do the same thing, found themselves completely uncertain of what to do next. Twitter is a dog that keeps actually catching up to the mail truck.&lt;/p>
&lt;p>Elon Musk is trying to buy the company now, and pending regulatory approval, it looks like he will be successful. At least, he will be successful in buying the company. It&amp;rsquo;s not clear at all that he&amp;rsquo;ll be any more successful at running it. After all, the clown car that drove into the gold mine might well have been a Tesla on Autopilot.&lt;/p>
&lt;h6 id="_who-talked-continuously-seventy-hours-from-park-to-pad-to-bar-to-bellevue-to-museum-to-the-brooklyn-bridge_">&lt;em>&amp;hellip;who talked continuously seventy hours from park to pad to bar to Bellevue to museum to the Brooklyn Bridge&amp;hellip;&lt;/em>&lt;/h6>
&lt;p>People call Twitter &amp;ldquo;social media&amp;rdquo; with casual ease, not really spending a moment to interrogate if a category error is being made. Twitter is unlike Facebook is unlike Tiktok is unlike Telegram, and so on. Posting a tweet on Twitter is a wholly different act than writing a post on Facebook. Facebook is heavier, its threading clunky, its interface perfectly calibrated to optimally commandeer your attention for exactly as long as is needed to maximize what it can take from you, and nothing more. Twitter is designed for discourse. A reply is simply a tweet stapled to another tweet; a thread, several stitched together in a bizarre discursive macramé. Twitter optimizes for brevity and volume; Twitter wants you to scroll, to &lt;em>doomscroll&lt;/em> even, and to become immersed in the &lt;em>volume&lt;/em> of content.&lt;/p>
&lt;p>People call Twitter a social media site, but in reality it is a global chatroom. Twitter is optimized for throwaway bullshit. That&amp;rsquo;s not new. We have always had ways to revel in bullshit, we trafficked in irony and ennui smuggled in fixed-width font. We have always had an outlet for our most mundane thoughts, our passive bemusement at the absurdity of life. Twitter&amp;rsquo;s innovation was simply making it practical to put it all in one place, by abstracting away the complexity of whose bullshit you would see.&lt;/p>
&lt;p>The internet is full of antique furnishings covered in dusty bedsheets. A quick glance at &lt;a href="http://bash.org/">bash.org&lt;/a> evokes pinprick memories for the generation that grew up on IRC and chatrooms. That era, as the top posts evince, was also unforgivably bigoted. The internet wasn&amp;rsquo;t available to everyone, then. It wasn&amp;rsquo;t practical for everyone. Through obscurity and hostility the gates were kept with hostile verve. The repositories of bullshit we used then were never on the evening news.&lt;/p>
&lt;p>Twitter changed that. Twitter gave us an easy way to send our ephemera into the world, let us choose whose we saw, and gave us tools to amplify the best or worst of it on the very same platform with the very same mechanics. It never dissuaded us from it. In fact, its only really effective product changes over the years were tools like retweets, quote tweets, and threads, all of which made it easier to keep our quips flowing.&lt;/p>
&lt;p>Twitter is a chatroom, and the problem that Twitter really solved was the discoverability problem. The internet is a big place, and it is shockingly hard to otherwise find people whose thoughts you want to read more of, whether those thoughts are tweets, articles, or research papers. The thing is, I&amp;rsquo;m not really sure that Twitter ever realized that this is the problem they solved, that this is where their core value lies. Twitter kept experimenting with algorithms and site layouts and Moments and other features to try to foist more discoverability onto the users without realizing that their users were discovering with the platform quite adeptly already. Twitter kept trying to amplify the signal without understanding that what users needed was better tools to cut down the noise.&lt;/p>
&lt;h6 id="_whole-intellects-disgorged-in-total-recall-for-seven-days-and-nights-with-brilliant-eyes_">&lt;em>&amp;hellip;whole intellects disgorged in total recall for seven days and nights with brilliant eyes&amp;hellip;&lt;/em>&lt;/h6>
&lt;p>Twitter, like many technology companies, fell into the classical trap by thinking that they, the technologists, were the innovators. Technologists today are almost never innovators, but rather plumbers who build pipelines to move ideas in the form of data back and forth with varying efficacy. Users are innovators, and its users that made Twitter unique. In fact, those features, like retweets, &lt;a href="https://narendra.medium.com/the-origin-of-the-retweet-and-other-twitter-arcana-5c53289d9a47">emerged from user behavior&lt;/a>. Among all of the major &amp;ldquo;social networking&amp;rdquo; sites, Twitter is the only one that meaningfully handles in serious topics. Presidents use Twitter; tweets appear on the evening news, sit at the forefront of major investigations. Twitter has become the medium for debate and analysis. Facebook mastered the art of sharing and the art of arguing, but Twitter allowed people to mine the depths of content. Some of what was unearthed were diamonds, and some was coal, but Twitter is the only place where serious thinkers attempt to build a brand.&lt;/p>
&lt;p>When the site is at its best, it serves as an incubator for new thinking. If you follow the right people, and use the right critical eye, you can read the news before it&amp;rsquo;s been written. Twitter, more than any other site, is a laboratory for journalism and scholarship. Though its users are rarely gentle, for those hearty enough to weather the feedback Twitter is a crucible of creation. But this same mechanism is also a springboard for the absolute worst synthesis you have ever encountered. This is not an accident. It tickles our bullshit centers. To every topic we précis our indignity. Such reactions are out of our control. If you&amp;rsquo;re clever enough, witty enough, you get a high score, and more people will then be raptured into the holy orbit of your public conscience. Twitter is a chat room with bash built in.&lt;/p>
&lt;p>Nobody really needs to share their opinion on &lt;a href="https://www.washingtonpost.com/travel/tips/airport-plane-dress-code/?utm_medium=social&amp;amp;utm_campaign=wp_main&amp;amp;utm_source=twitter">the Washington Post author&lt;/a> who took indecipherable aim at the cultural transgression of stretchy pants on airplanes. But then, neither should said author stand to gain anything from lobbing this moral grenade into the opinion section of one of America&amp;rsquo;s most important newspapers. What honestly do we stand to gain from this transaction? The Washington Post gains. Twitter gains. Clicks are value. Outrage is attention. Attention is the last earthly resource that individuals are the keepers of. Everything else is taken over by corporations. Attention is the only means of production we still control.&lt;/p>
&lt;p>Twitter never really did figure out this pattern of synthesis-analysis-synthesis. Users flurry screenshots of the article of the moment around Twitter, destroying searchability and accessiblity. Journalists have adapted their writing style to optimize for a pullquote that fits comfortably in an iPhone screen. Twitter could have done so much more. They could have built an API that allows users to quote articles with text. They could have realized that what made the site unique is that we want to relate to ideas. They didn&amp;rsquo;t understand that we don&amp;rsquo;t want to share content, we want to share our own interpretations and validations of wisdom. We want to create, not produce! Above all, we want to share the naked joy that someone else is pleased with what we created.&lt;/p>
&lt;h6 id="_who-reappeared-on-the-west-coast-investigating-the-fbi-in-beards-and-shorts-with-big-pacifist-eyes-sexy-in-their-dark-skin-passing-out-incomprehensible-leaflets_">&lt;em>&amp;hellip;who reappeared on the West Coast investigating the FBI in beards and shorts with big pacifist eyes sexy in their dark skin passing out incomprehensible leaflets&amp;hellip;&lt;/em>&lt;/h6>
&lt;p>We called it Web 2.0 when we shifted the dynamics of the chatrooms away from strange corners of an inaccessible Internet and onto the global stage. Celebrities began to join in. You could talk to them. If something in the news pissed you off, you could yell at the journalist directly, rather than writing a letter to the newspaper. This was powerful. And we called it Web 2.0 because we thought we had invented something new.&lt;/p>
&lt;p>Twitter, the organization, was convinced of this more than anyone. They had to be. But as time marched on, it became clear that Twitter didn&amp;rsquo;t really understand what it had built, how it was used, or what is was being used for. For years, we watched as doe-eyed star hires proudly announced their leading roles in the company. They were going to fix things! They were going to take feedback! Twitter wasn&amp;rsquo;t perfect, but gosh darn it, it was going to try to be better.&lt;/p>
&lt;p>But it was clear that these people didn&amp;rsquo;t really use the platform in the way that the platform drove its power. They hopped on board the Twitter train thinking they were going to be conductors, only to find that they were merely passengers. Time after time, we watched as these bright stars burned out, quietly leaving the company to pursue another journey.&lt;/p>
&lt;p>Technologists are never the innovators. Users are the innovators. If you watched how Twitter evolved from 30,000 feet, you could see the growth of citizen journalism. You could watch as activists would shape entire conversations about politics, industry. Open source investigators collaborated in the open and outperformed the world&amp;rsquo;s best law enforcement and intelligence agencies. The platform changed entertainment and culture. It allowed revolutionaries to network, and helped the state crush them. It allowed hate and genocidal ideology to spread. It legitimized conspiracy theories that have permanently scarred our world.&lt;/p>
&lt;p>Twitter wanted all of the credit for the innovation and none of the credit for the impact, when the reality was &lt;a href="https://www.buzzfeednews.com/article/alexkantrowitz/how-the-retweet-ruined-the-internet">the other way around&lt;/a>. Time after time, they came right up to the limit of acknowledging that, always to turn away at the last moment. Whatever happens in the coming months with Elon Musk&amp;rsquo;s attempt to buy the company, the Board has sent a clear and unambiguous message: Twitter will never cross that line, it is tired of being asked to, and now it will never even try.&lt;/p>
&lt;h6 id="_moloch-moloch-robot-apartments-invisible-suburbs-skeleton-treasuries-blind-capitals-demonic-industries-spectral-nations-invincible-madhouses-granite-cocks-monstrous-bombs_">&lt;em>&amp;hellip;Moloch! Moloch! Robot apartments! invisible suburbs! skeleton treasuries! blind capitals! demonic industries! spectral nations! invincible madhouses! granite cocks! monstrous bombs!&lt;/em>&lt;/h6>
&lt;p>Most debates try to locate Twitter&amp;rsquo;s place in the broad framework of free speech. We debate as to whether it is a Town Square, debate whether it should be. We debate the meaning of free speech, and how Twitter has threatened the design limits of the legal and social trusswork that creak and groan as they attempt to support that particular nugget of democracy. This, too, is a mistake, and not least because these debates tend to be polluted with the uniquely American lens on the ethics of free speech.&lt;/p>
&lt;p>Free speech is rightfully the most sacred American value, one that has been codified in the First Amendment to the United States Constitution. But the First Amendment is much broader than simply a constitutional guarantee against prosecution. It grants the right to pray as you please, something which was, at the time of its writing, one of the major axes of personal identity. Crucially, it also grants the right to petition one&amp;rsquo;s government for a redress of grievances. All this is to say, that if we insist on using American free speech values in the debate over the governance and direction of a global platform, we would do well to include the entire story. The ability be as you are and to seek justice is as essential to free speech as the freedom from government persecution. These things must coexist.&lt;/p>
&lt;p>If we are to position Twitter as a Town Square, we should consider that Town Squares were rarely designed as free speech fora. Town squares historically arose from civilization&amp;rsquo;s tendency to self-organize; they emerged as a gathering space where people could connect with people, for trade, for celebration, for ritual. Town squares arose from humanity&amp;rsquo;s need to form community. If Twitter wants to position itself as a Town Square, it must focus not on &amp;ldquo;free speech,&amp;rdquo; but on the development of community and to improve the features and tooling to allow users to self-select them. This of course includes better tools for users to moderate their community spaces according to self-defined standards.&lt;/p>
&lt;p>Twitter has resisted these calls in the past, and it is unlikely that the organization will suddenly embrace them under Elon Musk&amp;rsquo;s leadership. Musk exhibits &lt;a href="https://twitter.com/elonmusk/status/1519415674111672325?s=20&amp;amp;t=4BoG-OH-e2WMMqBWr7ZI0Q">a child&amp;rsquo;s understanding of free speech&lt;/a>. More likely, he will drive the company mercilessly to chase KPIs or OKRs or whatever capitalist numerology that he and his advisors can grasp instead of understanding the platform dynamics. This usually means pumping engagement, seeking to leverage outrage and our generational burden to be fully informed about subject matters that fall well outside our rightful ambit. You can&amp;rsquo;t be different people in different contexts on Twitter, even though this is how most of us live our everyday lives. You have to be all people at all times to all other people on Twitter, the platform. This is the antithesis of community. Ultimately, it will be undoing of Twitter, the company.&lt;/p>
&lt;h6 id="_where-we-hug-and-kiss-the-united-states-under-our-bedsheets-the-united-states-that-coughs-all-night-and-wont-let-us-sleep_">&lt;em>&amp;hellip;where we hug and kiss the United States under our bedsheets the United States that coughs all night and won’t let us sleep&amp;hellip;&lt;/em>&lt;/h6>
&lt;p>It may be time for Twitter to have its undoing. Twitter has made too many things too easy for too long. The subtitle of Zeynep Tufekci&amp;rsquo;s fantastic book, &lt;em>Twitter and Tear Gas&lt;/em> is &amp;ldquo;the power and fragility of networked protest.&amp;rdquo; We have constructed the scaffolding of our influence networks on a cracked foundation. It&amp;rsquo;s too easy to build a brand there. It&amp;rsquo;s too often at the expense of building more durable relationships. More important, it&amp;rsquo;s at the expense of building a scalable, stable framework from which we can advance our craft.&lt;/p>
&lt;p>Twitter &lt;em>has&lt;/em> done great things. They&amp;rsquo;ve blown away the barriers that prevented ordinary people from obtaining access to the drivers of culture, politics, and news. It&amp;rsquo;s allowed us a real good look at the emperor&amp;rsquo;s clothes. Individuals have more opportunity than ever before to become agents of substantive change. Through it we could learn so much more, do so much more, become so much more. It&amp;rsquo;s the most accessible, widespread chatroom that has ever been built.&lt;/p>
&lt;p>There is a time for builders and a time for breakers. Twitter allowed us many of us to become breakers. Web 2.0 let us speak truth to power at scales never before seen. But it struggled to let us also become builders, because it was so easy for &lt;em>anyone&lt;/em>, any community, to be broken. Regardless of how, or if, Musk&amp;rsquo;s acquisition pans out, to me one thing is clear: the groundwork for what comes next must now be laid. In the end, I think it&amp;rsquo;s the most exciting time in technology I&amp;rsquo;ve seen in years.&lt;/p>
&lt;p>&lt;small>&lt;em>Excerpts from &lt;a href="https://www.poetryfoundation.org/poems/49303/howl">&amp;ldquo;Howl&amp;rdquo; by Allen Ginsberg&lt;/a> republished without permission under fair use principles.&lt;/em>&lt;/small>&lt;/p></description></item><item><title>Tirana 2022</title><link>https://emilygorcenski.com/post/tirana-2022/</link><pubDate>Sat, 23 Apr 2022 20:48:42 +0200</pubDate><guid>https://emilygorcenski.com/post/tirana-2022/</guid><image><url>https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/tirana-2022/Electric%20Ghost.jpg" width="600"/></media:content><description/></item><item><title>My Experience on the Border</title><link>https://emilygorcenski.com/post/my-experience-on-the-border/</link><pubDate>Wed, 09 Mar 2022 00:07:49 +0100</pubDate><guid>https://emilygorcenski.com/post/my-experience-on-the-border/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/flight-over-poland.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/flight-over-poland.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/flight-over-poland.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/flight-over-poland.jpg" width="600"/></media:content><description>&lt;p>Since the re-invasion of Ukraine by Russia, I&amp;rsquo;ve undertaken two relief missions to the Ukrainian border to support evacuees. Here are my experiences and observations.&lt;/p>
&lt;h3 id="the-first-trip">The first trip&lt;/h3>
&lt;p>Yuri&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> waited for us in the driveway of a bistro in a suburb just outside of Łódź. A Ukrainian doctor sporting a tracksuit and a three-day shadow, he was nearly in tears when my co-driver, &lt;a href="https://twitter.com/motherofcode">Ines&lt;/a> and I arrived. We brought with us a package we had acquired earlier in the day in Warszawa, a box of Celox z-fold hemostatic bandages, a type of advanced bandage that can stop bleeding from a gunshot wound in just a few minutes. Yuri had spent his entire day gathering badly-needed and hard-to-find medical supplies all over central Poland, and was heading to the southern border crossings the next day. On the verge of exhaustion, we handed him a bottle of water and parted our separate ways, him heading east, and us heading back west. &amp;ldquo;After I met you, I believed that this world still has a chance. You are completely not involved to this shit, but nevertheless helped us&amp;hellip; Thank you for that,&amp;rdquo; he texted later. There is a kind of life you live before a Ukrainian doctor from Kharkiv gives you a bear hug before heading off to a war zone, and a kind of life you live after.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/celox.jpg" alt="A box with a label indicating its contents: 30x z-fold gauze, 4x Celox bandages">&lt;/p>
&lt;p>Since the first weekend of the renewed Russian war in Ukraine, I&amp;rsquo;ve made two trips from Berlin to the Ukrainian border to deliver humanitarian aid. For the first of these trips, I connected with Ines, who had been organizing an early shipment of relief supplies from her home in the Netherlands. She started the #DriveForUkraine hashtag in an effort to raise awareness for the plight of war victims, soliciting humanitarian supplies and donations during the first days of the war. We connected on Twitter and when I saw that her planned route took her just south of Berlin, I offered to be a co-driver and try to drum up some more support among friends in Germany. I wrote my best friends, Em and Pao, to see if they wanted to join, and they rented a minivan and planned to join us on an impromptu three-day mission to the Ukrainian-Polish border.&lt;/p>
&lt;p>In Berlin, the shops are closed on Sunday, so after hastily organizing everything, I ducked out Saturday to run to Ikea with a plan to buy as many blankets as I could find. Pro-tip: the Ikea Silvertopp blankets measure 140x200cm and are rated medium-warm, cost only 6€, and are tightly rolled for easy transport. Our mission for this trip was simple:&lt;/p>
&lt;ol>
&lt;li>Deliver humanitarian relief where it could get to those in need;&lt;/li>
&lt;li>Bring marginalized evacuees who may not feel safe in shelters in Poland and bring them to Berlin;&lt;/li>
&lt;li>Forward financial support on to those in need.&lt;/li>
&lt;/ol>
&lt;p>On Monday we set out and made it to Poznań, a city only four hours from Berlin, but ten hours from the Netherlands, where Ines had departed after loading up her car that morning. We distributed our relief supplies between Ines&amp;rsquo;s car and our rental minivan, loading both up to the point where we could only barely safely see out the windows. In Poznań, we noted how distant the war still felt. There were few signs of anything out of the ordinary. We walked to Stare Miasto for dinner as people were leaving theaters and social engagements. Life felt normal. The next morning, the only sign of war was the non-stop coverage on the TV in the hotel lobby.&lt;/p>
&lt;p>With a destination still uncertain, we set our GPS vaguely in the direction of Zamość, stopping to load up on still more humanitarian supplies as we left: power banks, batteries, and cables. As we headed east towards the border, the war became increasingly present. Huge lines of tanker trucks, presumably carrying fuel, were an endless presence along the highway. Interestingly, many of these tanker trucks had signs indicating a flammable load, but the words &amp;ldquo;NUR FÜR LEBENSMITTEL&amp;rdquo; on the side, a German phrase that translates basically to &amp;ldquo;foodstuffs only.&amp;rdquo; I wondered if milk tankers had been converted to carry petrol for the war effort, if such a thing was even possible? I am aware of very few flammable liquid foodstuffs that commonly transport in tanker trucks.&lt;/p>
&lt;p>As we were about an hour away from the border, I noted the presence of high-altitude contrails in the sky headed east. &amp;ldquo;Those have to be military planes,&amp;rdquo; I remarked. &amp;ldquo;Nothing commercial is flying into Ukraine.&amp;rdquo; Sure enough, we soon saw military transport planes circling the skies, presumably delivering lethal and/or medical aid into Ukraine. A pattern of racetrack contrails belied what I later discovered to be an RC-135 electronic surveillance flight along the border. The feeling of war was unmistakable now.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/flight-over-poland.jpg" alt="Racetrack pattern contrails against a blue sky">&lt;/p>
&lt;p>Ines had drummed up a lot of media attention in the Netherlands, and using her connections with some Dutch news stations, we eventually identified a depot in Rzeszów that was collecting supplies to head inbound to Ukraine. We arrived that night just as they were loading a coach bus headed for the border. A bucket brigade of Polish volunteers helped us get supplies from our car into the bus, of particular importance were our medical and electrical supplies. There was, and still is, a massive need for medical aid as well as power banks, chargers, and cables. At the depot, behind a few sets of doors, young people, were performing military drills. Whether they were preparing to defend Poland against a future threat, or preparing to ship off to Ukraine to defend against the present one, I do not know.&lt;/p>
&lt;p>Information was and remains extremely hard to find among English-language sources. There is an immense amount of confusion about where supplies are needed and which supplies are needed. It&amp;rsquo;s not always clear which shelters are providing support for evacuees in Poland, or forwarding support on to Ukraine. The response is currently overwhelmingly being driven by grassroots organizations; while some NGOs like Deutsches Rotes Kreuz are evidently supporting at scale, the overwhelming support we have seen has come from independent groups from all over Europe doing direct outreach and networking. In many cases, this is much more effective, even if it isn&amp;rsquo;t as scalable. With these groups, we can guarantee we are getting the aid to people who need it, and who often fall through the cracks in what NGOs support.&lt;/p>
&lt;p>After dropping off supplies in Rzeszów, we set out seeking shelter. All local accommodations were booked, and though we had planned to sleep rough if needed, we did find some space in a hotel in Lublin, two hours away. We booked a couple of rooms and headed there for the night. The next morning, some evacuees were trying to check in early at the hotel, and we offered to pay their rooms for a few nights using the funds Ines had raised, which they gladly accepted.&lt;/p>
&lt;p>Our primary mission complete, we focused now on the secondary mission to bring people back to Berlin. Though we knew tons of people needed a ride, we were having trouble finding solid, verifiable information as to which depots needed the most help, and we had no success connecting with LGBT groups. One network didn&amp;rsquo;t understand our request. &amp;ldquo;But men are not allowed to leave,&amp;rdquo; we were told, as if the only LGBT folks were men. By far the biggest challenge at that point was still getting people out of Kyiv, Kharkiv, and other cities under attack.&lt;/p>
&lt;p>Pao had some connections in Warszawa, however, so we headed there for some food, rest, and regrouping. At this point we split up, two of us would go pick up a pair of Jewish teenagers and an Ethiopian Muslim woman who made it to Warszawa, and two of us would collect the medical supplies to deliver to Yuri, waiting in Łódź. After a successful day driving all over Poland, we eventually got everyone and everything to where it needed to be, and set back off for a long drive back to Berlin.&lt;/p>
&lt;h3 id="the-second-trip">The second trip&lt;/h3>
&lt;p>Fresh off the first trip, I watched closely as the situation at the border became increasingly desperate and saw tons of bad information floating around. Berlin has a public holiday on March 8 to celebrate International Women&amp;rsquo;s Day, and I had already scheduled Monday the 7th as a day off. Originally, I had planned to go to Italy for a long weekend, but there were more important things to do.&lt;/p>
&lt;p>I connected with a volunteer startup in Berlin on Telegram that was planning a relief convoy and volunteered myself as a co-driver. The group was better organized than we were in our first trip, and they had been collecting supplies at popular locations in Berlin throughout the week. Our mission was clear: two cars would bring volunteers to Przemyśl, and two vans would bring medical supplies, including defibrillators, hemostatic bandages, syringes, hand sanitizer, and more directly into the &amp;ldquo;neutral zone&amp;rdquo; between the Polish and Ukrainian border checkpoints, transfer them to a depot or another handler, and come back out. This was a little bit riskier than the earlier plan, as it involved actually driving into Ukrainian territory, but there were plenty of similar stories from other convoys where this exact exchange went off without a hitch. The plan was clear: meet on Sunday midday, drive to Przemyśl, arrange for who would be driving into the controlled zone, and spend the night in the shelter set up for volunteers.&lt;/p>
&lt;p>Unfortunately, those plans fell apart pretty quickly, as plans tend to do. After we were well en route to the border, we learned that passports were necessary to enter the neutral zone, and European ID cards would not suffice. Of all of our drivers, I was the only one who was in possession of a non-Russian, non-Ukrainian passport. That meant that to deliver the supplies, I would have to drive in alone, come back out, get the second load, and drive back in. No problem, I thought. We had support from the Ukrainian delegation in Berlin, and there should be no problems getting the supplies through.&lt;/p>
&lt;p>We arrived around midnight to the Korczowa-Krakovets border checkpoint. I dropped my co-driver at a nearby hotel and took his van into the checkpoint. Pretty soon I realized that the plan was much different than I envisioned. As soon as I crossed the Polish checkpoint, I realized there was no &amp;ldquo;neutral zone.&amp;rdquo; I would have to drive through Ukrainian passport control and customs and into Ukraine to deliver the aid. Alone. After midnight. With poor cell service and no translator until after customs. There was no turning back.&lt;/p>
&lt;p>Getting through passport control and customs was easy. There were a few other vans there also delivering aid. After the customs control, I met our Ukrainian contact and transferred the goods to her truck. As I left, I ended up behind two other German relief vans. They were let through. I was not. &amp;ldquo;Poland is closed&amp;rdquo; they told me.&lt;/p>
&lt;p>I was now stuck in Ukraine. Alone. After midnight. During a war.&lt;/p>
&lt;p>I got back in touch with my contact and she helped negotiate my transit. &amp;ldquo;Drive back the way you came,&amp;rdquo; I was told.&lt;/p>
&lt;p>I did that, and the Polish border guards told me that I couldn&amp;rsquo;t go that way. So I went back to the customs house and asked for help again, typing into Google Translate. &amp;ldquo;Drive up to the roundabout and come back in with the other cars&amp;rdquo; they told me. So I tried that, and was stopped by a soldier who told me to go back the way I came.&lt;/p>
&lt;p>Everyone I interacted with told me something different and wrong. One Ukrainian soldier was getting quite frustrated with me, understandably, but there was nothing I could do. Eventually, I found a guard who told me to use the gate behind the customs house. Ah hah! I had not seen the gate, because a bus had been parked in front of it. Eventually, he would come by to open it, and I was able to safely cross back into Poland with the large line of evacuees. Altogether, this took me around two hours in the middle of the cold, snowy night.&lt;/p>
&lt;p>The border crossing is difficult to explain. Group after group of women and children were being directed through my side of the customs control and sent into Poland, where they were received by border guards offering water, food, and warmth. It was quiet and calm the whole time, none of the children were crying or complaining, nobody seemed to be panicking or losing control. Despite their obvious frustrations with me, which I definitely deserved, the border guards in both countries were unfailingly polite and helpful. Despite being stuck literally in a war zone, I didn&amp;rsquo;t really feel unsafe, I was mostly worried about having to overnight in the back of the van with only a flimsy sleeping bag for warmth.&lt;/p>
&lt;p>After getting out, I met back up with the group and we decided to transfer the second load to someone in Przemyśl, and we headed off for the long drive back to Germany.&lt;/p>
&lt;h3 id="what-i-learned">What I learned&lt;/h3>
&lt;p>In brief:&lt;/p>
&lt;ul>
&lt;li>The situation changes hour by hour and it&amp;rsquo;s nearly impossible to know who needs what and at what time. You have to plan for flexibility.&lt;/li>
&lt;li>Grassroots movements are greatly outpacing NGOs in providing targeted aid and it&amp;rsquo;s not even a close game. NGOs are having trouble getting supplies into Ukraine.&lt;/li>
&lt;li>Some people have been saying to stop sending supplies because the shelters are full. This isn&amp;rsquo;t true. Clothes aren&amp;rsquo;t needed, but medical supplies, power banks, cables, warm socks, and more are still needed as of this writing. This may change by the time you read this.&lt;/li>
&lt;li>Most evacuees seem to be confident they will be able to return in weeks or months, not years.&lt;/li>
&lt;li>A lot of people are falling through the cracks: Muslim evacuees, third-staters, LGBT folks, and so forth. These people need the most help.&lt;/li>
&lt;li>The mobilization has been remarkable everywhere we&amp;rsquo;ve seen it. Massive volunteer areas set up in empty areas of Berlin Hauptbahnhof. Convoys of supply vans and passenger busses from all over Europe.&lt;/li>
&lt;li>The volunteer shelter in Przemyśl is absolutely not suitable for volunteers to sleep in.&lt;/li>
&lt;li>There was a run on gas and some stations along the highway were out. Others were out of cash.&lt;/li>
&lt;li>I really don&amp;rsquo;t recommend doing a neutral zone run unless you have to or unless you speak Polish, Ukrainian, or Russian. It&amp;rsquo;s complicated and risky.&lt;/li>
&lt;/ul>
&lt;h3 id="what-comes-next">What comes next&lt;/h3>
&lt;p>I doubt I&amp;rsquo;ll make another border run. It&amp;rsquo;s a three-day commitment and I can&amp;rsquo;t keep taking time off to make those trips. Instead, I&amp;rsquo;m taking in a Ukrainian family using my guest bedroom, and using my time to volunteer at Hauptbahnhof wherever I can. This war has created an immense humanitarian crisis and while it is true that standing around and getting in the way is worse than doing nothing, people still need volunteers, drivers, coordinators, translators, and money. Donate your time, your body, or your cash in some way!&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>Names changed to protect the innocent&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>An Antifascist's Position on Ukraine</title><link>https://emilygorcenski.com/post/an-antifascists-position-on-ukraine/</link><pubDate>Sat, 19 Feb 2022 15:54:37 +0100</pubDate><guid>https://emilygorcenski.com/post/an-antifascists-position-on-ukraine/</guid><description>&lt;p>A question recently arose on the responsibility of public antifascists to not loudly or starkly criticize the American position on Ukraine. Here is my response.&lt;/p>
&lt;p>The currently-deteriorating situation in Eastern Ukraine is an international tragedy regardless of how it is perceived. Russia invaded the region in 2014 and fighting has hardly abated since. As I write this, more than 150,000 troops are amassed near the Ukraine-Russia border. Many of these troops, it can be noted, are within Russian borders, but significant numbers of military personnel are engaging in military exercises in Belarus or are stationed in the contested regions of Crimea, Donetsk, and even Transnistria towards Ukraine&amp;rsquo;s southwestern border. Russia has surrounded Ukraine on three sides, and undoubtedly remains the aggressor in the conflict.&lt;/p>
&lt;p>The conflict has been the perfect breeding ground for fascist paramilitaries, which have emerged on all sides of the conflict. These groups, ranging from the Ukrainian nationalist Azov Battalion, to the Russian private military outfit Wagner Group, to war-tourism from American neo-Nazis like the Rise Above Movement, have used the conflict to develop military skills and strengthen international networks of far-right militants. At the same time, while Putin himself is not an open fascist, Russian domestic policy has not trended towards egalitarianism, but rather towards violent exclusion, which has ranged from LGBT persecution, to political oppression of dissenting voices, to military action in the largely-Muslim Chechnya region. Russia has also stretched its imperial muscle, invading not just Ukraine in 2014, but claiming the regions of Abkhazia and South Ossetia from Georgia in 2008. More recently, Russian forces helped quell dissent in Kazakhstan and Belarus, two former Soviet states which are of strategic importance to Russia.&lt;/p>
&lt;p>With this thirty-second summary, one might conclude that antifascist opposition to Russia&amp;rsquo;s domestic policies and imperialist posture is a logical conclusion, and one would be correct. The tendency among Western authoritarian &amp;ldquo;leftists&amp;rdquo; to defend Russia on the basis that Russia opposes the US is naive and ignorant. But this is not the dispute. Rather, the question remains whether the antifascist position therefore compels support of the US and the Biden administration when examining the conflict in Ukraine. Liberals and Progressives have argued that since they believe Putin&amp;rsquo;s Russia to be a fascist regime, that opposition to Putin&amp;rsquo;s endeavors is an antifascist act. Since the US opposes these measures, the US is therefore opposing Russian fascism.&lt;/p>
&lt;p>This premise is flawed. To argue that the American position on Ukraine is an act of antifascist solidarity with the Ukrainian people is to argue that America is an antifascist state. As seen by America&amp;rsquo;s own domestic policy, which includes increasing legislative attacks against transgender people, intense levels of police violence largely targeting Black people, and horrific border policies that intern asylum seekers, America can make no moral claim, historical or contemporary, that it stands against fascism. America is not opposing Russia as an act of antifascist solidarity. America is opposing Russia as a means to maintain its position as a global superpower, and has been doing so under what it sees as increasing threats to its supremacy from China and Russia. America is not going to invade Russia, it is not going to seek to depose Putin from his seat of power, it is not going to grant asylum to large numbers of persecuted Russians. America poses no present threat to Russia&amp;rsquo;s fascistic domestic policies.&lt;/p>
&lt;p>As a result, the American position in the Ukraine crisis has been notably more panicked than that of its European allies or even Ukrainian politicians themselves. The Biden administration has been pushing aggressive messaging warning of a Russian re-invasion of Ukraine. These messages have been uncharacteristically intense and with little room for speculation. As early as January 25, the Biden administration &lt;a href="https://abcnews.go.com/Politics/us-warns-russian-attack-imminent-ukraine-disagrees/story?id=82463780">claimed that a Russian invasion was &amp;ldquo;imminent.&amp;quot;&lt;/a> This messaging has continued for the last three weeks, with &lt;a href="https://www.politico.com/video/2022/02/17/biden-moscow-carrying-out-a-false-flag-operation-russian-attack-on-ukraine-imminent-476280">Biden claiming again yesterday&lt;/a>, February 17, that an attack was again imminent.&lt;/p>
&lt;p>Many of these positions have been disputed by none other than Ukrainian President Volodymyr Zelensky, who has repeatedly called on the United States to stop inciting panic and who &lt;a href="https://www.yahoo.com/video/warnings-russian-invasion-stoking-panic-174131863.html">challenged the Americans&lt;/a> to show proof of the impending invasion. The rhetoric from the US has not been without impact: on January 28, Zelensky &lt;a href="https://foreignpolicy.com/2022/01/28/ukraine-urges-the-west-to-chill-out/">claimed Western rhetoric harming the Ukrainian economy&lt;/a>. His party repeated this claim on February 15, saying that &lt;a href="https://www.zeit.de/wirtschaft/2022-02/russland-ukraine-krise-wirtschaft-schaden-2">Western &amp;ldquo;hysteria&amp;rdquo; was costing Ukraine $2-3 billion monthly&lt;/a>. A quick scroll of social media feeds from people in Kyiv report that life there is largely normal with little cause for panic. Biden himself &lt;a href="https://twitter.com/POTUS/status/1494863649500168193">tweeted defensively&lt;/a> about his administration&amp;rsquo;s language. So what explains the difference between American messaging and Ukraine&amp;rsquo;s daily experience?&lt;/p>
&lt;p>American liberals believe that Biden is playing some form of three-dimensional chess. They argue that by publicly announcing Russian plans to invade, they are flexing their intelligence skills and thereby forestalling Putin&amp;rsquo;s plans. Frankly, I find this argument to be naive and dishonest. Diplomatic channels remain open between the United States and Russia, and while it is not unheard of for a country to inform its opposition that they are aware of plans for an attack, it is highly unusual to use the megaphone of international media to do so when much more subtle channels are available.&lt;/p>
&lt;p>Moreover, it is absurd to imagine Putin in his palace watching CNN, throwing a hissy fit while Biden announces his carefully-laid plans on air. The CIA is not the Scooby Gang, and Putin is not a man under a sheet who would have gotten away with it if not for those meddling kids. For Biden, this logic creates a win-win situation: if Russia invades, then he was right; if Russia does not invade, then his genius statecraft paid off. In any case, the administration holds itself above critique. Antifascists ought not to fall for such logical traps.&lt;/p>
&lt;p>No, the only reason to use the press as a messaging service is when the target audience is not Russia and Putin, but rather the rest of the world. America is signalling to the rest of the world that despite multiple ongoing crises, including the world&amp;rsquo;s worst COVID response, that it still remains a global superpower. Nobody except Putin, and even then maybe not even Putin, knows what Putin is about to do in Ukraine. But the Biden adminstration has manufactured a global consensus that war is probable, that war is likely, that &lt;a href="https://www.wsj.com/articles/ukraine-troops-told-to-exercise-restraint-to-avoid-provoking-russian-invasion-11645185631">war is imminent&lt;/a>, and that &lt;a href="https://www.cnn.com/2022/02/18/politics/joe-biden-russia-ukraine/index.html">Biden himself is convinced&lt;/a> it is all but unavoidable. While Russia is no doubt the aggressor, and is itself clearly attempting to manufacture a justification for invasion, America has done everything in its power to eradicate any remaining doubt that war is coming. This has been profitable to American arms manufacturers. In the past year, &lt;a href="https://www.npr.org/2022/01/22/1075064514/ukraine-lethal-aid-us-russia">at least $650 million in US-made arms&lt;/a> have been sent to Ukraine. This includes automatic weaponry, ammunition, and anti-air and anti-armor missiles. America, not Ukraine, benefits from the belief that war is inevitable.&lt;/p>
&lt;p>This approach should cause concern for any antifascist. While Russia holds culpability for bringing us to the brink of war, America likewise holds culpability for creating a long-term ecosystem where peace and diplomacy seem impossible, and where war, either now or later, is destined to break out. America and the United Kingdom have now flooded an unstable Ukraine with the world&amp;rsquo;s most advanced military weaponry at great profit; &lt;a href="https://www.independent.co.uk/news/world/europe/russia-ukraine-balkans-eu-nato-b2017429.html">Russia is doing the same&lt;/a> in the Balkans, where increasing fascist tendencies and ethnic strife are threatening once again to destabilize the region. Moreover, it is not &amp;ldquo;both-sidesism&amp;rdquo; to point out that the free-flow of military weaponry and the economic devastation of a nation is unlikely to sustainably impede fascism or prevent war. In any case, the two &amp;ldquo;sides&amp;rdquo; in the Russia-Ukraine conflict are Russia and Ukraine, not Russia and the United States. Criticizing America&amp;rsquo;s heavy-handed approach to the conflict is not the same as blaming Ukraine for being invaded. Conversely, criticizing America&amp;rsquo;s heavy-handed approach is also not a call towards isolationism or the abandonment of the Ukrainian people. Antifascism must involve abolishing false binaries, too.&lt;/p>
&lt;p>At the end of the day, we must acknowledge that statecraft is not the path to antifascism. America is acting out of her own best interest, not in the interest of eradicating fascism. It is irresponsible to allow the Biden administration to hold an unassailable position, just as it is irresponsible to claim that Russia is anti-imperialist for opposing the United States. It is not an appeal to &amp;ldquo;both sides&amp;rdquo; when America has decided to draw the lines itself; in any case, calling out &amp;ldquo;both sidesism&amp;rdquo; presumes one of the sides is morally beyond reproach.&lt;/p>
&lt;p>America has a history of manufacturing wars and antifascists are right to question the media narrative that the American presidency generates, particularly when the &lt;a href="https://nationworldnews.com/biden-administration-officials-to-reporters-demanding-proof-just-trust-us/">Biden administration lashes out at journalists and insists that we have to &amp;ldquo;just trust&amp;rdquo; them&lt;/a>. Questioning and criticizing American claims on Ukraine, particularly through the lens of similar critiques by Ukrainians, is similarly not a capitulation to the Russian position. Antifascism is an act of continuous solidarity with people, not governments. There is no horse trading in matters of antifascism, certainly not when choosing between two military superpowers with horrific domestic track records on civil liberties. Antifascism is an act of community solidarity; war is an act of global dominance. Rarely do these align, and never do they align for long.&lt;/p>
&lt;p>If Russia invades Ukraine, the result will be a tragedy for the Ukrainian people. Antifascist solidarity means dismantling the apparatus of war, disarming and disempowering the fascist paramilitaries, and building a society where borders are matters of mere historical trivia. If we call for the inevitability of war, we might just get what we ask for.&lt;/p></description></item><item><title>Aus dem Verkehr gezogen</title><link>https://www.jungewelt.de/artikel/418865.rechte-gewalt-aus-dem-verkehr-gezogen.html</link><pubDate>Thu, 20 Jan 2022 10:34:21 +0100</pubDate><guid>https://emilygorcenski.com/post/aus-dem-verkehr-gezogen/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/162261.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/162261.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/162261.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/162261.jpg" width="600"/></media:content><description>&lt;p>Ich habe mit Junge Welt über das Thema &amp;ldquo;Atomwaffen Division&amp;rdquo; geredet.&lt;/p></description></item><item><title>The Myth of Decentralization and Lies about Web 2.0</title><link>https://emilygorcenski.com/post/the-myth-of-decentralization-and-lies-about-web-2.0/</link><pubDate>Fri, 07 Jan 2022 16:05:28 +0100</pubDate><guid>https://emilygorcenski.com/post/the-myth-of-decentralization-and-lies-about-web-2.0/</guid><description>&lt;p>The hype around &amp;ldquo;web3&amp;rdquo; has led to a revisionist history of what &amp;ldquo;web2&amp;rdquo; was and in this rewriting of history, web3 tells a convenient myth about decentralization. Here&amp;rsquo;s why it matters.&lt;/p>
&lt;p>Blockchain has gotten a bad name. A promising technology found widespread adoption with the development of Bitcoin and other cryptocurrencies, and lately the NFT trend, seemingly manufactured overnight, has promoted as much ridicule as it has created debate about next-generation digital marketplaces. Proponents of these technologies have adopted the moniker &amp;ldquo;web3&amp;rdquo; as an umbrella term to describe the trend of creating alternative marketplaces based on the blockchain. Evangelists for web3 claim it is a movement about decentralization, a sea change from what they claim is the defining trend of &amp;ldquo;web2,&amp;rdquo; also known as the web we experience today.&lt;/p>
&lt;p>The early days of the World Wide Web, which now bears the retronym Web 1.0, gave us a promise of a decentralized and democratized way of sharing information. Web 1.0 was truly revolutionary; it stood in stark contrast to any other information sharing mechanism in all of human history. The idea was simple: people who held information could make that information available at will, with few mediating influences. Information was to be free and with as few barriers to access as possible. Fundamentally, the idea was that the web should become a decentralized information mesh that spanned the globe.&lt;/p>
&lt;p>This approach was not without its challenges, of course. Decentralized networks create a discovery problem, where you can&amp;rsquo;t find information if you don&amp;rsquo;t know where to look. The maturation process of Web 1.0 involved the development of tools and practices for information discovery: search engines, knowledge repositories, purpose-built forums, and so on. Web 1.0 was never supposed to be a competition, but if it was, then its winners were those who provided services for &lt;strong>information discovery&lt;/strong>. The decentralized web was a challenge to navigate, and they made it easy to do so at scale.&lt;/p>
&lt;p>But in Web 1.0 another trend emerged: the development (and migration) of communities into Web 1.0 spaces. Communities became a crucial source of knowledge discovery, and forums and chat rooms and the like proliferated in the Web 1.0 era. By the end of the cycle, we had developed the technology to make dynamic serving of content pretty easy, but even though the content was dynamic, the process still followed the same patterns: request information, serve information, consume information. In other words, nearly everything was still a web page, even if those web pages were generated on the fly.&lt;/p>
&lt;p>As this era came to an end, we began to see another problem in this model: as people began adopting the internet, the internet still represented a separate part of our identities. While it was easy to find a forum for almost any interest, from car enthusiasts to horticulturists, people began to feel like their identities in these spaces reflected only a part of who they were. Moreover, Web 1.0 failed to create a shared experience in the offline world. Web 1.0 was perfectly suitable for early adopters, but as more people went online, we began to find that it was harder and harder to connect and share our online lives with our offline friends and vice versa. Enter Web 2.0.&lt;/p>
&lt;p>If Web 1.0 was about information discovery, Web 2.0, now retroactively named web2, was all about &lt;strong>people discovery&lt;/strong>, aka social networking. Web 2.0 became about integrating the internet with our daily lives. The gap between your online and offline selves began to close. More and more of our life would be mediated through the internet, from ordering pizza delivery to scheduling an oil change. But more than that: we&amp;rsquo;d begin to share our lives online in ways that were not restricted to cloistered communities, each with their own shibboleths. The social networking era began with Web 2.0, and those who have emerged as social networking giants often didn&amp;rsquo;t start out that way. Twitter&amp;rsquo;s core functionality as a microblogging platform has changed very little since its launch, but few could have seen it emerge as a major culture moderator when it first went live. Today, it&amp;rsquo;s commonplace to see cable news talking about who tweeted what.&lt;/p>
&lt;p>Social networking depends on content development. Web 2.0 sought to address the biggest challenge that plagued Web 1.0: content creation is difficult. Coding is really only fun for coders; for everyone else it is a huge and expensive pain in the ass. Web 1.0 was about finding content; Web 2.0 was about generating content. Web 1.0 waited for the content to come to it; Web 2.0 went to where the content was. This required a massive lowering of the barrier for content creation. It also meant that we needed to usurp the request, serve, consume cycle of Web 1.0. Web pages needed to become information streams; maturation of frameworks like jQuery helped developers produce dynamic content served on pages that didn&amp;rsquo;t refresh, a small but significant change in user experience that transformed the mental model of users of the Web. The web became about serving applications and experiences, not just content.&lt;/p>
&lt;p>By lowering the bar to content creation, what Web 2.0 actually achieved was the simplification of sharing. It became easier to &lt;em>distribute&lt;/em> knowledge, rather than just discover it. The ability to push content to our friends and followers enabled upheavals in media and culture; blogs became reliable sources of news, celebrities found news ways to engineer their public image, and we could interact with the rich, powerful and famous in ways we never could have before. Web 2.0 flattened the world. Institutions that were historically out of reach had their gates torn down. Web 2.0 was as much about decentralization as Web 1.0, except it was now culture, not information, that was being distributed.&lt;/p>
&lt;p>This interpretation stands in contrast to the claims that web3 advocates make. They claim that web2 is a centralized mess dominated by technology megacorporations and web3 is now about &lt;strong>content ownership&lt;/strong>. In order to achieve these goals, they must create an entirely new operating model for the web, one built on the blockchain. Blockchain is in effect a grand distributed public ledger to which anyone can read or write. Of course, distributed systems are very hard, so blockchain achieves this by applying advanced mathematics to ensure consensus across systems. The effect is that entries into the blockchain become effectively permanent over time and that if we look at the blockchain as a massive ledger that encodes the idea of the &lt;em>state&lt;/em> of a system over time, then we avoid risks inherent to centralization because no entity can control the content in the ledger; they can only read from it and append to it.&lt;/p>
&lt;p>This is, admittedly, a very powerful idea. The challenges of Web 1.0 and Web 2.0 around ownership, censorship, and digital rights are highly nontrivial ones. For web3 enthusiasts, these issues are existential threats to the web, threats that web3 will eradicate simply by eliminating the question. There can be no debate on the power or responsibility to censor if there is no ability to censor. Web3 evangelists believe Web 2.0 is a highly-centralized mess, and they&amp;rsquo;re not wrong: companies like Google, Facebook, and Twitter have become culture drivers at an unfathomable scale, in some cases immune even to the world&amp;rsquo;s most powerful governments. In this regard, web3 advocates are not wrong. Web 2.0 has become extremely centralized.&lt;/p>
&lt;p>But what web3 gets wrong is that Web 2.0 was &lt;em>about&lt;/em> centralization. This is not the case. A brief glance at the edit history of the Wikipedia page for Web 2.0 shows that Web 2.0 was itself all about decentralization. In &lt;a href="https://en.wikipedia.org/w/index.php?title=Web_2.0&amp;amp;oldid=20331690">a 2005 version of the page&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, we can see this vision of decentralization spelled out plainly:&lt;/p>
&lt;blockquote>
&lt;p>The first and most important evolution towards Web 2.0 involves the syndication of website content, using standardized protocols which permit end-users to make use of a site&amp;rsquo;s data in another context, ranging from another website, to a browser plug-in, or a separate desktop application. Protocols which permit syndication include RSS, RDF (as in RSS 1.1), and Atom, all of which are flavors of XML. Specialized protocols such as FOAF and XFN (both for social networking) extend functionality of sites or permit end-users to interact without centralized websites.&lt;/p>
&lt;/blockquote>
&lt;p>Web 2.0 was created with the same vision of a decentralized mesh of information as Web 1.0; fundamentally, it was about shifting the web from serving information to serving experiences. At the center of these experiences were community building, collaboration, and social networking. If Web 1.0 was a pull model, Web 2.0 would become a push model. The intention of Web 2.0 was never to consolidate the power of the web into the hands of a few companies that would be beyond reproach. But this is not how web3 advocates present it.&lt;/p>
&lt;p>This matters, because while Web 2.0 failed at preventing centralization, we need to explore how and why these failures occurred. Without a proper retrospective analysis of what Web 2.0 was &lt;em>trying&lt;/em> to do and why it failed, we risk repeating these failure modes with web3. Indeed, &lt;a href="https://moxie.org/2022/01/07/web3-first-impressions.html">as Moxie points out&lt;/a> in his blog, the actual tech stack that web3 is being built on is woefully inadequate at preventing these same failures from recurring. While the blockchain offers promise in addressing some of the challenges present in Web 2.0, the blockchain alone does not comprise the entirety of the web3 experience. In fact, the complexity of working on the blockchain means that the barrier for entering this space is somewhat higher, and as a result there are few companies building the required interfaces and window dressing needed to make the blockchain viable in the day-to-day experience of ordinary people. The effect is that while the blockchain may be decentralized, we are building an entire scaffold of highly-centralized services needed to interact with it, and these tools are being built with far less rigor and control expected of Web 2.0 players.&lt;/p>
&lt;p>None of these things are dealbreakers for web3; the approach is still immature and these problems are not insoluble. The problem is that by telling a lie about the intentions of Web 2.0 and promoting the myth of decentralization, web3 advocates are attempting a razzle-dazzle maneuver to distract from these very important matters. By making web2—even going so far as to renaming it—about centralization and web3 about decentralization, web3 advocates claim it is virtuous because it is starting out with better intentions.&lt;/p>
&lt;p>This is a fallacy. One cannot compare the &lt;em>promises&lt;/em> of web3 to the &lt;em>problems&lt;/em> of web2. It would be more appropriate to compare the starting point of web3 to the starting point of web2. There are no guarantees that web3 will not repeat the same mistakes that web2 made, or that it doesn&amp;rsquo;t have the same vulnerabilites to exploitation prevalent in web2. Indeed, early examples such as those pointed out in Moxies blog seem to indicate that web3 advocates would rather ignore these questions. Web 2.0 is giving web3 an early head start: we know exactly what problems will arise in online spaces. By refusing to address these challenges or even acknowledge that these challenges are not inherently solved by the blockchain, we are left with little faith that web3 will actually succeed at achieving its vision for decentralization any better than Web 2.0 did. In fact, it&amp;rsquo;s worse, because web3 advocates have priors that Web 2.0 did not have. How can I be sure your utopia addresses the problems I am currently having if you will not even address those problems on face value?&lt;/p>
&lt;p>This lack of trust is exacerbated by the gold rush mentality of web3. Some claim web3 is about ownership, but it is more appropriate to say that web3 is about wealth. Very little in the web3 advocacy space addresses how it will match Web 1.0 and 2.0&amp;rsquo;s successes in terms of discoverability and sharing. It offers little by way of guarantee that it will protect its users' digital rights, in some cases making them much worse because of the blockchain&amp;rsquo;s immutable nature. Centralization was an emergent property of Web 2.0, not an intended behavior. By reframing Web 2.0 as &lt;em>centralized by design&lt;/em>, web3 exposes itself to the exact same threats that caused Web 2.0 to be &lt;em>centralized by effect&lt;/em>. This is enough to merit caution when embracing the web3 mentality. This is not to say that blockchain and web3 tech doesn&amp;rsquo;t have some promise, or that the centralization inherent in Web 2.0 is a positive. But rather we should be exploring ways to decentralize safely, while honestly exploring how we failed to prevent centralization. Simply restating intentions isn&amp;rsquo;t enough.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>h/t to &lt;a href="https://twitter.com/RichFelker/status/1474935644015284234">Rich Felker&lt;/a>&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>The Relentlessness of Trauma</title><link>https://emilygorcenski.com/post/the-relentlessness-of-trauma/</link><pubDate>Thu, 30 Dec 2021 23:39:57 +0100</pubDate><guid>https://emilygorcenski.com/post/the-relentlessness-of-trauma/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/cville-downtown.jfif"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/cville-downtown.jfif" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/cville-downtown.jfif" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/cville-downtown.jfif" width="600"/></media:content><description>&lt;p>The scars of our collective trauma become more visible and more permanent as we enter Year Three of the COVID-19 pandemic. Every failure in leadership and governance and policy abrades what remaining protective shell we have guarding our hope. What we lose in the trauma, and what we can learn, as someone living it for years before.&lt;/p>
&lt;p>I had been seeing a therapist for a few years already when the &lt;a href="https://www.upress.virginia.edu/title/5323">Summer of Hate&lt;/a> came to Charlottesville, my home for nearly a decade. As a specialist in LGBT issues, she naturally also had experience with trauma: queer people are &lt;a href="https://www.apatraumadivision.org/files/56.pdf">disproportionately affected&lt;/a> by traumatic stressors, in particular the kind of hate-based violence brought to our community that summer. That weekend I was part of a group of students and community members beaten by a torch-wielding mob; the next day, I narrowly avoided the terror attack that killed Heather Heyer. My therapist cleared some space in her calendar a few days later.&lt;/p>
&lt;p>We think about traumatic stressors as acute events, and of course many are. Terrorism, violence, death of a loved one: these are all things that can happen suddenly and painfully, leaving a deep scar in our psyche. In the narrative arc of trauma, we begin as fulsome if not naïve protagonists against whom some singular horror is befallen, breaking our souls but mostly our innocence, the master reveal in the final act being the demons that we must fight have always been the ones inside of us. I described to my therapist the moments that resonated from that weekend: the citronella and kerosene stench of the tiki torches, the way the scene of the car attack went silent in my mind despite the agonizing screams of the dozens of injured. I asked my therapist if this is what people with PTSD go through. Sometimes, she told me, but you don&amp;rsquo;t have PTSD yet. The &lt;a href="https://www.ncbi.nlm.nih.gov/books/NBK207191/box/part1_ch3.box16/">diagnostic criteria&lt;/a> of Post-Traumatic Stress Disorder often take months to meet. She explained that there was nothing &amp;ldquo;post&amp;rdquo; about what I was experiencing, that it was the acute response to one set of events that were more likely than not going to be part of a chain of ongoing stressors. Trauma is often an accumulated harm.&lt;/p>
&lt;p>After the hour ended, I walked out to my truck and turned on my phone and saw a text from my wife. If your session went well, she said, don&amp;rsquo;t look at the news. Donald Trump had just made &lt;a href="https://www.youtube.com/watch?v=JmaZR8E12bs">his &amp;ldquo;very fine people on both sides&amp;rdquo; comments&lt;/a>. My phone vibrated with an email. The Guardian was asking me &lt;a href="https://www.theguardian.com/commentisfree/2017/aug/15/mr-trump-were-not-same-neo-nazis-charlottesville?CMP=twt_gu">to respond&lt;/a> to the President&amp;rsquo;s statement.&lt;/p>
&lt;p>The next day, I attended Heather Heyer&amp;rsquo;s funeral. Upon returning home, I learned that half &lt;a href="https://www.pymnts.com/news/banking/2017/tech-startup-simple-layoffs/">my team were laid off&lt;/a>. A chain of ongoing stressors, indeed.&lt;/p>
&lt;hr>
&lt;p>COVID-19 is a disease that sprung directly from our deepest anxieties: a highly-contagious, lethal, airborne virus capable of killing young, healthy people, with few known effective treatments as it began to circulate the globe. We watched in horror as a Chinese doctor&amp;rsquo;s wife in a biohazard suit ran wailing after a car carrying his body drove away. We saw convoys of military trucks carrying away bodies in Italy. We witnessed mass graves being dug on an island in New York City. We did not ask for this, we were innocent.&lt;/p>
&lt;p>The diagnostic criteria for PTSD do not admit repeated exposure to stressors through electronic media, unless this is related to a necessary work function, such as a law enforcement officer investigating a crime. Nevertheless, these images did traumatize, particularly as they were happening in places we recognized—global north places—and to communities that we didn&amp;rsquo;t expect to be so powerless. As the virus spread, it began to infect and kill people we knew, friends of friends, or community figures. Regardless of whether the disease affected our family, our friends, or ourselves, our lives were suddenly altered. Work and school shifted to be remote overnight. Lockdowns of varying severity prevented us from eating out or going to the movies or a ball game or a museum. Vacation plans were put on hold, families weren&amp;rsquo;t even able to attend the funerals of loved ones the virus took away.&lt;/p>
&lt;p>Of course, &lt;a href="https://www.sciencedirect.com/science/article/pii/S016383432100102X?via%3Dihub">those who experienced the disease firsthand&lt;/a> and their loved ones are vulnerable to post-trauma symptoms. &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7828167/">Healthcare workers&lt;/a> have shown higher vulnerability to mental traumas during this and other pandemics. Secondary effects, such as &lt;a href="https://www.ucdavis.edu/curiosity/news/covid-19-isolation-linked-increased-domestic-violence-researchers-suggest">increased rates of domestic violence&lt;/a>, contribute as well. Research from early 2021, one year into the pandemic, shows that even without first- or secondhand exposure to COVID, to the pandemic experience &lt;a href="https://pubmed.ncbi.nlm.nih.gov/33428630/">presents like PTSD&lt;/a> even though it does not fit perfectly into the diagnostic criteria.&lt;/p>
&lt;hr>
&lt;p>The news cameras left Charlottesville soon after the events of August 2017. The journalists who parachuted into town filed their copy and left just as quickly, the relentless media cycle granting no rest for the wicked. The narrative arcs were clean and simple: an innocent college town was besieged by neo-Nazis from out of state and, having borne witness to a brand of hate long assumed extinct, must now reckon with its own historical legacies cast in bronze and mounted atop pedestals of granite and concrete. Trauma was a thing that happened to Charlottesville.&lt;/p>
&lt;p>Most of those cameras weren&amp;rsquo;t present as the racists kept coming back, flying their banners of hate, harassing townsfolk, marching with tiki torches. They didn&amp;rsquo;t capture as I was swatted by a neo-Nazi. Few wrote about the death threats the community received. &amp;ldquo;Charlottesville&amp;rdquo; stopped being a name for a place, becoming now a name for a moment in time.&lt;/p>
&lt;p>Charlottesville was never and has never been about that moment in time. For many of us, what happened in August 2017 is simply one moment in an ongoing chain of events that occurred for centuries before and have continued to occur in the years since. Each of these events, from the car attack to &lt;a href="https://wina.com/news/064460-mcmahon-pleads-guilty-to-threatening-gathers-second-victim/">the targeted harassment of a Black candidate for City Council&lt;/a>, were traumas borne by our entire community. &lt;a href="https://www.preventioninstitute.org/sites/default/files/publications/Adverse%20Community%20Experiences%20and%20Resilience.pdf">Community Trauma&lt;/a>, as it is called, can have generational effects among those who live there. Even individually traumatic events have a community component: the support structures of the affected help bear the burden of that trauma.&lt;/p>
&lt;p>The natural reaction after the events of Unite the Right was to seek justice for the things that were done to our community. Criminal charges were brought, lawsuits were filed, and an entire network of activists nationwide banded together to bring a measure of accountability to the wrongdoers. But this, too, was traumatic. We listened attentively as witnesses recounted the terror of mob violence. We waited with agonizing impatience for juries to deliberate, the anxiety flowing out of our ears at the thought that the assailants might be acquitted. We watched as &lt;em>our&lt;/em> grief won all the prestige awards: an Emmy here, a Pulitzer there, mostly given to those same journalists who parachuted in from out of town. I often wake up to an email either thanking me for my work, or telling me I was a Soros-backed shill who should start counting the days until I would be hanged.&lt;/p>
&lt;p>I volunteered for this, of course. Fighting back became my way of asserting control over the trauma, an alchemy by which I would imbue my suffering with meaning or value, convinced that if I had to suffer, I didn&amp;rsquo;t have to suffer for &lt;em>nothing&lt;/em>. At times I would see the trauma as a gift, the grinding stone with which I could sharpen my rage, the steel with which I could stiffen the aegis needed to protect my community or another from having to endure this needless horror ever again. I won&amp;rsquo;t say it wasn&amp;rsquo;t in vain. But it wasn&amp;rsquo;t enough.&lt;/p>
&lt;hr>
&lt;p>Rage has become a familiar traveling companion in the second year of the pandemic, a year that brought us the eminently foreseeable mutations of the virus. The latest of these mutations has evolved to sidestep many of the protections offered by COVID vaccines, the one true beacon of hope that helped carry us through the first twelve months of the nightmare. Our rage boils through our trauma, erupting in bursts of anger on social media, or from time to time in actual physical violence. We blame anti-vaxxers for the insufficiently low vaccination rates needed to achieve immunity; anti-vaxxers take to the streets and storm government buildings to protest infection control measures. Those who are not behaving like us, those who do not take this as seriously as we do, become easy targets for our rage. How dare you travel? How dare you eat out? You—&lt;em>you!&lt;/em>—you are to blame for our prolonged situation, our collective nightmare could be ended if only you approached this with my selfsame gravitas. Do you not care for the elderly, the children, the immunocompromised?&lt;/p>
&lt;p>This alkaline fury is familiar to me in the wake of Unite the Right. How dare you not oppose Nazis? How can you be indifferent to the most serious terror threat of the contemporary era? Your apathy is complicity, after all I almost &lt;em>died&lt;/em> trying to stop it. Where were you!?&lt;/p>
&lt;p>I still feel this way.&lt;/p>
&lt;p>We direct many of our pandemic grievances towards the only institution large to carry them all and slow enough to react with a damped response: our governments. In the early days, we looked to our government centers and agencies to give us direction, seeking public service from those who have dedicated their lives and careers to public service, only to find our trauma compounded by their collapsing integrity. Poor guidance on masks, lack of consistent and timely data on disease dynamics, and ultimately, overwhelming capitulation to corporations whose profit motives point the complete opposite direction from our personal wellbeing have eroded the public trust in the organizations we were supposed to revere. The Centers for Disease Control and Prevention were once considered to be the gold standard in infectious disease epidemiology; now they are reduced to the punchline of a lazy meme, their advice no longer trustworthy in a time where uncertainty compels a need for staid leadership.&lt;/p>
&lt;hr>
&lt;p>I can&amp;rsquo;t remember life before Unite the Right. I recall events, some with great fondness and joy. I remember my wedding, sailing in my childhood best friend&amp;rsquo;s boat on the lake in my hometown, and every beer league ice hockey goal I&amp;rsquo;ve ever scored. A few nights ago, I was driving home from running errands in Charlottesville and realized I had no memories of driving home in the winter evening dark. I surely must have; the earth has not changed its axial tilt. I know factually that I shopped at a specific Kroger for several years before my wife and I bought our house, but as I write these words I cannot conjure a single memory of what the store looks like inside.&lt;/p>
&lt;p>Trauma robs us of those little pieces that compose our identities. In the pandemic, we talk about the &lt;em>before times&lt;/em>, some of us questioning whether they will ever come back, some of us acting as if they have never gone away, and others hoping that they never do. The so-called &lt;em>negative alterations&lt;/em> that we see—the anger, the violence, and the outrage against those who dare to experience joy—are traumatic indicators. Maybe we feel like the pandemic is something that is happening to each of us personally because we are accustomed to seeing trauma, even collective trauma, as something that happens to individuals. Perhaps because COVID is something that can be healed from and vaccinated against, we are silently hoping for an inoculation against trauma or a remedy against our mental anguish.&lt;/p>
&lt;p>When traumatic events happen to or in communities, we often ask how we can help the community heal. But trauma isn&amp;rsquo;t a thing that communities or individuals heal from: it&amp;rsquo;s something they must move beyond. It&amp;rsquo;s possible that we collectively forget the before times much as I have forgotten the layout of my former local supermarket. To recover, we have to be willing to create the environment where the effects of trauma cannot flourish, and that means that we need to choose the kind of community we want to be. It also requires us to recognize that we have been traumatized and that this is reflected in our behaviors. We can accept those behaviors without guilt: after all, there is nothing wrong with being mad at the government for a failed COVID policy. There is no blame in feeling hopeless.&lt;/p>
&lt;p>The pandemic started some two-and-a-half years after Unite the Right. It was a cruel irony that just as I was ready to start defining what my world after trauma would look like, the world itself became incompatible with that joy. What doesn&amp;rsquo;t kill you doesn&amp;rsquo;t actually make you stronger; you are not magically more resilient for having survived a traumatic experience. I have, during this pandemic, felt the same anger, hopelessness, resentment, and loss that so many others have felt. But my experience recovering from trauma has given me better tools to manage the stressors, to prevent those responses from flaring up. I have my own version of the &lt;em>before times&lt;/em> and I have learned to accept that they are not coming back. I have learned how to recognize my stressors and responses and how to manage them not through avoidance, but by seeking the support of the community around me. Together, we will all have to do that, too.&lt;/p></description></item><item><title>What Will Jurors Make of Charlottesville Trial Defendants’ Incoherent Defense?</title><link>https://slate.com/news-and-politics/2021/11/defendants-in-charlottesville-rally-trial-had-no-coherent-strategy.html</link><pubDate>Sun, 05 Dec 2021 23:20:04 +0100</pubDate><guid>https://emilygorcenski.com/post/what-will-jurors-make-of-charlottesville-trial-defendants-incoherent-defense/</guid><description>&lt;p>For Slate, Molly Conger and I wrapped up our analysis of the landmark Unite the Right civil suit while waiting for the verdict.&lt;/p></description></item><item><title>White Supremacists Have Returned to Charlottesville in Another Attempt to “Unite the Right”</title><link>https://slate.com/news-and-politics/2021/10/with-the-charlottesville-trial-white-supremacists-try-again-to-unite-the-right.html</link><pubDate>Fri, 29 Oct 2021 06:00:00 -0400</pubDate><guid>https://emilygorcenski.com/post/white-supremacists-have-returned-to-charlottesville-in-another-attempt-to-unite-the-right/</guid><description>&lt;p>Molly Conger and I analyzed jury selection in the landmark Unite the Right civil suit for Slate.&lt;/p></description></item><item><title>Matthew Heimbach and the Left’s Vulnerability to Fascist Infiltration</title><link>https://therealnews.com/matthew-heimbach-and-the-lefts-vulnerability-to-fascist-infiltration</link><pubDate>Mon, 04 Oct 2021 09:48:18 +0200</pubDate><guid>https://emilygorcenski.com/post/matthew-heimbach-and-the-lefts-vulnerability-to-fascist-infiltration/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/82ecc29d763d4d909b8f67315d861b30_18.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/82ecc29d763d4d909b8f67315d861b30_18.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/82ecc29d763d4d909b8f67315d861b30_18.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/82ecc29d763d4d909b8f67315d861b30_18.jpg" width="600"/></media:content><description>&lt;p>I spoke with Molly Shah about the dangers of organizing with fascists to achieve economic political goals.&lt;/p></description></item><item><title>Talk Town x FLUID Festival (World Pride Copenhagen)</title><link>https://www.buzzsprout.com/1845829/9121829-the-new-white-supremacy-in-europe-and-the-us</link><pubDate>Thu, 02 Sep 2021 09:33:44 +0200</pubDate><guid>https://emilygorcenski.com/post/talk-town-x-fluid-festival-world-pride-copenhagen/</guid><description>&lt;p>I joined Talk Town on stage at the FLUID Festival at World Pride Copenhagen to discuss white supremacy and the &amp;ldquo;gender critical&amp;rdquo; movement.&lt;/p></description></item><item><title>Stationary and Sassy Episode 21</title><link>https://anchor.fm/stationary-and-sassy/episodes/Episode-21-Stationary--Sassy-Presents-Emily-Gorcenski-e15hu1o</link><pubDate>Sat, 21 Aug 2021 17:01:20 +0200</pubDate><guid>https://emilygorcenski.com/post/stationary-and-sassy-episode-21/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/5320753-1588961452856-ab25dd4936908.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/5320753-1588961452856-ab25dd4936908.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/5320753-1588961452856-ab25dd4936908.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/5320753-1588961452856-ab25dd4936908.jpg" width="600"/></media:content><description>&lt;p>I had a blast joining Penelope and Jamey on Stationary and Sassy to talk about Fast and the Furious and some obscure German spin-offs.&lt;/p></description></item><item><title>Bold Dominion Episode 41: Four Years Later, How Has “Unite The Right” Changed Virginia Politics?</title><link>https://bolddominion.org/episodes/episode-40-four-years-later-how-has-unite-the-right-changed-virginia-politics</link><pubDate>Thu, 19 Aug 2021 17:01:20 +0200</pubDate><guid>https://emilygorcenski.com/post/bold-dominion-episode-41-four-years-later-how-has-unite-the-right-changed-virginia-politics/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/jackson+statue+removal+2.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/jackson+statue+removal+2.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/jackson+statue+removal+2.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/jackson+statue+removal+2.jpg" width="600"/></media:content><description>&lt;p>I rejoined Nathan Moore with Bold Dominion to talk about what Unite the Right meant for politics on the fourth anniversary of the horrific attacks.&lt;/p></description></item><item><title>Lingoda Review</title><link>https://emilygorcenski.com/post/lingoda-review/</link><pubDate>Sun, 08 Aug 2021 18:27:48 +0200</pubDate><guid>https://emilygorcenski.com/post/lingoda-review/</guid><image><url>https://emilygorcenski.com/photo-gallery/berlin/Siemensstadt%20Werbung-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/berlin/Siemensstadt%20Werbung-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/berlin/Siemensstadt%20Werbung-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/berlin/Siemensstadt%20Werbung-thumb.jpg" width="600"/></media:content><description>&lt;p>Having now spent 100 hours learning elementary German online during the pandemic, here is my review of Lingoda and learning German online generally.&lt;/p>
&lt;h2 id="how-i-got-here">How I got here&lt;/h2>
&lt;p>I&amp;rsquo;m old enough now to know my best and worst tendencies. For example, when I play silly phone games like Angry Birds, I&amp;rsquo;m the kind of person that needs to get a full three stars on a level before moving onto the next level. I&amp;rsquo;m a completionist; a missing item in a set drives me wild. If something is too hard, I learn it until it isn&amp;rsquo;t, or until I simply give up on the thing altogether. This is the opposite of my passion for discovery, preferring to forge ahead to discover new ideas before applying rigor to old ones. I was always the person reading one chapter ahead while sitting in class. Some might have said I was the annoying overachiever, but my grades were never great because I simply wanted to know &lt;em>more&lt;/em>, not necessarily know things &lt;em>well&lt;/em>.&lt;/p>
&lt;p>When I moved to Germany, I knew that this wouldn&amp;rsquo;t be sufficient. Learning German for use in every day life would need some study. Even though I had studied the language a bit before moving, I was basically starting from scratch. English speakers often stumble on German&amp;rsquo;s case system and compound nouns. These didn&amp;rsquo;t bother me much, but I wanted to start with the basics. I didn&amp;rsquo;t want any gaps in my knowledge.&lt;/p>
&lt;p>I could navigate my everyday life for the first year of living in Berlin pretty well, but Berlin is a terrible city for immersive language learning. English is commonplace, and I have found that even when I speak German, I get a reply in English in return. In the Summer of 2019, I found myself wanting to buckle down and do more than just use Duolingo to learn German. I wanted lessons, feedback, and rigor. I wanted to have my skills tested and obtain certificates that could show my progress. I wanted to track my progress. I started taking lessons at a language school in Berlin. I began with A1, the most elementary German lessons possible, and began taking classes several times a week. A1 was not so hard, and I progressed quickly and passed my telc certification in October of that year. I completed the A2 class in person as fall turned to winter, and, since the A2 certifications are not useful for immigration or employment reasons, proceeded to take B1 class in-person when the COVID-19 Pandemic hit. I had probably taken quarter of the first B1 course when everything shut down. In any case, I had a vacation scheduled in the US during the Spring of 2020, and I arrived at Dulles Airport only hours before they closed the border to travelers. With much more serious issues happening in the world, I stopped taking German lessons and my skills decayed by a lot. So I made a resolution that I would pick up my education and resume a push to get a B2 certification before 2021 came to a close.&lt;/p>
&lt;p>In early 2021, &lt;a href="https://www.lingoda.com">Lingoda&lt;/a> offered a promotional sprint offer. By signing up in advance for enough credits to take one course per day, and by taking one course per day, at the end of the sprint, a participant could get a partial refund. I decided to join the 90-day sprint, even though I knew my schedule would not allow me to meet the goals of one class per day. (In fact, I missed it on the second day by oversleeping). Because my skills had lapsed, I decided to begin anew with A2 content. There were some grammar points I had not yet mastered, and I felt like my speaking wasn&amp;rsquo;t good enough to be on the next level, despite having completed an A2 course in-person a year prior.&lt;/p>
&lt;p>In keeping with my contradictions, I felt like I wanted to finalized the A2 course while also challenging myself to get my B1 certificate by mid-summer. I finished most of the Lingoda course by April, when I returned to the US to get my COVID vaccines, and had a small handful of classes left to take. I recently finished those courses off while studying for my B1 test, marking 100 hours spent learning German over Zoom.&lt;/p>
&lt;h2 id="how-it-holds-up">How it holds up&lt;/h2>
&lt;p>As with everything virtual in the COVID-19 pandemic, Zoom lessons are lacking a little something. Lingoda&amp;rsquo;s courses have a single teacher and up to five total students. The students come from all over the world, which is great, and the students' skill levels sometimes aren&amp;rsquo;t aligned with the difficulty level of the course. Lingoda&amp;rsquo;s program provides each class with a slideshow document that you can download ahead of time if you&amp;rsquo;d like. Most courses involve the students reading material off of the slides, with some interactive portions, some vocabulary portions, and some quiz portions. Each lesson has a small &amp;ldquo;homework&amp;rdquo; assignment at the end, though this is optional and the instructors will never have time to review it if you did it. However, an answer key is provided. The slides are rarely information-dense; they&amp;rsquo;re not suitable for printing out, and they lack concrete structure, such as a vocabulary list at the end or a grammar recap. Throughout a level, the stories involve many of the same characters. I find that this does help somewhat to retain continuity throughout a series of lessons.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/lingoda-example.jpg" alt="Example of a Lingoda slide from the downloadable learning materials. Copyright Lingoda, reused without permission under fair use">&lt;/p>
&lt;p>&lt;small>Copyright Lingoda, reused without permission under fair use&lt;/small>&lt;/p>
&lt;p>Online courses provide more opportunity for distraction. I have found myself drifting off on Twitter when other students are speaking. Moreover, it&amp;rsquo;s clear that Lingoda doesn&amp;rsquo;t pay teachers a stipend for investing in proper A/V equipment. Some teachers' audio setups are downright awful. After a year-plus of pandemic learning, this is disappointing.&lt;/p>
&lt;p>I find that most of the teachers are adequate. Some are a joy to learn from. Others, less so. Within any given lesson chapter (8 lessons), it&amp;rsquo;s likely that you&amp;rsquo;ll experience five or six different teachers, at least at the elementary levels (A1/2). It may be different as one&amp;rsquo;s level increases. In terms of course content, some courses are great and worth paying attention to. On the other hand, I&amp;rsquo;ve had lessons where I spoke only two or three times during the entire session, aside from introductions. This was not very enjoyable nor was it a good use of my time.&lt;/p>
&lt;p>Online learning can be done from the convenience of anywhere. There is no requirement for you to have your camera on during the lesson, so I have taken the occasional lesson from my phone while out and about. This makes it much easier to fit into my day. On the other hand, the lack of a rigorous schedule can be frustrating. Lingoda&amp;rsquo;s interface for booking classes is poor, and it&amp;rsquo;s hard to book classes more than a week or two in advance. It doesn&amp;rsquo;t feel like the company is investing much into product innovation and the interface really exhibits some of the worst of the popular design patterns of the modern internet.&lt;/p>
&lt;h2 id="is-it-worth-it">Is it worth it?&lt;/h2>
&lt;p>Lingoda&amp;rsquo;s biggest benefits are its flexibility, its downloadable lesson material, and relatively low cost. After completing the A2 course, I&amp;rsquo;ll be proceeding directly to the three-part B2 course (150 hours). I estimate that, factoring in a summer holiday, I will complete this course in about 20 weeks, or right around the end of the year. If I am a little more aggressive about my learning, using some weekend days to do some deep binging of German studies, I can probably still meet my goal of achieving B2 German by the end of the year. I also plan to work through the B1 material, mostly as a review to fill in gaps that I have missed. I strongly prefer the in-person courses, particularly the ones that have textbooks that can provide more detailed exercises to build skills. I am a person that learns through repeated application of ideas when it comes to learning languages. I like having textbooks and workbooks to go through, and teachers I can talk with directly, where body language and other communication strategies help learning. However, I don&amp;rsquo;t predict a return to in-person education until 2022. Thus, I&amp;rsquo;m happy &lt;em>enough&lt;/em> with Lingoda&amp;rsquo;s offering, when coupled with other learning strategies, that I don&amp;rsquo;t want to find something new at the moment.&lt;/p>
&lt;p>I also did some research looking to see how Lingoda&amp;rsquo;s teachers are paid. After reading &lt;a href="http://bostonreview.net/class-inequality/yuliya-komska-alberto-bruzos-moro-roberto-rey-agudo-who-pay-cheap-language-classes">Yuliya Komska&amp;rsquo;s excellent piece&lt;/a> on the true cost of cheap language education, I don&amp;rsquo;t love the idea of supporting language programs that don&amp;rsquo;t pay fairly for the labor of their teachers. Is Lingoda part of the gig economy? I couldn&amp;rsquo;t find any good information one way or the other.&lt;/p>
&lt;p>Moreover, although Lingoda is accredited under &lt;em>Akkreditierungs- und Zulassungsverordnung Arbeitsförderung (AZAV)&lt;/em>, the certificates they offer upon completion of 90% of a course are not valid for immigration purposes. In other words, a Lingoda B1 certificate does not suffice for obtaining permanent residency.&lt;/p>
&lt;h2 id="does-it-work">Does it work?&lt;/h2>
&lt;p>I think the classes help. I&amp;rsquo;ve started developing strategies to help my learning. I&amp;rsquo;m taking notes with each class, which helps my focus, but not per se my retention. One of the challenges with the online technique is that it&amp;rsquo;s basically over at the end of the hour; I log off and do something else, and need to identify ways to reinforce the material from the preceding chapter. In other words, attendance isn&amp;rsquo;t enough.&lt;/p>
&lt;p>However, it&amp;rsquo;s clear that something is working. I recently passed the Goethe Institut B1 certification test, despite having never completed a B1 language course. I had done some studying and some review, but for the most part the bulk of my education was through after-hours Lingoda courses at the A2 level and some Duolingo. So the classes are definitely moving me in the right direction. The classes themselves are not enough to serve as certification prep. But they provide a foundation, and by supporting the coursework with speaking practice, taking practice tests, and reading, the tests are not so challenging.&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s next?&lt;/h2>
&lt;p>I want to complete the B2 course and at least the B1 grammar courses with Lingoda before the end of the year. I will likely plan to take the B2 certification test in early 2022, after my personal development budget at work resets. (My employer gives me money for language lessons and a pair of days off each year for learning and development). I am nearly finished with the German Duolingo course, and will finish that within the next few weeks. I plan to invest energy into more speaking and conversational practice, and spend more time listening to German media without subtitles. This should move me to a place where I can achieve B2 within the next six months. After that, I&amp;rsquo;ll explore whether it&amp;rsquo;s worth it to invest in C1 lessons with Lingoda or elsewhere. I think it is going to depend greatly on the COVID-19 situation. My preference is absolutely for in-person education, and I think that if I want to cross the threshold to achieve fluency I will need more private tutelage.&lt;/p>
&lt;p>All in all, I think that given the circumstances with the world, Lingoda&amp;rsquo;s been decent for the money. But if I had the option for in-person classes, I would absolutely take those instead.&lt;/p></description></item><item><title>Reykjavík 2017</title><link>https://emilygorcenski.com/post/reykjav%C3%ADk-2017/</link><pubDate>Thu, 05 Aug 2021 23:00:55 +0200</pubDate><guid>https://emilygorcenski.com/post/reykjav%C3%ADk-2017/</guid><image><url>https://emilygorcenski.com/photo-gallery/reykjavik-2017/Harpa-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/reykjavik-2017/Harpa-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/reykjavik-2017/Harpa-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/reykjavik-2017/Harpa-thumb.jpg" width="600"/></media:content><description/></item><item><title>The Parallel-Parking Job That Ignited the Internet</title><link>https://www.curbed.com/2021/08/p-e-moskowitz-parallel-parking.html</link><pubDate>Thu, 05 Aug 2021 19:41:44 +0200</pubDate><guid>https://emilygorcenski.com/post/the-parallel-parking-job-that-ignited-the-internet/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/cd6134955b303b4b2036a168fc86b65927-col-2-parallel-parking.1x.rsocial.w1200.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/cd6134955b303b4b2036a168fc86b65927-col-2-parallel-parking.1x.rsocial.w1200.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/cd6134955b303b4b2036a168fc86b65927-col-2-parallel-parking.1x.rsocial.w1200.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/cd6134955b303b4b2036a168fc86b65927-col-2-parallel-parking.1x.rsocial.w1200.jpg" width="600"/></media:content><description>&lt;p>I spoke with P.E. Moskowitz about Millennial Meanness and the irascible culture of social media.&lt;/p></description></item><item><title>Malta 2021</title><link>https://emilygorcenski.com/post/malta-2021/</link><pubDate>Sat, 26 Jun 2021 21:38:43 +0200</pubDate><guid>https://emilygorcenski.com/post/malta-2021/</guid><image><url>https://emilygorcenski.com/photo-gallery/malta-2021/Dinghies.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/malta-2021/Dinghies.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/malta-2021/Dinghies.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/malta-2021/Dinghies.jpg" width="600"/></media:content><description/></item><item><title>Book Report: In the End, It Was All About Love</title><link>https://emilygorcenski.com/post/book-report-in-the-end-it-was-all-about-love/</link><pubDate>Sun, 30 May 2021 12:22:36 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-in-the-end-it-was-all-about-love/</guid><image><url>https://emilygorcenski.com/photo-gallery/berlin/Baum%20am%20Treptower%20Park.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/berlin/Baum%20am%20Treptower%20Park.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/berlin/Baum%20am%20Treptower%20Park.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/berlin/Baum%20am%20Treptower%20Park.jpg" width="600"/></media:content><description>&lt;p>My friend, Musa Okwonga, wrote a brilliant and personal novel about Berlin. This is my review.&lt;/p>
&lt;p>I first met Musa while waiting on the Ampelmann somewhere along Warschauer Straße, a vibrant and punkish thoroughfare in the hip Berlin district of Friedrichshain. I was walking to a German class, back when such things were in-person still, before the pandemic robbed us of the autonomy to weave our own stories into the threads of city life, when I heard my named called out from behind me. I have had to practice a controlled reaction to such events: months before, the Berlin Polizei contacted me regarding a threat on my life by a pair of neo-Nazis. I have been recognized in public before, even in Berlin, far away from my provincial American life, where the largest city I&amp;rsquo;d ever lived in sported a total population of less than 50,000 people.&lt;/p>
&lt;p>But Musa called out, and I heard in his voice a warmth (or perhaps it was just the British accent) that gave me leave to react. I didn&amp;rsquo;t recognize him at first, but we&amp;rsquo;d been mutuals on Twitter for years. I&amp;rsquo;m less skilled with faces, less so when one&amp;rsquo;s profile picture is not a photograph, but as he introduced himself I immediately recognized who he was. Musa had shared similar run-ins as I have with the far-right online. Normally, I see him write about football. But it&amp;rsquo;s impossible to be a Black man who writes about football without also writing about racism, politics, and white supremacy. It&amp;rsquo;s not possible to simply set aside the inequalities you see ravaging the things you love most, regardless of whether you are a Black man or a transgender woman. Musa, too, has been punished for his transgressions, namely by making it hard for privileged and powerful folks to ignore that they are on the winning side of an ongoing series of injustices. The lived experience of being targeted by an international far-right movement creates a kinship, a shared trauma of feeling like you&amp;rsquo;re walking on the very edge of a society about to collapse.&lt;/p>
&lt;p>Of course our experiences are different, and I do not mean to compare them. I know nothing of what it is like to be a Black man in a country that still has not reckoned with its colonial legacy. Still there is so much that resonates in Musa&amp;rsquo;s novel, &lt;em>In the End, it Was All About Love&lt;/em>. Fundamentally his story is a biographical love affair with Berlin: Berlin in reflection, Berlin the Moira, Berlin the matchmaker. The book is written in three parts, each formed form a sequence of short segments, some only a paragraph or two long. Okwonga wrote the book to be taken in in small chunks, much like one must find themselves adjusting to the city itself.&lt;/p>
&lt;p>Berlin is too vast to understand all at once. A city ravaged by one war and divided in two by another entirely different kind, Berlin has no meaningful downtown area. Instead, its twelve Bezirke are each of their own distinct character; within them, each Kiez stands as a piece of confetti dancing a kaleidoscopic dance. Berlin shows you many sides of itself, sometimes all at once. Okwonga&amp;rsquo;s narrator on the city&amp;rsquo;s caprice: &amp;ldquo;its inhabitants will shock you with acts of rudeness and kindness, often in the course of the same day. For that reason, you might find Berlin addictive. If so, that&amp;rsquo;s because it&amp;rsquo;s both too much and not nearly enough. You can saturate yourself in this city, but still find yourself deprived.&amp;rdquo;&lt;/p>
&lt;p>If there is a criticism of &lt;em>In the End, It Was All About Love&lt;/em>, it&amp;rsquo;s that at times it is hard to believe as fiction. The descriptions of city life are instantly recognizable to any newcomer. The impossible labyrinth of German bureaucracy, the brutality of the infinite winters. But it&amp;rsquo;s the narrator&amp;rsquo;s story about love and relationships that lands so close to the heart. Berlin may be the best sex city in the world, it&amp;rsquo;s legendary nightclubs drawing people from across the sea. But at the same time, it might also be the worst dating city in the world. Berlin, as Okwonga describes it, is a moody adolescent. It&amp;rsquo;s people, too, perhaps are too hip, too aloof. I know of few people in this city looking for partnership, although nearly everyone is looking not to be alone. It&amp;rsquo;s this temperament that leads to the narrator&amp;rsquo;s heartbreak. It&amp;rsquo;s not simply the breakup, it&amp;rsquo;s the coldness with which it happens. Relationships in Berlin are transactional. They end with the same indifference with which the Bürgeramt will eventually accept one&amp;rsquo;s Abmeldung.&lt;/p>
&lt;p>The devastation of this heartbreak is stacked upon a heartbreak of an entirely different sort. Okwonga&amp;rsquo;s narrator finds himself the target of the far-right. In Germany, as in most other countries today, there is a resurgent thread of far-right nationalism, which is racist and violent at its core. The narrator finds himself under assault because he is different, namely because he is Black.&lt;/p>
&lt;p>Whether by experiencing the casual racism of a pair of young German women at a Bahnhof, or through harassment on social media for the temerity to criticize a football celebrity, Okwonga&amp;rsquo;s narrator cannot hide the racism of the city underneath his love for the city. And so he seeks therapy to heal his heartbreak: heartbreak from his romantic pains, from the ever-present racism, from having lost his father at a young age to a war in a country his family fled from years ago. Therapy, to find one&amp;rsquo;s way through the fractal ways in which the world assaults Blackness at every turn.&lt;/p>
&lt;p>The narrator finds in this ancestral wisdom-cum-psychiatry a path to an identity. He slowly challenges the concrete and schwarz monotone of Berlin&amp;rsquo;s fashion by finding himself suits of dashing color; he comes to terms with his own bisexuality; he finds in himself the courage to address the pain of his father&amp;rsquo;s death years ago. In the end, it was all about love. Berlin, a layered and complex city is a city in which one finds oneself, but only when one is ready to. It is easy to become lost in Berlin. But when you learn how to find yourself in its weave of cruelty and passion, of intimacy and distance, that&amp;rsquo;s when you can finally understand it, its history, and your place in history.&lt;/p>
&lt;p>&lt;em>In the End, It Was All About Love&lt;/em>&lt;br>
Musa Okwonga&lt;br>
ISBN 978-1912722938&lt;br>
Buy &lt;a href="http://roughtradebooks.com/books/in-the-end-it-was-all-about-love-2/">online&lt;/a> or at your local bookstore&lt;/p></description></item><item><title>Titles of Stories by Lewis Carroll and Tom Stoppard That Were Never Written Because Carroll Was Too Opiated and Stoppard Sublimed into Pure Energy</title><link>https://emilygorcenski.com/post/titles-of-stories-by-lewis-carroll-and-tom-stoppard-that-were-never-written-because-carroll-was-too-opiated-and-stoppard-sublimed-into-pure-energy/</link><pubDate>Sun, 02 May 2021 02:05:38 +0200</pubDate><guid>https://emilygorcenski.com/post/titles-of-stories-by-lewis-carroll-and-tom-stoppard-that-were-never-written-because-carroll-was-too-opiated-and-stoppard-sublimed-into-pure-energy/</guid><description>&lt;p>Many, many years ago, I worked at a Barnes &amp;amp; Noble and to pass the time, my co-workers and I would come up with McSweeney&amp;rsquo;s-style lists. This is the only one that survives.&lt;/p>
&lt;h2 id="lewis-carroll">Lewis Carroll&lt;/h2>
&lt;ul>
&lt;li>&lt;em>White Rabbits, Cheshire Cats, and Other Literary Manifestations of my Freudian Obsession with Bestiality&lt;/em>&lt;/li>
&lt;li>&lt;em>Alice in Netherlands or Wooden Shoes, Tulips, and a Shit-ton of Weed&lt;/em>&lt;/li>
&lt;li>&lt;em>Fuck, that was&lt;/em> Good &lt;em>O.&lt;/em>&lt;/li>
&lt;li>&lt;em>I Have a Proof that 2=0 Which this Margin is Too Small to Contain&lt;/em>&lt;/li>
&lt;li>&lt;em>A Children&amp;rsquo;s Story of Ritual Disembowelment and other Graphic Traditions to Scare the Hell out of Kids&lt;/em>&lt;/li>
&lt;li>&lt;em>A Story Predicting the Intersection of Georg Cantor and Salman Rushdie in a Four-Dimensional Metric Space&lt;/em>&lt;/li>
&lt;li>&lt;em>A Clever Allusion to a&lt;/em> Seinfeld &lt;em>Episode Regarding Muffins&lt;/em>&lt;/li>
&lt;/ul>
&lt;h2 id="tom-stoppard">Tom Stoppard&lt;/h2>
&lt;ul>
&lt;li>&lt;em>Honey, Call the Handyman to Repair the Fourth Wall Again&lt;/em>&lt;/li>
&lt;li>&lt;em>A Masters Student who was Graduated Because His Thesis Committee Didn&amp;rsquo;t Understand a Goddamn Thing&lt;/em>&lt;/li>
&lt;li>&lt;em>Kierkegaard and Sartre Fight Over Protestant Roles in Existential Philosophy While Illustrating Points by Throwing Pies at the Audience&lt;/em>&lt;/li>
&lt;li>&lt;em>Meh, Shakespeare was a Hack, Anyways&lt;/em>&lt;/li>
&lt;li>&lt;em>A Total Ripoff of&lt;/em> Clue: Master Edition&lt;/li>
&lt;li>&lt;em>A Retelling of&lt;/em> The Stranger &lt;em>with Mersault Played by Quentin Tarantino&lt;/em>&lt;/li>
&lt;li>&lt;em>Shit, I Forgot &amp;ldquo;Preternatural&amp;rdquo;&lt;/em>&lt;/li>
&lt;/ul></description></item><item><title>Data strategies to drive business value at scale</title><link>https://www.thoughtworks.com/perspectives/edition15-data-strategies-article</link><pubDate>Sun, 02 May 2021 02:02:00 +0200</pubDate><guid>https://emilygorcenski.com/post/data-strategies-to-drive-business-value-at-scale/</guid><description>&lt;p>My brilliant colleagues and I discussed the challenges with scaling a modern data-driven business and how Data Mesh can help untangle organizational bottlenecks.&lt;/p></description></item><item><title>Book Report: The Tyranny of Metrics</title><link>https://emilygorcenski.com/post/book-report-the-tyranny-of-metrics/</link><pubDate>Mon, 19 Apr 2021 04:22:41 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-the-tyranny-of-metrics/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/dashboard.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/dashboard.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/dashboard.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/dashboard.jpg" width="600"/></media:content><description>&lt;p>In our data-driven universe, it&amp;rsquo;s good to question how we use data. This is my review of &lt;em>The Tyranny of Metrics&lt;/em>, by Jerry Z. Muller.&lt;/p>
&lt;p>As a data scientist and an agile consultant, the notion of building metrics forms the core part of my job. In the world of agile software engineering, we have a handful of terms that, in essence, simply mean a numerical measurement of quantifiable information that is, at least in theory, supposed to link to a notion of value. Whether we refer to them as &lt;em>objectives and key results (OKRs)&lt;/em>, _key performance indicators (KPIs), or &lt;em>service level indicators (SLIs)&lt;/em>, they all effectively map to the same concept: by measuring something that relates to product or performance, we can explain and diagnose past behaviors and predict and direct future ones.&lt;/p>
&lt;p>This is a dramatic over-simplification. The art of crafting a good set of metrics is, in my experience, done poorly with remarkably higher frequency than it is done well. Good metrics should be validated; they should be uniquely connected to a set of outcomes or behaviors that are desired. To wield metrics effectively means to know their limits. Most importantly, they should reflect accountability for those who define them moreso than for those who are covered by them.&lt;/p>
&lt;p>Herein lies the primary challenge: when metrics are synthesized, they can be done so to drive any agenda one so pleases. Metrics have an audience, and when one aims to please an audience one will often appeal to their biases more than to their critique. This has led to the misuse and abuse of metrics in many contexts, even when the logic behind them is sound. Take, for example, the idea of an Objective and Key Result. When Google reinvigorated the concept of OKRs, they became a common tool in the business transformation toolkit, particularly in knowledge-work industries where concrete productivity measures, e.g. the number of widgets built per day, are nearly impossible to measure. There is no shortage of writing on the potential benefits of OKRs, perhaps because consultants can get easy visible wins by applying the concept to a business, but the art of designing &lt;em>effective&lt;/em> OKRs is often missing from the discussion.&lt;/p>
&lt;p>I have seen OKRs badly applied: data science teams with complete arbitrary measurements like &amp;ldquo;derive five insights per quarter&amp;rdquo; or software teams with goals like &amp;ldquo;increase lines of code written.&amp;rdquo; This is, as Muller indirectly describes, the long-lasting influence of &lt;em>Taylorism&lt;/em>. Indeed, Muller, a historian of Capitalism, credits 19th and 20th Century thinkers with the formation of metrics-driven management culture. Taylorism, so named for engineer Frederick Winslow Taylor, was an attempt to add mathematical rigor to management theory. This stems from an earlier popular notion of accountability in governance, manifest at least as early as the 1860s in Great Britain, where Robert Lowe introduced the concept to measure the British education system, and has carried through aspects of our culture, from government to public health to education to business. Even Lowe had his opponents; systems thinkers like Matthew Arnold argued that simple metrics cannot possibly capture the richness of complex human-centric ecosystems like public policy.&lt;/p>
&lt;p>Muller approaches this work not from a data practitioner&amp;rsquo;s lens, but as an academic being pressed under the thumb of quantitative reasoning in higher education. His book explores the concept of &lt;em>accountability&lt;/em> through &lt;em>quantifiability&lt;/em> in a variety of contexts: he reminds us of the inhumanity of Robert McNamara&amp;rsquo;s industrial approach to measuring body counts in the Vietnam War; he explores the success and failures of metrics on healthcare policy; and he touches briefly on how metrics are used in public policy and philanthropy.&lt;/p>
&lt;p>In his work, Muller gets many things right. He leans heavily on &lt;a href="https://en.wikipedia.org/wiki/Campbell%27s_law">Campbell&amp;rsquo;s Law&lt;/a>, &amp;ldquo;the more any quantitative social indicator is used for social decision-making, the more subject it will be to corruption pressures and the more apt it will be to distort and corrupt the social processes it is intended to monitor,&amp;rdquo; and describes in clear terms what he calls &lt;em>creaming&lt;/em>, or the tendency to cherry pick outcomes that lead to better metrics.&lt;/p>
&lt;p>Muller&amp;rsquo;s tyranny sprouts from the corruptibility of badly-derived metrics. He describes how metric-driven executive compensation drove the pharmaceutical company Mylan to price-gouge Epipens which led to short-term gains (for the executives) but long-term harm (to the executives but mostly the customers). He explores how Wells Fargo employees, pressured by a punitive use of metrics, led to wide-scale fraud perpetrated by low-level employees of the bank. He describes how in the healtcare space, transparency and metrics culture has given rise to counter-productive practices, such as admitting patients on an outpatient basis for &amp;ldquo;observation&amp;rdquo; to prevent re-admittence numbers from climbing, or surgeons deferring more complex surgeries to ensure their success rates don&amp;rsquo;t go down.&lt;/p>
&lt;p>Where Muller falls short is in interrogating &lt;em>why&lt;/em> these metrics don&amp;rsquo;t work and what could be done to bulwark them. While all metrics can be gamed, this often stems from metrics being disconnected from their context or being used to describe a phenomenon that they simply cannot.&lt;/p>
&lt;p>Muller has other shortcomings: he accepts without scrutiny the idea that standardized testing is a good proxy for college readiness, even as he criticizes the push towards inflating test participation as a proxy measure for success. He identifies that public education policies like No Child Left Behind largely failed their mission, but gives too much credit for that failure to the metric culture contained therein and not to other socioeconomic barriers not addressed by the metrics. When he touches on policing, he does so only through a lens of crime prevention and not police accountability. And he deadnames Chelsea Manning, a needlessly cruel act for a book published in 2018.&lt;/p>
&lt;p>While the book is correct in pointing out the failures of bad metrics, it misses opportunities to explore in more detail how metrics could be done right, by localizing them and connecting them to outcomes. The most interesting parts of the book came when describing how the price of non-local produce served as a good proxy measure for regional stability during the war in Afghanistan. He describes why this was the case, namely that the risks of travel were reflected in the price of the goods, without diving into more detail about how these indirect measures can be crafted through local context.&lt;/p>
&lt;p>Muller also identifies a flaw in the logic that more transparency equals more accountability and better outcomes. There is a good rationale behind this: when transparency erodes psychological safety, this impedes the ability to try ideas on for size in a private setting, a necessary element of experimentation and growth. In Charlottesville, we saw this happen when a dysfunctional City Council attempted a &amp;ldquo;bonding&amp;rdquo; retreat which was by law held publicly. The result was a public excoriation and rampant mockery on Twitter, largely by my good friend, Molly Conger. It&amp;rsquo;s unlikely a closed-door session would have brought the Council closer to being effective, but it does raise a good question whether the public nature of the meeting could have even had any effect beyond public schadenfreude for a failing government. With ample opportunity for nuance, Muller&amp;rsquo;s only argument for reducing transparency is a debatable claim that Manning&amp;rsquo;s and Edward Snowden&amp;rsquo;s leaks damaged the reputation and operational ability of the United States government.&lt;/p>
&lt;p>Muller does attempt to provide a playbook for how to use metrics, but he lacks the craft of a data practitioner to delineate between the ways data can be used to control outcomes. In fact, the notion of feedback cycles is completely missing from the book, even if he does correctly identify, perhaps unknowingly, that &amp;ldquo;open loop,&amp;rdquo; input-only measurements are rarely meaningful. A systems analyst could apply rigor here, and had he included that perspective his thesis would have been significantly strengthened.&lt;/p>
&lt;p>Muller&amp;rsquo;s concept of the misuse and abuse of metrics does accurately identify many of the failures of the concept. But by failing to dive deeper into the root causes he unfortunately misses many of the points that could have added meaningful heft to his arguments. This is a pity, because bad metrics deserve pushback, particularly when they are having deleterious effects on public health, public policy, and public safety. Instead, by arguing against transparency and accountability, he is arguing instead for a more biased form of governance. From a data practitioner lens, his algorithm for assessing metrics is naive.&lt;/p>
&lt;p>Proper use of metrics, whether KPIs or OKRs or whatever, involve regular review of their applicability and efficacy, through a rigorous analysis. Muller is correct to imply that bad metrics can be harmful and should be vigorously doubted. But he leans too far into a bias against measurement, and away from an expert practitioners lens of how to use metrics well. Metrics can give us sight when we are otherwise blind, but it is a more complex and nuanced task to build them than Muller gives credit for.&lt;/p>
&lt;p>&lt;em>The Tyranny of Metrics&lt;/em>&lt;br>
Jerry Z. Muller&lt;br>
ISBN 978-0691191911&lt;br>&lt;/p></description></item><item><title>Disabling Google FLoC on an Azure Static Site with Terraform</title><link>https://emilygorcenski.com/post/disabling-google-floc-on-an-azure-static-site-with-terraform/</link><pubDate>Sun, 18 Apr 2021 19:20:44 +0200</pubDate><guid>https://emilygorcenski.com/post/disabling-google-floc-on-an-azure-static-site-with-terraform/</guid><description>&lt;p>Here&amp;rsquo;s how to disable Google&amp;rsquo;s Federated Learning of Cohorts (FLoC) in an Azure-hosted static site.&lt;/p>
&lt;p>Google&amp;rsquo;s Federated Learning of Cohorts (FLoC) adds browser-based tracking without third-party code coming across the wire. Previously, users could block third-party trackers, or at least be able to inspect a site to see how many trackers are being used. (For instance, on my site, I use &lt;em>no&lt;/em> trackers at all, not even basic web analytics). This technology is &lt;a href="https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea">viewed by some&lt;/a> as a big privacy concern. However, it&amp;rsquo;s possible to disable it by injecting an HTTP header in the response.&lt;/p>
&lt;p>Disabling FLoC requires the site administrator to insert a custom response header. (To read more, see &lt;a href="https://plausible.io/blog/google-floc">here&lt;/a>.) As long as you control the host, you can insert the response header. For static sites, we have to control this at the infrastructure level.&lt;/p>
&lt;p>In &lt;a href="https://emilygorcenski.com/post/migrating-a-static-site-to-azure-with-terraform/">a previous post&lt;/a>, I showed how to use Terraform to set up everything you need to get a TLS-enabled static site hosted on Azure. With that heavy-lifting done, it&amp;rsquo;s rather straightforward to add our header to disable FLoC.&lt;/p>
&lt;p>Since I used Terraform to set up infrastructure as code for my blog, here&amp;rsquo;s how to do it with terraform. In my &lt;code>main.tf&lt;/code> file, I had a section where I specified an &lt;code>azurerm_cdn_endpoint&lt;/code> resource:&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:#ae81ff">resource &amp;#34;azurerm_cdn_endpoint&amp;#34; &amp;#34;cdn_blog&amp;#34; {&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;my-blog-cdn&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">profile_name = azurerm_cdn_profile.cdn.name&lt;/span>
&lt;span style="color:#ae81ff">location = azurerm_cdn_profile.cdn.location&lt;/span>
&lt;span style="color:#ae81ff">resource_group_name = azurerm_resource_group.rg.name&lt;/span>
&lt;span style="color:#ae81ff">origin_host_header = azurerm_storage_account.blog_storage.primary_web_host&lt;/span>
&lt;span style="color:#ae81ff">...&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>I had previously added a &lt;code>delivery_rule&lt;/code> in this block to achieve HTTP-to-HTTPS redirects:&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:#ae81ff">resource &amp;#34;azurerm_cdn_endpoint&amp;#34; &amp;#34;cdn_blog&amp;#34; {&lt;/span>
&lt;span style="color:#ae81ff">...&lt;/span>
&lt;span style="color:#ae81ff">delivery_rule {&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;EnforceHTTPS&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">order = &amp;#34;1&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">request_scheme_condition {&lt;/span>
&lt;span style="color:#ae81ff">operator = &amp;#34;Equal&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">match_values = [&amp;#34;HTTP&amp;#34;]&lt;/span>
}
&lt;span style="color:#ae81ff">url_redirect_action {&lt;/span>
&lt;span style="color:#ae81ff">redirect_type = &amp;#34;Found&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">protocol = &amp;#34;Https&amp;#34;&lt;/span>
}
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>We could add a second delivery rule to this, with &lt;code>order = &amp;quot;2&amp;quot;&lt;/code>. However, &lt;code>delivery_rule&lt;/code> requires a condition, like the &lt;code>request_scheme_condition&lt;/code> block above. We can simplify this by adding our header as a &lt;code>global_delivery_rule&lt;/code> instead by adding the following block to our &lt;code>azurerm_cdn_endpoint&lt;/code> resource, below the &lt;code>delivery_rule&lt;/code> block:&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:#ae81ff">global_delivery_rule {&lt;/span>
&lt;span style="color:#ae81ff">modify_response_header_action {&lt;/span>
&lt;span style="color:#ae81ff">action = &amp;#34;Append&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;Permissions-Policy&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">value = &amp;#34;interest-cohort=()&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Thus, our resource block should read like:&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:#ae81ff">resource &amp;#34;azurerm_cdn_endpoint&amp;#34; &amp;#34;cdn_blog&amp;#34; {&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;my-blog-cdn&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">profile_name = azurerm_cdn_profile.cdn.name&lt;/span>
&lt;span style="color:#ae81ff">location = azurerm_cdn_profile.cdn.location&lt;/span>
&lt;span style="color:#ae81ff">resource_group_name = azurerm_resource_group.rg.name&lt;/span>
&lt;span style="color:#ae81ff">origin_host_header = azurerm_storage_account.blog_storage.primary_web_host&lt;/span>
&lt;span style="color:#ae81ff">origin {&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;emilygorcenski-blog&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">host_name = azurerm_storage_account.blog_storage.primary_web_host&lt;/span>
}
&lt;span style="color:#ae81ff">tags = {&lt;/span>
&lt;span style="color:#ae81ff">environment = &amp;#34;production&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">purpose = &amp;#34;blog&amp;#34;&lt;/span>
}
&lt;span style="color:#ae81ff">delivery_rule {&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;EnforceHTTPS&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">order = &amp;#34;1&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">request_scheme_condition {&lt;/span>
&lt;span style="color:#ae81ff">operator = &amp;#34;Equal&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">match_values = [&amp;#34;HTTP&amp;#34;]&lt;/span>
}
&lt;span style="color:#ae81ff">url_redirect_action {&lt;/span>
&lt;span style="color:#ae81ff">redirect_type = &amp;#34;Found&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">protocol = &amp;#34;Https&amp;#34;&lt;/span>
}
}
&lt;span style="color:#ae81ff">global_delivery_rule {&lt;/span>
&lt;span style="color:#ae81ff">modify_response_header_action {&lt;/span>
&lt;span style="color:#ae81ff">action = &amp;#34;Append&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">name = &amp;#34;Permissions-Policy&amp;#34;&lt;/span>
&lt;span style="color:#ae81ff">value = &amp;#34;interest-cohort=()&amp;#34;&lt;/span>
}
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you want to use the Azure Portal instead, this is quite easy. Simply log in to your subscription, find your CDN, and click &amp;ldquo;Rules Engine.&amp;rdquo; Then, you can add a Global Rule to &amp;ldquo;Always Modify Response Header.&amp;rdquo; We&amp;rsquo;ll want to add this to the Rules Engine for our CDN endpoint. As an action, we&amp;rsquo;ll choose &amp;ldquo;Append,&amp;rdquo; and for our HTTP header name enter &lt;code>Permissions-Policy&lt;/code> with &lt;code>interest-cohort=()&lt;/code> as a value.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/portal-rules-engine.jpg" alt="Using the Azure Portal to add a global delivery rule to insert an FLoC-disabling header">&lt;/p>
&lt;p>Once this is done, we can head over to our site. Give it a minute to refresh, and then load a new page and inspect the headers in your favorite dev tool. You should see our header inserted into the response.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/response_headers.jpg" alt="Response headers showing the FLoC-disabling header">&lt;/p>
&lt;p>That&amp;rsquo;s it! With a simple change, you can help improve the privacy of all your readers/users with very little added effort. As always, I encourage you to build sites that focus on user-privacy first and foremost. Please bug me &lt;a href="https://twitter.com/EmilyGorcenski">on Twitter&lt;/a> if you have any questions!&lt;/p>
&lt;p>&lt;strong>Update: If you don&amp;rsquo;t have the ability to control your site&amp;rsquo;s HTTP headers, &lt;a href="https://adalytics.io/blog/opt-out-floc-script">this blog post&lt;/a> describes a way to do this in JavaScript that may work. Moreover, &lt;a href="https://make.wordpress.org/core/2021/04/18/proposal-treat-floc-as-a-security-concern/">WordPress has announced&lt;/a> that they will treat FLoC as a security concern and disable it for all of their sites.&lt;/strong>&lt;/p></description></item><item><title>Book Report: Short Stories in German for Beginners</title><link>https://emilygorcenski.com/post/book-report-short-stories-in-german-for-beginners/</link><pubDate>Thu, 08 Apr 2021 08:07:02 +0200</pubDate><guid>https://emilygorcenski.com/post/book-report-short-stories-in-german-for-beginners/</guid><description>&lt;p>Vor ein paar Jahren, als ich erst angefangen habe Deutsch zu lernen, kaufte ich ein Buch heißt &amp;ldquo;Short Stories in German for Beginners&amp;rdquo;. Hier ist meine Buchkritik.&lt;/p>
&lt;p>Dieses Buch ist für Anfänger:innen und hat ungefähr acht Kurzgeschichten. Das Buch enthält wenige Grammatikstunden, hat es aber ziemlich einfache Vokabeln und Redewendungen. Jede Geschichte ist in drei oder vier Kapitel geteilt, nach denen eine Zusammenfassung, ein paar Fragen, und wichtige Redewendungen stehen. Die Autoren empfehlen, dass man das ganze Kapitel liest, bevor man an die Vokabeln-Liste anschaut. Danach sollte man es weiterlesen.&lt;/p>
&lt;p>Ich finde die Methode ziemlich gut, aber eher langsam, um meine Lesefertigkeiten zu verbessern. Aber ich finde, wenn ich diese Phrasen nicht benutze, dann kann ich mich sie nicht erinnern. Außerdem sind die Geschichte einigermaßen interessant aber nicht nützlich für den Alltag. Vokabeln über Zauber und Rittern und seltsame Gegenstände trete ich nicht so oft auf.&lt;/p>
&lt;p>Trotzdem vermitteln die Geschichte mit guten schriftlichen Deutsch. Auf diesem Grund meine ich, dass das Buch gut für Anfänger:innen, die um A1-A2 Niveau erreichen haben, ist. Bevor kann man das Buch lesen, muss man erst ein bisschen Deutsch verstehen. Man sollte das Präteritum und das Perfekt Formen kennen und sich die Satzklammern vertraut machen. Mit diesen Fähigkeiten kann man es leicht lesen. Es ist ein guter Zusatz zu regelmäßige Deutschunterrichte, aber alleine kann es nicht Deutsch komplett unterrichten.&lt;/p>
&lt;p>Wenn ihr dieses Buch kauften möchtet, könnt ihr es in eurer örtlichen Buchhandlung oder online bei &lt;a href="https://www.genialokal.de/Produkt/Olly-Richards-Alex-Rawlings/Short-Stories-in-German-for-Beginners_lid_36794450.html">Genialokal.de&lt;/a> oder &lt;a href="https://www.powells.com/book/short-stories-in-german-for-beginners-9781473683372">Powell&amp;rsquo;s&lt;/a>.&lt;/p>
&lt;p>&lt;em>Short Stories in German for Beginners&lt;/em>&lt;br>
Olly Richards and Alex Rawlings&lt;br>
ISBN-13 978-1-47368-337-2&lt;/p></description></item><item><title>Jesse Singal Still Got More Wrong Than He Thinks</title><link>https://emilygorcenski.com/post/jesse-singal-still-got-more-wrong-than-he-thinks/</link><pubDate>Mon, 05 Apr 2021 16:01:22 +0200</pubDate><guid>https://emilygorcenski.com/post/jesse-singal-still-got-more-wrong-than-he-thinks/</guid><description>&lt;p>Jesse Singal has responded to my writeup on how badly he butchered the conclusions of the 2013 study, and I will now rebut his positions.&lt;/p>
&lt;p>Singal has responded to &lt;a href="https://emilygorcenski.com/post/jesse-singal-got-more-wrong-than-he-thinks/">my article&lt;/a> about his 2016 piece in &lt;em>The Cut&lt;/em>, and he has published a rebuttal on his substack. In that rebuttal he claims that I made key errors. I did not, but the fact that Singal perceives these as errors reflects his inability to write clearly about this issue. I will now address his four points&lt;/p>
&lt;h3 id="point-1-singal-ridiculously-claims-that-loss-to-followup-increases-a-studys-power">Point 1: Singal ridiculously claims that loss to follow-up increases a study's power&lt;/h3>
&lt;p>Singal writes, &amp;quot;&lt;strong>The error I acknowledged in 2018 was overestimating the number of true non-responders in the Steensma study and therefore underestimating the strength of the study.&lt;/strong> When you account for my error, the evidence for desistance gets &lt;em>stronger&lt;/em>.&amp;quot;&lt;/p>
&lt;p>I don't know where to begin with this, but this claim is farcical. The 2013 study lost several patients to follow-up. Singal's error was misinterpeting the authors' use of the word &amp;quot;desister&amp;quot;: to summarize, the word as used by the authors only meant to imply that those participants stopped coming to the clinic. I'll write more on this later.&lt;/p>
&lt;p>However, Singal's claims that loss to follow-up &lt;em>increase&lt;/em> the power of a study are absurd. Loss to follow-up has the effect of biasing a study and leading to incomplete results. It's possible that all of those participants simply moved from the Netherlands and continued their transition elsewhere (Singal references this possibility himself in &lt;em>The Cut&lt;/em>). It's possible none of them were trans.&lt;/p>
&lt;p>Singal claims in &lt;a href="https://jessesingal.substack.com/p/a-sorta-quick-response-to-the-errors">his rebuttal&lt;/a> that his conclusions are &lt;em>stronger&lt;/em> in light of his error. To offer evidence of this, he links to &lt;a href="https://jessesingal.substack.com/p/a-sorta-quick-response-to-the-errors">another post&lt;/a>. That post contains no quantitative reasoning for why his error makes his conclusions stronger, but it does link back to his Medium &lt;em>mea culpa&lt;/em>.&lt;/p>
&lt;p>In that Medium post, Singal fails to adequately explain his stastistical methodology, which is unsurprising since he is not a statistician. But I will try to reconstruct his reasoning.&lt;/p>
&lt;p>He claims the study is even stronger because of the 52 people &lt;em>not&lt;/em> lost to follow-up, all were true desisters, in that none of them reported gender dysphoria. But Jesse's logic here is begging the question! It cannot make &lt;em>his&lt;/em> conclusions stronger, because in his original writing he already assumed those 52 participants were true desisters! From his piece:&lt;/p>
&lt;blockquote>
&lt;p>The Amsterdam study reported on 127 adolescents, 79 of them boys, and found that 80 of those adolescents, or about two-thirds, had desisted — that is, now identified as cisgender — at the time of followup.&lt;/p>
&lt;/blockquote>
&lt;p>In other words, Singal &lt;em>already&lt;/em> assumed that the 80, which includes the participants he made a mistake with, were already fully desisted and were cisgender. In Singal's correction, he apparently wants us to believe that the study is actually showing that &lt;span class="math">\(0%\)&lt;/span> of the study's true desisters ended up transgender, and that his earlier mistaken interpretation left room for this percentage to be something higher than zero.&lt;/p>
&lt;p>This is ridiculous.&lt;/p>
&lt;p>No matter how you cut it, Singal's original interpretation is that &lt;span class="math">\(\frac{80}{127} \approx 63\%\)&lt;/span> of participants were desisters. He says that explicitly in &lt;em>The Cut&lt;/em>. The reality is that slightly less than &lt;span class="math">\(50\%\)&lt;/span> of participant respondees actually desisted. &lt;span class="math">\(50\% &lt;63\%\)&lt;/span> no matter how you look at it.&lt;/p>
&lt;p>Nevertheless, Singal is insistent that his error made the conclusions weaker. In his Medium post, he uses the word &amp;quot;stronger&amp;quot; twice. But he offers &lt;em>no methodology&lt;/em> for justifying this claim. He provides no statistical analysis. He provides no measure of study power. He doesn't even provide a quantitative measure by which we can assess the strength of his claim. He just sort of handwaves basic descriptive statistics that were never in dispute.&lt;/p>
&lt;p>But Singal &lt;em>could&lt;/em> statistically assess the study before and after his mistake. So I will. Since Steensma publishes the percentage of participants in each group that were diagnosed with DSM-IV-TR Gender Identity Disorder, we can easily compute the probability that someone persisted given they had a childhood GID diagnosis. I'll do this using two methods: first, by lumping nonresponders in with desisters, and then without.&lt;/p>
&lt;h4 id="by-including-nonresponders">By including nonresponders&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>GID Diagnosis&lt;/th>
&lt;th>Group&lt;/th>
&lt;th>Number&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Yes&lt;/td>
&lt;td>Persister&lt;/td>
&lt;td>44&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Desister&lt;/td>
&lt;td>36&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>No&lt;/td>
&lt;td>Persister&lt;/td>
&lt;td>3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Desister&lt;/td>
&lt;td>44&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Here we see that the probability that someone persisted, given that they were diagnosed, is &lt;span class="math">\(\frac{44}{44 + 36} = 55\%\)&lt;/span>.&lt;/p>
&lt;h4 id="by-excluding-nonresponders">By excluding nonresponders&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>GID Diagnosis&lt;/th>
&lt;th>Group&lt;/th>
&lt;th>Number&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Yes&lt;/td>
&lt;td>Persister&lt;/td>
&lt;td>44&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Desister&lt;/td>
&lt;td>25&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>No&lt;/td>
&lt;td>Persister&lt;/td>
&lt;td>3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Desister&lt;/td>
&lt;td>21&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Here we see that the probability that someone persisted, given that they were diagnosed, is &lt;span class="math">\(\frac{44}{44 + 25} \approx 64\%\)&lt;/span>.&lt;/p>
&lt;p>In other words, by excluding the non-responders, the probability that a DSM-IV-TR gender identity diagnosis resulted in persistence was &lt;em>higher&lt;/em>, not &lt;em>lower&lt;/em> as Singal seems to claim.&lt;/p>
&lt;p>&lt;strong>In short, Singal asserts that the study is &lt;em>stronger&lt;/em> than he thought, but he provides no formal method by which to assess this claim, and in the context of his original writing this conclusion cannot be supported.&lt;/strong>&lt;/p>
&lt;h3 id="point-2-singal-claims-he-changed-his-conclusions-but-he-did-not">Point 2: Singal claims he changed his conclusions, but he did not.&lt;/h3>
&lt;p>The original piece in &lt;em>The Cut&lt;/em> includes and undated update. This update reflects his error, but in it he repeats his statistically-unsupported claim that his error makes his conclusions stronger. This update is inline: it appears after one particular paragraph. However, the following incorrect statements are still present in the text.&lt;/p>
&lt;blockquote>
&lt;p>Again: Every study that has been conducted on this has found the same thing. At the moment there is strong evidence that even many children with rather severe gender dysphoria will, in the long run, shed it and come to feel comfortable with the bodies they were born with.&lt;/p>
&lt;/blockquote>
&lt;p>This is false. The Steensma study in question shows that 47 participants persisted, 46 affirmatively desisted, and 28 did not respond themselves (6 others responded via a parent). The Steensma study doesn't even say the same thing as what Singal claims it does.&lt;/p>
&lt;p>I have no dispute with the idea that many children with gender dysphoria will feel comfortable in the bodies they were born with. Unfortunately, &amp;quot;many&amp;quot; is a weasel word that could mean 5, 5%, or 95%. Singal hides behind this because he cannot address the statistics.&lt;/p>
&lt;p>Singal has also left the following text in his article:&lt;/p>
&lt;blockquote>
&lt;p>The Amsterdam study reported on 127 adolescents, 79 of them boys, and found that 80 of those adolescents, or about two-thirds, had desisted — that is, now identified as cisgender — at the time of followup. Singh, meanwhile, found that of the 139 former GIC patients she got in touch with, all of them natal males (that is, born with a penis), 122, or 88 percent, had desisted.&lt;/p>
&lt;p>And when you combine these two studies with the other, admittedly earlier and smaller ones Cantor lists, all of which find the same thing, the case grows even stronger. While the numbers vary from study to study, as you would expect to between research conducted at different times in different places, the basic storyline is always the same: If a kid has gender dysphoria, the most likely outcome is that he or she will grow up to be a cisgender, gay or bisexual adult.&lt;/p>
&lt;/blockquote>
&lt;p>This text remains unchanged in Singal's article, even though it is strictly incorrect. This text appears several paragraphs before the parenthetical update and is not supported by the science. In fact, Thomas Steensma, the lead author of the study in question, even published &lt;a href="https://www.tandfonline.com/doi/full/10.1080/15532739.2018.1468292">follow-up commentary in 2018&lt;/a>. In it he states in clear terms (emphasis mine):&lt;/p>
&lt;blockquote>
&lt;p>Using the term desistence in this way does not imply anything about the identity of the desisters. The children could still be hesitating, searching, fluctuating, or exploring with regard to their gender experience and expression, and trying to figure out how they wanted to live. Apparently, they no longer desired some form of gender-affirming treatment at that point in their lives. &lt;strong>The assumption that we considered all desisters as having a &lt;em>fixed&lt;/em> cisgender identity is therefore an incorrect one.&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Let's put these statements side by side, first, fron Singal, uncorrected. Then, from Steensma:&lt;/p>
&lt;blockquote>
&lt;p>Singal: And when you combine these two studies with the other, admittedly earlier and smaller ones Cantor lists, all of which find the same thing, the case grows even stronger. While the numbers vary from study to study, as you would expect to between research conducted at different times in different places, the basic storyline is always the same: If a kid has gender dysphoria, the most likely outcome is that he or she will grow up to be a cisgender, gay or bisexual adult.&lt;/p>
&lt;p>Steensma: The assumption that we considered all desisters as having a &lt;em>fixed&lt;/em> cisgender identity is therefore an incorrect one.&lt;/p>
&lt;/blockquote>
&lt;p>In short, Singal emphatically has &lt;strong>not&lt;/strong> correctly updated or contextualized his 2016 article in &lt;em>The Cut&lt;/em>.&lt;/p>
&lt;h3 id="point-3-singal-selectively-misunderstands-context-and-logical-fallacies">Point 3: Singal selectively misunderstands context and logical fallacies&lt;/h3>
&lt;p>Singal takes issue with how I interpret his paragraph:&lt;/p>
&lt;blockquote>
&lt;p>Now, it’s important to note that this group was less dysphoric at intake. Of the total 80 kids in the sample who stopped coming, 39.3% of boys and 58.3% of girls met the criteria for what used to be called Gender Identity Disorder, or GID. That’s way lower than the corresponding percentages for the kids who stayed in touch with the clinic as they grew up — 91.3% and 95.% percent, respectively. This shouldn’t surprise us! It makes perfect sense that the more gender dysphoric a kid is, the more likely they are to maintain regular contact with a gender identity clinic and to seek out its services. The kids who are there because Dad freaked out and overreacted when little — [does a Google search for the most common Dutch boys’ names] — Daan put on Mom’s dress once, but is a happy and healthy and non-dysphoric kid, aren’t going to keep coming.&lt;/p>
&lt;/blockquote>
&lt;p>Singal is a better rhetorician than this, so he should understand that the phrase &amp;quot;it makes perfect sense...&amp;quot; in the context of this paragraph can be taken to imply a &lt;em>type&lt;/em> of scenario that could result in the numbers he quotes. But there is not evidence that this &lt;em>potential&lt;/em> factor is present in the study statistics, and by presenting it along side of them he knowingly chooses to bias the reader towards this type of scenario.&lt;/p>
&lt;p>Singal doesn't really dispute this point, in the end. But he chooses to present this hypothetical instead of other potential explanations supported by the authors. Again, I cite Steensma 2018:&lt;/p>
&lt;blockquote>
&lt;p>The children could still be hesitating, searching, fluctuating, or exploring with regard to their gender experience and expression, and trying to figure out how they wanted to live.&lt;/p>
&lt;/blockquote>
&lt;p>Singal's choice of wording here biases his reader in a direction. This is deliberate.&lt;/p>
&lt;h3 id="point-4-singal-misunderstands-my-claim-about-a-diagnostic-severity">Point 4: Singal misunderstands my claim about a diagnostic severity&lt;/h3>
&lt;p>In addressing Singal's hypothetical scenario, I claimed:&lt;/p>
&lt;blockquote>
&lt;p>Moreover, neither Singal nor Steensma et al provide any conclusive evidence that gender dysphoria has any such severity scale. Certainly, the DSM-5 includes no severity or degree scale with its diagnostic criteria of Gender Dysphoria; neither ICD-10 nor ICD-11 include a severity scale in their coding. While it might make intuitive sense that some gender dysphoria is &amp;quot;worse&amp;quot; than others, there is no commonly acceptable method for assessing this, and the attempts made in the literature so far have not conclusively determined a means by which gender dysphoria can be so ordered.&lt;/p>
&lt;/blockquote>
&lt;p>This was in relation to the earlier statement Singal made about a hypothetical kid putting on a hypothetical dress, a scenario not present in the Steensma &lt;em>et al&lt;/em> paper. My statement is correct. Steensma &lt;em>et al&lt;/em> use the Utrecht Gender Dysphoria Scale (UGDS) in their research. This is clear and I do not dispute this.&lt;/p>
&lt;p>I should have been more clear with this paragraph. When I say there is no commonly acceptable method for assessing this, this is true: the UGDS is not validated in all languages and is not the only such scale in use. Other scales exist in more modern contexts, for example the Transgender Congruence Scale (TCS). The UGDS is explicitly binary and is unable to capture, e.g., the more gender fluid models referenced by Steensma in his 2018 commentary.&lt;/p>
&lt;p>I admit to Singal's criticism regarding my lack of clear explanation here. I am not as good a writer as he is. So I will rebut his piece by simply clarifying my own stance.&lt;/p>
&lt;p>At the core of my issue with Singal's commentary is his clear and unwaivering conclusion that the majority of children who present gender issues end up as &amp;quot;cisgender adults.&amp;quot; The UGDS is not a scale capable of assessing the many ways in which someone can be something other than a cisgender adult. The UGDS is not a commonly acceptable method of assessing nonbinary identities or other transgender identities. UGDS provides &lt;em>a&lt;/em> way of doing this for some identities but there are &lt;em>others&lt;/em>, and the way the evidence is presented in Steensma &lt;em>et al&lt;/em> does not address the myriad possibilities for a participant to stop interacting with a clinic.&lt;/p>
&lt;p>Moreover, the scenario that Singal presents &lt;strong>is not captured in the UGDS&lt;/strong>. There is no entry in the UGDS for &amp;quot;I have put on a dress once.&amp;quot; The behavior that Singal presents is simply not relevant to the clinical instruments used in this study, but he presents it side-by-side with the study data as if it were. This is misleading at best.&lt;/p>
&lt;h3 id="conclusions">Conclusions&lt;/h3>
&lt;p>Jesse Singal once again flaunts his lack of scientific knowledge with handwaving arguments that are disconnected from the research, and fails to reference more recent literature &lt;em>by the same authors&lt;/em> that refute his claims. Singal's 2016 piece is dishonest and mendacious. He provides no evidence for his claims in his follow-up that survive even basic scrutiny.&lt;/p>
&lt;p>Fundamentally, Singal has failed to provide a single clear statistical measure to support his claim. He makes a claim about &lt;em>adults&lt;/em> when in fact the study's lead author has clearly and explicitly rejected that conclusion. Singal has yet to adequately address these two fatal flaws in his piece.&lt;/p>
&lt;p>&lt;strong>Update: I corrected &lt;span class="math">\(80\% to \)&lt;/span>63\%$$ and added a paragraph in the conclusion shortly after upload. A second update included a section on Bayes' Theorem that directly addresses Singal's bizarre assumptions.&lt;/strong>&lt;/p></description></item><item><title>Jesse Singal Got More Wrong Than He Thinks</title><link>https://emilygorcenski.com/post/jesse-singal-got-more-wrong-than-he-thinks/</link><pubDate>Fri, 02 Apr 2021 09:59:53 +0200</pubDate><guid>https://emilygorcenski.com/post/jesse-singal-got-more-wrong-than-he-thinks/</guid><description>&lt;p>Jesse Singal has long been on a crusade against appropriate trans healthcare for children and adolescents. He's gotten key details wrong, but just how wrong he is he doesn't even know.&lt;/p>
&lt;p>Jesse Singal for the past several years has taken up a crusade of asking &amp;quot;difficult&amp;quot; questions about healthcare for transgender children. His magnum opus in this domain was a cover story in &lt;em>The Atlantic&lt;/em> a few years back. Ordinarily, a journalist writing about important public health matters is something we should otherwise celebrate. But Singal's ideological biases have colored both his analysis and his reporting in troublesome ways. In this post, I will break down how his conclusions on a key article he relies on to craft his narrative are not only faulty, but reflect the extent to which Singal is out of his element when reporting on health science.&lt;/p>
&lt;p>I'll address faults in Singal's statistical reasoning, inferential skills, and journalistic practices. I'll begin by setting some context on his conclusions, and I'll keep the scope narrow to avoid corrupting my argument with value judgments of Singal's other behaviors. The point I will try to make is how Singal's powerful conclusions have foundations on very shaky scientific grounds. I'll focus on the statistics and Singal's rhetoric. In short, while I will make no effort to mask my personal disdain for how Singal carries and allies himself, I will attempt to keep the focus entirely on the &lt;em>quality&lt;/em> of Singal's work product.&lt;/p>
&lt;p>In this piece, for the sake of clarity I will use &amp;quot;natal males&amp;quot; and &amp;quot;natal females&amp;quot; to refer to sexual assignments at birth when exploring the literature. I choose this scientific wording to minimize the cognitive distance between my piece and the scientific literature, while acknowledging that this choice of wording is not ideal in social settings. This choice is necessitated by the way in which data are presented in the studies I will explore, which appear, for instance, to label transgender girls as &amp;quot;boys.&amp;quot;&lt;/p>
&lt;h3 id="background">Background&lt;/h3>
&lt;p>Jesse Singal has been writing about trans issues for many years. In his writing, he attempts a balance between a position of &amp;quot;just asking questions&amp;quot; while also trying to maintain a facade of being outwardly supporting of trans rights; indeed, I will be the first to confess that his writing is full of padding that makes it less stark as many activists claim it is. Where Singal enters the realm of controversy is his narrow focus on transgender healthcare for children. In his writing, he does a poor job masking his apparent belief that transition care shouldn't be provided to children at all, particularly to transgender boys.&lt;/p>
&lt;p>The science of transgender healthcare for children is far from settled. There are very reasonable questions to ask about when and how gender-affirming medical interventions should be given. There is a clear need for more research into the effectiveness of certain diagnostic measures, the efficacy and safety of certain treatments, and the prevalence of transgender people of all classications broadly. These factors are complicated by evolving standards regarding the clinical diagnosis of gender dysphoria, the ability and tendencies of practitioners to be able to confidently diagnose gender dysphoria, and rapidly changing social standards regarding transgender acceptance. I will not attempt to solve these challenges in this post, nor will I make any claims not backed by science regarding what I think the standards of care &lt;em>should&lt;/em> be.&lt;/p>
&lt;p>Despite this, it is possible to explore the existing scientific literature and examine how Singal wields its conclusions. To do this, we go back in time to examine what Singal has written on the issue, and how. In July of 2016, Singal published a piece in &lt;em>The Cut&lt;/em>, provocatively titled, &amp;quot;What's Missing From the Conversation About Transgender Kids.&amp;quot; Singal opens the piece by framing the issue of transgender healthcare for children as one of a heated debate, omitting that the debatees are often cisgender adults. The article quickly enters the realm of &amp;quot;Desistence,&amp;quot; a controversial idea that some (or in Singal's mind, the majority of) children who report having cross-gender feelings eventually &amp;quot;grow out&amp;quot; of this &amp;quot;phase.&amp;quot; Desistence, and its cousin, detransition, is a real phenomenon: I know several de-transitioners myself.&lt;/p>
&lt;p>Singal misses the central controversy of desistence/detransition as quickly as he introduces it: for trans people, the question is not whether desistence/detransition is real, the question is whether desisters/detransitioners, who are &lt;em>cisgender&lt;/em>, have an undue influence on the healthcare policies that affect people who are &lt;em>transgender&lt;/em>. Put another way, why is it seen as more of a tragedy if a cisgender person gets the wrong healthcare than if a transgender person does?&lt;/p>
&lt;p>Singal makes no attempt to explore the structural dynamics of this question, a curious omission from someone who prides himself on writing about social science. Instead, he relies on a smattering of scientific literature on desistence research spanning 40 years. Singal links to a list of scientific studies aggregated by James Cantor, a sex researcher in Toronto. This list, published in early 2016, lists 11 studies (including one unpublished doctoral dissertation). The largest sample size of the published studies therein is also the most recent: &lt;a href="https://www.docdroid.net/hY664Sc/steensma2013-pdf#page=2">a 2013 publication&lt;/a> in the &lt;em>Journal of the American Academy of Child &amp;amp; Adolescent Psychiatry&lt;/em> by Steensma &lt;em>et al&lt;/em>, titled &amp;quot;Factors Associated With Desistence and Persistence of Childhood Gender Dysphoria: A Quantitative Follow-Up Study.&amp;quot;&lt;/p>
&lt;p>Singal relies heavily on his analysis of the study's data in his piece for &lt;em>The Cut&lt;/em>. He writes:&lt;/p>
&lt;blockquote>
&lt;p>And when you combine these two studies with the other, admittedly earlier and smaller ones Cantor lists, all of which find the same thing, the case grows even stronger. While the numbers vary from study to study, as you would expect to between research conducted at different times in different places, the basic storyline is always the same: If a kid has gender dysphoria, the most likely outcome is that he or she will grow up to be a cisgender, gay or bisexual adult.&lt;/p>
&lt;/blockquote>
&lt;p>This statement is the central thesis to his article. Immediately after, he acknowledges that people can dispute the study on its merits before spending the remaining 2500 or so words explaining why they are wrong to do so. In this tirade, he makes several critical rhetorical errors, which I will now explore. Of these errors, he has admitted only one. I will discuss this error, but rather than re-litigate a nearly three-year-old controversy, I will attempt to emphasise the others. These errors are:&lt;/p>
&lt;ol>
&lt;li>Singal (and many others) badly misinterpreted the meaning of the data by inducing a false dichotomy;&lt;/li>
&lt;li>The data as presented are not reproducible, and Singal, who is writing a book on the replication crisis, failed to catch this;&lt;/li>
&lt;li>Even if we accept the data as legitimate, Singal extrapolates an unsupported conclusion;&lt;/li>
&lt;li>Singal, in correcting the first error, introduces a conclusion unsupported by evidence to justify his interpretation.&lt;/li>
&lt;/ol>
&lt;p>Let's explore them in sequence.&lt;/p>
&lt;h3 id="error-1-singal-introduces-a-false-dichotomy">Error 1: Singal Introduces a False Dichotomy&lt;/h3>
&lt;p>The Steensma paper studied 127 people who entered the Center of Expertise on Gender Dysphoria at the Vrije Universiteit (VU) University Medical Center in Amsterdam. This sampling represents 127 people out of 225 who were referred to the clinic between 2000 and 2008; inclusion criteria for the study included those who were at least 15 years of age at the time of follow-up, and follow-up occurred between 2008 and 2012. In Table 1 in the report, the data are broken down into two distinct groups: &amp;quot;Persisters&amp;quot; (&lt;span class="math">\(n=47\)&lt;/span>) and &amp;quot;Desisters&amp;quot; (&lt;span class="math">\(n=80\)&lt;/span>). This is the first mistake, as this dichotomy is false. The Desister category includes six responses by parents (as opposed to study subjects) and twenty-eight nonresponders. Simply put, the responses from these subgroups cannot be relied upon, and anyone with basic clinical study experience should know that &lt;a href="https://en.wikipedia.org/wiki/Lost_to_follow-up">loss to Follow-up&lt;/a> is not the same thing as a negative response.&lt;/p>
&lt;p>Two years after Singal relied on this analysis to shape his narrative in &lt;em>The Cut&lt;/em>, he was forced to accept that the reasoning was faulty. He wrote &lt;a href="https://medium.com/@jesse.singal/everyone-myself-included-has-been-misreading-the-single-biggest-study-on-childhood-gender-8b6b3d82dcf3">a follow-up Medium post&lt;/a>, and his article in &lt;em>The Cut&lt;/em> was updated (although no time and date for the update is provided). Despite this correction, Singal's conclusions are not changed to reflect this methodological misunderstanding. Indeed, the text immediately after the correction instead attacks several transgender people by name for not debunking the literature that he himself confesses to have misread.&lt;/p>
&lt;p>This correction is the only error Singal has admitted to making with respect to this publication. Although his apology is nowhere near as loud as his mistake, we can at least rest easy knowing that, with the hindsight of years, Singal is capable of acknowledging mistakes. Let us therefore proceed onto the next ones.&lt;/p>
&lt;h3 id="error-2-the-data-are-irreproducible">Error 2: The Data are Irreproducible&lt;/h3>
&lt;p>Table 1 in Steensma &lt;em>et al&lt;/em> reports demographic data of the study participants. Within each group, the ages of the participants both during initial assessment and during follow-up are reported. Here, the authors report four significant digits for the mean and standard deviations for the age, but only two significant digits for the age range. This makes validation of the data difficult.&lt;/p>
&lt;p>For example, in the natal female cohort of the &amp;quot;Responders&amp;quot; subgroup, the authors report a sample size of &lt;span class="math">\(n=15\)&lt;/span>. The ages are reported to have a mean age of &lt;span class="math">\(16.03\)&lt;/span> years and a standard deviation of &lt;span class="math">\(0.80\)&lt;/span> years. However, &lt;span class="math">\(\frac{1}{15} \approx 0.06667\)&lt;/span>, so a resolution of &lt;span class="math">\(0.03\)&lt;/span> years is unattainable if years were collected as integer values.&lt;/p>
&lt;p>The table also reports a cohort with sample size &lt;span class="math">\(n=1\)&lt;/span>, and here a mean age of &lt;span class="math">\(16.32\)&lt;/span> years is reported. Therefore, it is likely that years were recorded as age to-the-day, but this does not shine through in the reporting of the age ranges in the paper. Moreover, I could not find any reporting standards for the &lt;em>Journal of the American Academy of Child &amp;amp; Adolescent Psychiatry&lt;/em>, but in at least one of the papers referenced by Cantor, age ranges are reported to four significant digits, consistent with the descriptive statistics.&lt;/p>
&lt;p>This is more likely to be a formatting error than it is to be indicative of faulty data handling practices or academic fraud. Nevertheless, without access to the data used to generate the publication, the conclusions cannot be replicated. Jesse, who is publishing a book on the replication crisis this year, was in every position to catch this, and did not. This is relevant for reasons that will become clear when assessing the next error.&lt;/p>
&lt;h3 id="error-3-singal-draws-an-unsupportable-conclusion-from-irreproducible-data">Error 3: Singal Draws an Unsupportable Conclusion from Irreproducible Data&lt;/h3>
&lt;p>One might be tempted to claim that I am nitpicking when arguing over significant digits in a table, but this is no small matter when assessing conclusions. In the quote from Singal's piece for &lt;em>The Cut&lt;/em> that I quoted earlier, he states (emphasis added): &amp;quot;[i]f a kid has gender dysphoria, the most likely outcome is that he or she will grow up to be a cisgender, gay or bisexual &lt;strong>adult&lt;/strong>.&amp;quot;&lt;/p>
&lt;p>Singal's conclusion from this study and the several older and smaller studies before it is faulty. He uses the analysis to suggest that desistence/detransition in childhood is permanent, and in particular that the Steensma &lt;em>et al&lt;/em>. study draws conclusions about &lt;em>adulthood&lt;/em>. In fact, the study makes no claims about the prevalence of gender dysphoria in adulthood. This may be partly due to the fact that very few participants could have possibly been considered adults at the time of follow-up.&lt;/p>
&lt;p>To validate this, I needed to rely on the data present in Table 1 of the Steensma &lt;em>et al&lt;/em> study. I attempted to reconstruct the age distributions using the fewest signficant digits reported in the paper. Discrete distributions can be reconstructed from a small handful of parameters using &lt;a href="https://en.wikipedia.org/wiki/Diophantine_equation">Diophantine equations&lt;/a>. Put more simply, given a sufficiently small set of discrete data, a known sample size, a mean, a variance, and bounded ranges, it is possible to identify the raw data sets that might generate those descriptive statistics.&lt;/p>
&lt;p>Using &lt;a href="https://github.com/katherinemwood/corvids">CORVIDS&lt;/a>, an open-source software package that does just this, I attemped to reproduce the distribution of integer ages suggested by the reported age ranges. Unfortunately, for the reasons described above this proved impossible if representing the data with only two significant digits.&lt;/p>
&lt;p>So I went ahead and assumed that fractional years were recorded during follow-up. Using half-years as a resolution, I was able to nearly represent the data in Table 1 by generating potential age distributions. For example, by looking at the natal females cohort in the &amp;quot;Responders&amp;quot; subgroup, I was able to identify that of the 15 participants, only one could be a legal adult in the Netherlands (age 18 and above). Similar conclusions can be drawn from the other cohorts. Without accurate data, it is impossible to claim definitively how many participants were legal adults in this study. However, from the data reported, we can estimate that a maximum of around ten adults could have possibly been part of the group labeled &amp;quot;Desisters.&amp;quot;&lt;/p>
&lt;p>The experience of a maximum of ten adults, none of whom who had reached twenty years of age, is far from sufficient evidence to reflect the strength of the conclusion that Singal publishes: that the &lt;strong>most likely outcome&lt;/strong> is that the child would desist from transitioning and would remain free of gender dysphoria as an adult.&lt;/p>
&lt;p>Even if we admit Singal's framing that the Steensma &lt;em>et al&lt;/em> study and the prior studies collected by Cantor are correct, then Singal bases his sweeping conclusion on &lt;strong>around 100 individuals studied over a period of 40 years&lt;/strong>, a period which has also seen dramatic social changes in the mainstream acceptance of LGBTQ+ people generally.&lt;/p>
&lt;h3 id="error-4-singals-corrections-introduce-an-unsupported-hypothesis">Error 4: Singal's Corrections Introduce an Unsupported Hypothesis&lt;/h3>
&lt;p>Singal was able to admit one of his mistaken interpretations of the Steensma &lt;em>et al&lt;/em> data (though he has missed the other two presented here). Despite this admission, he fails to retract the conclusions he drew from his faulty analysis. Instead, he doubles down on his conclusions and instead commits a common sense fallacy:&lt;/p>
&lt;blockquote>
&lt;p>It makes perfect sense that the more gender dysphoric a kid is, the more likely they are to maintain regular contact with a gender identity clinic and to seek out its services. The kids who are there because Dad freaked out and overreacted when little — [does a Google search for the most common Dutch boys’ names] — Daan put on Mom’s dress once, but is a happy and healthy and non-dysphoric kid, aren’t going to keep coming.&lt;/p>
&lt;/blockquote>
&lt;p>Here, Singal invents a scenario from whole cloth. There is nothing in the Steensma publication that suggests that any of the study participants were referred to the Amsterdam clinic because they put on Mom's dress once; in fact Singal presents no evidence of the prevalence of this type of intervention for this type of behavior whatsoever. This is instead an appeal to popular misconceptions of transgender lives.&lt;/p>
&lt;p>Moreover, neither Singal nor Steensma &lt;em>et al&lt;/em> provide any conclusive evidence that gender dysphoria has any such severity scale. Certainly, the DSM-5 includes no severity or degree scale with its diagnostic criteria of Gender Dysphoria; neither ICD-10 nor ICD-11 include a severity scale in their coding. While it might make intuitive sense that some gender dysphoria is &amp;quot;worse&amp;quot; than others, there is no commonly acceptable method for assessing this, and the attempts made in the literature so far have not conclusively determined a means by which gender dysphoria can be so ordered.&lt;/p>
&lt;p>In fact, while reducing his &lt;em>mea culpa&lt;/em> to this argument, Singal misses a critical factor: of those classified as &amp;quot;Desisters&amp;quot;, natal males reported a remarkably high incidence of having no transition in their social lives: &lt;span class="math">\(96.4\%\)&lt;/span> of natal males vs &lt;span class="math">\(54.2\%\)&lt;/span> of natal females. Of those whose parents responded, &lt;span class="math">\(100\%\)&lt;/span> of natal males' parents reported no social transition. This could be easily be explained by misogynistic social pressures or family situations, whereby the children are &lt;em>pressured&lt;/em> into not returning to the clinic, or &lt;em>denied&lt;/em> access to social transition support, thereby suppressing the reports about their dysphoria. Much as with Singal's conclusion, there is no evidence of this, either, because this study does not longitudinally track these participants into adulthood. Moreover, transition in adulthood is open-ended: people may transition at 22 or 92.&lt;/p>
&lt;p>Simply put, Singal chooses the hypothetical scenario that suits his narrative, and ignores an equally-plausible hypothetical scenario which challenges his narrative. Importantly, he chooses the hypothetical scenario that sounds farthest from the lived experiences of some of the trans people who have criticized his work.&lt;/p>
&lt;h3 id="conclusions">Conclusions&lt;/h3>
&lt;p>Jesse Singal has relied on a small subset of scientific research to draw broad conclusions about transgender children. Singal has no apparent background in psychiatry or clinical research statistics and he is not to my knowledge transgender. This lack of relevant subject-matter expertise has evidently allowed him to miss critically important details in the thin body of knowledge regarding transgender children. When confronted with his mistakes, Singal instead resorts to appeals to common sense to backfill the missing science to justify his conclusions, instead of retracting his articles and apologizing for antagonizing his critics.&lt;/p>
&lt;p>Singal is not universally wrong. He attempts to walk a middle road, and there are even times when, from a scientific standpoint, I have a hard time disagreeing with some of his points. But Singal's flaw is that his use of the knowledge gap of trans healthcare is completely one-sided. When he wrote on concerns over the safety of puberty blockers in a recent Substack post, he did not report on studies that show that they are safely and effectively used for treating Central Precocious Puberty, such as &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6486823/#bib2">this study&lt;/a>. Instead, he wrote about expert but qualitative concerns over long-term safety of these drugs, without providing scientific reference for such concerns or even acknowledging that a gap in the science exists.&lt;/p>
&lt;p>Singal has neither the experience nor the range to critically assess the research on its own merits. This is fine for someone who is a science reporter and not a scientist. But the ethics of journalism demand that he treat all perspectives with equal scrutiny, and on this measure Singal fails.&lt;/p>
&lt;p>&lt;em>This post has been updated to correct small typos and grammatical errors.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Update (07.04.2021): Singal has responded, and my rebuttal can be found &lt;a href="https://emilygorcenski.com/post/jesse-singal-still-got-more-wrong-than-he-thinks/">here&lt;/a>&lt;/strong>.&lt;/p></description></item><item><title>Data and Daylight: New Tools for Exposing and Countering Neofascist Actors</title><link>https://www.youtube.com/watch?v=E6iIVEW-Qjg</link><pubDate>Fri, 02 Apr 2021 09:53:50 +0200</pubDate><guid>https://emilygorcenski.com/post/data-and-daylight-new-tools-for-exposing-and-countering-neofascist-actors/</guid><description>&lt;p>See my talk at COGSEC talking about modeling white supremacist hate.&lt;/p></description></item><item><title>Disinformed with Bridget Todd</title><link>https://podcasts.apple.com/us/podcast/disinformed-meet-activist-using-data-science-to-fights/id1520715907?i=1000511345583</link><pubDate>Wed, 03 Mar 2021 17:59:00 +0200</pubDate><guid>https://emilygorcenski.com/post/disinformed-with-bridget-todd/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/1200x630wp.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/1200x630wp.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/1200x630wp.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/1200x630wp.png" width="600"/></media:content><description>&lt;p>I joined the inestimable Bridget Todd to talk fighting white supremacy with data.&lt;/p></description></item><item><title>Solace and Solitude: Retiring from Activism</title><link>https://emilygorcenski.com/post/solace-and-solitude-retiring-from-activism/</link><pubDate>Wed, 03 Mar 2021 14:14:40 +0100</pubDate><guid>https://emilygorcenski.com/post/solace-and-solitude-retiring-from-activism/</guid><description>&lt;p>Activism isn&amp;rsquo;t a sprint, nor is it a marathon. It is a relay race, and it is my time to pass the baton.&lt;/p>
&lt;p>Years ago, when I first transitioned, I made a conscious choice to live transparently, under my real name, and to use my personhood and my voice to speak out against the things that I found wrong in the world. My voice wasn&amp;rsquo;t worth much then. I was a small town girl, a newly-out trans woman, with few friends in the city I had called home for more than half a decade. It was my wife who suggested I join a Slack group for LGBTQ people in tech; it would be here I would find words to describe the shape of my changing politics, and friends who would mentor me, teach me, and most of all, respect me for the person I really was. Having strong opinions about Things That Matter was as much a coming out as transitioning was; for too long, I had lived seeking approval that would never come from conservative people in my life who didn&amp;rsquo;t respect me before transition and who would respect me even less after.&lt;/p>
&lt;p>When I began talking about social values, I stayed as close to my lane as I could. I wanted to write about the many ills of the tech industry: the relentless shortcuts in ethics and quality that were plaguing the products we were creating, the sexist and racist toxicity of our workplaces, and the deleterious and gentrifying impact our high salaries had on urban communities throughout the United States. While I was always against fascism, I didn&amp;rsquo;t really seek out fascists to oppose, but it was not long before I stumbled upon them anyways.&lt;/p>
&lt;p>One of my first public acts of activism involved a data breach of around 70,000 OkCupid users. These users' question responses were unethically scraped for a pseudo-scientific study by a known neo-reactionary self-proclaimed psychologist. The data were hosted on the Open Science Framework, a service created by the Center for Open Science, in my home city of Charlottesville, Virginia. This was in 2016, more than year before Charlottesville became a household name for entirely different reasons involving the far right. Ironically, I first encountered the leak while at a women-in-tech meetup hosted by COS. &lt;a href="../when-open-science-isnt-the-okcupid-data-breach/">I blogged about the issue then, in a post that I have recently recovered&lt;/a>. I should have seen then the storm that would be coming, &lt;em>inter alia&lt;/em>: the Lambdaconf debacle and the second &amp;ldquo;SJW list&amp;rdquo;; Donald Trump&amp;rsquo;s election; and the James Damore drama.&lt;/p>
&lt;p>I got a verified checkmark for &lt;a href="https://twitter.com/EmilyGorcenski/status/802148854875439104?s=20">the Twitter thread I wrote about the quality standards&lt;/a>, or lack thereof, of voting machine software. I went semi-viral for &lt;a href="https://twitter.com/EmilyGorcenski/status/752335310915244033?s=20">a tweet&lt;/a> pointing out a press release by Lenco, the creator of the Bearcat armored vehicle, describing the platform as a &amp;ldquo;weapon&amp;rdquo; to be &amp;ldquo;unleashed on the streets of East Baton Rouge&amp;rdquo; during a Black Lives Matter demonstration. Early in Trump&amp;rsquo;s administration, &lt;a href="https://twitter.com/EmilyGorcenski/status/824695356436815872?s=20">I went viral&lt;/a> for pointing out the anomalous lack of nominees for key State Department positions. In all of these cases, I combined my professional knowledge with a penchant for open source research to find data sitting in public, and using that to shape the way we saw current events. For the next five years, this was the primary skillset that I employed to fight against increasingly violent forces of white supremacy.&lt;/p>
&lt;p>The end of 2016 was a terrifying time. Nobody really knew what was coming with the Donald Trump administration. All I knew was that my name was on a hitlist, created with the full knowledge and assent of someone with White House access. I worked remote at the time, and figured it would be a good time to explore the scenery overseas. The day before Trump&amp;rsquo;s inauguration, I embarked on a monthlong trip to Prague, wherein I immersed myself in the history of a city that has seen empires come and go. It was during this trip that I resolved to focus my activism into a more local context. I returned to the United States to have surgery, and while I was still recovering, the first trip I made outside my house was to attend a vigil for &lt;a href="https://www.glaad.org/tags/sage-smith?response_type=embed">Sage Smith&lt;/a>, a Black transgender woman who had gone missing years prior. This was March of 2017, and Charlottesville had not yet transitioned from a city to a Moment.&lt;/p>
&lt;p>All politics is local, as the saying goes, and I resolved to invest myself in contributing to local movements addressing local issues, instead of worrying about national and world politics that I had no ability whatsoever to change. It was only dark serendipity that my locality happened to be the first place that Jason Kessler and Richard Spencer chose for their first neo-Nazi tiki torch rally. I was in Berlin at the time. It was my first time in the city; I resolved to use the chance to understand more about how Berliners handle Nazis, past and present. I went to demos, I saw how they were organized. I was particularly impressed by the way groups like &lt;a href="https://berlin-gegen-nazis.de/en/">Berlin Gegen Nazis&lt;/a> used public messaging and advertising to raise awareness of anti-Nazi campaigns. Mainstream antifascism is not something I had seen before in the US. When I returned to Charlottesville, I knew that I was going to have to bring those learnings home.&lt;/p>
&lt;p>The Summer of 2017 in Charlottesville was a contentious time. Shortly after I returned home, &lt;a href="https://twitter.com/EmilyGorcenski/status/870449658098855936?s=20">local activists were disrupting Jason Kessler&lt;/a> and his friends dining on the Downtown Mall. I stumbled upon the event; it was there that I discovered that many of the people I met at Sage Smith&amp;rsquo;s vigil were some of the same activists shouting Jason Kessler out of town. When that same group held an anti-fascist march from UVA to Downtown shortly after, they announced that Charlottesville would be home to at least two more white supremacist rallies that summer: the July 8 KKK rally, and the August 12 Unite the Right rally. My intentions to keep my activism local were taking on the qualities of a Greek tragedy.&lt;/p>
&lt;p>I never cared much about my follower count, at least not since I hit one thousand. But what I learned from the OkCupid and Lambdaconf incidents was that the left, generally speaking, did not have the same social media game that the right did. The left had poor weapons to counter the propaganda machine that the neo-Nazis and white supremacists had firing on all cylinders. I also knew that Charlottesville&amp;rsquo;s leftist community didn&amp;rsquo;t really have a loud enough voice to counter the narrative that Kessler and crew were spreading. I watched GamerGate unfold a few years prior. I was certain that the local activist community would be eviscerated by the online mob.&lt;/p>
&lt;p>I had two weapons that I could bring to the fight that summer: a verified Twitter account and first-hand experience in the activist-media dynamic. I resolved to contribute what I could: I offered myself up as a lightning rod, someone who could draw the ire of the far right, keeping the heat off of local activists. All the while, I would build and foster relationships with journalists and media, helping them understand the situation on the ground, and doing what I could to shape the narrative about how that summer would unfold. If I am to be accused of seeking attention, the attention I sought was only to shift the rage away from those in more meaningful, yet more vulnerable, positions. I did this with the knowledge and support of my affinity group, to which I was accountable and which was accountable to me.&lt;/p>
&lt;p>In many ways, this was a total success. I have been the main target of everything from harassment campaigns to lawsuits to FBI investigations to at least one international attempt on my life. And while I could not totally shield my community from this wrath, I feel proud to know that many of those who contributed so much to our summer of resistance are still unknown to those who would wish to harm them.&lt;/p>
&lt;p>But of course this has a cost. There is only so much hate that one can receive before one is poisoned by it. There is only so much room for trauma in a soul that longs for freedom. I have given so much for this fight. Relationships have suffered. Money has been lost. Pain has been endured. But the only unrecoverable asset I have lost is time.&lt;/p>
&lt;p>The time I have spent on activism in the years that have passed since Charlottesville became a Moment, and not a city, has all been to fill a need. When I started &lt;a href="https://www.first-vigil.com">First Vigil&lt;/a>, it was intended to be a resource for journalists and activists to improve their coverage of the far right. Chris Cantwell will now spend a few years in prison. I have uncovered crucial lies that are likely to decimate the now-defunct Alt Right in an upcoming civil lawsuit. I have exposed at least a dozen neo-Nazis, making communities around the country safer. I am immensely proud of what I have done with this time.&lt;/p>
&lt;p>But all of this work takes upkeep, which itself costs more time. I did not seek a profile in &lt;a href="https://www.theguardian.com/us-news/2020/oct/01/white-supremacist-protest-activism-emily-gorcenski">&lt;em>The Guardian&lt;/em>&lt;/a> or in &lt;a href="https://taz.de/Emily-Gorcenski-enttarnt-US-Neonazis/!5749588/">&lt;em>Die Tageszeitung&lt;/em>&lt;/a>. I don&amp;rsquo;t solicit journalists to offer quotes. I don&amp;rsquo;t ask to give seminars or sit on panels. These things cost me time. And I have given my time because there has not been, in my opinion, enough people publicly doing the work I felt was important.&lt;/p>
&lt;p>But that has now changed. Media coverage of the far right has much to improve. But the people with the skills to cover it are growing in both prominence and number. While very few antifascist organizations were in the Nazi-exposing business years ago, there are now many more people doing this work. Simply put, the work I feel is most important is being done by many more people with much more skill than I ever had. Maybe it was always that way and I just didn&amp;rsquo;t see it. Or maybe I had some small hand in creating the ecosystem where that labor has value.&lt;/p>
&lt;p>I find myself with less time now. I find myself getting older. For the first time in years, I have real space to grow in my job. I am determined to speak fluent German. I want to spend more time with my wife, Christine. And I still have so much of the world left to see. My muscles don&amp;rsquo;t ache any less, my headaches don&amp;rsquo;t go away any quicker. I have spent too many nights staring at images of tiki torches, reliving the worst trauma of my life over and over and over again.&lt;/p>
&lt;p>I watched those images play out on TV, in movies, &lt;a href="https://twitter.com/i/status/1324796960503668739">in Joe Biden&amp;rsquo;s campaign ads&lt;/a>. Charlottesville became a Moment, and for that dark serendipity I described earlier, I became part of that Moment, too. I see now that the work I did left a small but permanent dent in the Universe, and that while history can forget my name, the impact of my actions is indelible. I can withdraw now to invest what remains of my time into those things that I find valuable for myself. I have lost too much of it over these years.&lt;/p>
&lt;p>I move on with no regrets over the time I have spent. There have been moments of doubt, namely those moments when I have felt that my community did not live up to its end of the bargain. Still today, I sit and watch as Jason Kessler and others spread lies and hate about me, with few speaking out against it. I watch as transphobia runs rampant with a frighteningly low level of opposition. The small amount money I have made doing this work, either through speaking engagements or other donations, represents significantly less than minimum wage. These moments have been filled with a deafening solitude. I wish I had demanded more commitment to protect my own time and spirit.&lt;/p>
&lt;p>But if the best moment to make that time was five years ago, the second best time is now. And so I will be stepping back from all personal activism. I will be declining all media and speaking requests for the foreseeable future, except those that pertain to my job. I will be handing over the data from First Vigil to an institution of repute, who can handle it with the care it deserves. I resolve to be kinder, to myself and others. I no longer need to be the lightning rod, and I no longer need to curate the public persona which is so different from who I truly am. I will continue my longer-form projects, namely writing and advising research groups. I will still comment on public matters, but only out of personal interest and not out of a sense of moral duty. I will forever be antifascist, and I will never be able to quit the parts of me that are hated. But I have done my tours of duty in this culture war and it is time for me to retire.&lt;/p>
&lt;p>I don&amp;rsquo;t know what is next. I just know that I deserve to find out. It has been the honor of a lifetime to have been given this opportunity, and I hope I made a few of you proud with what I did with it.&lt;/p>
&lt;p>In solidarity forever,&lt;/p>
&lt;p>Emily&lt;/p></description></item><item><title>What I Use for Work</title><link>https://www.usesthis.com/interviews/emily.gorcenski/</link><pubDate>Wed, 03 Mar 2021 12:25:18 +0100</pubDate><guid>https://emilygorcenski.com/post/what-i-use-for-work/</guid><description>&lt;p>Daniel from uses this spoke with me about what technology I use for work and activism.&lt;/p></description></item><item><title>Mit Daten gegen Rechtsextreme</title><link>https://taz.de/Emily-Gorcenski-enttarnt-US-Neonazis/!5749588/</link><pubDate>Mon, 01 Mar 2021 17:59:00 +0200</pubDate><guid>https://emilygorcenski.com/post/mit-daten-gegen-rechtsextreme/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/Emily-Gorcenski-1.jpeg%22"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/Emily-Gorcenski-1.jpeg%22" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/Emily-Gorcenski-1.jpeg%22" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/Emily-Gorcenski-1.jpeg%22" width="600"/></media:content><description>&lt;p>Vor ein paar Monaten sprach ich mit Aida Baghernejad über die Bedrohung, die Rechtsextremismus darstellt, und darüber, wie man mit Daten widerstehen kann.&lt;/p></description></item><item><title>COGSEC 2021 — Resources</title><link>https://emilygorcenski.com/post/cogsec-2021-resources/</link><pubDate>Mon, 01 Mar 2021 04:00:07 +0100</pubDate><guid>https://emilygorcenski.com/post/cogsec-2021-resources/</guid><description>&lt;p>This post is a list of resources to accompany my talk, &amp;ldquo;Data and Daylight: New Tools for Exposing and Countering Neofascist Actors&amp;rdquo; given digitally at COGSEC on 5 March 2021.&lt;/p>
&lt;h3 id="the-cases-of-matthew-haviland-and-joshua-john-leff">The Cases of Matthew Haviland and Joshua John Leff&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.courtlistener.com/recap/gov.uscourts.mad.213562/gov.uscourts.mad.213562.3.3.pdf">Affidavit in Support of Criminal Complaint for Matthew Haviland&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.courtlistener.com/recap/gov.uscourts.mad.213562/gov.uscourts.mad.213562.37.1.pdf">Government Sentencing Memorandum in the case of Matthew Haviland&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.thedailybeast.com/rhode-island-man-threatened-to-eradicate-all-democrats-eat-pro-choice-professor-feds">Rhode Island Man Threatened to ‘Eradicate’ All Democrats, Eat Pro-Choice Professor: Feds&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.masslive.com/boston/2020/08/i-will-kill-every-democrat-matthew-haviland-rhode-island-man-who-sent-violent-emails-to-pro-abortion-rights-massachusetts-professor-sentenced-to-prison.html">‘I will kill every Democrat’: Matthew Haviland, Rhode Island man who sent violent emails to pro-abortion rights Massachusetts professor, sentenced to prison&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.splcenter.org/hatewatch/2019/06/19/gab-waited-days-remove-user-arrested-inciting-violence">Gab Waited Days to Remove a User Arrested for Inciting Violence&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="the-case-of-brandon-mccormick">The Case of Brandon McCormick&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.fox13now.com/news/local-news/utah-man-sentenced-for-drawing-bow-and-arrow-on-crowd-during-may-protest-riot-in-slc">Utah man sentenced for drawing bow-and-arrow on crowd during May protest/riot in SLC&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="the-cases-of-the-crusaders-and-the-white-rabbits">The Cases of The Crusaders and The White Rabbits&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.courtlistener.com/recap/gov.uscourts.ilcd.72459/gov.uscourts.ilcd.72459.1.0.pdf">Criminal Complaint against The White Rabbits&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.courtlistener.com/recap/gov.uscourts.ksd.114049/gov.uscourts.ksd.114049.473.0.pdf">Government Memo in the case against The Crusaders&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="the-capitol-riot-cases">The Capitol Riot Cases&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.justice.gov/usao-dc/capitol-breach-cases">Department of Justice List of Capitol Breach Cases&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.justice.gov/opa/page/file/1356556/download">Complaint against Gina Bisignano&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.justice.gov/usao-dc/case-multi-defendant/file/1365571/download">Complaint against Bruno Cua&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="transphobia-and-other-bigotry">Transphobia and Other Bigotry&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.pinknews.co.uk/2020/08/31/gender-critical-posie-parker-jk-rowling-banner-black-lives-matter-protesters-transphobia/">‘Gender critical’ activists with ‘I heart JK Rowling’ banner mock Black Lives Matter protesters in ugly confrontation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://chican3ry.medium.com/jk-rowling-gender-ideology-and-antisemitism-7dd043bad37b">JK Rowling, “Gender Ideology” and Antisemitism&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nbcchicago.com/news/local/chicago-politics/rep-marjorie-taylor-greene-hangs-anti-transgender-sign-in-response-to-rep-marie-newmans-pride-flag/2447430/">Rep. Marjorie Taylor Greene Hangs Anti-Transgender Sign in Response to Rep. Marie Newman&amp;rsquo;s Pride Flag&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.aclu.org/news/lgbt-rights/the-coordinated-attack-on-trans-student-athletes/">The Coordinated Attack on Trans Student Athletes&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Solving Project Euler Problem 1</title><link>https://emilygorcenski.com/post/solving-project-euler-problem-1/</link><pubDate>Mon, 01 Feb 2021 23:39:28 +0100</pubDate><guid>https://emilygorcenski.com/post/solving-project-euler-problem-1/</guid><description>&lt;p>I recently re-solved Project Euler Problem 1 on Twitch. Here's the math behind it.&lt;/p>
&lt;p>&lt;a href="https://projecteuler.net/">Project Euler&lt;/a> is a collection of mathematical problems, mostly revolving around number theory, that might also require some level of programming skill to solve. The problems have been around for nearly 20 years, and I've already solved many of them. But I decided to dust off some old math skills and start from the beginning by solving &lt;a href="https://projecteuler.net/problem=1">Problem 1&lt;/a>. Here's the math behind it.&lt;/p>
&lt;blockquote>
&lt;p>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.&lt;/p>
&lt;p>Find the sum of all the multiples of 3 or 5 below 1000.&lt;/p>
&lt;/blockquote>
&lt;p>This is not a hard problem to solve. A programmer might look at this problem, recognize that we need to use a modulo operation, and write something like the following:&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">sum([x &lt;span style="color:#66d9ef">for&lt;/span> x &lt;span style="color:#f92672">in&lt;/span> range(&lt;span style="color:#ae81ff">1000&lt;/span>) &lt;span style="color:#66d9ef">if&lt;/span> x &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">3&lt;/span> &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span> &lt;span style="color:#f92672">or&lt;/span> x &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">5&lt;/span> &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>])&lt;/code>&lt;/pre>&lt;/div>
&lt;p>And in fact, this works quite well. But there's a problem here. The problem is that the actual mathematics, the &lt;em>business logic&lt;/em>, is hidden inside the conditional and that doesn't really reveal what's happening. Moreover, this is slow! We don't care about most numbers: 1, 2, 4, 7, 8, etc. add nothing to our sum. But here we have to compute two modulo operations for each of them. We can do much better by exploring the math.&lt;/p>
&lt;p>First, we should recognize that the sum of numbers less than 1000 divisible by three can be re-written as a sum of consecutive integers:&lt;/p>
&lt;p>&lt;span class="math">\[
3 + 6 + 9 + \cdots + 999 = 3 \left( 1 + 2 + \cdots + 333\right).
\]&lt;/span>&lt;/p>
&lt;p>Likewise, we can similarly factor out for multiples of 5. This allows us to abstract the problem: we can solve this problem as one of computing the &amp;quot;right&amp;quot; sums of consecutive integers. But how do we do that?&lt;/p>
&lt;p>There is &lt;a href="http://superm.math.hawaii.edu/_pdfs/lessons/k_five/Gauss_addition_lesson.pdf">a story&lt;/a>, likely apocryphal, that a young Carl Friedrich Gauss was given a busywork assignment to sum all numbers from one to one hundred. His lecturer, thinking that it would keep him busy, was surprised when Gauss quickly identified the solution.&lt;/p>
&lt;p>His method involved using the commutative property to write the sum two different ways. Consider the sum for numbers from one to four:&lt;/p>
&lt;p>&lt;span class="math">\[
\begin{array}{ccccccc}
1 &amp; + &amp; 2 &amp; + &amp; 3 &amp; + &amp; 4 \\
4 &amp; + &amp; 3 &amp; + &amp; 2 &amp; + &amp; 1 \\
\downarrow &amp; &amp; \downarrow &amp; &amp; \downarrow &amp; &amp; \downarrow \\
5 &amp; + &amp; 5 &amp; + &amp; 5 &amp; + &amp; 5 \\
\downarrow &amp; &amp; \downarrow &amp; &amp; \downarrow &amp; &amp; \downarrow \\
(4 + 1) &amp; + &amp; (4 + 1) &amp; + &amp; (4 + 1) &amp; + &amp; (4 + 1)
\end{array}
\]&lt;/span>&lt;/p>
&lt;p>Gauss noticed that if you line them up and then add down vertically, you have exactly &lt;span class="math">\(n\)&lt;/span> copies of the quantity &lt;span class="math">\(n+1\)&lt;/span>; in this case, 4 copies of 4+1. If you then take this sum, it is equal to the desired sum, twice (one for the top row, one for the bottom).&lt;/p>
&lt;p>This gives us the formula for the sum of consecutive integers:&lt;/p>
&lt;p>&lt;span class="math">\[
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}.
\]&lt;/span>&lt;/p>
&lt;p>We can prove that this works for all &lt;span class="math">\(n\)&lt;/span> by using &lt;a href="https://en.wikipedia.org/wiki/Mathematical_induction">induction&lt;/a>.&lt;/p>
&lt;p>First, we must prove the base case, &lt;span class="math">\(n=1\)&lt;/span>. This is trivial:&lt;/p>
&lt;p>&lt;span class="math">\[
\sum_{i=1}^{1} i = \frac{1(1+1)}{2} = \frac{2}{2} = 1.
\]&lt;/span>&lt;/p>
&lt;p>Next, assume the property holds for &lt;span class="math">\(n\)&lt;/span>. Then we must prove it for &lt;span class="math">\(n+1\)&lt;/span>:&lt;/p>
&lt;p>&lt;span class="math">\[
\sum_{i=1}^{n+1}i = \left( \sum_{i=1}^n i \right) + (n + 1) = \frac{n(n+1)}{2} + (n+1) = \frac{n^2 + 3n + 2}{2} = \frac{(n+1)(n+2)}{2}.
\]&lt;/span>&lt;/p>
&lt;p>Great! So we know it works for all &lt;span class="math">\(n\)&lt;/span>. But there is one more complication. The sequence of all powers of 3 looks like &lt;code>3, 6, 9, 12, 15, ...&lt;/code> and the sequence of all powers of 5 looks like &lt;code>5, 10, 15, ...&lt;/code>. In other words, we have 15 being counted twice. If we think of these sequences as sets, then 15 lies in the intersection. This is an application of the &lt;a href="https://en.wikipedia.org/wiki/Inclusion%E2%80%93exclusion_principle">inclusion-exclusion principle&lt;/a>. To compute the desired sum, we must add the sum as computed for powers of 3 to the sum as computed for powers of 5, then subtract the sum of powers of 15.&lt;/p>
&lt;p>We'll do this by permitting ourself a few more lines of code and making use of &lt;a href="https://en.wikipedia.org/wiki/Currying">currying&lt;/a>. Since we're looking for multiples of 3, 5, and 15 less than 1000, we can find their corresponding co-factor by dividing 999 by each of those numbers. In other words given &lt;span class="math">\(3 + 6 + \cdots + 999 = 3 \left( 1 + 2 + \cdots + 333 \right)\)&lt;/span>, we need to find the number 333. We'll use python's integer division operator, &lt;code>//&lt;/code>, to make this easy. Letting &lt;code>n&lt;/code> denote our upper limit, in this case 1000, we can write:&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">gauss_sum &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">lambda&lt;/span> n: &lt;span style="color:#66d9ef">lambda&lt;/span> m: m &lt;span style="color:#f92672">*&lt;/span> ((n &lt;span style="color:#f92672">-&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>) &lt;span style="color:#f92672">//&lt;/span> m) &lt;span style="color:#f92672">*&lt;/span> ((n &lt;span style="color:#f92672">-&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>) &lt;span style="color:#f92672">//&lt;/span> m &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>) &lt;span style="color:#f92672">//&lt;/span> &lt;span style="color:#ae81ff">2&lt;/span>
gs &lt;span style="color:#f92672">=&lt;/span> gauss_sum(&lt;span style="color:#ae81ff">1000&lt;/span>)
gs(&lt;span style="color:#ae81ff">3&lt;/span>) &lt;span style="color:#f92672">+&lt;/span> gs(&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#f92672">-&lt;/span> gs(&lt;span style="color:#ae81ff">15&lt;/span>)&lt;/code>&lt;/pre>&lt;/div>
&lt;p>You can check to see that this is the same as our other code. But profiling it shows it is about 10x faster. This is because we are doing only 23 arithmetic operations in total irrespective of &lt;span class="math">\(n\)&lt;/span>, vs &lt;span class="math">\(\mathcal{O}(n)\)&lt;/span> for the naive approach.&lt;/p>
&lt;p>So a little bit of theoretical maths goes a long way in improving performance. Who knew you could get such significant performance benefits out of such a simple problem!&lt;/p>
&lt;p>Anyhow, go ahead and give Project Euler a shot. See if you find any interesting problems!&lt;/p></description></item><item><title>A small group of sleuths had been identifying right-wing extremists long before the attack on the Capitol</title><link>https://www.washingtonpost.com/national-security/antifa-far-right-doxing-identities/2021/01/10/41721de0-4dd7-11eb-bda4-615aaefd0555_story.html</link><pubDate>Mon, 01 Feb 2021 22:07:21 +0100</pubDate><guid>https://emilygorcenski.com/post/a-small-group-of-sleuths-had-been-identifying-right-wing-extremists-long-before-the-attack-on-the-capitol/</guid><description>&lt;p>I&amp;rsquo;m quoted in this piece profiling my friend Molly about tracking neo-Nazis online.&lt;/p></description></item><item><title>Using the F-word: Fascist drift in America</title><link>https://millercenter.org/news-events/events/using-f-word-fascist-drift-america</link><pubDate>Mon, 01 Feb 2021 21:25:21 +0100</pubDate><guid>https://emilygorcenski.com/post/using-the-f-word-fascist-drift-in-america/</guid><description>&lt;p>I joined a panel at the Miller Center at UVa to talk about Fascism, the Insurrection, and what comes next in America.&lt;/p></description></item><item><title>Migrating a Static Site to Azure with Terraform</title><link>https://emilygorcenski.com/post/migrating-a-static-site-to-azure-with-terraform/</link><pubDate>Sun, 03 Jan 2021 19:24:00 +0100</pubDate><guid>https://emilygorcenski.com/post/migrating-a-static-site-to-azure-with-terraform/</guid><description>&lt;p>Here&amp;rsquo;s how I migrated this blog from Firebase to Azure as a first step in setting up cloud-managed personal services.&lt;/p>
&lt;p>&lt;a href="#tldr-give-me-the-copy-pasta">tl;dr, I don&amp;rsquo;t want to think I want to copy paste&lt;/a>&lt;/p>
&lt;p>I wanted to migrate my blog off of Google&amp;rsquo;s services for a few reasons. One, since I am seeing more use of Azure in data-related spaces, I wanted to build some familiarity with their offerings. Two, I wanted to learn Terraform. And three, I was really upset about how Google handled &lt;a href="https://www.wired.com/story/timnit-gebru-exit-google-exposes-crisis-in-ai/">the situation with Timnit Gebru&lt;/a>.&lt;/p>
&lt;p>Firebase Hosting is a perfectly reasonable hosting solution for a static site, such as this one. In fact, I&amp;rsquo;d argue that it&amp;rsquo;s among the easiest static site hosting solutions aside from Github Pages. So if you&amp;rsquo;re looking for something simple, I&amp;rsquo;d really recommend just choosing one of those solutions, rather than messing around with cloud infrastructure. However, I wanted something a little more integrated. In addition to my blog, I run a number of other servies that I&amp;rsquo;d like to eventually move into Azure. So I decided to invest a day to learn the ins and outs of Azure and Terraform, and now I am pleased to put together this guide for how to do it yourself, if you&amp;rsquo;re so inclined.&lt;/p>
&lt;p>When possible, I am sticking with the concepts of Infrastructure as Code and Continuous Delivery. Many similar guides out there will walk you through using the Azure portal. Since I was learning as I was going, I did have to use the Portal frequently, but when possible tried migrating those actions back into Terraform. I believe everything should work as I present it here, but do note that it can be tiresome to tear things down and stand them back up again, so it&amp;rsquo;s possible there might be some issues along the way. If you do find any, please email me (&lt;a href="mailto:ejgorcenski@gmail.com">ejgorcenski@gmail.com&lt;/a>)!&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>My goal is to migrate an existing site with the following properties:&lt;/p>
&lt;ul>
&lt;li>host a static site at a custom domain (e.g. &lt;code>emilygorcenski.com&lt;/code>);&lt;/li>
&lt;li>ensure that the site can be be served over &lt;code>https&lt;/code>;&lt;/li>
&lt;li>force redirection from &lt;code>http&lt;/code> to &lt;code>https&lt;/code>;&lt;/li>
&lt;li>ensure that both the apex domain (&lt;code>emilygorcenski.com&lt;/code>) and the &lt;code>www&lt;/code> subdomain both work over &lt;code>https&lt;/code>;&lt;/li>
&lt;li>automatically update the site on push to source control.&lt;/li>
&lt;/ul>
&lt;p>Almost all of these things are fairly easy to do, except for when it comes to implementing TLS. There are a few challenges here. The first challenge is handling both &lt;code>http&lt;/code> and &lt;code>https&lt;/code> traffic with a custom domain. The second challenge is enabling a certificant to work for the apex domain. If this was a new site, we could simplify this greatly by forcing everything to a &lt;code>www&lt;/code> subdomain. However, since this is a migration, and since there are links to the blog not using the &lt;code>www&lt;/code> subdomain, this becomes a little bit more complicated.&lt;/p>
&lt;p>To make everything work, we&amp;rsquo;re going to proceed with these steps:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="#step-1-set-up-tools-and-accounts">Set up tools and accounts&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-2-configuring-a-storage-account-to-host-a-static-site">Set up an Azure Storage Account for a static site&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-3-set-up-an-azure-cdn">Set up an Azure CDN to terminate TLS and handle &lt;code>http&lt;/code> to &lt;code>https&lt;/code> redirection&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-4-set-up-an-azure-dns-zone">Set up an Azure DNS zone&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-5-set-up-azure-key-vault-and-generate-a-certificate">Set up an Azure Key Vault and generate an x509 certificate&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-6-sign-the-certificate-and-configure-the-cdn-to-use-it">Sign the certificate and configure the CDN to use it&lt;/a>;&lt;/li>
&lt;li>&lt;a href="#step-7-continuously-deliver-with-github-actions">Configure CI to deploy content&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>Except for the certificate signing step, everything will be automated. Fortunately, certificate signing is a one-off process. At the end of this workflow, our site should be running, it should be auto building and deploying on commit, and TLS should be enabled for maximum security.&lt;/p>
&lt;p>Let&amp;rsquo;s begin!&lt;/p>
&lt;h2 id="step-1-set-up-tools-and-accounts">Step 1: Set up tools and accounts&lt;/h2>
&lt;p>I won&amp;rsquo;t walk through all of this, but at a very minimum you&amp;rsquo;ll need to set up the following accounts:&lt;/p>
&lt;ul>
&lt;li>Github account;&lt;/li>
&lt;li>Azure account;&lt;/li>
&lt;li>Azure subscription attached to aforementioned account;&lt;/li>
&lt;li>Account with a certificate signer.&lt;/li>
&lt;/ul>
&lt;p>I used &lt;a href="https://www.namecheap.com">namecheap&lt;/a> to sign my certificate. You could probably also use Let&amp;rsquo;s Encrypt, but I didn&amp;rsquo;t try that avenue. For the Azure subscription, if you&amp;rsquo;re new to Azure you can set up a free trial account. Otherwise, you&amp;rsquo;ll want to create a Pay-as-you-Go subscription.&lt;/p>
&lt;p>In addition, you&amp;rsquo;ll also need to install the following:&lt;/p>
&lt;ul>
&lt;li>git;&lt;/li>
&lt;li>Terraform;&lt;/li>
&lt;li>Azure CLI;&lt;/li>
&lt;li>The static site generator of your choosing (I use Hugo).&lt;/li>
&lt;/ul>
&lt;p>Once you&amp;rsquo;ve done all that, we&amp;rsquo;ll do one more initial setup step by configuring a terraform backend storage on Azure. This will be in a separate Resource Group and this is a one-time config, so we&amp;rsquo;ll just do this with the Azure CLI.&lt;/p>
&lt;p>First, login to the Azure CLI using &lt;code>az login&lt;/code>. Then, execute the following commands, replacing the values in &lt;code>&amp;lt;BRACKETS&amp;gt;&lt;/code> with your chosen values:&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-sh" data-lang="sh">az group create -g &amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt; -l &amp;lt;REGION&amp;gt;
az storage account create -n &amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt; -g &amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt; -l &amp;lt;REGION&amp;gt; --sku Standard_LRS
az storage container create -n terraform-state --account-name &amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check the Azure Portal to verify that the Resource Group has been properly created:
&lt;img src="https://emilygorcenski.com/photo-gallery/writing/backend-account.jpg" alt="The backend storage resource group should appear in your Resouce Group panel">&lt;/p>
&lt;p>Next, in your static site directory, create a folder called &lt;code>infrastructure&lt;/code> and add the following &lt;code>variables.tf&lt;/code> file:&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-t" data-lang="t">&lt;span style="color:#75715e"># variables.tf&lt;/span>
variable &lt;span style="color:#e6db74">&amp;#34;domain&amp;#34;&lt;/span> {
type &lt;span style="color:#f92672">=&lt;/span> string
default &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;YOUR_DOMAIN&amp;gt;&amp;#34;&lt;/span>
}
variable &lt;span style="color:#e6db74">&amp;#34;cdn_application_id&amp;#34;&lt;/span> {
default &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;205478c0-bd83-4e1b-a9d6-db63a3e1e1c8&amp;#34;&lt;/span> &lt;span style="color:#75715e"># This is azure&amp;#39;s application UUID for a CDN endpoint&lt;/span>
}
variable &lt;span style="color:#e6db74">&amp;#34;regions&amp;#34;&lt;/span> {
type &lt;span style="color:#f92672">=&lt;/span> map(string)
default &lt;span style="color:#f92672">=&lt;/span> {
&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;REGION&amp;gt;&amp;#34;&lt;/span>
&lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_REGION&amp;gt;&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Because Azure CDNs don&amp;rsquo;t map 1:1 to Azure regions, it may be necessary to choose a different CDN region than what you pick for your resource group, hence the two entries. Once this is done, we&amp;rsquo;ll proceed to setting up the static site.&lt;/p>
&lt;h2 id="step-2-configuring-a-storage-account-to-host-a-static-site">Step 2: Configuring a Storage Account to host a static site&lt;/h2>
&lt;p>Once we have a Terraform backend configured, we&amp;rsquo;ll start by using Terraform to configure a Resource Group and set up a Storage Account to serve as a static site host. Create a file in your &lt;code>infrastructure&lt;/code> folder called &lt;code>main.tf&lt;/code> and paste the following in it, replacing entries in &lt;code>&amp;lt;BRACKETS&amp;gt;&lt;/code> as above.&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-t" data-lang="t">&lt;span style="color:#75715e"># Configure the Azure provider&lt;/span>
terraform {
required_providers {
azurerm &lt;span style="color:#f92672">=&lt;/span> {
source &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;hashicorp/azurerm&amp;#34;&lt;/span>
version &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;gt;= 2.26&amp;#34;&lt;/span>
}
}
backend &lt;span style="color:#e6db74">&amp;#34;azurerm&amp;#34;&lt;/span> {
resource_group_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
storage_account_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt;&amp;#34;&lt;/span>
container_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;terraform-state&amp;#34;&lt;/span>
key &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;terraform.tfstate&amp;#34;&lt;/span>
}
}
provider &lt;span style="color:#e6db74">&amp;#34;azurerm&amp;#34;&lt;/span> {
features {}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_resource_group&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;rg&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>regions[&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span>]
tags &lt;span style="color:#f92672">=&lt;/span> {
Purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Personal Cloud Space&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_storage_account&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog_storage&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt;&amp;#34;&lt;/span>
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
location &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>location
account_tier &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Standard&amp;#34;&lt;/span>
account_replication_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;LRS&amp;#34;&lt;/span>
account_kind &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;StorageV2&amp;#34;&lt;/span>
static_website {
index_document &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;index.html&amp;#34;&lt;/span>
error_404_document &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;404.html&amp;#34;&lt;/span>
}
tags &lt;span style="color:#f92672">=&lt;/span> {
environment &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;production&amp;#34;&lt;/span>
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can choose different tags based on your use case, the values here don&amp;rsquo;t matter too much. I use Azure tags to gain visibility into billing. This code is fairly straightforward: we&amp;rsquo;re configuring our Terraform provider, setting up a remote backend using the Resources created in the previous step, and setting up a Storage Account.&lt;/p>
&lt;blockquote>
&lt;p>Note: Here we must use &lt;code>account_kind = StorageV2&lt;/code> for static website functionality.&lt;/p>
&lt;/blockquote>
&lt;p>Run the following commands to set up Terraform:&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-sh" data-lang="sh">terraform init
terraform plan -out&lt;span style="color:#f92672">=&lt;/span>storage_setup
&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see that the Terraform plan will create a Resource Group and a Storage Account. Go ahead and run &lt;code>terraform apply &amp;quot;storage_setup&amp;quot;&lt;/code>. This will create the Resource Group for your account and create the Storage Account within it. Now, you should be able to easily test this. Go ahead an upload a simple &lt;code>index.html&lt;/code> file using the Azure Portal. From your Dashboard, you should be able to see your blog storage. Click there, then click &amp;ldquo;Storage Explorer&amp;rdquo;, expand &amp;ldquo;BLOB CONTAINERS&amp;rdquo;, and then select &amp;ldquo;$web$. You can upload a file manually using the UI.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/blog-storage-explorer.jpg" alt="Storage Explorer showing a static website">&lt;/p>
&lt;p>Now, in the left menu bar, scroll down a bit to where you see &amp;ldquo;Static Website.&amp;rdquo; Click that, and you should be able to copy the Primary Endpoint. Paste that into a browser window and you should see your &lt;code>index.html&lt;/code> file that you uploaded!&lt;/p>
&lt;p>That&amp;rsquo;s it for this step, let&amp;rsquo;s move on.&lt;/p>
&lt;h2 id="step-25-upload-your-static-site-to-your-storage-account">Step 2.5: Upload your static site to your storage account&lt;/h2>
&lt;p>At this point, you probably want to copy your static site into your storage account fully. This is easy enough to do with a manual command, assuming you have a local build of your website. In Hugo, the site is built into the &lt;code>public&lt;/code> folder, so that&amp;rsquo;s what I&amp;rsquo;ll refer to here.&lt;/p>
&lt;p>Run the following CLI command:&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-sh" data-lang="sh">az storage blob upload-batch --account-name &amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt; -d &lt;span style="color:#e6db74">&amp;#39;$web&amp;#39;&lt;/span> -s public/.
&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-3-set-up-an-azure-cdn">Step 3: Set up an Azure CDN&lt;/h2>
&lt;p>The default endpoint URL is ugly and doesn&amp;rsquo;t support &lt;code>http&lt;/code> redirects. So let&amp;rsquo;s remedy that. Unfortunately, there&amp;rsquo;s no way of doing this without putting our storage account behind some more infrastructure. The best option is to use an Azure CDN. The Azure CDN offers us a lot of benefits: we can manage &lt;code>http&lt;/code> to &lt;code>https&lt;/code> redirects, use a custom domain, use our own x509 certificate, and guard against denial of service attacks that would otherwise ramp up our storage transfer costs. The downside is that a CDN will have to be flushed when we add new content, but we&amp;rsquo;ll get to that later.&lt;/p>
&lt;p>When I originally did this, I added the CDN incrementally. But this involved a lot of teardown and rebuild of infrastructure as I was learning what was what. So this will be a little complex, but we can manage.&lt;/p>
&lt;p>First, add the following to your &lt;code>main.tf&lt;/code>:&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-t" data-lang="t">resource &lt;span style="color:#e6db74">&amp;#34;azurerm_cdn_profile&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_PROFILE_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>regions[&lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span>]
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
sku &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Standard_Microsoft&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>It is necesssary to use &lt;code>sku = &amp;quot;Standard_Microsoft&amp;quot;&lt;/code> here in order to enable the custom domains and redirect rules. Also, add the following:&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-t" data-lang="t">resource &lt;span style="color:#e6db74">&amp;#34;azurerm_cdn_endpoint&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cdn_blog&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_ENDPOINT_NAME&amp;gt;&amp;#34;&lt;/span>
profile_name &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name
location &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>location
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
origin_host_header &lt;span style="color:#f92672">=&lt;/span> azurerm_storage_account&lt;span style="color:#f92672">.&lt;/span>blog_storage&lt;span style="color:#f92672">.&lt;/span>primary_web_host
origin {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_ORIGIN_NAME&amp;gt;&amp;#34;&lt;/span>
host_name &lt;span style="color:#f92672">=&lt;/span> azurerm_storage_account&lt;span style="color:#f92672">.&lt;/span>blog_storage&lt;span style="color:#f92672">.&lt;/span>primary_web_host
}
tags &lt;span style="color:#f92672">=&lt;/span> {
environment &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;production&amp;#34;&lt;/span>
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
delivery_rule {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;EnforceHTTPS&amp;#34;&lt;/span>
order &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>
request_scheme_condition {
operator &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Equal&amp;#34;&lt;/span>
match_values &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;HTTP&amp;#34;&lt;/span>]
}
url_redirect_action {
redirect_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Found&amp;#34;&lt;/span>
protocol &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Https&amp;#34;&lt;/span>
}
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>This is a lot. What this will do is configure our CDN endpoint to point to our blog. This will create a new domain, &lt;code>&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code> that redirects to your static site. In order to make this redirect happen, it is critical to not leave out &lt;code>origin_host_header = azurerm_storage_account.blog_storage.primary_web_host&lt;/code>. Go ahead and click this to see if your site is there.&lt;/p>
&lt;blockquote>
&lt;p>Note: because this is a CDN, it might take 5-10 minutes for this to propagate. Go grab a tea.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/cdn.jpg" alt="CDN showing a successful configuration">&lt;/p>
&lt;p>The next slightly complex bit is the &lt;code>delivery_rule&lt;/code>. This will create a rule that forces any &lt;code>http&lt;/code> traffic to re-route to &lt;code>https&lt;/code>. This is a great security practice that protects you and your users, and moreover makes your site backwards compatible if anyone has linked to an old &lt;code>http://&lt;/code> address out there on the web. We won&amp;rsquo;t be configuring our custom domains just yet.&lt;/p>
&lt;p>Clicking on &amp;ldquo;Rules Engine&amp;rdquo; on the left should show you that you have successfully implemented the &lt;code>EnforceHttps&lt;/code> rule.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/enforce-https.jpg" alt="Http to Https redirect rule">&lt;/p>
&lt;p>After a few minutes, you should be able to see your site at &lt;code>www.yourdomain.com&lt;/code>. With that done, we can move on to the hard steps. We have not yet set up the CDN to accept a custom apex domain, and your DNS is still being handled by your old provider. We&amp;rsquo;ll address this in the next steps.&lt;/p>
&lt;h2 id="step-4-set-up-an-azure-dns-zone">Step 4: Set up an Azure DNS Zone&lt;/h2>
&lt;p>First, go to your DNS provider. &lt;strong>This step is very important&lt;/strong>. We&amp;rsquo;re going to add/update two &lt;code>CNAME&lt;/code> records. First, add a &lt;code>CNAME&lt;/code> record with the host &lt;code>www&lt;/code> and a target of &lt;code>&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code>. If you already have a &lt;code>www&lt;/code> entry, then you can edit the existing one. Next add another &lt;code>CNAME&lt;/code> record with a host of &lt;code>cdnverify&lt;/code> and a target of &lt;code>cdnverify.&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code>. Azure gives &lt;code>cdnverify&lt;/code> special treatment, and this is how we&amp;rsquo;ll allow ourselves to add a custom apex domain to the CDN.&lt;/p>
&lt;p>Next, we&amp;rsquo;ll create an Azure DNS zone. In principle, this step is not strictly necessary. But I believe it will make things a lot easier. Why? Because if you are hosting your DNS off of Azure, you will likely have problems with redirecting the apex domain to the CDN. You can&amp;rsquo;t guarantee an IP address for the CDN for an &lt;code>A&lt;/code> record. So let&amp;rsquo;s set up a DNS zone in Azure instead. This has the benefit of allowing you to create an Alias Record Set. Add the following to your terraform:&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-t" data-lang="t">resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_zone&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;DNS_ZONE_NAME&amp;gt;&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>domain
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_a_record&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;DNS_ALIAS_NAME&amp;gt;&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@&amp;#34;&lt;/span>
zone_name &lt;span style="color:#f92672">=&lt;/span> azurerm_dns_zone&lt;span style="color:#f92672">.&lt;/span>&lt;span style="color:#e6db74">&amp;lt;DNS_ZONE_NAME&amp;gt;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>name
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
ttl &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">300&lt;/span>
target_resource_id &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>id
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain create &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>hostname www&lt;span style="color:#f92672">.&lt;/span>${var&lt;span style="color:#f92672">.&lt;/span>domain} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">-&lt;/span>n &lt;span style="color:#e6db74">&amp;lt;MEANINGFUL_CUSTOM_DOMAIN_NAME&amp;gt;&lt;/span>
EOT
}
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain create &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>hostname ${var&lt;span style="color:#f92672">.&lt;/span>domain} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">-&lt;/span>n apex
EOT
}
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain enable&lt;span style="color:#f92672">-&lt;/span>https &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">-&lt;/span>n &lt;span style="color:#e6db74">&amp;lt;MEANINGFUL_CUSTOM_DOMAIN_NAME&amp;gt;&lt;/span>
EOT
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_cname_record&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;www_cname&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;www&amp;#34;&lt;/span>
zone_name &lt;span style="color:#f92672">=&lt;/span> azurerm_dns_zone&lt;span style="color:#f92672">.&lt;/span>&lt;span style="color:#e6db74">&amp;lt;DNS_ZONE_NAME&amp;gt;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>name
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
ttl &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">3600&lt;/span>
target_resource_id &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>id
}
&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Note: it may be necessary to add the following lines to each of the &lt;code>provisioner&lt;/code> blocks to make it work on Windows and/or Terraform 1.x after the last &lt;code>EOT&lt;/code> in each block:&lt;/p>
&lt;pre tabindex="0">&lt;code>interpreter = [&amp;quot;bash&amp;quot;, &amp;quot;-c&amp;quot;]
working_dir = path.module
&lt;/code>&lt;/pre>&lt;p>Thanks to Mehmet Afşar for catching this!&lt;/p>
&lt;/blockquote>
&lt;p>The first block will configure a DNS zone and also add an aliased record pointing to your CDN. This dramatically simplifies DNS management overall. The second block configures an aliased &lt;code>A&lt;/code> record pointing to your CDN, something that we can&amp;rsquo;t necessarily do with an external DNS provider.&lt;/p>
&lt;p>The &lt;code>provisioner&lt;/code> commands are a bit more complex. As of this writing, there is no option in pure Terraform to create a custom domain to attach to the CDN endpoint. In order to make this work, we need to use a &lt;code>provisioner&lt;/code> script that will run at the end of the creation of the resource. This is where things get tricky. In general, when you create a custom domain in a CDN endpoint, say &lt;code>azure.yourdomain.com&lt;/code>, Azure will look for a matching &lt;code>CNAME&lt;/code> record in your DNS with the host name &lt;code>azure&lt;/code>. For the apex domain, &lt;code>yourdomain.com&lt;/code>, Azure will look for a &lt;code>cdnverify&lt;/code> record as described above.&lt;/p>
&lt;p>If this command fails, but the resource is otherwise successfully created, the command will not run again on a subsequent &lt;code>terraform apply&lt;/code>. Furthermore, the first command will fail if it cannot find a &lt;code>CNAME&lt;/code> record pointing &lt;code>www.yourdomain.com&lt;/code> to &lt;code>&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code>, and the second will fail if it cannot find a &lt;code>CNAME&lt;/code> record with a host name of &lt;code>cdnverify&lt;/code> pointing to &lt;code>cdnverify.&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code>. That is why it is necessary to enter these records in your existing DNS provider before undertaking this step. At this point, you should be able to navigate to your Azure Dashboard, find the CDN you configured, and see that you&amp;rsquo;ve created two custom domains.&lt;/p>
&lt;p>Finally, the third &lt;code>provisioner&lt;/code> will attach a CDN-managed certificate to your &lt;code>www&lt;/code> subdomain. We will want to do this to avoid any security warnings that may result from us changing an existing &lt;code>www&lt;/code> &lt;code>CNAME&lt;/code> record. Unfortunately, Azure is no longer able to provide CDN-managed certificates for apex domains. Therefore, we&amp;rsquo;ll need to do a little more work in order to properly migrate.&lt;/p>
&lt;h2 id="step-5-set-up-azure-key-vault-and-generate-a-certificate">Step 5: Set up Azure Key Vault and generate a certificate&lt;/h2>
&lt;p>If we were creating a new site, we might be happy just using &lt;code>www.yourdomain.com&lt;/code> and being done with it. However, my existing site allowed the apex domain to work fine, which means if I don&amp;rsquo;t fully integrate a certificate for the domain, existing links on the internet will be broken. Moreover, since this is a static site being hosted from a storage account, I don&amp;rsquo;t want to manage Let&amp;rsquo;s Encrypt certificates every three months manually. So I chose to go ahead and buy a certificate on Namecheap, but you can use whatever method you&amp;rsquo;re most comfortable with.&lt;/p>
&lt;p>In order to bring your own certificate to an Azure CDN, we need to set up a Key Vault. Since we&amp;rsquo;re already going to do that, we may as well generate a certificate to have signed by a signing authority. Azure integrates with a couple of authorities, but you can also use an independent signer. It cost me less than $30 for five years of service.&lt;/p>
&lt;blockquote>
&lt;p>Note: Azure also allows you to generate self-signed certificates, but these do not work with the Azure CDN.&lt;/p>
&lt;/blockquote>
&lt;p>We&amp;rsquo;ll implement our last bit of Terraform code now:&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-t" data-lang="t">data &lt;span style="color:#e6db74">&amp;#34;azurerm_client_config&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;current&amp;#34;&lt;/span> {}
resource &lt;span style="color:#e6db74">&amp;#34;azuread_service_principal&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;sp&amp;#34;&lt;/span> {
application_id &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>cdn_application_id
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;kv&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_KEYVAULT_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>location
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
sku_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;standard&amp;#34;&lt;/span>
soft_delete_enabled &lt;span style="color:#f92672">=&lt;/span> true
soft_delete_retention_days &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">7&lt;/span>
access_policy {
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
object_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>object_id
certificate_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;deleteissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;getissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;listissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;managecontacts&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;manageissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;setissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;update&amp;#34;&lt;/span>,
]
key_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;decrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;encrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;sign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;unwrapKey&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;update&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;verify&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;wrapKey&amp;#34;&lt;/span>,
]
secret_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;set&amp;#34;&lt;/span>,
]
}
access_policy {
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
object_id &lt;span style="color:#f92672">=&lt;/span> azuread_service_principal&lt;span style="color:#f92672">.&lt;/span>sp&lt;span style="color:#f92672">.&lt;/span>id
certificate_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
]
secret_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
]
}
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_certificate&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cert&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_CERTIFICATE_NAME&amp;gt;&amp;#34;&lt;/span>
key_vault_id &lt;span style="color:#f92672">=&lt;/span> azurerm_key_vault&lt;span style="color:#f92672">.&lt;/span>kv&lt;span style="color:#f92672">.&lt;/span>id
certificate_policy {
issuer_parameters {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Unknown&amp;#34;&lt;/span>
}
key_properties {
exportable &lt;span style="color:#f92672">=&lt;/span> true
key_size &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">2048&lt;/span>
key_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;RSA&amp;#34;&lt;/span>
reuse_key &lt;span style="color:#f92672">=&lt;/span> true
}
lifetime_action {
action {
action_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;EmailContacts&amp;#34;&lt;/span>
}
trigger {
days_before_expiry &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">30&lt;/span>
}
}
secret_properties {
content_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;application/x-pkcs12&amp;#34;&lt;/span>
}
x509_certificate_properties {
&lt;span style="color:#75715e"># Server Authentication = 1.3.6.1.5.5.7.3.1&lt;/span>
&lt;span style="color:#75715e"># Client Authentication = 1.3.6.1.5.5.7.3.2&lt;/span>
extended_key_usage &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;1.3.6.1.5.5.7.3.1&amp;#34;&lt;/span>]
key_usage &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;cRLSign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;dataEncipherment&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;digitalSignature&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyAgreement&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyCertSign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyEncipherment&amp;#34;&lt;/span>,
]
subject_alternative_names {
dns_names &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;www.${var.domain}&amp;#34;&lt;/span>]
}
subject &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;CN=${var.domain}&amp;#34;&lt;/span>
validity_in_months &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">12&lt;/span>
}
}
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Don&amp;rsquo;t fall into my traps. First, we must set &lt;code>name = &amp;quot;Unknown&amp;quot;&lt;/code> in the &lt;code>issuer_parameters&lt;/code> block to use an externally-signed certificate. Moreover, we must use &lt;code>content_type = &amp;quot;application/x-pkcs12&amp;quot;&lt;/code>.&lt;/p>
&lt;p>Running this with &lt;code>terraform apply&lt;/code> will generate a Key Vault and a certificate. It should add two access policies to the Key Vault: one for your administrator account, which is necessary to generate certificates and secrets, and one for the CDN application, which only needs &lt;code>get&lt;/code> and &lt;code>list&lt;/code> permissions set on &lt;code>certificates&lt;/code> and &lt;code>secrets&lt;/code>.&lt;/p>
&lt;h2 id="step-6-sign-the-certificate-and-configure-the-cdn-to-use-it">Step 6: Sign the Certificate and configure the CDN to use it&lt;/h2>
&lt;p>Once we have generated the certificate, we now need to do some manual steps.&lt;/p>
&lt;p>Navigate to your Azure Key Vault, select Certificates, and click on your certificate. Next, select the &amp;ldquo;Certificate Operation&amp;rdquo; link.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/cert1.jpg" alt="Certificate management UI">&lt;/p>
&lt;p>From here click &amp;ldquo;Download CSR&amp;rdquo;. Use this with your signing authority and configure your preferred authentication method. I chose DNS authentication and followed the instructions provided. However, you can also use HTTP authentication and upload a file to your web host, or any other means offered.&lt;/p>
&lt;p>Once you receive a signed certificate (this took me less than 10 minutes once I figured it all out), you can then click &amp;ldquo;Merge Signed Request&amp;rdquo; to upload your signed certificate. This will automatically enable the certificate. We only have two steps left: telling the CDN to use these certificates, and then switching nameservers to Azure.&lt;/p>
&lt;p>Navigate back to your CDN. You should see your custom domains. Click on either of them, and then enable &amp;ldquo;Custom domain HTTPS.&amp;rdquo; Choose the option for &amp;ldquo;Use my own certificate&amp;rdquo; and then select the Key Vault, Certificate, and Certificate Version from the drop downs. Click save.&lt;/p>
&lt;p>The last step is to switch DNS nameservers with our DNS provider. We&amp;rsquo;ll want to do that now so that the CDN can properly provision the certificates.&lt;/p>
&lt;p>Go back to your Azure Dashboard, and select your DNS Zone. On the Overview screen, you should see four nameservers in the top right. Confirm that you have an &lt;code>A&lt;/code> record with the Name &lt;code>@&lt;/code> configured to point to an Azure CDN resource. If so, then proceed to your DNS provider and switch nameservers to the Azure ones.&lt;/p>
&lt;p>Once complete, you should be ready to go! The last step will be to configure your build tooling to update your static site.&lt;/p>
&lt;h2 id="step-7-continuously-deliver-with-github-actions">Step 7: Continuously Deliver with Github Actions&lt;/h2>
&lt;p>We&amp;rsquo;ll want to be able to redeploy our content automatically. Ideally, we&amp;rsquo;d also deploy our infrastructure in our CI/CD environment. However, the Terraform scripting above uses some Azure Active Directory resources. In order to get these working in the CI/CD pipeline, there is a bit more work that needs to be done to adequately manage permissions. It&amp;rsquo;s probably possible to do this, but I&amp;rsquo;ve timeboxed myself to two days of work for this learning, and I will not implement that here. For now, running Terraform locally is sufficient to stand up and destroy all the infrastructure we need.&lt;/p>
&lt;p>To get started, we&amp;rsquo;re going to use Github actions to build our site and deploy it. In order to do this, we&amp;rsquo;ll need to do the following:&lt;/p>
&lt;ul>
&lt;li>compile the static site using our static site generator, in this case Hugo;&lt;/li>
&lt;li>upload compiled site to Azure;&lt;/li>
&lt;li>purge the CDN.&lt;/li>
&lt;/ul>
&lt;p>In order to do this, we first need to create a Service Principal to use in Azure: &lt;code>az ad sp create-for-rbac --name &amp;quot;azure-actions-tf&amp;quot; --role Contributor --scopes /subscriptions/&amp;lt;SUBSCRIPTION_ID&amp;gt;/resourceGroups/&amp;lt;RESOURCE_GROUP_NAME&amp;gt; --sdk-auth&lt;/code>. This will output some JSON. &lt;strong>Do not add this to version control&lt;/strong>. Instead, we&amp;rsquo;ll navigate to our Github repo, click Settings, then Secrets, and add it as a new Repository Secret called &lt;code>AZURE_CREDENTIALS&lt;/code>.&lt;/p>
&lt;p>Next, create a folder in your repository called &lt;code>.github&lt;/code>. In it, create a subfolder called &lt;code>workflows&lt;/code> and then create a text file, &lt;code>deploy.yml&lt;/code>. In it, paste something similar to the following:&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">on&lt;/span>:
&lt;span style="color:#f92672">push&lt;/span>:
&lt;span style="color:#f92672">branches&lt;/span>: [ &lt;span style="color:#ae81ff">main ]&lt;/span>
&lt;span style="color:#f92672">jobs&lt;/span>:
&lt;span style="color:#f92672">deploy&lt;/span>:
&lt;span style="color:#f92672">runs-on&lt;/span>: &lt;span style="color:#ae81ff">ubuntu-latest&lt;/span>
&lt;span style="color:#f92672">steps&lt;/span>:
- &lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">actions/checkout@v2&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">submodules&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># Fetch Hugo themes (true OR recursive)&lt;/span>
&lt;span style="color:#f92672">fetch-depth&lt;/span>: &lt;span style="color:#ae81ff">0&lt;/span> &lt;span style="color:#75715e"># Fetch all history for .GitInfo and .Lastmod&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Setup Hugo&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">peaceiris/actions-hugo@v2&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">hugo-version&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;0.68.3&amp;#39;&lt;/span>
&lt;span style="color:#75715e"># extended: true&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Build&lt;/span>
&lt;span style="color:#f92672">run&lt;/span>: &lt;span style="color:#ae81ff">hugo&lt;/span>
- &lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/login@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">creds&lt;/span>: &lt;span style="color:#ae81ff">${{ secrets.AZURE_CREDENTIALS }}&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Upload to blob storage&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/CLI@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">azcliversion&lt;/span>: &lt;span style="color:#ae81ff">2.0.72&lt;/span>
&lt;span style="color:#f92672">inlineScript&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az storage blob upload-batch --account-name &amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt; -d &amp;#39;$web&amp;#39; -s public/.&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Purge CDN endpoint&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/CLI@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">azcliversion&lt;/span>: &lt;span style="color:#ae81ff">2.0.72&lt;/span>
&lt;span style="color:#f92672">inlineScript&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az cdn endpoint purge --content-paths &amp;#34;/*&amp;#34; --profile-name &amp;#34;&amp;lt;CDN_PROFILE_NAME&amp;gt;&amp;#34; --name &amp;#34;&amp;lt;CDN_ENDPOINT_NAME&amp;gt;&amp;#34; --resource-group &amp;#34;&amp;lt;RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">logout&lt;/span>
&lt;span style="color:#f92672">run&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az logout&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here you&amp;rsquo;ll want to replace the specifics of your static site generator. Save this and push this to your repo. If all goes well, you should be able to deploy new content on every commit to &lt;code>main&lt;/code>!&lt;/p>
&lt;h2 id="tldr-give-me-the-copy-pasta">TL;DR Give me the copy-pasta&lt;/h2>
&lt;p>Everything in &lt;code>&amp;lt;BRACKETS&amp;gt;&lt;/code> needs to be replaced with a string of your choosing.&lt;/p>
&lt;p>Run to configure a remote backend:&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-sh" data-lang="sh">az login
az group create -g &amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt; -l &amp;lt;REGION&amp;gt;
az storage account create -n &amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt; -g &amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt; -l &amp;lt;REGION&amp;gt; --sku Standard_LRS
az storage container create -n terraform-state --account-name &amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create DNS &lt;code>CNAME&lt;/code> entries:&lt;/p>
&lt;ul>
&lt;li>&lt;code>www&lt;/code> pointing to &lt;code>&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code> and&lt;/li>
&lt;li>&lt;code>cdnverify&lt;/code> pointing to &lt;code>cdnverify.&amp;lt;CDN_ENDPOINT_NAME&amp;gt;.azureedge.net&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Create &lt;code>variables.tf&lt;/code>:&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-t" data-lang="t">&lt;span style="color:#75715e"># variables.tf&lt;/span>
variable &lt;span style="color:#e6db74">&amp;#34;domain&amp;#34;&lt;/span> {
type &lt;span style="color:#f92672">=&lt;/span> string
default &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;YOUR_DOMAIN&amp;gt;&amp;#34;&lt;/span>
}
variable &lt;span style="color:#e6db74">&amp;#34;cdn_application_id&amp;#34;&lt;/span> {
default &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;205478c0-bd83-4e1b-a9d6-db63a3e1e1c8&amp;#34;&lt;/span> &lt;span style="color:#75715e"># This is azure&amp;#39;s application UUID for a CDN endpoint&lt;/span>
}
variable &lt;span style="color:#e6db74">&amp;#34;regions&amp;#34;&lt;/span> {
type &lt;span style="color:#f92672">=&lt;/span> map(string)
default &lt;span style="color:#f92672">=&lt;/span> {
&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;REGION&amp;gt;&amp;#34;&lt;/span>
&lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_REGION&amp;gt;&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create main.tf:&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-t" data-lang="t">&lt;span style="color:#75715e"># main.tf&lt;/span>
&lt;span style="color:#75715e"># Configure the Azure provider&lt;/span>
terraform {
required_providers {
azurerm &lt;span style="color:#f92672">=&lt;/span> {
source &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;hashicorp/azurerm&amp;#34;&lt;/span>
version &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;gt;= 2.26&amp;#34;&lt;/span>
}
}
backend &lt;span style="color:#e6db74">&amp;#34;azurerm&amp;#34;&lt;/span> {
resource_group_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;BACKEND_STORE_RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
storage_account_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;BACKEND_STORE_STORAGE_ACCOUNT_NAME&amp;gt;&amp;#34;&lt;/span>
container_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;terraform-state&amp;#34;&lt;/span>
key &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;terraform.tfstate&amp;#34;&lt;/span>
}
}
provider &lt;span style="color:#e6db74">&amp;#34;azurerm&amp;#34;&lt;/span> {
features {}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_resource_group&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;rg&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>regions[&lt;span style="color:#e6db74">&amp;#34;primary&amp;#34;&lt;/span>]
tags &lt;span style="color:#f92672">=&lt;/span> {
Purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Personal Cloud Space&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_storage_account&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog_storage&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt;&amp;#34;&lt;/span>
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
location &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>location
account_tier &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Standard&amp;#34;&lt;/span>
account_replication_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;LRS&amp;#34;&lt;/span>
account_kind &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;StorageV2&amp;#34;&lt;/span>
static_website {
index_document &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;index.html&amp;#34;&lt;/span>
error_404_document &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;404.html&amp;#34;&lt;/span>
}
tags &lt;span style="color:#f92672">=&lt;/span> {
environment &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;production&amp;#34;&lt;/span>
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_cdn_profile&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_PROFILE_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>regions[&lt;span style="color:#e6db74">&amp;#34;cdn&amp;#34;&lt;/span>]
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
sku &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Standard_Microsoft&amp;#34;&lt;/span>
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_cdn_endpoint&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cdn_blog&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;CDN_ENDPOINT_NAME&amp;gt;&amp;#34;&lt;/span>
profile_name &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name
location &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>location
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
origin_host_header &lt;span style="color:#f92672">=&lt;/span> azurerm_storage_account&lt;span style="color:#f92672">.&lt;/span>blog_storage&lt;span style="color:#f92672">.&lt;/span>primary_web_host
origin {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_ORIGIN_NAME&amp;gt;&amp;#34;&lt;/span>
host_name &lt;span style="color:#f92672">=&lt;/span> azurerm_storage_account&lt;span style="color:#f92672">.&lt;/span>blog_storage&lt;span style="color:#f92672">.&lt;/span>primary_web_host
}
tags &lt;span style="color:#f92672">=&lt;/span> {
environment &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;production&amp;#34;&lt;/span>
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
delivery_rule {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;EnforceHTTPS&amp;#34;&lt;/span>
order &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>
request_scheme_condition {
operator &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Equal&amp;#34;&lt;/span>
match_values &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;HTTP&amp;#34;&lt;/span>]
}
url_redirect_action {
redirect_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Found&amp;#34;&lt;/span>
protocol &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Https&amp;#34;&lt;/span>
}
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_zone&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;DNS_ZONE_NAME&amp;gt;&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>domain
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_a_record&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;DNS_ALIAS_NAME&amp;gt;&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;@&amp;#34;&lt;/span>
zone_name &lt;span style="color:#f92672">=&lt;/span> azurerm_dns_zone&lt;span style="color:#f92672">.&lt;/span>&lt;span style="color:#e6db74">&amp;lt;DNS_ZONE_NAME&amp;gt;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>name
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
ttl &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">300&lt;/span>
target_resource_id &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>id
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain create &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>hostname www&lt;span style="color:#f92672">.&lt;/span>${var&lt;span style="color:#f92672">.&lt;/span>domain} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">-&lt;/span>n &lt;span style="color:#e6db74">&amp;lt;MEANINGFUL_CUSTOM_DOMAIN_NAME&amp;gt;&lt;/span>
EOT
}
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain create &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>hostname ${var&lt;span style="color:#f92672">.&lt;/span>domain} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">-&lt;/span>n apex
EOT
}
provisioner &lt;span style="color:#e6db74">&amp;#34;local-exec&amp;#34;&lt;/span> {
command &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>EOT
az cdn custom&lt;span style="color:#f92672">-&lt;/span>domain enable&lt;span style="color:#f92672">-&lt;/span>https &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>endpoint&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>resource&lt;span style="color:#f92672">-&lt;/span>group ${azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">--&lt;/span>profile&lt;span style="color:#f92672">-&lt;/span>name ${azurerm_cdn_profile&lt;span style="color:#f92672">.&lt;/span>cdn&lt;span style="color:#f92672">.&lt;/span>name} &lt;span style="color:#f92672">\&lt;/span>
&lt;span style="color:#f92672">-&lt;/span>n emilygorcenski
EOT
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_dns_cname_record&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;www_cname&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;www&amp;#34;&lt;/span>
zone_name &lt;span style="color:#f92672">=&lt;/span> azurerm_dns_zone&lt;span style="color:#f92672">.&lt;/span>&lt;span style="color:#e6db74">&amp;lt;DNS_ZONE_NAME&amp;gt;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>name
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
ttl &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">3600&lt;/span>
target_resource_id &lt;span style="color:#f92672">=&lt;/span> azurerm_cdn_endpoint&lt;span style="color:#f92672">.&lt;/span>cdn_blog&lt;span style="color:#f92672">.&lt;/span>id
}
data &lt;span style="color:#e6db74">&amp;#34;azurerm_client_config&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;current&amp;#34;&lt;/span> {}
&lt;span style="color:#75715e"># Remove this if this service principal has already been created for this subscription&lt;/span>
resource &lt;span style="color:#e6db74">&amp;#34;azuread_service_principal&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;sp&amp;#34;&lt;/span> {
application_id &lt;span style="color:#f92672">=&lt;/span> var&lt;span style="color:#f92672">.&lt;/span>cdn_application_id
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;kv&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_KEYVAULT_NAME&amp;gt;&amp;#34;&lt;/span>
location &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>location
resource_group_name &lt;span style="color:#f92672">=&lt;/span> azurerm_resource_group&lt;span style="color:#f92672">.&lt;/span>rg&lt;span style="color:#f92672">.&lt;/span>name
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
sku_name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;standard&amp;#34;&lt;/span>
soft_delete_enabled &lt;span style="color:#f92672">=&lt;/span> true
soft_delete_retention_days &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">7&lt;/span>
access_policy {
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
object_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>object_id
certificate_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;deleteissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;getissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;listissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;managecontacts&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;manageissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;setissuers&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;update&amp;#34;&lt;/span>,
]
key_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;create&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;decrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;encrypt&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;import&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;sign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;unwrapKey&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;update&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;verify&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;wrapKey&amp;#34;&lt;/span>,
]
secret_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;backup&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;delete&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;purge&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;recover&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;restore&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;set&amp;#34;&lt;/span>,
]
}
&lt;span style="color:#75715e"># if you&amp;#39;ve already created the service principal for the subscription, remove this block&lt;/span>
&lt;span style="color:#75715e"># you&amp;#39;ll need to add it manually, but a future improvement will automate this&lt;/span>
access_policy {
tenant_id &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>azurerm_client_config&lt;span style="color:#f92672">.&lt;/span>current&lt;span style="color:#f92672">.&lt;/span>tenant_id
object_id &lt;span style="color:#f92672">=&lt;/span> azuread_service_principal&lt;span style="color:#f92672">.&lt;/span>sp&lt;span style="color:#f92672">.&lt;/span>id
certificate_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
]
secret_permissions &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;get&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;list&amp;#34;&lt;/span>,
]
}
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
resource &lt;span style="color:#e6db74">&amp;#34;azurerm_key_vault_certificate&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;cert&amp;#34;&lt;/span> {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;MEANINGFUL_CERTIFICATE_NAME&amp;gt;&amp;#34;&lt;/span>
key_vault_id &lt;span style="color:#f92672">=&lt;/span> azurerm_key_vault&lt;span style="color:#f92672">.&lt;/span>kv&lt;span style="color:#f92672">.&lt;/span>id
certificate_policy {
issuer_parameters {
name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Unknown&amp;#34;&lt;/span>
}
key_properties {
exportable &lt;span style="color:#f92672">=&lt;/span> true
key_size &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">2048&lt;/span>
key_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;RSA&amp;#34;&lt;/span>
reuse_key &lt;span style="color:#f92672">=&lt;/span> true
}
lifetime_action {
action {
action_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;EmailContacts&amp;#34;&lt;/span>
}
trigger {
days_before_expiry &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">30&lt;/span>
}
}
secret_properties {
content_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;application/x-pkcs12&amp;#34;&lt;/span>
}
x509_certificate_properties {
&lt;span style="color:#75715e"># Server Authentication = 1.3.6.1.5.5.7.3.1&lt;/span>
&lt;span style="color:#75715e"># Client Authentication = 1.3.6.1.5.5.7.3.2&lt;/span>
extended_key_usage &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;1.3.6.1.5.5.7.3.1&amp;#34;&lt;/span>]
key_usage &lt;span style="color:#f92672">=&lt;/span> [
&lt;span style="color:#e6db74">&amp;#34;cRLSign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;dataEncipherment&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;digitalSignature&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyAgreement&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyCertSign&amp;#34;&lt;/span>,
&lt;span style="color:#e6db74">&amp;#34;keyEncipherment&amp;#34;&lt;/span>,
]
subject_alternative_names {
dns_names &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;www.${var.domain}&amp;#34;&lt;/span>]
}
subject &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;CN=${var.domain}&amp;#34;&lt;/span>
validity_in_months &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">12&lt;/span>
}
}
tags &lt;span style="color:#f92672">=&lt;/span> {
purpose &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;blog&amp;#34;&lt;/span>
}
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run &lt;code>terraform init&lt;/code> followed by &lt;code>terraform plan&lt;/code> followed by &lt;code>terraform apply&lt;/code>&lt;/p>
&lt;p>Upload your static site to your new storage account with: &lt;code>az storage blob upload-batch --account-name &amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt; -d '$web' -s public/.&lt;/code>&lt;/p>
&lt;p>Download your CSR certificate from the generated Certificate in the Key Vault and have it signed. Merge the signed certificate back. Add the certificates to your custom domains in the CDN endpoint. Replace your DNS nameservers with those from the Azure DNS Zone.&lt;/p>
&lt;p>Run &lt;code>az ad sp create-for-rbac --name &amp;quot;azure-actions-tf&amp;quot; --role Contributor --scopes /subscriptions/&amp;lt;SUBSCRIPTION_ID&amp;gt;/resourceGroups/&amp;lt;RESOURCE_GROUP_NAME&amp;gt; --sdk-auth&lt;/code> and copy the output to a Github secret called &lt;code>AZURE_CREDENTIALS&lt;/code>.&lt;/p>
&lt;p>Copy to &lt;code>.github/workflows/delivery.yml&lt;/code>:&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:#75715e"># delivery.yml&lt;/span>
&lt;span style="color:#f92672">on&lt;/span>:
&lt;span style="color:#f92672">push&lt;/span>:
&lt;span style="color:#f92672">branches&lt;/span>: [ &lt;span style="color:#ae81ff">main ]&lt;/span>
&lt;span style="color:#f92672">jobs&lt;/span>:
&lt;span style="color:#f92672">deploy&lt;/span>:
&lt;span style="color:#f92672">runs-on&lt;/span>: &lt;span style="color:#ae81ff">ubuntu-latest&lt;/span>
&lt;span style="color:#f92672">steps&lt;/span>:
- &lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">actions/checkout@v2&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">submodules&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># Fetch Hugo themes (true OR recursive)&lt;/span>
&lt;span style="color:#f92672">fetch-depth&lt;/span>: &lt;span style="color:#ae81ff">0&lt;/span> &lt;span style="color:#75715e"># Fetch all history for .GitInfo and .Lastmod&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Setup Hugo&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">peaceiris/actions-hugo@v2&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">hugo-version&lt;/span>: &lt;span style="color:#e6db74">&amp;#39;0.68.3&amp;#39;&lt;/span>
&lt;span style="color:#75715e"># extended: true&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Build&lt;/span>
&lt;span style="color:#f92672">run&lt;/span>: &lt;span style="color:#ae81ff">hugo&lt;/span>
- &lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/login@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">creds&lt;/span>: &lt;span style="color:#ae81ff">${{ secrets.AZURE_CREDENTIALS }}&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Upload to blob storage&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/CLI@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">azcliversion&lt;/span>: &lt;span style="color:#ae81ff">2.0.72&lt;/span>
&lt;span style="color:#f92672">inlineScript&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az storage blob upload-batch --account-name &amp;lt;STATIC_SITE_STORAGE_ACCOUNT_NAME&amp;gt; -d &amp;#39;$web&amp;#39; -s public/.&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">Purge CDN endpoint&lt;/span>
&lt;span style="color:#f92672">uses&lt;/span>: &lt;span style="color:#ae81ff">azure/CLI@v1&lt;/span>
&lt;span style="color:#f92672">with&lt;/span>:
&lt;span style="color:#f92672">azcliversion&lt;/span>: &lt;span style="color:#ae81ff">2.0.72&lt;/span>
&lt;span style="color:#f92672">inlineScript&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az cdn endpoint purge --content-paths &amp;#34;/*&amp;#34; --profile-name &amp;#34;&amp;lt;CDN_PROFILE_NAME&amp;gt;&amp;#34; --name &amp;#34;&amp;lt;CDN_ENDPOINT_NAME&amp;gt;&amp;#34; --resource-group &amp;#34;&amp;lt;RESOURCE_GROUP_NAME&amp;gt;&amp;#34;&lt;/span>
- &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">logout&lt;/span>
&lt;span style="color:#f92672">run&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> &lt;/span> &lt;span style="color:#ae81ff">az logout&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Push to Github.&lt;/p>
&lt;h2 id="conclusions">Conclusions&lt;/h2>
&lt;p>Truthfully, this was a lot of work for very little gain outside of learning. This is a lot of work for hosting a static site, and tools like Github Pages and Firebase are far better suited for the job, and handle all the messy bits like &lt;code>http&lt;/code> to &lt;code>https&lt;/code> redirection and custom subdomains for you. However, this was useful for me to learn Terraform and Azure.&lt;/p>
&lt;p>Some of the mistakes and traps I encountered along the way:&lt;/p>
&lt;ul>
&lt;li>wait for nameservers to propagate before turning off your old host. This will take up to 48 hours;&lt;/li>
&lt;li>maybe consider using the same Resource Group for your Terraform backend;&lt;/li>
&lt;li>the Service Principal step for configuring the Azure CDN application is complex and will require a lot more research.&lt;/li>
&lt;/ul>
&lt;p>I am certain some of this work can be tightened up. I tested this by first migrating my blog, and then I migrated &lt;a href="https://www.whentheycamedown.com">whentheycamedown&lt;/a>. That worked pretty seamlessly, and had I not been too hasty in deleting my old host, I could have achieved the zero downtime migration that I wanted.&lt;/p>
&lt;p>The big thing I have left to do: figure out the Service Principal stuff so I can integrate infrastructure deployments into CI/CD and remove a potential manual step.&lt;/p>
&lt;p>Anyhow, I have seen some blog posts cover moving static sites to Azure before, but none using Terraform. So hopefully this is a useful resource, and if it is, please &lt;a href="https://twitter.com/EmilyGorcenski">let me know!&lt;/a>.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://arlanblogs.alvarnet.com/adding-a-root-domain-to-azure-cdn-endpoint/">Adding a Root Domain to Azure CDN endpoint&lt;/a>&amp;ndash;this has some outdated advice that no longer works but the principles are still useful;&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-static-site-github-actions">Set up a GitHub Actions workflow to deploy your static website in Azure Storage&lt;/a>;&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/cdn/cdn-custom-ssl?tabs=option-2-enable-https-with-your-own-certificate">Tutorial: Configure HTTPS on an Azure CDN custom domain&lt;/a>;&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/dns/dns-domain-delegation">Delegation of DNS zones with Azure DNS&lt;/a>;&lt;/li>
&lt;li>&lt;a href="https://wrightfully.com/azure-static-website-custom-domain-https">Walkthrough: Set up Custom Domains with HTTPS on Azure Static Websites&lt;/a>;&lt;/li>
&lt;li>&lt;a href="https://www.blendmastersoftware.com/blog/deploying-to-azure-using-terraform-and-github-actions">Deploying to Azure using Terraform and GitHub Actions&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>This post was updated on 05.07.2021 to include some potential extra provisioner logic to make this work on Windows, or with later versions of Terraform.&lt;/em>&lt;/p></description></item><item><title>Configuring a Data Science Workbench</title><link>https://emilygorcenski.com/post/configuring-a-data-science-workbench/</link><pubDate>Sun, 20 Dec 2020 13:25:13 +0100</pubDate><guid>https://emilygorcenski.com/post/configuring-a-data-science-workbench/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/mlflow-test.JPG"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/mlflow-test.JPG" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/mlflow-test.JPG" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/mlflow-test.JPG" width="600"/></media:content><description>&lt;p>This post discusses creating a local data science workbench for local, production software-like development workflows.&lt;/p>
&lt;ol>
&lt;li>&lt;a href="#tldr-show-me-the-github">tl;dr summary&lt;/a>&lt;/li>
&lt;li>&lt;a href="#background">Background&lt;/a>&lt;/li>
&lt;li>&lt;a href="#dealing-with-docker-in-windows">Dealing with Docker in Windows&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuring-mlflow">Configuring MLFlow&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuring-postgres">Configuring Postgres&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuring-minio">Configuring MinIO&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuring-jupyterlab">Configuring Jupyterlab&lt;/a>&lt;/li>
&lt;li>&lt;a href="#references">References&lt;/a>&lt;/li>
&lt;/ol>
&lt;h1 id="tldr-show-me-the-github">TL;DR Show me the Github&lt;/h1>
&lt;p>The code needed here can be found in &lt;a href="https://github.com/Gorcenski/ds-workbench">my Github repository&lt;/a>. You&amp;rsquo;ll need Docker installed to reproduce it. &lt;strong>Note: this is not suitable for production environments.&lt;/strong>&lt;/p>
&lt;h1 id="background">Background&lt;/h1>
&lt;p>One of the challenges with data science development is that the workflows require a lot more data, tooling, and experimentation that most software engineering workflows. Compounding this, many data scientists don&amp;rsquo;t have the experience in production software development to effectively move their work to production. One way to improve this is to improve local development experiences for data science. This means configuring local tooling that looks like cloud-based workflows.&lt;/p>
&lt;p>Too often, data scientists start by working in notebooks and never leave that ecosystem. This leads to some less-than-ideal patterns when it comes to production engineering. In this post, I&amp;rsquo;ll explore putting together a local workbench that includes many of the tools that will help data scientists work effectively in local environments, and by building familiarity with these tools and ways of working, my hope is that data scientists will be able to explore greater ownership of production data science.&lt;/p>
&lt;p>To start out, I thought a bit about what I want as a data scientist.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>As a&lt;/strong> data scientist,&lt;/p>
&lt;p>&lt;strong>I want&lt;/strong> to be able to explore data in many formats, experiment rapidly, visualize data, and organize assets locally,&lt;/p>
&lt;p>&lt;strong>So that&lt;/strong> I can more quickly move my work into production systems.&lt;/p>
&lt;/blockquote>
&lt;p>Starting here, I can configure a toolset. First, I&amp;rsquo;ll want an experiment and asset tracking solution. I&amp;rsquo;ll need a visualization and exploratory data analysis (EDA) environment. I work with data living in data lakes and in data warehouses, so I&amp;rsquo;ll want a s3-like environment and a SQL-like environment. Last, I want some way to version my data.&lt;/p>
&lt;p>With these requirements, I&amp;rsquo;ll start with the following tools in my stack:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.mlflow.org/">MLFlow&lt;/a> for experiment tracking and model asset management;&lt;/li>
&lt;li>PostgreSQL for a SQL engine and to serve as a backend for MLFlow;&lt;/li>
&lt;li>&lt;a href="https://min.io/">MinIO&lt;/a> to mimic AWS S3 and act as an artifact and data store;&lt;/li>
&lt;li>&lt;a href="https://jupyter.org/">Jupyterlab&lt;/a> as an EDA environment.&lt;/li>
&lt;/ul>
&lt;p>Most of my work is done on Macbooks, since that&amp;rsquo;s what I use for work. But I&amp;rsquo;m doing this on my personal Windows machine, so I will have some additional challenges of making this all work within the Windows Subsystem for Linux.&lt;/p>
&lt;p>At the end of the day, I want a nicely portable, easily configurable docker compose setup that gets all these tools up and running locally. I&amp;rsquo;m not concerned with making this production ready or runnable in the cloud. I basically want something that I can start with one command and will help me manage working with all kinds of data.&lt;/p>
&lt;h1 id="dealing-with-docker-in-windows">Dealing with Docker in Windows&lt;/h1>
&lt;p>I run Windows 10 Professional, and I have Ubuntu 20.04 installed in WSL 2. I&amp;rsquo;ve installed Docker Desktop for Windows.&lt;/p>
&lt;p>At first, I had some difficulty getting everything working. At first, I could stand up docker containers inside WSL, but not get to them in Windows. After struggling with the networking, I downgraded to WSL 1, and I was now able to access services on &lt;code>localhost&lt;/code>, assuming I configured &lt;code>--host 0.0.0.0&lt;/code> when executing &lt;code>docker run&lt;/code>. However, I later encountered a weird issue: while I could access those services from in Windows, I could not access them in Ubuntu. I struggled with some configurations, including by doing &lt;code>export DOCKER_HOST=tcp://127.0.0.1:2375&lt;/code> and checking &amp;ldquo;Expose daemon on tcp://localhost:2375 without TLS&amp;rdquo; in Docker Desktop. This did not work.&lt;/p>
&lt;p>Ultimately, I went back to WSL 2, ensured that &amp;ldquo;Expose daemon on tcp://localhost:2375 without TLS&amp;rdquo; and &amp;ldquo;Use the WSL 2 based engine&amp;rdquo; were checked in Docker Desktop, and then did &lt;code>unset DOCKER_HOST&lt;/code>. With this, I was able to make everything work in both Windows and Ubuntu. I can&amp;rsquo;t say why this didn&amp;rsquo;t work the first time around, but it works now.&lt;/p>
&lt;h1 id="configuring-mlflow">Configuring MLFlow&lt;/h1>
&lt;p>&lt;a href="https://www.mlflow.org/">MLFlow&lt;/a> is an experiment tracking framework that also includes some asset repository functionality. Since it is python-based, it&amp;rsquo;s easy to install with &lt;code>pip&lt;/code>. It&amp;rsquo;s also easily containerized, so it&amp;rsquo;s a good starting point. There are probably some MLFlow images available out there, but since it&amp;rsquo;s easy to get running, we&amp;rsquo;ll just build our own.&lt;/p>
&lt;p>MLFlow can be run standalone, but it also allows us to use some backing technologies. We can store experiment runs using a SQL engine such as MySQL, PostgreSQL, sqlite, and so on. My go-to SQL database is Postgres, so I&amp;rsquo;ll use that. In addition, MLFlow can talk to most filestores, such as S3, Google Cloud Storage, HDFS, Azure Blob Storage, and so on. I don&amp;rsquo;t want my local environment talking to the cloud, but thankfully there are some tools that utilize these APIs. I&amp;rsquo;ll use MinIO, and I&amp;rsquo;ll discuss configuring this later. For now, all we need to know is that we&amp;rsquo;ll need python support for Postgres and S3.&lt;/p>
&lt;p>Starting in the root directory of our repository, we&amp;rsquo;ll create a new folder, &lt;code>mlflow&lt;/code>, and put a &lt;code>Dockerfile&lt;/code> inside it with the following:&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-Dockerfile" data-lang="Dockerfile">&lt;span style="color:#66d9ef">FROM&lt;/span>&lt;span style="color:#e6db74"> python:3.7.9-slim&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>&lt;span style="color:#66d9ef">RUN&lt;/span> pip install mlflow psycopg2-binary boto3&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>&lt;span style="color:#66d9ef">EXPOSE&lt;/span>&lt;span style="color:#e6db74"> 5000&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>MLFlow by default uses port 5000. We also install the &lt;code>psycopg2-binary&lt;/code> and &lt;code>boto3&lt;/code> packages to enable Postgres and S3 support, respectively.&lt;/p>
&lt;p>We can go ahead and build this using &lt;code>docker build&lt;/code>, but let&amp;rsquo;s actually start building our docker compose file.&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">version&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3.3&amp;#34;&lt;/span>
&lt;span style="color:#f92672">services&lt;/span>:
&lt;span style="color:#f92672">tracking_server&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./mlflow&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/mlflow-scratch&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_server&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;5000:5000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">./mlruns:/mlruns&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> mlflow server
&lt;/span>&lt;span style="color:#e6db74"> --host 0.0.0.0&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>This is pretty basic. Run &lt;code>docker-compose up&lt;/code> to build the image and create an MLFlow instance accessible at &lt;code>http://localhost:5000&lt;/code>. We&amp;rsquo;ll add more configuration later. For now, it&amp;rsquo;s enough to have the service running.&lt;/p>
&lt;h1 id="configuring-postgres">Configuring Postgres&lt;/h1>
&lt;p>With the configuration just set up, we have MLFlow persisting data locally. But we can do better. Let&amp;rsquo;s configure a backend SQL store. Since this is for local development, it also doesn&amp;rsquo;t hurt to have access to a SQL engine, just in case we ever get into the position of wanting to do some SQL workbenching. We&amp;rsquo;ll just use the default Postgres image available on Docker Hub.&lt;/p>
&lt;p>We&amp;rsquo;ll add the following snippet under &lt;code>services&lt;/code> in our &lt;code>docker-compose.yml&lt;/code> file, above the MLFlow section.&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">db&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:11&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_db&lt;/span>
&lt;span style="color:#f92672">expose&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${PG_PORT}&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">POSTGRES_USER=${PG_USER}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_PASSWORD=${PG_PASSWORD}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_DATABASE=${PG_DATABASE}&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">db_data:/var/lib/postgresql/data/&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now, let&amp;rsquo;s create an environment file. In my repo, I call it &lt;code>default.env&lt;/code> but it can be whatever you want. We&amp;rsquo;ll use this to configure Postgres:&lt;/p>
&lt;pre tabindex="0">&lt;code># default.env
# MLFlow Configuration
MLFLOW_PORT=5000
# Postgres Configuration
PG_USER=mlflow
PG_PASSWORD=mlflow
PG_DATABASE=mlflow
PG_PORT=5432
&lt;/code>&lt;/pre>&lt;p>Postgres&amp;rsquo;s default port is 5432, and that suffices for our use cases. Moreover, notice how we&amp;rsquo;ve specified a volume in the docker compose file. We&amp;rsquo;ll let Docker manage volumes for us rather than worrying about local filesystem management. As a top-level section in the yaml, add the following:&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">volumes&lt;/span>:
&lt;span style="color:#f92672">db_data&lt;/span>:
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Finally, let&amp;rsquo;s wire this up to MLFlow. We&amp;rsquo;ll configure some networking and add some command arguments to the &lt;code>mlflow&lt;/code> run command. The &lt;code>docker-compose.yml&lt;/code> should now look like this:&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">version&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3.3&amp;#34;&lt;/span>
&lt;span style="color:#f92672">services&lt;/span>:
&lt;span style="color:#f92672">db&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:11&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_db&lt;/span>
&lt;span style="color:#f92672">expose&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${PG_PORT}&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">POSTGRES_USER=${PG_USER}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_PASSWORD=${PG_PASSWORD}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_DATABASE=${PG_DATABASE}&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">db_data:/var/lib/postgresql/data/&lt;/span>
&lt;span style="color:#f92672">tracking_server&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./mlflow&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/mlflow-scratch&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_server&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MLFLOW_PORT}:5000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> mlflow server
&lt;/span>&lt;span style="color:#e6db74"> --backend-store-uri postgresql://${PG_USER}:${PG_PASSWORD}@db:${PG_PORT}/${PG_DATABASE}
&lt;/span>&lt;span style="color:#e6db74"> --host 0.0.0.0
&lt;/span>&lt;span style="color:#e6db74"> --default-artifact-root /data&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;span style="color:#f92672">db_data&lt;/span>:
&lt;span style="color:#f92672">minio_data&lt;/span>:
&lt;span style="color:#f92672">networks&lt;/span>:
&lt;span style="color:#f92672">frontend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;span style="color:#f92672">backend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note that when using &lt;code>backend-store-uri&lt;/code>, one must also specify &lt;code>--default-artifact-root&lt;/code>. Nevermind the value here, we&amp;rsquo;ll change it in the next step.&lt;/p>
&lt;p>To run this and import the environment variables, let&amp;rsquo;s run &lt;code>docker-compose --env-file default.env up -d&lt;/code> and navigate over to &lt;code>localhost:5000&lt;/code>. Go ahead and create some experiments in the UI; this will help us be convinced that the data is actually persisting.&lt;/p>
&lt;h1 id="configuring-minio">Configuring MinIO&lt;/h1>
&lt;p>This is where it started getting tricky for me. &lt;a href="https://min.io/">MinIO&lt;/a> is a tool that offers an S3-like API for mocking cloud bucket storage. Figuring out the right options to make sure that it was talking to MLFlow was a little wonky, in part because of the way docker compose handles references. We don&amp;rsquo;t need to build a MinIO image, so let&amp;rsquo;s start by adding this to our &lt;code>docker-compose.yml&lt;/code> file, under &lt;code>services&lt;/code>:&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">s3&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/minio:RELEASE.2020-12-18T03-27-42Z&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">minio_data:/data&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MINIO_PORT}:9000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MINIO_SECRET_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">server /data&lt;/span>
&lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;curl&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;-f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;http://localhost:9000/minio/health/live&amp;#34;&lt;/span>]
&lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">30s&lt;/span>
&lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">20s&lt;/span>
&lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>MinIO&amp;rsquo;s default port is 9000, and we&amp;rsquo;ll add the following to our &lt;code>default.env&lt;/code> file:&lt;/p>
&lt;pre tabindex="0">&lt;code># minio configuration
MINIO_ACCESS_KEY=minio
MINIO_SECRET_ACCESS_KEY=minio123
MINIO_PORT=9000
MLFLOW_BUCKET_NAME=mlflow
&lt;/code>&lt;/pre>&lt;p>Next, we&amp;rsquo;ll change our MLFlow entry as follows:&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">tracking_server&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./mlflow&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/mlflow-scratch&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_server&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MLFLOW_PORT}:5000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MLFLOW_S3_ENDPOINT_URL=http://s3:${MINIO_PORT}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> mlflow server
&lt;/span>&lt;span style="color:#e6db74"> --backend-store-uri postgresql://${PG_USER}:${PG_PASSWORD}@db:${PG_PORT}/${PG_DATABASE}
&lt;/span>&lt;span style="color:#e6db74"> --host 0.0.0.0
&lt;/span>&lt;span style="color:#e6db74"> --default-artifact-root s3://${MLFLOW_BUCKET_NAME}/&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Notice that we&amp;rsquo;re defining a bucket for MLFlow to use as an artifact store. However, this won&amp;rsquo;t create the bucket. We can run docker-compose, but if we try to use MLFlow, it will crash. So let&amp;rsquo;s automate creating the bucket. To do that, we&amp;rsquo;ll need to use the MinIO client. We&amp;rsquo;ll add this to our &lt;code>services&lt;/code> in the docker compose file:&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">create_buckets&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/mc:RELEASE.2019-07-17T22-13-42Z&lt;/span>
&lt;span style="color:#f92672">depends_on&lt;/span>:
- &lt;span style="color:#ae81ff">s3&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">entrypoint&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> /bin/sh -c &amp;#39;
&lt;/span>&lt;span style="color:#e6db74"> sleep 5;
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc config host add s3 http://s3:${MINIO_PORT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_ACCESS_KEY} --api S3v4;
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> exit 0;
&lt;/span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>This should create a bucket for us to persist our models.&lt;/p>
&lt;p>Our &lt;code>docker-compose.yml&lt;/code> should now look like this:&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">version&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3.3&amp;#34;&lt;/span>
&lt;span style="color:#f92672">services&lt;/span>:
&lt;span style="color:#f92672">db&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:11&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_db&lt;/span>
&lt;span style="color:#f92672">expose&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${PG_PORT}&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">POSTGRES_USER=${PG_USER}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_PASSWORD=${PG_PASSWORD}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_DATABASE=${PG_DATABASE}&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">db_data:/var/lib/postgresql/data/&lt;/span>
&lt;span style="color:#f92672">s3&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/minio:RELEASE.2020-12-18T03-27-42Z&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">minio_data:/data&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MINIO_PORT}:9000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MINIO_SECRET_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">server /data&lt;/span>
&lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;curl&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;-f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;http://localhost:9000/minio/health/live&amp;#34;&lt;/span>]
&lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">30s&lt;/span>
&lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">20s&lt;/span>
&lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;span style="color:#f92672">create_buckets&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/mc:RELEASE.2019-07-17T22-13-42Z&lt;/span>
&lt;span style="color:#f92672">depends_on&lt;/span>:
- &lt;span style="color:#ae81ff">s3&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">entrypoint&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> /bin/sh -c &amp;#39;
&lt;/span>&lt;span style="color:#e6db74"> sleep 5;
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc config host add s3 http://s3:${MINIO_PORT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_ACCESS_KEY} --api S3v4;
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> exit 0;
&lt;/span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span>
&lt;span style="color:#f92672">tracking_server&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./mlflow&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/mlflow-scratch&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_server&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MLFLOW_PORT}:5000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MLFLOW_S3_ENDPOINT_URL=http://s3:${MINIO_PORT}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> mlflow server
&lt;/span>&lt;span style="color:#e6db74"> --backend-store-uri postgresql://${PG_USER}:${PG_PASSWORD}@db:${PG_PORT}/${PG_DATABASE}
&lt;/span>&lt;span style="color:#e6db74"> --host 0.0.0.0
&lt;/span>&lt;span style="color:#e6db74"> --default-artifact-root s3://${MLFLOW_BUCKET_NAME}/&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;span style="color:#f92672">db_data&lt;/span>:
&lt;span style="color:#f92672">minio_data&lt;/span>:
&lt;span style="color:#f92672">networks&lt;/span>:
&lt;span style="color:#f92672">frontend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;span style="color:#f92672">backend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>and our &lt;code>default.env&lt;/code> should now be:&lt;/p>
&lt;pre tabindex="0">&lt;code># postgres configuration
PG_USER=mlflow
PG_PASSWORD=mlflow
PG_DATABASE=mlflow
PG_PORT=5432
# mlflow configuration
MLFLOW_PORT=5000
# minio configuration
MINIO_ACCESS_KEY=minio
MINIO_SECRET_ACCESS_KEY=minio123
MINIO_PORT=9000
MLFLOW_BUCKET_NAME=mlflow
&lt;/code>&lt;/pre>&lt;p>Let&amp;rsquo;s test this! I&amp;rsquo;ve copied &lt;a href="https://www.mlflow.org/docs/latest/tutorials-and-examples/tutorial.html">an example from MLFlow&amp;rsquo;s website&lt;/a> and tweaked it to use our local services. You should be able to run this file as is, but don&amp;rsquo;t forget to create a virtual environment using the method of your choice and install &lt;code>pandas&lt;/code>, &lt;code>sklearn&lt;/code>, and &lt;code>mlflow&lt;/code>.&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:#75715e"># The data set used in this example is from http://archive.ics.uci.edu/ml/datasets/Wine+Quality&lt;/span>
&lt;span style="color:#75715e"># P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis.&lt;/span>
&lt;span style="color:#75715e"># Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553, 2009.&lt;/span>
&lt;span style="color:#f92672">import&lt;/span> os
&lt;span style="color:#f92672">import&lt;/span> warnings
&lt;span style="color:#f92672">import&lt;/span> sys
&lt;span style="color:#f92672">import&lt;/span> pandas &lt;span style="color:#66d9ef">as&lt;/span> pd
&lt;span style="color:#f92672">import&lt;/span> numpy &lt;span style="color:#66d9ef">as&lt;/span> np
&lt;span style="color:#f92672">from&lt;/span> sklearn.metrics &lt;span style="color:#f92672">import&lt;/span> mean_squared_error, mean_absolute_error, r2_score
&lt;span style="color:#f92672">from&lt;/span> sklearn.model_selection &lt;span style="color:#f92672">import&lt;/span> train_test_split
&lt;span style="color:#f92672">from&lt;/span> sklearn.linear_model &lt;span style="color:#f92672">import&lt;/span> ElasticNet
&lt;span style="color:#f92672">from&lt;/span> urllib.parse &lt;span style="color:#f92672">import&lt;/span> urlparse
&lt;span style="color:#f92672">import&lt;/span> mlflow
&lt;span style="color:#f92672">import&lt;/span> mlflow.sklearn
&lt;span style="color:#f92672">import&lt;/span> logging
logging&lt;span style="color:#f92672">.&lt;/span>basicConfig(level&lt;span style="color:#f92672">=&lt;/span>logging&lt;span style="color:#f92672">.&lt;/span>WARN)
logger &lt;span style="color:#f92672">=&lt;/span> logging&lt;span style="color:#f92672">.&lt;/span>getLogger(__name__)
&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">eval_metrics&lt;/span>(actual, pred):
rmse &lt;span style="color:#f92672">=&lt;/span> np&lt;span style="color:#f92672">.&lt;/span>sqrt(mean_squared_error(actual, pred))
mae &lt;span style="color:#f92672">=&lt;/span> mean_absolute_error(actual, pred)
r2 &lt;span style="color:#f92672">=&lt;/span> r2_score(actual, pred)
&lt;span style="color:#66d9ef">return&lt;/span> rmse, mae, r2
&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>:
warnings&lt;span style="color:#f92672">.&lt;/span>filterwarnings(&lt;span style="color:#e6db74">&amp;#34;ignore&amp;#34;&lt;/span>)
np&lt;span style="color:#f92672">.&lt;/span>random&lt;span style="color:#f92672">.&lt;/span>seed(&lt;span style="color:#ae81ff">40&lt;/span>)
&lt;span style="color:#75715e"># Read the wine-quality csv file from the URL&lt;/span>
csv_url &lt;span style="color:#f92672">=&lt;/span> (
&lt;span style="color:#e6db74">&amp;#34;http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv&amp;#34;&lt;/span>
)
&lt;span style="color:#66d9ef">try&lt;/span>:
data &lt;span style="color:#f92672">=&lt;/span> pd&lt;span style="color:#f92672">.&lt;/span>read_csv(csv_url, sep&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;;&amp;#34;&lt;/span>)
&lt;span style="color:#66d9ef">except&lt;/span> &lt;span style="color:#a6e22e">Exception&lt;/span> &lt;span style="color:#66d9ef">as&lt;/span> e:
logger&lt;span style="color:#f92672">.&lt;/span>exception(
&lt;span style="color:#e6db74">&amp;#34;Unable to download training &amp;amp; test CSV, check your internet connection. Error: &lt;/span>&lt;span style="color:#e6db74">%s&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>, e
)
&lt;span style="color:#75715e"># Split the data into training and test sets. (0.75, 0.25) split.&lt;/span>
train, test &lt;span style="color:#f92672">=&lt;/span> train_test_split(data)
&lt;span style="color:#75715e"># The predicted column is &amp;#34;quality&amp;#34; which is a scalar from [3, 9]&lt;/span>
train_x &lt;span style="color:#f92672">=&lt;/span> train&lt;span style="color:#f92672">.&lt;/span>drop([&lt;span style="color:#e6db74">&amp;#34;quality&amp;#34;&lt;/span>], axis&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>)
test_x &lt;span style="color:#f92672">=&lt;/span> test&lt;span style="color:#f92672">.&lt;/span>drop([&lt;span style="color:#e6db74">&amp;#34;quality&amp;#34;&lt;/span>], axis&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>)
train_y &lt;span style="color:#f92672">=&lt;/span> train[[&lt;span style="color:#e6db74">&amp;#34;quality&amp;#34;&lt;/span>]]
test_y &lt;span style="color:#f92672">=&lt;/span> test[[&lt;span style="color:#e6db74">&amp;#34;quality&amp;#34;&lt;/span>]]
alpha &lt;span style="color:#f92672">=&lt;/span> float(sys&lt;span style="color:#f92672">.&lt;/span>argv[&lt;span style="color:#ae81ff">1&lt;/span>]) &lt;span style="color:#66d9ef">if&lt;/span> len(sys&lt;span style="color:#f92672">.&lt;/span>argv) &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#66d9ef">else&lt;/span> &lt;span style="color:#ae81ff">0.5&lt;/span>
l1_ratio &lt;span style="color:#f92672">=&lt;/span> float(sys&lt;span style="color:#f92672">.&lt;/span>argv[&lt;span style="color:#ae81ff">2&lt;/span>]) &lt;span style="color:#66d9ef">if&lt;/span> len(sys&lt;span style="color:#f92672">.&lt;/span>argv) &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">2&lt;/span> &lt;span style="color:#66d9ef">else&lt;/span> &lt;span style="color:#ae81ff">0.5&lt;/span>
remote_server_uri &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;http://localhost:5000&amp;#34;&lt;/span> &lt;span style="color:#75715e"># set to your server URI&lt;/span>
mlflow&lt;span style="color:#f92672">.&lt;/span>set_tracking_uri(remote_server_uri)
mlflow&lt;span style="color:#f92672">.&lt;/span>set_experiment(&lt;span style="color:#e6db74">&amp;#34;testing12345&amp;#34;&lt;/span>)
&lt;span style="color:#66d9ef">with&lt;/span> mlflow&lt;span style="color:#f92672">.&lt;/span>start_run():
lr &lt;span style="color:#f92672">=&lt;/span> ElasticNet(alpha&lt;span style="color:#f92672">=&lt;/span>alpha, l1_ratio&lt;span style="color:#f92672">=&lt;/span>l1_ratio, random_state&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">42&lt;/span>)
lr&lt;span style="color:#f92672">.&lt;/span>fit(train_x, train_y)
predicted_qualities &lt;span style="color:#f92672">=&lt;/span> lr&lt;span style="color:#f92672">.&lt;/span>predict(test_x)
(rmse, mae, r2) &lt;span style="color:#f92672">=&lt;/span> eval_metrics(test_y, predicted_qualities)
print(&lt;span style="color:#e6db74">&amp;#34;Elasticnet model (alpha=&lt;/span>&lt;span style="color:#e6db74">%f&lt;/span>&lt;span style="color:#e6db74">, l1_ratio=&lt;/span>&lt;span style="color:#e6db74">%f&lt;/span>&lt;span style="color:#e6db74">):&amp;#34;&lt;/span> &lt;span style="color:#f92672">%&lt;/span> (alpha, l1_ratio))
print(&lt;span style="color:#e6db74">&amp;#34; RMSE: &lt;/span>&lt;span style="color:#e6db74">%s&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#f92672">%&lt;/span> rmse)
print(&lt;span style="color:#e6db74">&amp;#34; MAE: &lt;/span>&lt;span style="color:#e6db74">%s&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#f92672">%&lt;/span> mae)
print(&lt;span style="color:#e6db74">&amp;#34; R2: &lt;/span>&lt;span style="color:#e6db74">%s&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#f92672">%&lt;/span> r2)
mlflow&lt;span style="color:#f92672">.&lt;/span>log_param(&lt;span style="color:#e6db74">&amp;#34;alpha&amp;#34;&lt;/span>, alpha)
mlflow&lt;span style="color:#f92672">.&lt;/span>log_param(&lt;span style="color:#e6db74">&amp;#34;l1_ratio&amp;#34;&lt;/span>, l1_ratio)
mlflow&lt;span style="color:#f92672">.&lt;/span>log_metric(&lt;span style="color:#e6db74">&amp;#34;rmse&amp;#34;&lt;/span>, rmse)
mlflow&lt;span style="color:#f92672">.&lt;/span>log_metric(&lt;span style="color:#e6db74">&amp;#34;r2&amp;#34;&lt;/span>, r2)
mlflow&lt;span style="color:#f92672">.&lt;/span>log_metric(&lt;span style="color:#e6db74">&amp;#34;mae&amp;#34;&lt;/span>, mae)
tracking_url_type_store &lt;span style="color:#f92672">=&lt;/span> urlparse(mlflow&lt;span style="color:#f92672">.&lt;/span>get_tracking_uri())&lt;span style="color:#f92672">.&lt;/span>scheme
&lt;span style="color:#75715e"># Model registry does not work with file store&lt;/span>
&lt;span style="color:#66d9ef">if&lt;/span> tracking_url_type_store &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;file&amp;#34;&lt;/span>:
&lt;span style="color:#75715e"># Register the model&lt;/span>
&lt;span style="color:#75715e"># There are other ways to use the Model Registry, which depends on the use case,&lt;/span>
&lt;span style="color:#75715e"># please refer to the doc for more information:&lt;/span>
&lt;span style="color:#75715e"># https://mlflow.org/docs/latest/model-registry.html#api-workflow&lt;/span>
mlflow&lt;span style="color:#f92672">.&lt;/span>sklearn&lt;span style="color:#f92672">.&lt;/span>log_model(lr, &lt;span style="color:#e6db74">&amp;#34;model&amp;#34;&lt;/span>, registered_model_name&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ElasticnetWineModel&amp;#34;&lt;/span>)
&lt;span style="color:#66d9ef">else&lt;/span>:
mlflow&lt;span style="color:#f92672">.&lt;/span>sklearn&lt;span style="color:#f92672">.&lt;/span>log_model(lr, &lt;span style="color:#e6db74">&amp;#34;model&amp;#34;&lt;/span>)
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Before we run this locally, we need to export a few of our environment variables exactly as they are defined in our &lt;code>default.env&lt;/code> file:&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-sh" data-lang="sh">export AWS_ACCESS_KEY_ID&lt;span style="color:#f92672">=&lt;/span>minio
export AWS_SECRET_ACCESS_KEY&lt;span style="color:#f92672">=&lt;/span>minio123
export MLFLOW_S3_ENDPOINT_URL&lt;span style="color:#f92672">=&lt;/span>http://localhost:9000
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run a &lt;code>docker-compose --env-file default.env up -d&lt;/code> followed by &lt;code>python example.py&lt;/code> and you should see it register an experiment called &lt;code>testing12345&lt;/code> and an artifact should now be persisted! We can go to &lt;code>http://localhost:5000&lt;/code> and see it in the MLFlow UI, and also to &lt;code>http://localhost:9000&lt;/code> to see it in the MinIO browser.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/run-python.JPG" alt="Running the example.py script and seeing how it uploads to MLFlow">
&lt;img src="https://emilygorcenski.com/photo-gallery/writing/mlflow-test.JPG" alt="MLFlow UI showing the experiment results">
&lt;img src="https://emilygorcenski.com/photo-gallery/writing/minio-test.JPG" alt="MinIO browser showing the test artifact">&lt;/p>
&lt;h1 id="configuring-jupyterlab">Configuring Jupyterlab&lt;/h1>
&lt;p>&lt;a href="https://jupyter.org/">Jupyterlab&lt;/a> is an excellent exploratory environment that allows us to easily visualize data. However, it has its limitations and should not be used to develop production models, because notebook workflows are difficult to test, allow out-of-order execution, and are difficult to share and quality control. Nevertheless, notebooks have an important place in the data scientist toolkit, and Jupyterlab is a very useful utility.&lt;/p>
&lt;p>To get this working with our stack, we&amp;rsquo;ll use one of the standard images. I&amp;rsquo;ve chosen the &lt;code>all-spark-notebook&lt;/code> image, since it gives me the capability to develop in Spark with python, Scala, or R and is generally the most complete image. But if you don&amp;rsquo;t work in these technologies, you don&amp;rsquo;t need this. However, I also want to accomplish a couple other things. I&amp;rsquo;d like to use MinIO as a data repository as well as a model repository. We don&amp;rsquo;t have to get more complex than this; we can simply add a &lt;code>data&lt;/code> bucket to MinIO. But I&amp;rsquo;d like to integrate some S3 browsing capabilities in my Jupyterlab install. Thankfully, there is &lt;a href="https://github.com/IBM/jupyterlab-s3-browser">an extension&lt;/a> for this, but I will need to do some configuration.&lt;/p>
&lt;p>We&amp;rsquo;ll start by creating a &lt;code>juptyerlab&lt;/code> folder in our root folder and add a &lt;code>Dockerfile&lt;/code> to it:&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-Dockerfile" data-lang="Dockerfile">&lt;span style="color:#66d9ef">ARG&lt;/span> BASE_CONTAINER&lt;span style="color:#f92672">=&lt;/span>jupyter/all-spark-notebook&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>&lt;span style="color:#66d9ef">FROM&lt;/span>&lt;span style="color:#e6db74"> $BASE_CONTAINER&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>&lt;span style="color:#66d9ef">USER&lt;/span>&lt;span style="color:#e6db74"> root&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>&lt;span style="color:#66d9ef">RUN&lt;/span> jupyter labextension install jupyterlab-s3-browser &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> pip install jupyterlab-s3-browser &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> jupyter serverextension enable --py jupyterlab_s3_browser &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> jupyter lab build &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> jupyter lab clean&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This adds the &lt;code>jupyterlab-s3-browser&lt;/code> to the notebook image. This will take a while to build, but we shouldn&amp;rsquo;t need to do this often. You can also add other extensions in a similar manner, if you choose.&lt;/p>
&lt;p>Next, let&amp;rsquo;s add a data bucket in MinIO:&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">create_buckets&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/mc:RELEASE.2019-07-17T22-13-42Z&lt;/span>
&lt;span style="color:#f92672">depends_on&lt;/span>:
- &lt;span style="color:#ae81ff">s3&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">entrypoint&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> /bin/sh -c &amp;#39;
&lt;/span>&lt;span style="color:#e6db74"> sleep 5;
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc config host add s3 http://s3:${MINIO_PORT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_ACCESS_KEY} --api S3v4;
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${DATA_REPO_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${DATA_REPO_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> exit 0;
&lt;/span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;pre tabindex="0">&lt;code># default.env
...
# minio configuration
MINIO_ACCESS_KEY=minio
MINIO_SECRET_ACCESS_KEY=minio123
MINIO_PORT=9000
MLFLOW_BUCKET_NAME=mlflow
DATA_REPO_BUCKET_NAME=data
&lt;/code>&lt;/pre>&lt;p>With this done, when we start our stack, we&amp;rsquo;ll create a &lt;code>data&lt;/code> bucket alongside the &lt;code>mlflow&lt;/code> bucket. Next, let&amp;rsquo;s configure Jupyterhub by adding this to `default.env&lt;/p>
&lt;pre tabindex="0">&lt;code># jupyter configuration
JUPYTER_PORT=8888
NB_USER=gorcenski
JUPYTER_TOKEN=neely
&lt;/code>&lt;/pre>&lt;p>The default Jupyterlab port is 8888, and I don&amp;rsquo;t like the way that Jupyterlab uses the &lt;code>joyvan&lt;/code> user by default, so I&amp;rsquo;ve changed it to my name. Also, when starting Jupyterlab, it generates a random token required to log into the service. Since this is a local workbench, we can just set the token here. In this example, I chose the last name of &lt;a href="https://www.youtube.com/watch?v=8252f0HJLL4">my favorite hockey player of all time&lt;/a>.&lt;/p>
&lt;p>Now, we can add the service to the &lt;code>docker-compose.yml&lt;/code> file under &lt;code>services&lt;/code>:&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">jupyterlab&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./jupyterlab&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/jupyterlab-allspark-workbench&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">jupyterlab&lt;/span>
&lt;span style="color:#f92672">working_dir&lt;/span>: &lt;span style="color:#ae81ff">/home/${NB_USER}&lt;/span>
&lt;span style="color:#f92672">user&lt;/span>: &lt;span style="color:#ae81ff">root&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${JUPYTER_PORT}:8888&amp;#34;&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">./notebooks:/home/${NB_USER}&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">NB_USER=${NB_USER}&lt;/span>
- &lt;span style="color:#ae81ff">CHOWN_HOME=yes&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTER_ENABLE_LAB=yes&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_ENDPOINT=http://s3:${MINIO_PORT}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTER_TOKEN=${JUPYTER_TOKEN}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here, we pay special attention to a couple of points. Notice that we need to add &lt;code>JUPYTER_ENABLE_LAB=yes&lt;/code> to the environment variables, to run the lab environment. We set &lt;code>user: root&lt;/code> to ensure we can install the right plugins, and &lt;code>NB_USER=${NB_USER}&lt;/code>, &lt;code>CHOWN_HOME=yes&lt;/code> and &lt;code>working_dir: /home/${NB_USER}&lt;/code> allow us to use our own username instead of the default &lt;code>joyvan&lt;/code> user. I&amp;rsquo;ve also configured this to mount a local &lt;code>notebooks&lt;/code> folder in our directory; however, we can configure this if we&amp;rsquo;d like. The motivation for doing this instead of using a Docker volume is because we might want to version control our notebooks, and that&amp;rsquo;s easier when we have a local folder.&lt;/p>
&lt;p>Our full &lt;code>docker-compose.yml&lt;/code> should now be:&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">version&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3.3&amp;#34;&lt;/span>
&lt;span style="color:#f92672">services&lt;/span>:
&lt;span style="color:#f92672">db&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">postgres:11&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_db&lt;/span>
&lt;span style="color:#f92672">expose&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${PG_PORT}&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">POSTGRES_USER=${PG_USER}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_PASSWORD=${PG_PASSWORD}&lt;/span>
- &lt;span style="color:#ae81ff">POSTGRES_DATABASE=${PG_DATABASE}&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">db_data:/var/lib/postgresql/data/&lt;/span>
&lt;span style="color:#f92672">s3&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/minio:RELEASE.2020-12-18T03-27-42Z&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">minio_data:/data&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MINIO_PORT}:9000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MINIO_SECRET_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &lt;span style="color:#ae81ff">server /data&lt;/span>
&lt;span style="color:#f92672">healthcheck&lt;/span>:
&lt;span style="color:#f92672">test&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;CMD&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;curl&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;-f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;http://localhost:9000/minio/health/live&amp;#34;&lt;/span>]
&lt;span style="color:#f92672">interval&lt;/span>: &lt;span style="color:#ae81ff">30s&lt;/span>
&lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">20s&lt;/span>
&lt;span style="color:#f92672">retries&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>
&lt;span style="color:#f92672">create_buckets&lt;/span>:
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">minio/mc:RELEASE.2019-07-17T22-13-42Z&lt;/span>
&lt;span style="color:#f92672">depends_on&lt;/span>:
- &lt;span style="color:#ae81ff">s3&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">entrypoint&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> /bin/sh -c &amp;#39;
&lt;/span>&lt;span style="color:#e6db74"> sleep 5;
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc config host add s3 http://s3:${MINIO_PORT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_ACCESS_KEY} --api S3v4;
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${MLFLOW_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> [[ ! -z &amp;#34;`/usr/bin/mc ls s3 | grep challenge`&amp;#34; ]] || /usr/bin/mc mb s3/${DATA_REPO_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> /usr/bin/mc policy download s3/${DATA_REPO_BUCKET_NAME};
&lt;/span>&lt;span style="color:#e6db74"> exit 0;
&lt;/span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span>
&lt;span style="color:#f92672">tracking_server&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./mlflow&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/mlflow-scratch&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">mlflow_server&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${MLFLOW_PORT}:5000&amp;#34;&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">MLFLOW_S3_ENDPOINT_URL=http://s3:${MINIO_PORT}&lt;/span>
&lt;span style="color:#f92672">command&lt;/span>: &amp;gt;&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> mlflow server
&lt;/span>&lt;span style="color:#e6db74"> --backend-store-uri postgresql://${PG_USER}:${PG_PASSWORD}@db:${PG_PORT}/${PG_DATABASE}
&lt;/span>&lt;span style="color:#e6db74"> --host 0.0.0.0
&lt;/span>&lt;span style="color:#e6db74"> --default-artifact-root s3://mlflow/&lt;/span>
&lt;span style="color:#f92672">jupyterlab&lt;/span>:
&lt;span style="color:#f92672">restart&lt;/span>: &lt;span style="color:#ae81ff">always&lt;/span>
&lt;span style="color:#f92672">build&lt;/span>: &lt;span style="color:#ae81ff">./jupyterlab&lt;/span>
&lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">gorcenski/jupyterlab-allspark-workbench&lt;/span>
&lt;span style="color:#f92672">container_name&lt;/span>: &lt;span style="color:#ae81ff">jupyterlab&lt;/span>
&lt;span style="color:#f92672">working_dir&lt;/span>: &lt;span style="color:#ae81ff">/home/${NB_USER}&lt;/span>
&lt;span style="color:#f92672">user&lt;/span>: &lt;span style="color:#ae81ff">root&lt;/span>
&lt;span style="color:#f92672">ports&lt;/span>:
- &lt;span style="color:#e6db74">&amp;#34;${JUPYTER_PORT}:8888&amp;#34;&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
- &lt;span style="color:#ae81ff">./notebooks:/home/${NB_USER}&lt;/span>
&lt;span style="color:#f92672">networks&lt;/span>:
- &lt;span style="color:#ae81ff">frontend&lt;/span>
- &lt;span style="color:#ae81ff">backend&lt;/span>
&lt;span style="color:#f92672">environment&lt;/span>:
- &lt;span style="color:#ae81ff">NB_USER=${NB_USER}&lt;/span>
- &lt;span style="color:#ae81ff">CHOWN_HOME=yes&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTER_ENABLE_LAB=yes&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_ENDPOINT=http://s3:${MINIO_PORT}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTERLAB_S3_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY}&lt;/span>
- &lt;span style="color:#ae81ff">JUPYTER_TOKEN=${JUPYTER_TOKEN}&lt;/span>
&lt;span style="color:#f92672">volumes&lt;/span>:
&lt;span style="color:#f92672">db_data&lt;/span>:
&lt;span style="color:#f92672">minio_data&lt;/span>:
&lt;span style="color:#f92672">networks&lt;/span>:
&lt;span style="color:#f92672">frontend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;span style="color:#f92672">backend&lt;/span>:
&lt;span style="color:#f92672">driver&lt;/span>: &lt;span style="color:#ae81ff">bridge&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>and our &lt;code>default.env&lt;/code> should look like&lt;/p>
&lt;pre tabindex="0">&lt;code># postgres configuration
PG_USER=mlflow
PG_PASSWORD=mlflow
PG_DATABASE=mlflow
PG_PORT=5432
# mlflow configuration
MLFLOW_PORT=5000
# minio configuration
MINIO_ACCESS_KEY=minio
MINIO_SECRET_ACCESS_KEY=minio123
MINIO_PORT=9000
MLFLOW_BUCKET_NAME=mlflow
DATA_REPO_BUCKET_NAME=data
# jupyter configuration
JUPYTER_PORT=8888
NB_USER=gorcenski
JUPYTER_TOKEN=neely
&lt;/code>&lt;/pre>&lt;p>Fire this up with &lt;code>docker-compose --env-file default.env up -d&lt;/code> and navigate to &lt;code>http://localhost:8888/?token=neely&lt;/code> and it should load the Jupyterlab for you.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/jupyter-lab.JPG" alt="Jupyterlab showing the S3 browser">&lt;/p>
&lt;h1 id="references">References&lt;/h1>
&lt;p>Throughout this exercise, I relied heavily on work done by others. There are some excellent resources I built on, and I hope I reference them all herein.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://gist.github.com/haxoza/22afe7cc4a9da7e8bdc09aad393a99cc">haxoza/docker-compose.yml&lt;/a>: A gist that helped me auto-create the MinIO buckets;&lt;/li>
&lt;li>&lt;a href="https://towardsdatascience.com/deploy-mlflow-with-docker-compose-8059f16b6039">Deploy MLFlow with docker compose&lt;/a>: I leaned heavily on this post;&lt;/li>
&lt;li>&lt;a href="https://medium.com/the-innovation/running-s3-object-storage-locally-with-minio-f50540ffc239">Running S3 Object Storage Locally with MinIO&lt;/a>: This post helped me understand how to set up this handy tool;&lt;/li>
&lt;li>&lt;a href="https://eloysalamanca.es/docker/preparing-to-use-docker-and-docker-compose-from-windows-10-wsl/">Preparing to use Docker and Docker Compose from Windows 10 WSL&lt;/a>: This post helped me sort my Docker on WSL issues out;&lt;/li>
&lt;li>&lt;a href="https://blog.noodle.ai/introduction-to-mlflow-for-mlops-part-3-database-tracking-minio-artifact-storage-and-registry/">Introduction to MLflow for MLOps Part 3: Database Tracking, Minio Artifact Storage, and Registry&lt;/a>: This post described things similar to what I wanted to do&lt;/li>
&lt;/ul></description></item><item><title>Book Report: Eugene V. Debs, A Graphic Biography</title><link>https://emilygorcenski.com/post/book-report-eugene-v.-debs-a-graphic-biography/</link><pubDate>Sun, 29 Nov 2020 16:17:14 +0100</pubDate><guid>https://emilygorcenski.com/post/book-report-eugene-v.-debs-a-graphic-biography/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/willimantic.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/willimantic.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/willimantic.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/willimantic.jpg" width="600"/></media:content><description>&lt;p>I read &lt;em>Eugene V. Debs, A Graphic Biography&lt;/em> by Noah van Sciver, with script by Paul Buhle and Steve Max, and with Dave Nance. This is my report.&lt;/p>
&lt;p>When I was in the tenth grade, my high school, a small agricultural school in northeastern Connecticut, piloted a new course. This course, called &amp;ldquo;American Studies,&amp;rdquo; was a combined two-period course studying American history and American literature. It was a test to replace the upper-level American history and English courses normall taken during the sophomore year. By linking our historical studies with literature from the time period in focus, the idea was that we would develop cultural context to our understanding of history, rather than mere trivia. It was in this class I first learned of socialist leader, Eugene Debs.&lt;/p>
&lt;p>It&amp;rsquo;s pretty rare that American public school students learn anything about socialist leaders from the early 20th century. Anti-communism was then, and still is, a prevailing force in public education. So naturally, it wasn&amp;rsquo;t through our textbooks that I learned of Debs&amp;rsquo;s presidential campaigns and socialist movement. Rather, it was through local folk music. Growing up, the nearest &amp;ldquo;city,&amp;rdquo; if you can really call it that, was Willimantic, Connecticut. Not even 15,000 people strong, Willimantic is a forgotten mill town in the quiet corner of New England. The historical lifeblood of the city was the American Thread Company. During Willimantic&amp;rsquo;s heyday, the city was a junction of three rail lines, an important stop between Hartford, Boston, New York, and Providence. Wealthy mill executives built a number of Victorian-style &amp;ldquo;painted ladies&amp;rdquo; on Prospect Hill, overlooking the Willimantic River.&lt;/p>
&lt;p>By the mid-1980s, however, the company moved its operations south, shuttering the mill and leaving the city to decline and the mill to fall into ruins. Residents of nearby suburban and rural towns, like the one I grew up in, would often rather make the 30-minute drive westward along Route 6 to do their shopping in Manchester, or work their jobs in the Greater Hartford area. The painted ladies began to fall into slow decline, some being partitioned into duplexes and triplexes. By the mid-1990s, the city was known as a drug center.&lt;/p>
&lt;p>But with the Eastern Connecticut State University sitting on the hill, and the University of Connecticut barely 20 minutes away in Storrs, Willimantic retained an artful charm throughout the years. Alternative culture thrived in the city. Wealthy, mostly-white liberals, aided by university radio, kept alive a culture of art and poetry and music. And it was from a local folk artist that I learned about Debs. My teacher had introduced us to Hugh Blumenfeld, a Connecticut folk musician who wrote several songs about the area. One of those songs, &amp;ldquo;&lt;a href="https://www.youtube.com/watch?v=zsG3CxRN1-4">How Long&lt;/a>,&amp;rdquo; is a ballad about the history of Willimantic and names Debs explicitly:&lt;/p>
&lt;blockquote>
&lt;p>I saw Eugene Debs rise up on &lt;a href="https://en.wikipedia.org/wiki/Industrial_Workers_of_the_World">Wobbly&lt;/a> legs&lt;br>
I heard &lt;a href="https://millmuseum.org/2019/06/13/amy-hooker/">Amy Hooker&lt;/a> dressing down American Thread&lt;br>
They took up the strikers' signs back in 1925&lt;br>
When the cutbacks at the mill ate our grandparents alive&lt;/p>
&lt;/blockquote>
&lt;p>My understanding of Debs and his life, therefore, has always been rooted in storytelling media that reach beyond dry political theory and historical trivia. So when I found the graphic novel, &lt;em>Eugene V. Debs, A Graphic Biography&lt;/em> by Noah van Sciver, at my local Charlottesville comics shop, I knew I had to buy the book. Published in 2019, the book targeted an American political ecosystem where a resurgent Bernie Sanders campaign looked promising, one where newly-resurgent activism by the Democratic Socialists of America began to find its legs. The book tries hard to paint Sanders in Debs' mold, but is careful not to lose sight of its bookjacket&amp;rsquo;s promises. The graphic novel roughly covers three phases of Debs political career: Debs&amp;rsquo;s relationship to the rise of socialism in America in the late 19th and early 20th Century; the emergence of the socialist movement as a promising third party in the early 20th century; and the rapid death of the movement as America entered World War I. There are at times when the socialist movement is depicted with suspiciously rosy outlook; was the movement really as egalitarian as the text would like the reader to believe? It is hard to say within the confines of this medium. Simply not enough time is spent developing these histories to convince the reader.&lt;/p>
&lt;p>This ends up being the fundamental flaw of the book. While van Sciver&amp;rsquo;s art is a suitable medium for telling this history, and plenty of narrative text introduces each chapter, each chapter feels like it could benefit from more development of the secondary characters and storylines that make Debs&amp;rsquo;s historical role so interesting. Not enough time is spent exploring how the Espionage Act was used to silence the anti-war movement, including socialists. Not enough time is spent really exploring the dynamics of Debs&amp;rsquo;s presidential campaigns. They are presented as they happened, but they lack the context needed to really educate the reader of the political dynamics of the era. In some cases, only one panel is contributed towards building the historical narartive.&lt;/p>
&lt;p>Nevertheless, the book does cover Debs' life in detail and makes the reader sympathetic to his causes. The art is good and easy to follow. The final chapter rapidly brings us through time by introducing the other socialist movements in America that existed between Debs and Sanders. I almost wish this was a three-volume series rather than a simple biography; the medium is engaging and it would help teach more people the history and theory of American socialism in a way that most contemporary texts are unable to.&lt;/p>
&lt;p>The book is overall worth a read. It is important entry-level material to those unfamiliar with the socialist movement in the United States. I have no regrets in buying it. If nothing else, it brought me back to summers spent riding my bike along the streets of Willimantic, exploring an evolving city trying to find its way forward in the ruins of capitalism. But complete it is not. It will whet your appetite, but not sate it.&lt;/p>
&lt;p>&lt;em>Eugene V. Debs, A Graphic Biography&lt;/em>&lt;br>
Art by Noah van Sciver,&lt;br>
Script by Paul Buhle and Steve Max,&lt;br>
with Dave Nance&lt;br>
ISBN 978-1-78663-687-4&lt;br>
Buy online at your local bookstore or online at &lt;a href="https://www.powells.com/book/eugene-v-debs-a-graphic-biography-9781786636874">Powell&amp;rsquo;s&lt;/a>&lt;/p></description></item><item><title>Les milices pro-Trump, « troupes de choc » des politiques suprémacistes, anti-ouvrières et anti-femmes</title><link>https://www.bastamag.net/Milices-paramilitaires-d-extreme-droite-pro-Trump-aux-Etats-Unis-Light-Foot-Oath-Keepers-Three-Percenter-Proud-Boys-Patriot-Prayer-Boogaloo-Boys-QAnon</link><pubDate>Sun, 29 Nov 2020 13:28:50 +0100</pubDate><guid>https://emilygorcenski.com/post/les-milices-pro-trump-troupes-de-choc-des-politiques-supr%C3%A9macistes-anti-ouvri%C3%A8res-et-anti-femmes/</guid><description>&lt;p>J&amp;rsquo;ai parlé avec Basta des milices d&amp;rsquo;extrême droite&lt;/p></description></item><item><title>Call Them Militias</title><link>https://emilygorcenski.com/post/call-them-militias/</link><pubDate>Thu, 29 Oct 2020 21:44:39 +0100</pubDate><guid>https://emilygorcenski.com/post/call-them-militias/</guid><description>&lt;p>Some militias engage in unquestionably terroristic activity. But what are the costs of applying the label terrorism too broadly?&lt;/p>
&lt;p>Just days after President Trump failed to denounce white nationalism and told a fascist street gang, the Proud Boys, to “stand by” &lt;a href="https://slate.com/news-and-politics/2020/09/presidential-debate-trump-doesnt-condemn-white-supremacy.html">during the first Presidential debate&lt;/a>, the nation was shocked when federal and state law enforcement agencies &lt;a href="https://slate.com/news-and-politics/2020/10/right-wing-plot-kidnap-michigan-gov-whitmer.html">announced the arrest&lt;/a> of over a dozen militia members tied to an alleged plot to kidnap the Democratic governor of Michigan, Gretchen Whitmer. The arrests stand as one of the largest coordinated law enforcement actions against private militias in recent memory, but they were just the latest in a series of law enforcement interventions against militants attached to the “boogaloo” movement, a loosely-affiliated nationwide assortment of far-right and anti-liberal paramilitaries preparing for a second American civil war. Some of these incidents have been fatal: police killed alleged boogaloo adherents &lt;a href="https://abcnews.go.com/US/wireStory/lawyer-man-asleep-police-fired-house-killing-69587748">Duncan Lemp&lt;/a> and &lt;a href="https://eu.detroitnews.com/in-depth/news/local/oakland-county/2020/10/07/ruby-ridge-madison-heights-fbi-shootout-eric-allport-boogaloo/3629352001/">Eric Allport&lt;/a>, their deaths creating further outrage among the largely-white, largely-male, largely-right wing movement.&lt;/p>
&lt;p>The alleged plot to kidnap the governor is shocking only in its scale and &lt;a href="https://slate.com/news-and-politics/2020/10/michigan-gretchen-whitmer-militias.html">audacity&lt;/a>. In recent weeks, we have seen both the &lt;a href="https://eu.usatoday.com/story/news/politics/2020/09/23/dhs-secretary-white-supremacy-poses-persistent-and-lethal-threat/3511913001/">Department of Homeland Security&lt;/a> and the &lt;a href="https://www.vanityfair.com/news/2020/09/fbi-director-chris-wray-blew-up-trumps-anti-antifa-war-plan">Federal Bureau of Investigation&lt;/a> state recently that white supremacist and racially-motivated extremism remains the &lt;a href="https://www.adl.org/news/press-releases/adl-report-right-wing-extremists-killed-38-people-in-2019-far-surpassing-all?fbclid=IwAR1yJ8130t7JjsHt4CJ3uEzUHhwh--9W2aUbTF5UJS0ZbG0Ik0ywshnNCdM">top domestic terror threat in the United States&lt;/a>. Over the past five years, the far-right has been responsible for the majority of extremist-related violence; the Pulse nightclub shooting in 2016 being the most significant exception.&lt;/p>
&lt;p>This type of violence is not novel among the militia movement. In 2016, &lt;a href="https://www.splcenter.org/hatewatch/2019/01/25/3-members-kansas-militia-once-plotted-bomb-mosque-now-are-going-prison">three men in a militia called The Crusaders&lt;/a> were arrested for a plot to bomb and attack a nearby Muslim community; they were eached sentenced to 25+ years in federal prison. In 2017, a man associated with the “Three-Percenter” movement, a national militia movement, &lt;a href="https://www.independent.co.uk/news/world/americas/jerry-varnell-sentenced-crime-bomb-bank-police-explosive-prison-a9422886.html">was arrested and later convicted&lt;/a> after attempting to blow up an Oklahoma City bank. And a trial is about to be underway for&lt;a href="https://abc7chicago.com/white-rabbit-militia-supremacy-domestic-terrorism-supremacists/6679524/"> a militia leader&lt;/a> alleged to have fire bombed an Islamic center and a women’s health clinic, attempted to sabotage a railway track, and robbed two Wal Marts at gunpoint. Yet despite this pattern of terroristic activity, militias have managed to enjoy a public presence largely unbothered by police.&lt;/p>
&lt;p>In April, &lt;a href="https://www.inquirer.com/health/coronavirus/coronavirus-covid-19-michigan-armed-protest-trump-whitmer-20200502.html">hundreds of armed militants marched into the Michigan statehouse&lt;/a>, some violently shouting at police while not wearing masks, to protest the Coronavirus lockdown measures, with barely any resistance from law enforcement. The state Senate had to suspend its session as a result. Yet weeks later, protests erupted after the murder of George Floyd, and police violence against peaceful protesters was a nightly occurrence. &lt;a href="https://www.opb.org/news/article/portland-police-bureau-ted-wheeler-patriot-prayer-armed-parking-garage-protesters/">Police in Portland discovered a militia standing overwatch&lt;/a> with a weapons cache atop a parking garage rooftop during a protest in 2018 and withheld this information from the mayor. Despite being out after curfew and illegally armed, &lt;a href="https://www.msn.com/en-us/news/us/fact-check-police-gave-kyle-rittenhouse-water-and-thanked-him-before-shooting/ar-BB18uJKY">police gave Kyle Rittenhouse bottled water&lt;/a> before he allegedly murdered two counter-protesters with his rifle. It is tempting to demand that the militias receive their fair share of law enforcement’s attention.&lt;/p>
&lt;p>Despite the FBI taking a clear lead in thwarting the kidnapping plot, only a handful of the men were charged with federal offenses. This is the result of what &lt;a href="https://www.washingtonpost.com/news/magazine/wp/2019/08/07/feature/the-trump-appointee-whos-putting-white-supremacists-in-jail/">some perceive as a gap in federal criminal law&lt;/a>—the law defines crimes for international terrorism but is noticeably weak on domestic terrorism statutes. To be clear, the plot as alleged does qualify under most definitions of domestic terrorism, and in fact many of the men arrested have been charged with terror-related state-level offenses. But the narrow scope of federal domestic terror law means that it is much harder to employ the immense power of the anti-terror surveillance apparatus that the government has spent much of the last two decades building against these militants.&lt;/p>
&lt;p>The &lt;a href="https://eu.usatoday.com/story/news/politics/2020/10/09/gretchen-whitmer-terrorists-not-militias-charged-kidnap-plot/5935651002/">calls for declaring these groups “terrorists”&lt;/a> comes partly from a place of outrage and racial justice: after all, law enforcement calls Black people “gangsters” and “thugs,” calls Muslims “terrorists,” and calls Hispanic people “invaders.” Is it not white supremacy to treat violent white men with kid gloves?&lt;/p>
&lt;p>But the problem is more complex than that. Much of the resistance to the word “militia” is rooted in a mistaken belief that militias are a legitimate, constitutionally-protected concept. Kathleen Belew, who studies white power movements and wrote Bring the War Home about the intersection of militias and military veterans, &lt;a href="https://twitter.com/kathleen_belew/status/1311798723790372867">writes&lt;/a>, “I worry that the push to qualify definitions might create the idea of good, or neutral militias that ARE legitimate. These are not. They are not neutral observers. They are not keepers of law and order. They are paramilitary groups.” Georgetown University law professor Mary McCord led &lt;a href="https://www.c-ville.com/militia/">a lawsuit&lt;/a> against paramilitaries in the wake of the Unite the Right rally in Charlottesville in 2017. As part of her research, she assembled &lt;a href="https://www.law.georgetown.edu/icap/our-press-releases/fact-sheets-on-unlawful-militias-for-all-50-states-now-available-from-georgetown-laws-institute-for-constitutional-advocacy-and-protection/">fact sheets&lt;/a> on existing state and federal laws that limit or outlaw the activities of private militias. All 50 states have such laws. Moreover, the use of the word “militia” in the United States Constitution &lt;a href="https://www.downtownpublications.com/single-post/2020/10/08/Paramilitary-movement-Welcome-to-the-militia">has since been interpreted to mean the National Guard&lt;/a>. Indeed, while some states have laws empowering the governor to designate or sanction a militia, this is not a relevant factor in the analysis of these unsanctioned private paramilitaries. &lt;a href="https://slate.com/news-and-politics/2019/12/paramilitary-groups-anti-private-army-laws.html">Militias are already proscribed&lt;/a>. The problem we are facing today is precisely that these militias are regularly operating far beyond the ambit of their legally-protected rights.&lt;/p>
&lt;p>The problem with using the words “terrorist” or “gang” to describe this activity is that these are high-caliber concepts in a law enforcement context. The federal government is granted sweeping authority in matters of international terrorism. &lt;a href="https://www.fisc.uscourts.gov/">Secret courts&lt;/a> can grant extraordinary permissions to law enforcement to tap calls, crack phones, and engage in other activities that would normally be seen as a shredding of the Fourth Amendment.&lt;/p>
&lt;p>Similarly, gang designations result in a significant increase in carceral power. Police departments use, but poorly maintain, &lt;a href="https://www.propublica.org/article/cook-county-sheriffs-office-gang-database">gang databases&lt;/a>, even for questionable purposes such as &lt;a href="https://www.propublica.org/article/immigration-officials-use-secretive-gang-databases-to-deny-migrant-asylum-claims">immigration enforcement&lt;/a>. Once someone’s name is entered into a gang database, &lt;a href="https://theappeal.org/spotlight-the-dangers-of-gang-databases-and-gang-policing/">it is nearly impossible to remove them&lt;/a>. These databases are filled with junk data and are &lt;a href="https://theintercept.com/2019/06/28/nypd-gang-database-additions/">replete with racial bias&lt;/a>. Despite this, anti-gang measures continue to be applied even to relatively minor crimes. Gang charges carry enhanced sentencing, and this &lt;a href="https://theappeal.org/drakeo-california-gang-laws-racism/">disproportionately affects Black and Migrant communities&lt;/a>.&lt;/p>
&lt;p>We should be hesitant to expand these powers simply because of the increase in far-right violence. In the wake of the Oklahoma City Bombing—an attack perpetrated by a far-right militia—new laws were written with the intent of preventing similar future attacks. Yet these laws were used aggressively against &lt;a href="https://theintercept.com/2019/03/23/ecoterrorism-fbi-animal-rights/">animal rights and environmental activists&lt;/a>, not heavily-armed squads of racial extremists. President Trump and Attorney General Bill Barr have made it a campaign promise to designate “ANTIFA” as a domestic terror organization, although they cannot do so absent an act of Congress to create such a designation. When Michael Reinoehl was suspected in a protest-related killing in Portland, the only suspected politically-motivated killing by an antifascist in nearly 30 years, he was not given the opportunity to stand trial. Instead, according to witnesses, &lt;a href="https://www.rollingstone.com/politics/politics-news/eyewitness-disputes-federal-killing-accused-portland-shooter-barr-reinoehl-1058049/">over three-dozen police officers found him in an alley and opened fire with nary a warning&lt;/a>, killing him.&lt;/p>
&lt;p>The FBI’s intervention this week proves that existing laws and legal powers are sufficient to stop militia terrorism. This is not to say that we should shy away from using the terms “terrorism” and “gang” when they clearly and unambiguously apply—&lt;a href="http://feature.politicalresearch.org/the-proud-boys">I myself have done so&lt;/a>. But we must understand that law enforcement has not been historically permissive to militias because they have not been labeled “gangs” or “terrorists.” Police have given these groups incredible elbowroom because police and militias fundamentally uphold the same white supremacist notion of law and order. Moreover, we must disabuse ourselves of the conviction that there is a legitimate version of empowered, private paramilitary action in a democratic society. Militias do not represent an alternative to policing, they represent an alternative to public accountability. In other words, the problem is not that militias are not correctly classified to be noticed by police, the problem is that the militias have been acting as an extension of the police. Demanding harsher action from law enforcement will likely not have the intended effect of tempering white supremacist activities, but rather the opposite: it has and will continue to be used to silence and eradicate those who organize against white supremacist activities.&lt;/p>
&lt;p>As we move closer to election day, there is a palpable anxiety among many who study far-right extremism. Exacerbated by a toxic social media landscape, a government whose credibility wanes hourly, and collapsing certainty as a winter of Coronavirus looms, conditions are ripe for extremist outbursts. There is no uniform consensus among those who study extremism as to whether a Trump victory or a Trump loss will result in greater violence. The bald-faced truth of America is that the rule of law is markedly broken, stained by demagoguery and the corrupted. But for this, appeals to a stronger rule of law will only result in rule by tyrant law. We should be hesitant to inspirit this system.&lt;/p></description></item><item><title>Engineering Data Reliably Using SLO Theory – Percona Live ONLINE Talk Preview</title><link>https://www.percona.com/community-blog/2020/10/15/engineering-data-reliably-using-slo-theory-percona-live-online-talk-preview/</link><pubDate>Fri, 16 Oct 2020 09:54:42 +0200</pubDate><guid>https://emilygorcenski.com/post/engineering-data-reliably-using-slo-theory-percona-live-online-talk-preview/</guid><description>&lt;p>I wrote a blog preview (with the help of the Percona team!) for my forthcoming talk on Data Reliability Engineering with SLO theory.&lt;/p></description></item><item><title>Bold Dominion Episode 20: This election, how much do Trump and right-wing militias threaten democracy?</title><link>https://bolddominion.org/episodes/this-election-how-much-do-trump-and-right-wing-militias-threaten-democracy</link><pubDate>Sat, 10 Oct 2020 11:55:45 +0200</pubDate><guid>https://emilygorcenski.com/post/bold-dominion-episode-20-this-election-how-much-do-trump-and-right-wing-militias-threaten-democracy/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/right+wing+militia+charlottesville.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/right+wing+militia+charlottesville.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/right+wing+militia+charlottesville.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/right+wing+militia+charlottesville.jpg" width="600"/></media:content><description>&lt;p>I talked with Nathan Moore from WTJU about the risk of armed paramilitaries on with the presidential election on the horizon.&lt;/p></description></item><item><title>VICE TV: The ANTIFA Paradox</title><link>https://www.vicetv.com/en_us/video/the-antifa-paradox/5f763c270985af4efe03a896</link><pubDate>Wed, 07 Oct 2020 22:28:25 +0200</pubDate><guid>https://emilygorcenski.com/post/vice-tv-the-antifa-paradox/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/5f763c270985af4efe03a896/5f763c270985af4efe03a896-1601676770281.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/5f763c270985af4efe03a896/5f763c270985af4efe03a896-1601676770281.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/5f763c270985af4efe03a896/5f763c270985af4efe03a896-1601676770281.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/5f763c270985af4efe03a896/5f763c270985af4efe03a896-1601676770281.webp" width="600"/></media:content><description>&lt;p>I spoke with VICE about antifascist activism and how I expose white nationalists in order to stop violence and terrorism before it happens.&lt;/p></description></item><item><title>My FBI Records from Charlottesville and Beyond</title><link>https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/</link><pubDate>Sun, 04 Oct 2020 17:53:29 +0200</pubDate><guid>https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/</guid><description>&lt;p>I was the victim of multiple violent neo-Nazi crimes. Here&amp;rsquo;s what I learned from requesting my FBI records about the incidents.&lt;/p>
&lt;p>In 2019, I submitted a &lt;a href="https://www.fbi.gov/services/information-management/foipa">Freedom of Information &amp;amp; Privacy Act&lt;/a> request to obtain what FBI files might exist for me. I knew such files existed; in 2017, the Virtual Operational Support Team (VOST) was monitoring local social media pertaining to the protests in Charlottesville, and FOIA requests with local authorities showed that VOST had been monitoring &lt;a href="https://twitter.com/EmilyGorcenski/status/940935181275418624">my tweets&lt;/a> among them. Since VOST was reporting information to the Virginia Fusion Center, it stands to reason that the FBI had aggregated such data.&lt;/p>
&lt;p>My initial FOIPA request came back with an estimated 12,051 pages. It was expected to take many years. I was quite specific in the boundaries of my request, and I was shocked to see it be that large. About 18 months later, my response came back with just a handful of pages. These pages pertain to some known incidents—the attack on me by Chris Cantwell, the false tip called against me before Unite the Right, the threats from Atomwaffen Division made against me. This is not an exhaustive retelling of the interactions I&amp;rsquo;ve had with law enforcement. I&amp;rsquo;ve pressed charges on Nazis before, and those interactions are not captured here.&lt;/p>
&lt;p>These files reveal insights about how the FBI has treated the investigations around Charlottesville, Unite the Right, and neo-Nazi terror. The files contain mistakes on the part of the FBI. They reveal how the FBI can look up driving, criminal, and financial histories. And they reveal that investigations are likely not complete; the redactions of several documents suggest that investigations are still ongoing.&lt;/p>
&lt;p>I&amp;rsquo;m publishing this for two reasons: first, so that you can educate yourself about how the FBI investigates and interacts with left-wing activists; second, in the spirit of radical transparency, so people who work with me are aware of how my past work intersects with the Feds. Where there are white redaction boxes, the FBI has removed information for public release. Where there are pink boxes, I have removed personal identifiers, such as my Social Security Number, my license number, and my address.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>The data scientist exposing US white supremacists: 'This is how you fight Nazis'</title><link>https://www.theguardian.com/us-news/2020/oct/01/white-supremacist-protest-activism-emily-gorcenski</link><pubDate>Fri, 02 Oct 2020 06:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/the-data-scientist-exposing-us-white-supremacists-this-is-how-you-fight-nazis/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/2915.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/2915.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/2915.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/2915.webp" width="600"/></media:content><description>&lt;p>I was profiled by Sam Levin for &lt;em>The Guardian&lt;/em> about fighting Nazis with data, protest, and trans rights.&lt;/p></description></item><item><title>2019 FOIPA Section 1</title><link>https://emilygorcenski.com/post/2019-foipa-section-1/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-1/</guid><description>&lt;p>This is my FBI 302 from when I was interviewed as a victim of Christopher Cantwell&amp;rsquo;s &lt;a href="https://www.c-ville.com/cantwell-pleads-guilty/">violent assault&lt;/a>.&lt;/p>
&lt;p>I was interviewed by the FBI about the August 11 torch march. They told me they were investigating Christopher Cantwell and others for potential riot charges. I was interviewed with my lawyer present as a victim and did so on the advice of several attorneys, including my own.&lt;/p>
&lt;p>There are some details that they got wrong during their transcription. For instance, I did not say that counter-demonstrators at the statue were &lt;em>with&lt;/em> Black Lives Matter, I said that they were chanting the words, &amp;ldquo;black lives matter.&amp;rdquo; Moreover, I did not say I found out about the torch rally from Unicorn Riot&amp;rsquo;s Discord Leaks. I said that Unicorn Riot later released information about it in the Discord Leaks.&lt;/p>
&lt;p>My statements here are verifiably truthful. For instance, I said that I observed Chris Cantwell&amp;rsquo;s meetup at the Wal Mart parking lot at around 12:10 PM. Photo metadata that I have from that rally supports this.&lt;/p>
&lt;p>Pink boxes are personal data pertaining to myself that I redacted.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section1.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section1.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 2</title><link>https://emilygorcenski.com/post/2019-foipa-section-2/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-2/</guid><description>&lt;p>This totally-redacted file suggests that there may still be an ongoing investigation at the time of processing pertaining to me.&lt;/p>
&lt;p>This could, by way of example, be related to Chris Cantwell&amp;rsquo;s continuing threats, RAM&amp;rsquo;s riot charges, or other investigations. It may also be related to Chris Cantwell&amp;rsquo;s numerous attempts to convince the FBI that I am some sort of terrorist. (I am not.)&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section2.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section2.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 3</title><link>https://emilygorcenski.com/post/2019-foipa-section-3/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-3/</guid><description>&lt;p>This totally-redacted file suggests that there may still be an ongoing investigation at the time of processing pertaining to me.&lt;/p>
&lt;p>This could, by way of example, be related to Chris Cantwell&amp;rsquo;s continuing threats, RAM&amp;rsquo;s riot charges, or other investigations. It may also be related to Chris Cantwell&amp;rsquo;s numerous attempts to convince the FBI that I am some sort of terrorist. (I am not.)&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section3.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section3.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 4</title><link>https://emilygorcenski.com/post/2019-foipa-section-4/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-4/</guid><description>&lt;p>Hours before the torch rally, the FBI called me to investigate an anonymous tip that was submitted where someone claimed I was planning an &amp;ldquo;ANTIFA terror attack.&amp;rdquo; I was not.&lt;/p>
&lt;p>The day before Unite the Right, the FBI called me about a tip they received where someone was accusing me of plotting a terror attack. Obviously, I was not. I spoke to them briefly, and they questioned me about my plans for the rally. I truthfully told them that I had been working to ensure non-violent participation, that I had reached out to people on all sides to encourage non-violence, and to plan for a safe day. My subsequent actions prove that I was telling the truth.&lt;/p>
&lt;p>Note that the FBI invested this much time in investigating a clearly nonsensical allegation. This call was at 4:50 PM, and the two agents on the call could have been using their time investigating the neo-Nazis who were planning violence that night and the next day. Incredibly, they missed or ignored the fact that the man who &lt;em>did&lt;/em> commit the terror attack &lt;a href="https://www.reuters.com/article/us-virginia-protests-idUSKCN1UA0TV">posted his intentions to commit vehicular terror on Instagram&lt;/a> well in advance.&lt;/p>
&lt;p>I made a mistake here by not having an attorney present for the call. Never talk to cops without a lawyer.&lt;/p>
&lt;p>Pink boxes are personal data pertaining to myself that I redacted.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section4.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section4.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 5</title><link>https://emilygorcenski.com/post/2019-foipa-section-5/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-5/</guid><description>&lt;p>Hours before the torch rally, the FBI called me to investigate an anonymous tip that was submitted where someone claimed I was planning an &amp;ldquo;ANTIFA terror attack.&amp;rdquo; I was not.&lt;/p>
&lt;p>This is the brief related to the anonymous tip falsely submitted against me.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section5.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section5.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 6</title><link>https://emilygorcenski.com/post/2019-foipa-section-6/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-6/</guid><description>&lt;p>FBI Form FD-71A is the FBI&amp;rsquo;s standard complaint form. This form was generated as a result of the FBI&amp;rsquo;s investigation into the tip called in against me, which was subsequently closed.&lt;/p>
&lt;p>This form indicates that the FBI looked into quite a few things about me regarding this tip. They pulled my driving record, my wage history, my criminal record, and even my Twitter account. Some of those records haven&amp;rsquo;t been released, e.g. my Twitter. The lack of release under (b)(6), b(7)(C) and (b)(7)(E) seems to indicate that they don&amp;rsquo;t want to disclose some investigative methodologies.&lt;/p>
&lt;p>One interesting note I saw while redacting these files: the Social Security number used at the end of the report was incorrect. They had transposed two digits. So in their investigations, they didn&amp;rsquo;t even pull the correct information for me.&lt;/p>
&lt;p>Other points of interest: my driving record is clean—I have the Virginia maximum of five points. The Temporary Protective Order I was granted in the Chris Cantwell case shows up in the search. And of course, I have no criminal record that appears. My driving history seems to disclose my former name.&lt;/p>
&lt;p>Pink boxes are personal data pertaining to myself which I redacted.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section6.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section6.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 7</title><link>https://emilygorcenski.com/post/2019-foipa-section-7/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-7/</guid><description>&lt;p>In 2018, neo-Nazis threatened me in Germany. This is the FBI brief.&lt;/p>
&lt;p>In November 2018, the FBI reached out to my attorneys with a &amp;ldquo;duty to warn&amp;rdquo; about some &lt;a href="https://www.theguardian.com/world/2019/nov/18/neo-nazi-terror-group-threatened-us-activist-germany">threats against me from the Atomwaffen Division&lt;/a>. This document refers to that incident.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section7.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section7.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-8/">Section 8&lt;/a> — FBI brief regarding a threatening letter sent to me&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 FOIPA Section 8</title><link>https://emilygorcenski.com/post/2019-foipa-section-8/</link><pubDate>Wed, 30 Sep 2020 19:55:03 +0200</pubDate><guid>https://emilygorcenski.com/post/2019-foipa-section-8/</guid><description>&lt;p>In 2018, neo-Nazis threatened me by sending me a letter to my home address. This is the brief regarding that threat.&lt;/p>
&lt;p>I received a letter that looked sketchy in late 2018. On the advice of my attorneys, I did not open it and handed it to the police as evidence. They sent it to the FBI. The return address on the letter was handwritten; it was the address of the Anti-Defamation League&amp;rsquo;s Houston office. The FBI bizarrely seems to infer that that address is the genuine address of the sender.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foipa/1434100-0-Section8.PDF" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foipa/1434100-0-Section8.PDF">Click to download&lt;/a>
&lt;/div>
&lt;h3 id="related-resources">Related Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/my-fbi-records-from-charlottesville-and-beyond/">Original Post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-1/">Section 1&lt;/a> — FBI 302 from Chris Cantwell&amp;rsquo;s pepper spray attack&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-2/">Section 2&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-3/">Section 3&lt;/a> — Fully redacted file&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-4/">Section 4&lt;/a> — FBI 302 pertaining to a false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-5/">Section 5&lt;/a> — FBI brief pertaining to the false anonymous tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-6/">Section 6&lt;/a> — FBI FD-71A complaint for for the investigation regarding the tip&lt;/li>
&lt;li>&lt;a href="https://emilygorcenski.com/post/2019-foipa-section-7/">Section 7&lt;/a> — FBI brief pertaining to Atomwaffen&amp;rsquo;s threat against me in Germany&lt;/li>
&lt;/ul>
&lt;h4 id="further-resources">Further Resources&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.fbi.gov/services/information-management/foipa/requesting-fbi-records">Request your own FOIPA records&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.nlg.org/know-your-rights/">Know Your Rights&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Youth Practitioners Can Counter Fascism: What We Know and What We Need</title><link>http://jyd.pitt.edu/ojs/jyd/article/view/20-15-5-FA-01/1124</link><pubDate>Wed, 23 Sep 2020 12:17:48 -0400</pubDate><guid>https://emilygorcenski.com/post/youth-practitioners-can-counter-fascism-what-we-know-and-what-we-need/</guid><description>&lt;p>This paper by Dr. Mimi Arbeit, et al, studies counter-recruitment of youth from fascist movements online. It was done in conjunction with Dr. Arbeit&amp;rsquo;s Youth Equity and Sexuality Lab, of which I am an advisory board member, and I am cited in this work.&lt;/p></description></item><item><title>Ben Shapiro and the Conservative Chorus</title><link>https://www.politicalresearch.org/2020/06/03/ben-shapiro-and-conservative-chorus</link><pubDate>Sun, 20 Sep 2020 19:23:21 -0400</pubDate><guid>https://emilygorcenski.com/post/ben-shapiro-and-the-conservative-chorus/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/49290694556_60a4da9c6e_k.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/49290694556_60a4da9c6e_k.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/49290694556_60a4da9c6e_k.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/49290694556_60a4da9c6e_k.jpg" width="600"/></media:content><description>&lt;p>My piece for Political Research Associates on Ben Shapiro, his close relationship with extremist violence, and the unified conservative chorus that backs him and his rhetoric.&lt;/p></description></item><item><title>Software Engineering Planning via Risk Qualification and Management</title><link>https://emilygorcenski.com/post/software-engineering-planning-via-risk-qualification-and-management/</link><pubDate>Sun, 13 Sep 2020 13:49:54 +0200</pubDate><guid>https://emilygorcenski.com/post/software-engineering-planning-via-risk-qualification-and-management/</guid><description>&lt;p>Risk qualification is a useful but under-utilized technique in software engineering. Used mostly in high-criticality domains, qualifying risk can be a useful tool for managing engineering work and building better software systems.&lt;/p>
&lt;p>&lt;em>Skip to &lt;a href="#tldr-wrap-up">TL;DR summary&lt;/a>&lt;/em>&lt;/p>
&lt;p>The ecology of software development is always changing. Practices evolve in the face of new technologies, new trends, and new capabilities. What may have been a &amp;ldquo;best practice&amp;rdquo; five or ten years ago is something that is being refactored out today. In most projects, including almost every project I&amp;rsquo;ve ever been part of, there is no clear &amp;ldquo;right&amp;rdquo; answer for an engineering solution. Rather, engineering solutions are done with respect to product requirements, and those requirements are expected to evolve as our understanding of our users and their needs change over time.&lt;/p>
&lt;p>The reality of software development means that software projects can be incredibly difficult to prioritize and plan. In particular, there are two aspects of engineering planning that I have often seen teams struggle with: the prioritization of technical debt paydown and release planning. These are related. Technical debt, in my experience, is usually the product of one of two phenomena. The first debt-generating pattern is the change in user needs over time, which results in transitory business logic required to maintain compatibility with prior decisions. The second phenomenon is the sudden truncation in scope, often done in order to meet a deadline.&lt;/p>
&lt;p>It&amp;rsquo;s not uncommon to need to pare down the scope of a software deliverable ahead of a release. While practices like Continuous Delivery&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> are designed to minimize this by making the development process and the release process the same thing, there is still development overhead necessary before one can launch a product that delivers user value. And even teams that have achieved a Continuous Delivery state can still have trouble prioritizing work tasks. A systematic approach for unblocking this process can be useful.&lt;/p>
&lt;p>One such approach is &lt;em>risk qualification&lt;/em>. Risk qualification is the process of estimating and ranking risk with the goal of creating a priority measure for work to be done. But in order to qualify risk we have to understand what risk is. Some people think of risk in terms of probabilities: &amp;ldquo;what&amp;rsquo;s the risk of getting caught speeding? What&amp;rsquo;s my risk of developing cancer?&amp;rdquo; Others think in terms of worst-case scenarios: &amp;ldquo;what&amp;rsquo;s the risk of making a mistake on my taxes?&amp;rdquo; However, both of these framings are incomplete. &lt;a href="https://en.wikipedia.org/wiki/Risk#Quantitative_analysis">Risk should be thought of in terms of &lt;em>harm&lt;/em>&lt;/a>, or adverse outcomes, that can occur in relation to causal events. In analyzing risk, we want to factor in at least two quantities: the chances that the harm can occur, and how bad the harm is if it occurs. Using this, we can develop formal methods to assess and qualify risk.&lt;/p>
&lt;h2 id="risk-qualification-with-fmea">Risk qualification with FMEA&lt;/h2>
&lt;p>One method to qualify risk is the Failure Mode(s) and Effects Analysis,&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> or FMEA, framework. This framework is commonly used in safety-critical applications, like medical device development, power systems, aircraft, and so forth. In engineered systems that involve serious risk of death if failures occur, FMEA processes can get quite heavy and formal. But at its core, FMEA is actually quite lightweight and easy to run. To do so, you first brainstorm possible failures and the harms that could occur if those failures occur. Next, you subjectively assess these harms on three dimensions: probability, detectability, and severity. This assessment can be straightforward; for example, ranked from 1-5, where 5 is the &amp;ldquo;worst&amp;rdquo;. In a real FMEA, these values are well-defined in an engineering context.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> In the &amp;ldquo;lightweight FMEA&amp;rdquo; I present here, a scale of 1-5 makes things a bit simpler. During this process, all team members are asked to brainstorm around potential failure modes and their effects, ranking each risk along three axes:&lt;/p>
&lt;ul>
&lt;li>the &lt;strong>failure&lt;/strong> that can occur;&lt;/li>
&lt;li>the &lt;strong>harm&lt;/strong> that results &lt;em>given that the failure occurs&lt;/em>;&lt;/li>
&lt;li>the &lt;strong>probability&lt;/strong> (P) that the harm occurs, &lt;em>given that the failure occurs&lt;/em>;&lt;/li>
&lt;li>the &lt;strong>detectability&lt;/strong> (D) of the failure, &lt;em>given that the failure occurs&lt;/em>;&lt;/li>
&lt;li>the &lt;strong>severity&lt;/strong> (S) of the &lt;em>harm&lt;/em>, &lt;em>given that the harm occurs&lt;/em>.&lt;/li>
&lt;/ul>
&lt;p>This conditional language is stressed precisely because we want to acknowledge that failures are naturally low-probability events. It&amp;rsquo;s possible to use objective measures in some cases, and we should endeavor to do so when possible. However, precision is not the point here. Rather, we want to use expert knowledge to assess harms in order to help prioritize work. Subjective rankings are enough. These rankings are used to compute a &lt;em>Risk Priority Number (RPN)&lt;/em>, defined as&lt;/p>
&lt;p>$$RPN = P \times D \times S.$$&lt;/p>
&lt;p>Higher risk scores are worse. One note: when assessing detectability, the lowest ranking (1) means &amp;ldquo;highly detectable&amp;rdquo;, and the highest ranking (5) means &amp;ldquo;practically indetectable&amp;rdquo;. In some FMEA frameworks, alternative risk score models are used, such as&lt;/p>
&lt;p>$$RPN = P\times S + D.$$&lt;/p>
&lt;p>This also has an intuitive quality, where risk is measured similarly to &lt;a href="https://en.wikipedia.org/wiki/Expected_value">expectation&lt;/a> and then regularized by detectability. Your choice of risk function is up to you, but I prefer the product method described above because I find detectability of failures to be a critically important part of any reliability engineering practice.&lt;/p>
&lt;p>Let&amp;rsquo;s look at a working example. Consider a pulse oximeter used in a hospital to monitor a patient&amp;rsquo;s vital signs.&lt;/p>
&lt;ul>
&lt;li>Failure: The monitor loses power, and therefore the monitor fails to send an alert when a patient&amp;rsquo;s Sp02 levels drop.&lt;/li>
&lt;li>Harm: The patient suffers brain damage from the lack of oxygen.&lt;/li>
&lt;li>Probability: 2&lt;/li>
&lt;li>Detectability: 4&lt;/li>
&lt;li>Severity: 4&lt;/li>
&lt;/ul>
&lt;p>Once we have these measures, we multiply to find the RPN of this harm: 2 ⨉ 4 ⨉ 4 = 32.&lt;/p>
&lt;p>There are a couple things to note here. First, these assessments have to come in the context of the environment in which the system is used. In some cases, maybe the detectability score is lower, because the device is used in the ICU where there is constant monitoring. Second, these scores shouldn&amp;rsquo;t be taken as gospel. They&amp;rsquo;re estimates, and nitpicking for too long over the meaning of a 3 vs a 4 is usually not a value-generating proposition.&lt;/p>
&lt;p>Once you have enough of these failures, you can start to order them from worst to least (i.e. highest RPN to lowest). The failures with the highest RPN are the ones you should intervene with first. However, you can get more nuanced than this. One approach is to assign failures to a particular component, subsystem or domain. For instance, you could separate your failures by &amp;ldquo;frontend,&amp;rdquo; &amp;ldquo;backend,&amp;rdquo; and &amp;ldquo;database.&amp;rdquo; Another strategy is to cluster failures that are similar. Using the example above, you might cluster all failures related to &amp;ldquo;loss of power&amp;rdquo; together. The RPN of a cluster, then, is the sum of the RPNs of its elements. You could even assign a failure to more than one cluster.&lt;/p>
&lt;p>In order to make this exercise worthwhile, it has to be used to plan and prioritize actual work. The work that gets planned shouldn&amp;rsquo;t focus on eliminating the risk, but rather on reducing the negative effects of it. In the example above, we cannot possibly eliminate all instances of someone, say, tripping over a power cable and unplugging the machine. But we can design the machine in such a way that the negative effect of that failure is dampened, for instance by engineering in a battery standby and a loud alert tone, by using a bright yellow power cable that is easier to see, by creating labeling that instructs the user to ensure that the power cable is not left in a precarious position, or any other number of conceivable options. In each of these cases, there is a clear set of work that can be done, and that work is clearly linked to reducing the overall risk of the product. To explore this in more depth, let&amp;rsquo;s talk about risk management strategies.&lt;/p>
&lt;h2 id="risk-management">Risk Management&lt;/h2>
&lt;p>Let&amp;rsquo;s say we ran a lightweight FMEA to identify risks and we now have a prioritized list of what to fix first. The question is how do we direct our finite time and resources to achieve the best possible risk reduction? In &lt;em>The Owner&amp;rsquo;s Role in Project Risk Management&lt;/em>&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, the authors state, &amp;ldquo;Risk management planning needs to be an ongoing effort that cannot stop after a qualitative risk assessment, or a Monte Carlo simulation, or the setting of contingency levels.&amp;rdquo; Much like qualifying risk is a systematic effort, so too is managing risk. Whereas risk qualification is done along three axes: Probability, Detectability, and Severity, we can also think of risk management along a set of three similar axes: Prevention, Mitigation, and Remediation. We should think of this as a layered strategy; in security engineering, this concept maps loosely to the notion of &lt;em>defense in depth&lt;/em>.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> It&amp;rsquo;s important to not overcompensate in any one area, because risk is impossible to eliminate. Instead, we want to invest resources in all three risk management strategies.&lt;/p>
&lt;p>&lt;strong>Prevention&lt;/strong>, sometimes referred to as &amp;ldquo;Avoidance,&amp;rdquo; is self-explanatory. Although we cannot eliminate failures (and therefore harms), we can work hard to prevent them. Risk prevention means making the effort to make failure less probable. This maps cleanly to reducing the Probability score in the failure analysis. In the example I gave in the previous section, things like &amp;ldquo;install a backup battery&amp;rdquo; and &amp;ldquo;use a yellow power cord&amp;rdquo; are examples of preventative interventions. But as the old adage says, &amp;ldquo;make something foolproof, and all you&amp;rsquo;ve made is a better fool&amp;rdquo; holds true in risk analysis, too. A backup battery can run out; a careless person might still trip over a brightly-colored power cable. So while we can and should spend energy in risk prevention, it is not enough to stop here.&lt;/p>
&lt;p>&lt;strong>Mitigation&lt;/strong> is all about reducing the impact of harm. Mitigation efforts are worthwhile because risk mitigation can reduce both the Probability and Detectability scores. At the core, mitigation is about reducing the damage done when a harm occurs. At first glance this may seem to directly affect the severity score, but this is not necessarily the case. Revisiting the earlier example, suppose we already spend energy in the preventative efforts described above. A mitigation strategy might look something like, &amp;ldquo;install an audible alarm that goes off when the monitor loses power.&amp;rdquo; This does not affect the severity of the harm, which is &amp;ldquo;the patient suffers brain damage due to lack of oxygen.&amp;rdquo; An audible alert doesn&amp;rsquo;t make brain damage less severe. Another example could be a hacker entering your database. Hashing your users' passwords is a mitigation strategy: it reduces the likelihood that a hacker can access a user&amp;rsquo;s account, but it does not reduce the severity of the harm should the hacker succeed in doing so. So mitigation efforts, even when done in conjunction with prevention efforts, are not enough. We also need to consider remediation.&lt;/p>
&lt;p>&lt;strong>Remediation&lt;/strong> comes from &amp;ldquo;remedy,&amp;rdquo; which contains the Latin root &lt;em>mederi&lt;/em>, or &amp;ldquo;to heal.&amp;rdquo; In order to manage risk, we need to implement strategies to remedy failures. Remediation usually requires detectability: we cannot begin to fix a problem we cannot detect. Moreover, my view is that remediation also does not affect severity in a properly-done risk qualification exercise. Using the example above, a vitals monitor can&amp;rsquo;t undo brain damage, and we can&amp;rsquo;t un-hack of a user&amp;rsquo;s account. The magnitude of the remedy is proportional to the severity of the harm. Remediation is largely an organizational initiative: how do we compensate our users when they have been harmed by our failures, and how do we react organizationally to such failures? But that is not to say we cannot create systems that implement remedies: we could automatically de-activate users' accounts once we detect a hack, we can put holds on any transactions that happened after the hack took place, we can notify users that a hack took place and encourage them to change passwords. Importantly, remediation is only possible when adequate prevention and mitigation efforts have been put in place, but that does not mean a remediation plan must wait for failure to happen. Risk remediation is a necessary part of any risk management playbook.&lt;/p>
&lt;h2 id="running-a-risk-assessment">Running a Risk Assessment&lt;/h2>
&lt;p>A risk assessment workshop is a very powerful tool in the engineering management playbook, and it should be done from time to time to assess system quality and identify blind spots. In this section, I want to provide some suggestions for how to run a basic Risk Assessment workshop.&lt;/p>
&lt;ol>
&lt;li>Create a Spreadsheet with a few columns:
&lt;ul>
&lt;li>The Failure That Can Occur&lt;/li>
&lt;li>The Harm (given that the failure occurs)&lt;/li>
&lt;li>Component or Subsystem (in which the failure can occur)&lt;/li>
&lt;li>Probability (of the harm occurring, given that the failure occurs)&lt;/li>
&lt;li>Detectability (of the failure, given that it occurs)&lt;/li>
&lt;li>Severity (of the harm, given that it occurs)&lt;/li>
&lt;li>Risk Priority Number = Probability ⨉ Detectability ⨉ Severity&lt;/li>
&lt;li>Preventative Actions&lt;/li>
&lt;li>Mitigation Actions&lt;/li>
&lt;li>Remedial Actions&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Ask your team to take some time to fill out potential failures, harms, and the associated estimated scores. Do &lt;em>not&lt;/em> fill out columns for actions to take.
&lt;ul>
&lt;li>Inform team members of how the subjective scaling works, and instruct them to use their best judgment and not to stress over the score.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Sort the rows by Risk Priority Number descending.&lt;/li>
&lt;li>Starting at the top, ask the author of that row to briefly describe it, and then ask the team if they agree with the assessment of the Probability, Detectability, and Severity scores.&lt;/li>
&lt;li>Once consensus is reached, discuss actions that can be taken to prevent, mitigate, and remedy the harm.&lt;/li>
&lt;li>Turn those actions into work items on your planning board.
&lt;ul>
&lt;li>One option to distribute responsibility and ownership of risk management is to make the person who raised the potential failure as the owner or driver of the work items done to prevent, mitigate, or remedy risks associated with that failure.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>As mentioned before, we can add intermediate steps. For instance, we could cluster by component, or &lt;em>ad hoc&lt;/em>, and then focus energies on the highest risk area first.&lt;/p>
&lt;h2 id="example-risk-assessment">Example Risk Assessment&lt;/h2>
&lt;p>Let&amp;rsquo;s consider an incomplete risk assessment for my blog. This is designed to be illustrative, and should not be interpreted to reflect reality. At first, I&amp;rsquo;ll omit potential actions.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Failure&lt;/th>
&lt;th>Harm&lt;/th>
&lt;th>Component&lt;/th>
&lt;th>Probability&lt;/th>
&lt;th>Detectability&lt;/th>
&lt;th>Severity&lt;/th>
&lt;th>RPN&lt;/th>
&lt;th>Prevention&lt;/th>
&lt;th>Mitigation&lt;/th>
&lt;th>Remediation&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>My local development folder is deleted or corrupted&lt;/td>
&lt;td>I cannot build my blog locally&lt;/td>
&lt;td>Development Environment&lt;/td>
&lt;td>1&lt;/td>
&lt;td>1&lt;/td>
&lt;td>2&lt;/td>
&lt;td>2&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>I fail to renew my domain&lt;/td>
&lt;td>Someone steals the domain and impersonates me&lt;/td>
&lt;td>Hosting&lt;/td>
&lt;td>2&lt;/td>
&lt;td>1&lt;/td>
&lt;td>4&lt;/td>
&lt;td>8&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>I write a post that defames someone&lt;/td>
&lt;td>A person&amp;rsquo;s reputation is hurt and I am financially liable&lt;/td>
&lt;td>Content&lt;/td>
&lt;td>2&lt;/td>
&lt;td>2&lt;/td>
&lt;td>5&lt;/td>
&lt;td>20&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LaTeX formatting doesn&amp;rsquo;t work on some mobile devices&lt;/td>
&lt;td>Some of my content is unreadable and I lose readers&lt;/td>
&lt;td>View Layer&lt;/td>
&lt;td>2&lt;/td>
&lt;td>4&lt;/td>
&lt;td>1&lt;/td>
&lt;td>8&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Updating my static site generator version breaks some custom views&lt;/td>
&lt;td>My site breaks and I lose readers&lt;/td>
&lt;td>Development Environment&lt;/td>
&lt;td>3&lt;/td>
&lt;td>3&lt;/td>
&lt;td>1&lt;/td>
&lt;td>9&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Doing this risk analysis, I see that my greatest risk is a 20, which is still fairly small, despite having the highest severity. This is because of low probability and easy detectability of the potential failure—I don&amp;rsquo;t often write about people who have reputations that can be harmed by my writing, but I do write about politics. My second highest failure has to do with my development environment: I&amp;rsquo;ve already been bitten by non-backwards compatible upgrades a few times, so I know it is likely to happen again.&lt;/p>
&lt;p>Let&amp;rsquo;s rank these by RPN, and explore some potential actions to take.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Failure&lt;/th>
&lt;th>Harm&lt;/th>
&lt;th>Component&lt;/th>
&lt;th>Probability&lt;/th>
&lt;th>Detectability&lt;/th>
&lt;th>Severity&lt;/th>
&lt;th>RPN&lt;/th>
&lt;th>Prevention&lt;/th>
&lt;th>Mitigation&lt;/th>
&lt;th>Remediation&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>I write a post that defames someone&lt;/td>
&lt;td>A person&amp;rsquo;s reputation is hurt and I am financially liable&lt;/td>
&lt;td>Content&lt;/td>
&lt;td>2&lt;/td>
&lt;td>2&lt;/td>
&lt;td>5&lt;/td>
&lt;td>20&lt;/td>
&lt;td>Ask a friend to review draft posts that refer to other people, Add references to posts to defend factual claims&lt;/td>
&lt;td>Write an apology post&lt;/td>
&lt;td>Buy legal insurance&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Updating my static site generator version breaks some custom views&lt;/td>
&lt;td>My site breaks and I lose readers&lt;/td>
&lt;td>Development Environment&lt;/td>
&lt;td>3&lt;/td>
&lt;td>3&lt;/td>
&lt;td>1&lt;/td>
&lt;td>9&lt;/td>
&lt;td>Add automated tests&lt;/td>
&lt;td>Use maintained third-party plugins when possible&lt;/td>
&lt;td>Implement version management strategies for my toolchain&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>I fail to renew my domain&lt;/td>
&lt;td>Someone steals the domain and impersonates me&lt;/td>
&lt;td>Hosting&lt;/td>
&lt;td>2&lt;/td>
&lt;td>1&lt;/td>
&lt;td>4&lt;/td>
&lt;td>8&lt;/td>
&lt;td>Purchase a multi-year domain registration, add email filters to passlist my domain registrar&lt;/td>
&lt;td>Buy similar domains&lt;/td>
&lt;td>Update references in other sources to point to the new domains&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LaTeX formatting doesn&amp;rsquo;t work on some mobile devices&lt;/td>
&lt;td>Some of my content is unreadable and I lose readers&lt;/td>
&lt;td>View Layer&lt;/td>
&lt;td>2&lt;/td>
&lt;td>4&lt;/td>
&lt;td>1&lt;/td>
&lt;td>8&lt;/td>
&lt;td>Add testing tools&lt;/td>
&lt;td>Implement alt-text&lt;/td>
&lt;td>Edit posts and re-promote them on social media&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>My local development folder is deleted or corrupted&lt;/td>
&lt;td>I cannot build my blog locally&lt;/td>
&lt;td>Development Environment&lt;/td>
&lt;td>1&lt;/td>
&lt;td>1&lt;/td>
&lt;td>2&lt;/td>
&lt;td>2&lt;/td>
&lt;td>Use a distributed VCS&lt;/td>
&lt;td>Push commits frequently and ensure remote version management is always up-to-date&lt;/td>
&lt;td>Create a script for restoring from remote VCS&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>With this, I have a list of concrete actions to take. In the case of the highest-level risk, there&amp;rsquo;s not much I can do concretely except implement some process-level quality gates, such as asking a friend to review a post. But even from this process-oriented action I can find technical tasks: I could, for instance, implement a password-controlled &lt;code>drafts&lt;/code> domain for my blog, with which I could more easily share posts with potential reviewers.&lt;/p>
&lt;h2 id="tldr-wrap-up">TL;DR Wrap-Up&lt;/h2>
&lt;ul>
&lt;li>Risk qualification can aid prioritization of engineering tasks;&lt;/li>
&lt;li>Risk is associated with harm and failures are measured conditionally and subjectively (1-5, 5 being worst) along three axes:
&lt;ul>
&lt;li>Probability of harm (given failure occurs);&lt;/li>
&lt;li>Detectability of failure (given that failure occurs); and&lt;/li>
&lt;li>Severity of harm (given that harm occurs);&lt;/li>
&lt;li>The risk priority number is a product of these sub-scores&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Risk management is a layered approach built on three strategies:
&lt;ul>
&lt;li>Prevention (stopping the harm from happening);&lt;/li>
&lt;li>Mitigation (making the harm less likely, making the causes more discoverable);&lt;/li>
&lt;li>Remediation (righting wrongs and recovering from harm).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="disclaimer">Disclaimer&lt;/h2>
&lt;p>&lt;em>The intention of this post is to provide engineering leads and project managers with tools to prioritize work by viewing it through a lens of risk. While the post draws on concepts from safety-critical systems engineering, it is not intended to be a how-to guide for engineering safety critical systems. If you are working in safety-critical systems, consult with a professional risk analyst who understands your domain.&lt;/em>&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>&lt;a href="https://continuousdelivery.com/">Continuous Delivery&lt;/a>&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>&lt;a href="https://en.wikipedia.org/wiki/Failure_mode_and_effects_analysis">Failure mode and effects analysis&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3" role="doc-endnote">
&lt;p>&lt;a href="https://www.springer.com/de/book/9783319052502#otherversion=9783319379685">Risk Management for Engineering Projects: Procedures, Methods and Tools, Nolberto Munier, 2014, Springer International Publishing 978-3-319-05251-9.&lt;/a> &lt;a href="https://doi.org/10.17226/11183">https://doi.org/10.17226/11183&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4" role="doc-endnote">
&lt;p>&lt;a href="https://www.nap.edu/read/11183/chapter/7">National Research Council. 2005. The Owner&amp;rsquo;s Role in Project Risk Management. Washington, DC: The National Academies Press.&lt;/a> &lt;a href="https://doi.org/10.17226/11183">https://doi.org/10.17226/11183&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5" role="doc-endnote">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Defense_in_depth_(computing)">Defense in depth&lt;/a>&amp;#160;&lt;a href="#fnref:5" 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 Algorithm That Killed Nobody</title><link>https://emilygorcenski.com/post/the-algorithm-that-killed-nobody/</link><pubDate>Sun, 13 Sep 2020 13:49:54 +0200</pubDate><guid>https://emilygorcenski.com/post/the-algorithm-that-killed-nobody/</guid><description>&lt;p>When I was an undergraduate, I wrote a term paper studying control theory for a class titled &lt;em>Foundations of Applied Mathematics&lt;/em>. Because of this, ignorant ideologues have falsely accused me of writing software for murderous drones. I have found the paper that I worked on, and am publishing it here.&lt;/p>
&lt;p>A few years ago, I was &lt;a href="https://twitter.com/EmilyGorcenski/status/790892030746619905?ref_src=twsrc%5Etfw">reflecting publicly&lt;/a> on the ethics of algorithms. This is &lt;a href="https://www.youtube.com/watch?v=7rO5knyjDR0">something&lt;/a> that I have &lt;a href="https://www.youtube.com/watch?v=xLL7Fo_em2E">spoken about&lt;/a> a few &lt;a href="https://www.youtube.com/watch?v=TXL4SfXH5zM">times&lt;/a>. Engineering ethics is not a cut and dry, black and white field. The things that we build for good can be used for evil; things that were &lt;a href="https://en.wikipedia.org/wiki/ARPANET">originally designed for the military&lt;/a> have gone on &lt;a href="https://en.wikipedia.org/wiki/Internet">to change the world for the better&lt;/a>.&lt;/p>
&lt;p>One of the classes I took during my undergraduate studies was a course called &lt;a href="http://homepages.rpi.edu/~kramep/Public/foam03syl.htm">Foundations of Applied Mathematics&lt;/a>, or FOAM. FOAM was considered one of the more difficult undergraduate mathematics courses. In it, we studied mathematical modeling techniques such as &lt;a href="https://en.wikipedia.org/wiki/Dimensional_analysis">dimensional analysis&lt;/a>, &lt;a href="https://en.wikipedia.org/wiki/Perturbation_theory">perturbation theory&lt;/a>, and &lt;a href="https://en.wikipedia.org/wiki/Stochastic_process">stochastic processes&lt;/a>. The class was fascinating and is still one of my favorite courses that I took.&lt;/p>
&lt;p>In the class, we had the option to do a term paper in lieu of homework. The homework was quite burdensome—an estimated 20 hours per week. Given that I was, at the time, still an aeronautical engineering major, I wanted to explore a cross-disciplinary study, improve my research and paper-writing skills, and crucially, not spend 20 hours a week on homework. So I asked around my department.&lt;/p>
&lt;p>One of the research programs in development was the &amp;ldquo;&lt;a href="http://cats-fs.rpi.edu/TechnologyShowcaseApril08/Posters/Amitay%20CATS%20Poster%20Session%202008-Miki.pdf">Flying Bagel&lt;/a>.&amp;rdquo; This was a small, less than 100g prototype drone that could not fly under its own power or control. It was intended to be a technology demonstrator for synthetic jet actuators. It was suggested that I use this research as inspiration for my term paper—what could we model, using the techniques taught in the FOAM syllabus, that could in prinicple apply to this device? I had been reading about game theory and a professor suggested I look at game theory extensions to control modeling.&lt;/p>
&lt;p>So I did some research. &lt;a href="https://en.wikipedia.org/wiki/Control_theory">Control theory&lt;/a> concerns itself with the dynamical systems modeling of a controllable system. Generally, this refers to a single system, or &amp;ldquo;player&amp;rdquo;, potentially with multiple subsystems or components. An extension of control theory to mutliple &amp;ldquo;players&amp;rdquo; exists, and one approach to modeling this is to use &lt;a href="https://en.wikipedia.org/wiki/Differential_game">differential game theory&lt;/a>. Differential games can be cooperative or non-cooperative and can be extended to &lt;em>n&lt;/em> players. The history of this theory goes back to Rufus Isaacs, who developed it formally in the mid 1960s. So I did some research and decided to explore this route. I ordered the book, found some other papers, and decided to see what I could do.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/isaacs.png" alt="My Amazon.com order of Rufus Isaacs' book in September 2002">&lt;/p>
&lt;p>Throughout the semester, under the guidance of my professor, Dr. Kramer, I worked through mathematical modeling, learning about optimization, non-linear dynamical systems, and more. The resulting work culminated in a term paper, written under my deadname, which I have embedded below.&lt;/p>
&lt;style type="text/css">
div.shortcode {
float: left;
width: 100%;
padding: 0;
padding-bottom: 20px;
margin: 0 10px 0 0;
}
&lt;/style>
&lt;div class="shortcode shortcode--box-preview">
&lt;embed src="https://emilygorcenski.com/files/foam-dg-paper.pdf" type="application/pdf" width="100%" height="800px">
&lt;a href="https://emilygorcenski.com/files/foam-dg-paper.pdf">Click to download&lt;/a>
&lt;/div>
&lt;br>
&lt;p>The paper explored the idea of having a drone chase a target in a non-cooperative manner—but it is necessary to point out that non-cooperative does not mean hostile. The class of algorithm is known as a &amp;ldquo;pursuit-evader&amp;rdquo; algorithm. This could be, as I mentioned in my paper, used to understand a cheetah chasing an antelope, or it could be used to model a skier trying to go down a course as quickly as possible while a camera follows them.&lt;/p>
&lt;p>Similar technology did ultimately make it to the commercial quadcopter market. Quadcopter DJI has &lt;a href="https://www.youtube.com/watch?v=C_v3sSxnZ00">a Follow Me flight mode&lt;/a>, for instance. It&amp;rsquo;s a feature popular among people who shoot outdoor action videos. However, there&amp;rsquo;s nothing that suggests that this technology is built on something as complex as a differential game model; these algorithms would require an inordinate amount of computing power impractical for a lightweight, power-hungry platform such as a drone.&lt;/p>
&lt;p>It would be laughable to claim that the work I did for this undergraduate course had any impact on this technology. Rufus Isaacs developed his formulation of the &amp;ldquo;homicidal chauffeur&amp;rdquo; problem in 1965; more advanced applications of differential game theory were published on in during the intervening decades. Moreover, it&amp;rsquo;s equally nonsensical to claim that I &amp;ldquo;built algorithms to murder people with drones.&amp;rdquo; Not only was this work never put into production systems, it wasn&amp;rsquo;t even motivated by a system that could fly under its own power!&lt;/p>
&lt;p>This is not to say that this branch of mathematics was not deeply rooted in military research. Isaacs did his work for the RAND corporation during the Cold War, and his book is subtitled, &amp;ldquo;A Mathematical Theory with Applications to Warfare and Pursuit, Control and Optimization.&amp;rdquo; As I point out in my paper, among the motivating factors for his work was studying combat. In the preface to &lt;em>Differential Games&lt;/em>, Isaacs begins,&lt;/p>
&lt;blockquote>
&lt;p>Although combat problems were its original motive, this book has turned out to be far from a manual of military techniques. Rather the result is a mathematical entity which fuses game theory, the calculus of variations, and control theory, and, because of its subsuming character, often transcends all three.&lt;/p>
&lt;/blockquote>
&lt;p>In his introduction to pursuit games, Isaacs points out that his technique could, in principle, be used to model combat of fighter aircraft or to model football players on a field. As it turns out, as advanced as Isaacs' mathematics was for its time, decades later the field has still not evolved sufficiently to be able to tackle large multiplayer differential games.&lt;/p>
&lt;p>Differential game theory algorithms like this have been developed further and the military has been involved in that technology. The most popular application of this mathematical theory today is in the use of multi-player orbital control. Here, the technique is used to study how satellites on orbit might interact with other orbital vehicles. The applications for this vary: it could be used to build a hostile &amp;ldquo;interceptor&amp;rdquo; spacecraft designed to disrupt satellite communications. Or, the theory could be used to ensure the safety of &lt;a href="https://www.nesdis.noaa.gov/content/world-according-weather-satellites">weather satellites which are crucial to our understanding of the changing climate&lt;/a>.&lt;/p>
&lt;p>Technological ethics is a complex field ill-suited to the sweeping and heavy-handed brushstrokes of ideologues. There is a genuine need to discuss the role the military plays in western imperialism, and there is a genuine need to discuss how scientific research for the benefit of humankind is inextricably linked to military funding in these nations. To act ethically as a technologist requires one to continuously revisit and reevaluate the work one does and has done, to hold new positions, to interrogate old positions, and to move intentionally forward with the goal of bettering the world for everybody. Everything we build can be used for good or evil, irrespective of politics. There is no space in the discussion for the inflexible and the puritanical, who act in ways that would silence dissenting voices when &lt;em>their&lt;/em> contributions are used with ill intent.&lt;/p>
&lt;p>The technology we build will impact the world. &lt;a href="https://thenewstack.io/how-the-u-s-air-force-deployed-kubernetes-and-istio-on-an-f-16-in-45-days/">Kubernetes is used by the US Air Force&lt;/a>. &lt;a href="https://www.thenation.com/article/culture/military-recruitment-twitch/">Video games have been used by the US military for recruitment&lt;/a>. No technology is pure, least of all mine. But among all the things I am uncertain about, I can say with certainty that my MATH-4200 paper was never responsible for bombing anything, save for my final grade from an A to a B.&lt;/p></description></item><item><title>Inside the nasty world of alt-right literature</title><link>https://melmagazine.com/en-us/story/inside-the-nasty-world-of-alt-right-literature</link><pubDate>Thu, 10 Sep 2020 21:56:44 +0200</pubDate><guid>https://emilygorcenski.com/post/inside-the-nasty-world-of-alt-right-literature/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/terrorhouse_magazine.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/terrorhouse_magazine.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/terrorhouse_magazine.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/terrorhouse_magazine.jpg" width="600"/></media:content><description>&lt;p>I spoke with Gareth Watkins of MEL Magazine on the far-right&amp;rsquo;s awful taste in literature.&lt;/p></description></item><item><title>Writing About White Supremacist Terrorism Is Not a Crime</title><link>https://emilygorcenski.com/post/writing-about-white-supremacist-terrorism-is-not-a-crime/</link><pubDate>Sat, 22 Aug 2020 15:12:56 +0200</pubDate><guid>https://emilygorcenski.com/post/writing-about-white-supremacist-terrorism-is-not-a-crime/</guid><description>&lt;p>When people use free expression to combat violence, bigotry, and hatred, suddenly free speech champions become authoritarian tyrants.&lt;/p>
&lt;p>The right wing loves free speech. Well, the right wing loves pretending it cares about free speech. A couple years ago, Richard Spencer even admitted to opposing free speech. In a podcast episode, an interviewer asked him, &amp;ldquo;but as far as government regulation, I mean yes, in the short term we would favor government regulation of speech but, long term, uh, are we even pro-free speech?&amp;rdquo; Spencer responded, &amp;ldquo;no, of course not, but we have to use this platform&amp;hellip;&amp;rdquo; Don&amp;rsquo;t believe me? &lt;a href="https://www.youtube.com/watch?v=0mNQ2SpHkNI">Watch for yourself&lt;/a>.&lt;/p>
&lt;p>The hypocrisy in this line of reasoning is that the right quite often attacks its political opponents for being anti-free speech. But in reality, it is the right wing who attempts to silence the free speech of others. Protest movements have sought to shut down &lt;a href="https://www.theguardian.com/books/2019/aug/07/protest-seeks-to-stop-us-libraries-supporting-drag-queen-story-hour">Drag Queen Story Hour&lt;/a>, for example. A left-leaning Black female professor &lt;a href="https://www.washingtonpost.com/news/morning-mix/wp/2017/06/26/professor-fired-after-defending-blacks-only-event-on-fox-news-i-was-publicly-lynched-she-says/?noredirect=on&amp;amp;utm_term=.1fbaee340420">was fired&lt;/a> for comments on Fox News supporting the Black Lives Matter movement. The common thread in this right-wing attack is an ideologically motivated push against people who hold values that strive for equality. In this, too, I find myself under attack.&lt;/p>
&lt;p>My work on &lt;a href="https://first-vigil.com">First Vigil&lt;/a> is no secret. It has been &lt;a href="https://www.vice.com/en_us/article/mbyvjn/the-data-scientist-tracking-americas-white-supremacists-emily-gorcenski-first-vigil">written about glowingly&lt;/a>. It helped me be named one of &lt;a href="https://www.bitchmedia.org/article/2018-bitch-50">the most influential feminists of 2018&lt;/a>. But now, my work there has attracted the ire of right wingers everywhere, who seem to stop at nothing to attack those who push back against neo-Nazi terrorism.&lt;/p>
&lt;p>There&amp;rsquo;s one problem. It&amp;rsquo;s not a crime to point out that neo-Nazis, white supremacists, and other far-right extremists commit the vast majority of extremist-related crime in the United States. The ADL, which studies extremism both left-wing, right-wing, and otherwise-affiliated, &lt;a href="https://www.adl.org/news/press-releases/adl-report-right-wing-extremists-killed-38-people-in-2019-far-surpassing-all">wrote in 2019&lt;/a> that, &amp;ldquo;of the 42 extremist-related murders in the U.S. last year, 38 were committed by individuals subscribing to various far-right ideologies, including white supremacy.&amp;rdquo; They came to &lt;a href="https://www.adl.org/murder-and-extremism-2018">a similar conclusion in 2018&lt;/a>, stating, &amp;ldquo;The extremist-related murders in 2018 were overwhelmingly linked to right-wing extremists. Every one of the perpetrators had ties to at least one right-wing extremist movement, although one had recently switched to supporting Islamist extremism. White supremacists were responsible for the great majority of the killings, which is typically the case.&amp;rdquo; And again, &lt;a href="https://www.adl.org/resources/reports/murder-and-extremism-in-the-united-states-in-2017">in 2017&lt;/a>, &amp;ldquo;a majority of the 2017 murders were committed by right-wing extremists, primarily white supremacists, as has typically been the case most years.&amp;rdquo;&lt;/p>
&lt;p>The ADL is not the only one noting this rise. In &lt;a href="https://www.fbi.gov/news/testimony/confronting-the-rise-in-anti-semitic-domestic-terrorism">comments this year&lt;/a>, in Congressional testimony, the FBI noted the &amp;ldquo;increasingly lethal threat posed by violent extremism to the Jewish community.&amp;rdquo; The Bureau &lt;a href="https://www.cbsnews.com/news/racially-motivated-violent-extremism-isis-national-threat-priority-fbi-director-christopher-wray/">elevated&lt;/a> racially-motivated violent extremists to a &amp;ldquo;national threat priority&amp;rdquo; this year as well. Racially-motivated hate crimes hit &lt;a href="https://www.nytimes.com/2019/11/12/us/hate-crimes-fbi-report.html">a 16-year high in 2019&lt;/a>, according to the FBI.&lt;/p>
&lt;p>No matter how you look at it, right-wing violence is increasing. More than ever, we need effective journalism to understand it.&lt;/p>
&lt;p>First Vigil was a project started with a simple intention: track the far-right crimes that were being reported in the news. This mission has not changed. First Vigil was designed to track right-wing crimes precisely because numerous sources, both governmental and non-governmental, have identified the rise in far-right or white-supremacist violence and terrorism. It should be no secret why the right is attacking me for it. When confronted by objective statistical reality, it is the mission of the right wing to silence those who dare to speak about it.&lt;/p>
&lt;p>I will not be silent, because writing about white supremacist violence is not a crime. Even nations with robust privacy laws also have a protections for free expression. &lt;a href="https://gdpr-info.eu/art-85-gdpr/">Article 85 of the GDPR&lt;/a> explicitly states that Member States must reconcile the protection laws with the right to freedom of expression for journalistic and academic purposes. Newsworthy information is similarly protected, as is information deemed to be in the public interest. Even the Right to be Forgotten is weighed against the right to free expression and public interest; though I would honor any such request if one were ever to be made (and one hasn&amp;rsquo;t).&lt;/p>
&lt;p>Every case on First Vigil is associated with a newsworthy event published in reputable journalistic institutions. In many cases, First Vigil contains &lt;em>less&lt;/em> information than these newsworthy articles have. For instance, First Vigil does not, unless it is relevant to understanding the case, publish cities of residence, ages, or other identifiable information, let alone detailed private data not generally accessible. Moreover, the case research done on First Vigil corrects, updates, and verifies information. For instance, when charges are dropped or reduced against someone accused of a crime, this information gets updated in the databse. (There may be some time lag, since it is a manual process.) This does not always happen in other reporting. First Vigil is non-comprehensive; an unfortunate reality is that so many hate crimes are being committed that I simply cannot keep up.&lt;/p>
&lt;p>First Vigil is protected journalistic activity. The right to discuss, in specific details, incidents of right-wing violence in a time when right-wing violence is broadly recognized as one of the foremost threats to public safety, is without a doubt protected free expression. Absurd are allegations that writing about far right violence is in any way harassment or stalking or an incitement to do those things. American journalistic standards involve publishing the names of the accused, in all but special circumstances. Public access to records is a core principle of American legal ethics, and journalistic ethics imposes a duty to report accurately matters in the public interest. First Vigil does nothing more than aggregate and organize newsworthy information. Contrary &lt;a href="https://web.archive.org/web/20200819081415/https://thepostmillennial.com/antifa-doxxer-solicits-twitter-users-for-identities-of-trump-boat-parade-participants">to wild allegations&lt;/a> of &amp;ldquo;crime laundering,&amp;rdquo; seemingly a term invented by a random Twitter user purely to harass me, doing research and writing about far-right terrorism is not illegal.&lt;/p>
&lt;p>The far-right knows that it cannot win on grounds of morality or ethics. Instead, they frequently craft conspiracy theories, tell lies, and make allegations against those who have the temerity to stand up to their violence, terror, and hate. I will not let them intimidate me into silence. Writing about white supremacy is not a crime.&lt;/p></description></item><item><title>Right Wingers Are Fragile Feelings-Oriented Snowflakes Who Hate Facts</title><link>https://emilygorcenski.com/post/right-wingers-are-fragile-feelings-oriented-snowflakes-who-hate-facts/</link><pubDate>Tue, 18 Aug 2020 19:01:18 +0200</pubDate><guid>https://emilygorcenski.com/post/right-wingers-are-fragile-feelings-oriented-snowflakes-who-hate-facts/</guid><description>&lt;p>The right wing loves calling its political opponents &amp;ldquo;snowflakes&amp;rdquo; who are opposed to &amp;ldquo;facts.&amp;rdquo; But let&amp;rsquo;s look how they really reacted to a troll job.&lt;/p>
&lt;p>Ben Shapiro loves to claim, &amp;ldquo;facts don&amp;rsquo;t care about your feelings.&amp;rdquo; It&amp;rsquo;s a smugness rooted in a superiority complex that he uses to construct a rhetorical framework in which he cannot be proven wrong, simply by defining his perceptions to be &amp;ldquo;facts&amp;rdquo; and others' perceptions to be &amp;ldquo;feelings.&amp;rdquo; Like most modern conservative logic, it doesn&amp;rsquo;t even maintain self consistency.&lt;/p>
&lt;p>Recently, I decided to prank the American right. It started, like always, with a tweet:&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/boat-dox.png" alt="A post seeking images on the boat rally, for apparent doxing purposes">&lt;/p>
&lt;p>This was designed to get the attention of the American right, who during their parade, actually &lt;a href="https://www.youtube.com/watch?v=CjZ2Xex2PnI">sunk an innocent bystander&amp;rsquo;s boat&lt;/a>, nearly killing the family. Predictably, right wing media began to lose their minds. It was precisely in this temper-tantrum that one can see precisely how feelings-oriented and sensitive they are. Within the next 24 hours, they threw every accusation in the book at me.&lt;/p>
&lt;p>They called me a &lt;a href="https://twitter.com/bethegreenone/status/1295711998144131074?s=20">terrorist&lt;/a>, while at the same time insisting that &lt;a href="https://twitter.com/mattmaj89000414/status/1295598763894083587?s=20">they weren&amp;rsquo;t scared&lt;/a>. They called me &lt;a href="https://twitter.com/al47200484/status/1295761138261479424?s=20">ugly&lt;/a>. They called me a &lt;a href="https://twitter.com/oppressall/status/1295718744031928320?s=20">man&lt;/a>. They called me a &lt;a href="https://twitter.com/FreedomReigns9/status/1295519397818376192?s=20">whore&lt;/a> while simultaneously insisting I couldn&amp;rsquo;t get &lt;a href="https://twitter.com/AzulikRoberto/status/1295557483591860230?s=20">laid&lt;/a>.&lt;/p>
&lt;p>But those were just the insults. It&amp;rsquo;s when they decided to really double-down on playing the victim card that things really got interesting. They insisted that &lt;a href="https://twitter.com/StymieSays/status/1295492879746359296?s=20">doxing is illegal&lt;/a> while linking to &lt;a href="https://blogs.findlaw.com/blotter/2018/01/is-doxing-illegal.html">a page&lt;/a> that says quite explicitly that it is not. They called out to the &lt;a href="https://twitter.com/realitybiasnews/status/1295766403459551236?s=20">FBI&lt;/a> and the CIA. They cried to &lt;a href="https://twitter.com/coldc_offee/status/1295652544753131521?s=20">Jack&lt;/a>, the CEO of Twitter. When they found out that Jack follows me on Twitter, they cried that Twitter is &lt;a href="https://twitter.com/OverGrownSauce/status/1295718471716581376?s=20">biased against conservatives&lt;/a>.&lt;/p>
&lt;p>When that wasn&amp;rsquo;t enough, and despite &amp;ldquo;doxing&amp;rdquo; apparently being the worst thing in the world, they decided to try to dox me instead, posting several addresses I haven&amp;rsquo;t lived at in over a decade—and which were on the wrong continent. While they were screaming to the FBI that my &amp;ldquo;doxing&amp;rdquo; was endangering their families, they were emailing me threatening my former family. Jason Kessler, whose short-lived organization &lt;a href="https://www.washingtonpost.com/local/public-safety/organizer-of-unite-the-right-rally-in-charlottesville-arrested-again/2017/10/17/ae98ee24-b372-11e7-add3-da4b781e34b1_story.html">actually doxed me&lt;/a>, claimed that I was a &amp;ldquo;foreign national&amp;rdquo; somehow commiting &amp;ldquo;election interference.&amp;rdquo;&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/kessler-loser.jpeg" alt="Jason Kessler, a known perjurer, making things up">&lt;/p>
&lt;p>They reported me multiple times to Twitter—none of them succeeded, because despite their desperate cries for victimhood, my tweet wasn&amp;rsquo;t against the rules, the law of any nation, or even basic morality. Despite this, Andy Ngo, who has knowingly and maliciously lied about me in the past, &lt;a href="https://twitter.com/MrAndyNgo/status/1295641607383863296?s=20">called me &amp;ldquo;extreme&amp;rdquo;&lt;/a> and repeated the lie that the deceased Dayton shooter was a follower of mine.&lt;/p>
&lt;p>Their behavior reflects of the right-wing mentality of &lt;a href="https://www.urbandictionary.com/define.php?term=Schr%C3%B6dinger%27s%20leftist">&amp;ldquo;Schrödinger&amp;rsquo;s Leftist&amp;rdquo;&lt;/a>: a left-winger so sensitive and fragile that they need safe spaces and coddling, but who are simultaneously terroristic threats to the very existence of freedom itself. It betrays a raw sensitivity, a fragility over the concept that their very public actions could possibly receive any unfavorable scrutiny. If there is a threat, it&amp;rsquo;s the threat of receiving negative feedback and having to face the fact that their behaviors—ranging from defending neo-Nazi terrorists to promoting conspiracy theories about a deadly pandemic—are simply eminently unlikeable.&lt;/p>
&lt;p>This is all very interesting except there&amp;rsquo;s one missing detail:&lt;/p>
&lt;p>&lt;em>I never actually doxed anyone.&lt;/em>&lt;/p>
&lt;p>Not only did I not publish anyone&amp;rsquo;s name, address, contact information, or any other such details. I posted one cropped image of a boat, a publicly available image taken from a news site where nobody was visible.&lt;/p>
&lt;p>In other words, the entire outrage campaign, from the QAnons to the Patriots, from neo-Nazi rally organizer Jason Kessler to neo-fascist riot planning observer Andy Ngo, was crafted based on pure id, a base fear unfounded by any material reality, purified rage and terror based on lies and deeply-rooted anxieties. The entire outrage campaign wasn&amp;rsquo;t based on facts. It was based entirely on feelings. Hundreds of &amp;ldquo;patriots&amp;rdquo; went crying to the FBI, the police, the CIA, the Germany embassy, my employer, and even my mom—despite me not actually doing anything. The party that cries so much about &amp;ldquo;free speech&amp;rdquo; instead showed their repressive mentalities by throwing an epic national tantrum around a single solitary question, one which was never backed—and was never going to be backed—by action.&lt;/p>
&lt;p>Regardless of how the American presidential election turns out, the right knows that they are losing the moral battle. Their backlash reveals a discomfort in their souls. They know they&amp;rsquo;ve gone too far, and there&amp;rsquo;s nowhere else to dig but down. They are the side of &lt;a href="https://www.forbes.com/sites/carlieporterfield/2020/06/25/white-supremacist-terrorism-on-the-rise-and-spreading/">terrorism&lt;/a> and &lt;a href="https://www.adl.org/murder-and-extremism-2019">white supremacist murder&lt;/a>. They are the side of &lt;a href="https://www.nbcnews.com/think/opinion/covid-19-conspiracies-get-embraced-trump-right-wing-media-because-ncna1235238">plague&lt;/a> and &lt;a href="https://www.theguardian.com/technology/2018/feb/06/sharing-fake-news-us-rightwing-study-trump-university-of-oxford">fake news&lt;/a>. So they try to cleanse their conscience through an invented narrative of victimhood, creating demons where there are none.&lt;/p>
&lt;p>The facts, however, will never care about their feelings.&lt;/p></description></item><item><title>Berlin</title><link>https://emilygorcenski.com/post/berlin/</link><pubDate>Tue, 18 Aug 2020 00:20:01 +0200</pubDate><guid>https://emilygorcenski.com/post/berlin/</guid><image><url>https://emilygorcenski.com/photo-gallery/berlin/Ubhf%20Olympia%20Stadion-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/berlin/Ubhf%20Olympia%20Stadion-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/berlin/Ubhf%20Olympia%20Stadion-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/berlin/Ubhf%20Olympia%20Stadion-thumb.jpg" width="600"/></media:content><description/></item><item><title>Summer Vacation 2020</title><link>https://emilygorcenski.com/post/summer-vacation-2020/</link><pubDate>Fri, 14 Aug 2020 21:14:37 +0200</pubDate><guid>https://emilygorcenski.com/post/summer-vacation-2020/</guid><image><url>https://emilygorcenski.com/photo-gallery/summer-trip-2020/Caldea-thumb.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/summer-trip-2020/Caldea-thumb.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/summer-trip-2020/Caldea-thumb.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/summer-trip-2020/Caldea-thumb.jpg" width="600"/></media:content><description/></item><item><title>Andy Ngo and the Atomwaffen Kill List</title><link>https://emilygorcenski.com/post/andy-ngo-and-the-atomwaffen-kill-list/</link><pubDate>Tue, 04 Aug 2020 16:18:46 +0200</pubDate><guid>https://emilygorcenski.com/post/andy-ngo-and-the-atomwaffen-kill-list/</guid><description>&lt;p>There&amp;rsquo;s a meme that says that Andy Ngô is a threat to our communities and provides kill lists to Atomwaffen. I am one of the people on that kill list. Here&amp;rsquo;s the whole story.&lt;/p>
&lt;p>Andy Ngô memed this saying into existence when he posted a photo of some graffiti in Portland that contained this phrase. Since then, it has circulated widely on social media, even though many people don&amp;rsquo;t know the full story behind it. Andy, of course, complains about it and denies that he provided any such kill list to any such faux-German, satanic, neo-Nazi after-school terror club. There are elements of truth to all myths, so it&amp;rsquo;s high time that I provide a full recount of why and how this saying came to be, what elements of it are factual, what elements are not, and what it means for the people who have actually been victimized by Andy&amp;rsquo;s lies.&lt;/p>
&lt;p>In May 2019, a little-known right-wing troll, Eoin Lenihan, aka ProgDad, sought to provide ideologically counterbalance to &lt;a href="https://datasociety.net/library/alternative-influence/">the incredible work by Becca Lewis&lt;/a> in understanding the network effect of right-wing propagandists on YouTube. Lenihan did a graph analysis of his own using twitter accounts. In this analysis, he came to a conclusion that journalists and antifa were conspiring with each other. His basis for this was using following/followers data to identify strongly-connected nodes to self-described &amp;ldquo;antifa&amp;rdquo; accounts. &lt;a href="http://archive.is/uPFaj">In his research&lt;/a>, he found that many journalists were connected deeply to antifascists activists like myself, and self-described antifa accounts like @NYCAntifa.&lt;/p>
&lt;p>Lenihan&amp;rsquo;s methodology was deeply flawed. For starters, Twitter has a completely different interactivity model than YouTube. Second, Twitter graphs are highly dependent on account popularity. Users have very little control over who follows them, and this control diminishes the higher a users' follower count. If a bunch of &amp;ldquo;Antifa&amp;rdquo; accounts follow someone with 50k+ followers, that is a much different situation than if those same bunch of accounts followed someone with 50 followers.&lt;/p>
&lt;p>Moreover, people who are activists tend to follow journalists who write about the things they advocate for, and journalists are likely to use activists as sources on a regular basis. This is hardly reflective of a conspiracy, but rather is the Twitter platform being used as intended.&lt;/p>
&lt;p>By way of example, there are probably a few dozen journalists who regularly write quality pieces on the far-right. I know most of them, and I have been a source for many of them in the past. About once a week, I speak to someone in media to provide commentary or background sourcing for a piece they are writing. This is not because we are conspiring to overthrow the government. This is because they recognize me as a subject matter expert and I respect the work they do, so I am happy to talk.&lt;/p>
&lt;p>When Lenihan first tweeted about his work, I raised these concerns and vehemently denied his allegations, including his allegation that I am, or can possibly be, a member of &amp;ldquo;ANTIFA,&amp;rdquo; an organization which does not exist. Lenihan drew some false conclusions about my work on First Vigil, due to a lack of understanding on his part about the American criminal justice system, which &lt;a href="https://twitter.com/EmilyGorcenski/status/1141564382180192258?s=20">I corrected him on&lt;/a>. He made a small correction on Twitter, and the matter was more or less dropped. His thread got very few retweets, and I was happy to put the matter behind me.&lt;/p>
&lt;p>Until Andy Ngô decided to take it on. Ngô reproduced Lenihan&amp;rsquo;s conclusions absent context, and using his orders-of-magnitude larger platform, blasted the false allegations about me and about a dozen other activists and journalists to his followers. Soon after, &lt;em>Quillette&lt;/em>, a publication for which Ngô was then an editor, ran &lt;a href="https://web.archive.org/web/20200601000142/https://quillette.com/2019/05/29/its-not-your-imagination-the-journalists-writing-about-antifa-are-often-their-cheerleaders/">a long-form piece&lt;/a> authored by Lenihan and evidently edited by Ngô. Masquerading as journalism, Lenihan ran the same false allegations and failed to mention any of my on-the-record corrections or commentary, in contravention of standard journalistic practice.&lt;/p>
&lt;p>When the &lt;em>Quillette&lt;/em> piece landed, it started a bit of a drama tornado. Journalists were now &lt;a href="https://newrepublic.com/article/154205/quillettes-antifa-journalists-list-couldve-gotten-killed">forced to defend&lt;/a> their &lt;a href="https://www.cjr.org/analysis/quillette-antifa-journalist-smear-campaign.php">reputations&lt;/a>. The online fallout began to attract the attention of Andy&amp;rsquo;s neo-Nazi followers, who decided that they, too, should have some fun.&lt;/p>
&lt;p>Soon, a short video was published to YouTube. The video featured the dozen or so activists and journalists that Ngô and Lenihan put on blast, including myself. The video took all of our twitter profiles, highlighting them one by one, and used thinly veiled threatening language and imagery. The video ended with a menacing quote by James Mason, Atomwaffen Division&amp;rsquo;s ideological forebear, and a logo of the neo-Nazi group.&lt;/p>
&lt;p>The video was quickly removed for violating YouTube&amp;rsquo;s content standards, and the issue mostly faded away, except for the fact that anything to do with Atomwaffen Division (AWD), an organization responsible for at least five murders and which was the subject of &lt;a href="https://www.pbs.org/wgbh/frontline/film/documenting-hate-new-american-nazis/">an Emmy-winning PBS FRONTLINE documentary&lt;/a>, catches the attention of pretty much everyone in the counter-Nazi scene. The noise surrounding the video led to the creation of a &lt;em>second&lt;/em> video by the same creator, this one containing threats of bombings and other violence.&lt;/p>
&lt;p>Atomwaffen Division has today been mostly eradicated through infiltration, criminal charges, and general incompetence. But the threat they posed to journalists and activists just a few months ago was very real. &lt;a href="https://www.courtlistener.com/recap/gov.uscourts.vaed.479493/gov.uscourts.vaed.479493.40.0.pdf">In one case&lt;/a>, the journalist who produced the ProPublica documentary was swatted by AWD members. Police showed up to his house, removed him and his wife and put them in separate patrol cars, while the journalist had to explain that he was the target of a neo-Nazi terror organization. &lt;a href="https://www.theguardian.com/world/2019/nov/18/neo-nazi-terror-group-threatened-us-activist-germany">In another case&lt;/a>, in November 2018 (before the kill list was created), I was contacted by law enforcement agencies of both the US and Germany, who informed me that a pair of AWD members had traveled from the US to Europe and had intentions to do &amp;ldquo;grievous bodily harm&amp;rdquo; to me.&lt;/p>
&lt;p>For those of us on the kill list, we are accustomed to modeling such threats. Nobody lasts very long in the anti-Nazi game without becoming adept at assessing the risks to themselves and others. Most of us felt an obligation to defend our professional and personal honor, but otherwise prefer to let the issue die.&lt;/p>
&lt;p>And then came &amp;ldquo;Andy Ngô is a threat to our communities and provides kill lists for Atomwaffen,&amp;rdquo; an ironic &lt;a href="https://www.adl.org/education/references/hate-symbols/14-words">fourteen words&lt;/a>. Now elevated to meme status, the kill lists have become something of a legend, one that we cannot make go away. Right-wing media, recognizing their complicity in making the list come to life, have even tried denying it exists. Many of us on the initial list agreed to not further promote the videos, but we have retained copies of it among ourselves for evidentiary purposes.&lt;/p>
&lt;p>For my part, I have an obligation to report such threats to German authorities, despite my distaste for the police. Atomwaffen Division has been recently active in Germany and there is a growing risk of anti-Semitic, anti-Muslim, and anti-migrant violence in the country. This may have worked; months later, &lt;a href="https://www.spiegel.de/politik/deutschland/atomwaffen-division-polizei-verweigert-mutmasslichem-us-neonazi-einreise-a-1296464.html">German authorities intercepted a suspected AWD member&lt;/a> as he deplaned at Berlin&amp;rsquo;s Tegel Airport, denied him entry into the Schengen Area, and deported him.&lt;/p>
&lt;p>So what is the truth? Did Andy Ngô in fact provide kill lists for Atomwaffen? This depends on one&amp;rsquo;s interpretation. Through journalistic malpractice, Andy Ngô defamed several people and caused material harm through his lies—the harm being the AWD kill list created by one of his apparent fans—and not by directly handing AWD a list of people to kill. As far as whether Andy Ngô is a threat to our communities? Well, &lt;a href="https://www.dailydot.com/layer8/andy-ngo-patriot-prayer-attack/">the reader can decide for themselves&lt;/a>.&lt;/p>
&lt;p>As someone on the kill list, the meme is a bit problematic. While it does attack Ngô&amp;rsquo;s credibility as a journalist, it was created without the assent of anyone on the list, to my knowledge. Some of us don&amp;rsquo;t mind, it, but many of us would prefer it go away. Many of us would prefer Andy Ngô go away. Alas, either is unlikely to be the case. Any meme takes on a life of its own, and the kill list has become another threat in an array of threats we face for doing our work.&lt;/p>
&lt;p>For my part, I take these threats very seriously, much as I take any attempts to impeach my integrity very seriously. But if I stayed hung up on every threat that comes my way, I&amp;rsquo;d never get anything done. That&amp;rsquo;s the point of the threats, obviously, so we have to find ways to move on. I&amp;rsquo;m not asking the meme to die, I&amp;rsquo;d just prefer the discussion of Andy Ngô&amp;rsquo;s &lt;a href="https://www.wweek.com/news/schools/2017/05/23/a-dispute-over-a-muslim-students-remarks-costs-a-college-journalist-his-job-and-brings-national-controversy-to-portland-state-university/">many&lt;/a> &lt;a href="https://www.washingtonexaminer.com/news/journalist-andy-ngo-out-at-quillette-after-controversial-video-surfaces">failures&lt;/a> to simply evolve to encompass &lt;a href="https://pressprogress.ca/post-millennial-journalist-was-created-by-a-computer-and-linked-to-foreign-propaganda-operation-report/">the full spectrum&lt;/a> of what surrounds him. I simply don&amp;rsquo;t think that these fourteen words are the only ones &lt;a href="https://news.knowyourmeme.com/news/andy-ngo-underfire-for-stonetoss-comic">that will describe Andy&lt;/a>.&lt;/p>
&lt;br>
&lt;p>&lt;em>I did not reach out to Andy for comment on this post. Like &lt;em>The Post Millennial&lt;/em>, this is a blog, not a journalistic institution. Unlike &lt;em>The Post Millennial&lt;/em>, I don&amp;rsquo;t pretend otherwise.&lt;/em>&lt;/p>
&lt;p>&lt;em>This post has been updated to correct minor typos and spelling errors.&lt;/em>&lt;/p></description></item><item><title>How much can you trust your data</title><link>https://www.thoughtworks.com/insights/blog/how-much-can-you-trust-your-data</link><pubDate>Thu, 23 Jul 2020 10:19:00 +0200</pubDate><guid>https://emilygorcenski.com/post/how-much-can-you-trust-your-data/</guid><description>&lt;p>My incredible colleague Ellen wrote an excellent piece about the importance of Data Quality management in data-driven products and projects.&lt;/p></description></item><item><title>Keeping Track of Monument Removals Could Be a Full-Time Job</title><link>https://www.atlasobscura.com/articles/tracking-monument-removals</link><pubDate>Wed, 22 Jul 2020 08:30:00 +0200</pubDate><guid>https://emilygorcenski.com/post/keeping-track-of-monument-removals-could-be-a-full-time-job/</guid><description>&lt;p>I spoke with Britta Shoot for Atlas Obscura about my new project, whentheycamedown.&lt;/p></description></item><item><title>New Mexico’s thin blurred line</title><link>https://www.hcn.org/issues/52.8/south-corruption-new-mexicos-thin-blurred-line</link><pubDate>Mon, 20 Jul 2020 12:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/new-mexicos-thin-blurred-line/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/bigimage_large.jfif"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/bigimage_large.jfif" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/bigimage_large.jfif" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/bigimage_large.jfif" width="600"/></media:content><description>&lt;p>I chatted with Kalen Goodluck from High Country News about how militias in New Mexico and elsewhere enjoy a disquieting and murky overlap with law enforcement.&lt;/p></description></item><item><title>Tallinn 2020</title><link>https://emilygorcenski.com/post/tallinn-2020/</link><pubDate>Sat, 11 Jul 2020 17:10:00 +0200</pubDate><guid>https://emilygorcenski.com/post/tallinn-2020/</guid><image><url>https://emilygorcenski.com/photo-gallery/tallinn-2020/Raekoja-Plats.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/tallinn-2020/Raekoja-Plats.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/tallinn-2020/Raekoja-Plats.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/tallinn-2020/Raekoja-Plats.jpg" width="600"/></media:content><description/></item><item><title>White supremacists or anti-police libertarians? What we know about the 'boogaloo'</title><link>https://www.theguardian.com/world/2020/jul/08/boogaloo-boys-movement-who-are-they-what-do-they-believe</link><pubDate>Wed, 08 Jul 2020 19:44:00 +0000</pubDate><guid>https://emilygorcenski.com/post/white-supremacists-or-anti-police-libertarians-what-we-know-about-the-boogaloo/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/3500.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/3500.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/3500.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/3500.webp" width="600"/></media:content><description>&lt;p>I spoke with The Guardian&amp;rsquo;s Lois Beckett about the &amp;ldquo;boogaloo&amp;rdquo; movement and its intersections with white supremacy.&lt;/p></description></item><item><title>What antifa members are really doing during protests</title><link>https://edition.cnn.com/videos/us/2020/06/16/who-is-antifa-america-elle-reeve-db-orig.cnn/video/playlists/top-news-videos/</link><pubDate>Tue, 16 Jun 2020 08:13:00 +0200</pubDate><guid>https://emilygorcenski.com/post/what-antifa-members-are-really-doing-during-protests/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/200616074422-who-is-antifa-america-elle-reeve-db-orig-00000000-super-tease.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/200616074422-who-is-antifa-america-elle-reeve-db-orig-00000000-super-tease.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/200616074422-who-is-antifa-america-elle-reeve-db-orig-00000000-super-tease.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/200616074422-who-is-antifa-america-elle-reeve-db-orig-00000000-super-tease.jpg" width="600"/></media:content><description>&lt;p>I spoke with CNN&amp;rsquo;s Elle Reeve to talk about what &amp;ldquo;Antifa&amp;rdquo; was really doing during the George Floyd protests.&lt;/p></description></item><item><title>Greater Than Code Ep 186</title><link>https://www.greaterthancode.com/the-universe-makes-it-happen</link><pubDate>Wed, 10 Jun 2020 12:00:00 -0400</pubDate><guid>https://emilygorcenski.com/post/greater-than-code-ep-186/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/cover_medium.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/cover_medium.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/cover_medium.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/cover_medium.jpg" width="600"/></media:content><description>&lt;p>I joined Greater Than Code to talk about tracking Nazis, doing failure analysis, understanding retrospective, and more!&lt;/p></description></item><item><title>Dear Minneapolis</title><link>https://emilygorcenski.com/post/dear-minneapolis/</link><pubDate>Sat, 30 May 2020 12:44:00 +0200</pubDate><guid>https://emilygorcenski.com/post/dear-minneapolis/</guid><description>&lt;p>Dear Minneapolis,&lt;/p>
&lt;p>I know you have been through this before, and you are going through it again. But maybe some of you are feeling it for the first time, and I want to share my experience of what will come next. Maybe it will feel familiar. Maybe it will help you heal. Maybe it will help you understand. Or maybe you&amp;rsquo;ll just ignore it, and that&amp;rsquo;s ok, too.&lt;/p>
&lt;p>You are, like so many communities, experiencing the smothering oppression of white supremacy, and seeing first-hand what it means to be at the nexus of fighting back against it. These times are scary, but they are powerful and inspiring, uncertain and yet formative, dark and yet hopeful. In the days, weeks, and months to come, you will experience many things as you start to recover and heal, and I want to express how normal these things will feel.&lt;/p>
&lt;p>You will feel the rage of national narratives smearing out local stories.&lt;/p>
&lt;p>You will feel connected to your community and be enraged at those outside who use it as a lever.&lt;/p>
&lt;p>You will erupt at people who use &amp;ldquo;Minneapolis&amp;rdquo; to describe a discrete point in time, and not a living, breathing community still struggling to find its way.&lt;/p>
&lt;p>You will have long-lasting trauma from the sound of helicopter engines. This will last years.&lt;/p>
&lt;p>You will wrestle for the truth. And you will find frustration when you deliver it to people who won&amp;rsquo;t listen.&lt;/p>
&lt;p>You will know the smell of tear gas and pepper spray. It will linger with you. Weeks from now, you&amp;rsquo;ll catch a whiff of it in your closet, despite having washed that T-shirt seven times already.&lt;/p>
&lt;p>You will remember the glorious moments of solidarity with a tearful fondness, more than the moments of fear.&lt;/p>
&lt;p>You will find positions that you agree with in tension with each other, even within your community context. Especially within your community context.&lt;/p>
&lt;p>You will find relationships grow closer. You will find relationships break apart. This will still happen for months to come.&lt;/p>
&lt;p>You will tell people who aren&amp;rsquo;t your family or partners &amp;ldquo;I love you&amp;rdquo; and you will mean it.&lt;/p>
&lt;p>You will hear your local politicians say mind-bogglingly clueless things, and you will wonder how they ever got to be in power, even when you know how they got to be in power.&lt;/p>
&lt;p>You will be red with anger when you see a complex story reduced to a single sentence by a national journalist who couldn&amp;rsquo;t find I-94 on a map if their life depended on it.&lt;/p>
&lt;p>You will stare with befuddlement at an outsider who asks, &amp;ldquo;what river is that?&amp;rdquo;&lt;/p>
&lt;p>You will get to know the inside of the courtrooms.&lt;/p>
&lt;p>You will discover therein a million injustices that you knew to exist but never bothered to look in the eye.&lt;/p>
&lt;p>You will never look at streetcorners the same way again.&lt;/p>
&lt;p>You will tell friends and family who visit you, &amp;ldquo;this is where it happened,&amp;rdquo; as you walk by.&lt;/p>
&lt;p>You will struggle with faith and you will question your relationship to it.&lt;/p>
&lt;p>You will not know the words to tell people when they ask you if you&amp;rsquo;re okay. You&amp;rsquo;ll know it&amp;rsquo;s too simple of a question for the answer it deserves.&lt;/p>
&lt;p>You will immerse yourselves in projects in an attempt to take control of something that makes sense.&lt;/p>
&lt;p>You will froth with rage at those who want things to go back to normal, at those who call for civility, wondering if they experienced the same moments you did.&lt;/p>
&lt;p>You will come to understand that they did not.&lt;/p>
&lt;p>You will have a new understanding of violence.&lt;/p>
&lt;p>You will have a new understanding of community.&lt;/p>
&lt;p>You will have a new understanding of yourself.&lt;/p>
&lt;p>You will have a new understanding of love.&lt;/p>
&lt;p>In solidarity,&lt;/p>
&lt;p>Emily, from Charlottesville&lt;/p></description></item><item><title>Yeah Nah Pasaran</title><link>https://www.3cr.org.au/yeahnahpasaran/episode-202002201630/emily-gorcenski-making-nazis-cry</link><pubDate>Fri, 27 Mar 2020 18:22:00 -0400</pubDate><guid>https://emilygorcenski.com/post/yeah-nah-pasaran/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/MyPost.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/MyPost.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/MyPost.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/MyPost.jpg" width="600"/></media:content><description>&lt;p>I joined 3CR out of Melbourne to talk about making Nazis cry and the threat of white supremacy.&lt;/p></description></item><item><title>I Don't Speak German Ep 43</title><link>https://idontspeakgerman.libsyn.com/episode-43-cantwell-news-special-with-emily-gorecenski</link><pubDate>Fri, 07 Feb 2020 12:00:00 -0400</pubDate><guid>https://emilygorcenski.com/post/i-dont-speak-german-ep-43/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/height_250_width_250_overlay_NEW_IDSG_LOGO_SANS_BORDER.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/height_250_width_250_overlay_NEW_IDSG_LOGO_SANS_BORDER.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/height_250_width_250_overlay_NEW_IDSG_LOGO_SANS_BORDER.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/height_250_width_250_overlay_NEW_IDSG_LOGO_SANS_BORDER.png" width="600"/></media:content><description>&lt;p>I joined Daniel Harper on I Don&amp;rsquo;t Speak German! to discuss Chris Cantwell and his many failures.&lt;/p></description></item><item><title>Øredev 2019 — Resources</title><link>https://emilygorcenski.com/post/%C3%B8redev-2019-resources/</link><pubDate>Wed, 06 Nov 2019 08:56:00 +0100</pubDate><guid>https://emilygorcenski.com/post/%C3%B8redev-2019-resources/</guid><description>&lt;p>This post is a list of resources to accompany my talk, &amp;ldquo;Being the best or being good?&amp;rdquo; given at Øredev on 6 November 2019 in Malmö, Sweden.&lt;/p>
&lt;h3 id="recent-headlines-about-tech-complicity-in-government-enabled-human-rights-violations">Recent Headlines about Tech Complicity in Government-enabled Human Rights Violations&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.theverge.com/2019/10/9/20906213/github-ice-microsoft-software-email-contract-immigration-nonprofit-donation">GitHub will keep selling software to ICE, leaked email says&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://techcrunch.com/2019/10/25/in-a-victory-over-amazon-microsoft-wins-10b-pentagon-jedi-cloud-contract/">In a victory over Amazon, Microsoft wins $10B Pentagon JEDI cloud contract&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="recent-headlines-about-stricter-controls-over-facebook">Recent Headlines about Stricter Controls Over Facebook&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://www.theguardian.com/commentisfree/2017/aug/30/nationalise-google-facebook-amazon-data-monopoly-platform-public-interest">We need to nationalise Google, Facebook and Amazon. Here’s why&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.theguardian.com/commentisfree/2019/apr/28/regulating-facebook-will-be-one-of-the-greatest-challenges-in-human-history">Regulating Facebook will be one of the greatest challenges in human history&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.theverge.com/2019/8/1/20749517/social-network-legislation-hawley-privacy-research">New legislation is putting social networks in the crosshairs&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.nytimes.com/2019/05/09/opinion/sunday/chris-hughes-facebook-zuckerberg.html">It’s Time to Break Up Facebook&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="recent-stories-about-police-surveillance-using-iot-devices">Recent Stories about Police Surveillance Using IoT Devices&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://lancasteronline.com/news/local/today-airs-segment-on-fake-rape-report-foiled-by-fitbit/article_0d49e904-0641-11e6-b5d8-5b67c6b6ee0d.html">‘TODAY’ airs segment on fake rape report foiled by Fitbit in Lancaster County&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://people.com/crime/after-fla-woman-is-impaled-by-a-spear-police-seek-clues-from-amazon-alexa-recordings/">After Fla. Woman Is Impaled by a Spear, Police Seek Clues From Amazon Alexa Recordings&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.washingtonpost.com/technology/2019/08/28/doorbell-camera-firm-ring-has-partnered-with-police-forces-extending-surveillance-reach/">Doorbell-camera firm Ring has partnered with 400 police forces, extending surveillance concerns&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://5newsonline.com/2016/12/28/bentonville-police-use-smart-water-meters-as-evidence-in-murder-investigation/">Bentonville Police Use Smart Water Meters As Evidence In Murder Investigation&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="stories-about-software-killing-people">Stories about Software Killing People&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://medium.com/swlh/software-architecture-therac-25-the-killer-radiation-machine-8a05e0705d5b">Software Architecture: Therac-25 the killer radiation machine&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://techcrunch.com/2018/06/22/uber-safety-driver-of-fatal-self-driving-crash-was-watching-hulu-not-the-road/">Uber safety driver of fatal self-driving crash was watching Hulu, not the road&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="resources-about-robert-moses">Resources about Robert Moses&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="http://www.robertcaro.com/the-books/the-power-broker/">The Power Broker, Robert Caro&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://emilygorcenski.com/post/the-coming-ethics-of-the-internet-of-things/">The Coming Ethics of the Internet of Things&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://brewingbronx.commons.gc.cuny.edu/failure-and-renaissance/">FAILURE AND RENAISSANCE&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>The Coming Ethics of the Internet of Things</title><link>https://emilygorcenski.com/post/the-coming-ethics-of-the-internet-of-things/</link><pubDate>Sun, 03 Nov 2019 23:00:00 +0100</pubDate><guid>https://emilygorcenski.com/post/the-coming-ethics-of-the-internet-of-things/</guid><description>&lt;p>During the 1930s, with the New Deal kicking off public infrastructure works throughout the United States, a larger-than-life figure rose to prominence in New York City. Robert Moses, an urban planner and Park Commissioner, was largely responsible for the rapid growth of New York City infrastructure in response to the rise of the automobile and the influx of government funding. Moses was responsible for hundreds of public works projects: the bridges of the boroughs of New York, the parkways of Long Island, and playgrounds throughout the city.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;small>&lt;em>This piece originally appeared in&lt;/em> Model, View, Culture &lt;em>Quarterly 3, 2016. It is republished here with full rights.&lt;/em>&lt;/small>&lt;/p>
&lt;p>Anyone well-traveled in New York is familiar with the transit prohibitions on state parkways: trucks and buses—and therefore, most forms of public transit—are barred from using these roads. But Moses took proactive measures to ensure public transit was permanently stymied. He built dozens of bridges with low clearance over the parkways of Long Island. Laws can change, he figured, but bridges are hard to rebuild.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> In doing so, Moses ensured that the Black and Jewish communities of New York would not have easy access parts of Long Island, most notably his beloved Jones Beach. His bridges would become artifacts of oppression, enforcing a social structure that lasts to this day.&lt;/p>
&lt;p>The current era of technology has already seen connectivity and big data become the next layer of public infrastructure. Governments and corporations are increasingly reliant on insights extracted algorithmically from large data sets. The scope and scale of the data that affects day-to-day life continues to expand as more and more devices are connected to the internet. The ethical questions of how and when it is appropriate to use that data, and to what ends, are growing ever more complex. Just as Robert Moses weaponized his bridges to leverage public infrastructure against those he found undesirable, so too can IoT data become a weapon of power and privilege. Technologists in the IoT space must weigh innovation against questions of safety, privacy, security, legality, liability, and morality.&lt;/p>
&lt;h3 id="the-assumptions-of-accuracy">The Assumptions of Accuracy&lt;/h3>
&lt;p>It is too often assumed that data serves as an objective form of truth, but this is regularly not the case. In general, we have no guarantee of the accuracy of IoT-enabled sensors nor the validity of their algorithms beyond manufacturers’ marketing claims. And because so many of these devices are developed in high-velocity startup environments, it comes as no surprise that very little verification and validation effort is spent to ensure robustness of the algorithms or accuracy of the collected data. Overreliance and overconfidence in data and algorithmic interpretation can lead directly to user harm.&lt;/p>
&lt;p>In 2015, a woman visiting a co-worker in Lancaster, Pennsylvania reported a rape. While investigating the claim, police found her activity tracker; she willingly provided her password to access the data. Investigators determined that the data undermined her claim and charged the woman with misdemeanor false reporting. In April 2016, the woman was put on probation. The prosecuting attorney, proffering no ambiguity as to the value of the data, said that the device “made all the difference,” and that it “sealed the deal for us.”&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> These conclusions become more worrisome when it is demonstrated that such activity trackers can extract a heart rate from a piece of raw chicken breast.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> Despite making claims to track heart rate and energy expenditure, the fitness tracker at the center of this case is not classified by the FDA as a medical device. Instead, it is a “general wellness device,”&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and as such need not be proven safe and effective. Although a consumer protection lawsuit has been filed against Fitbit, the suit merely challenges the veracity of their marketing claims and not the actual effectiveness or accuracy of the devices itself.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The inaccuracies of these devices can have a disproportionate impact on those relying on them for making healthy decisions. Research has shown that the mean absolute percent error for energy expenditure estimates is between 15% and 30% for consumer-grade fitness trackers.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> When combined with the innate inaccuracies in food calorie measurements, reliance on fitness tracker data can undermine choices in diet and exercise, errors which disproportionately affect those relying on the data for making health decisions.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/p>
&lt;p>These inaccuracies can become downright dangerous in a culture that mandates fitness. Oral Roberts University recently mandated that incoming students own and use activity monitors. The university will use these data to evaluate students for their adherence to the university’s physical fitness requirements, a requirement which will have an effect on students’ grades.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> Furthermore, Target recently announce an “opt-in” program for employees who volunteer to wear fitness trackers and provide the company with health data. Employees who volunteer can compete for a sizable donation to a charity of their choice.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> The inaccuracies and unreliability of these devices amplify a power gradient that already leans against the user’s best interest.&lt;/p>
&lt;h3 id="failure-and-regulation">Failure and Regulation&lt;/h3>
&lt;p>As technology is integrated into otherwise unconnected devices, the conventional failure modes of those devices must be re-evaluated with due regard to the added complexity of connectivity and automation. This became clear recently when, for the first time, a fatality resulted from an accident wherein a car was being driven autonomously. A man in Florida died when his Tesla ran under the trailer of a tractor trailer that crossed the road in front of him.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> Tesla’s statement about the incident said, “neither [the] Autopilot nor the driver noticed the white side of the tractor-trailer against a brightly lit sky, so the brake was not applied.” The company notes that it informs users, “the system is new technology and still in a public beta phase.”&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> Later, the company referred to the crash as a “statistical inevitability.”&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> In how many other industries can a manufacturer shrug their shoulders in response to even a single accidental death and claim, “well, it’s a beta?”&lt;/p>
&lt;p>Most early-IoT technologies are entirely unregulated. A car company can ship a beta-version auto-navigation system and, as long as a driver is behind the wheel, there are virtually no laws in place governing the safety of its algorithms. There are no safety laws, and few voluntary standards, governing the use of software in consumer devices. In some cases, device manufacturers can even freely acquire, transmit, store, and sell data that would otherwise be legally protected. For example, the Samsung Family Hub™ is a smart refrigerator that helps its users manage food inventory by taking a photograph of the interior every time the doors are closed. For users who take medication that requires refrigeration, such as the multiple sclerosis drug Copaxone®, the Family Hub™ becomes a device that digitizes and uploads private health information—possibly to parties unknown.&lt;/p>
&lt;p>In the United States, such data are protected by HIPAA/HITECH laws, but only if handled by a provider, insurance company, or other covered entity. In this context Samsung is not a HIPAA covered entity, and therefore is not beholden to the law’s data security regulations: there are no enforceable rules for accountability or transparency regarding the storage, handling, and sales of the data it collects. This is noteworthy because Samsung’s IoT platform, SmartThings™, has already been hacked.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> The authors of the paper that exposed the vulnerability in a SmartThings door lock note that such attacks may “expose a household to significant harm—break-ins, theft, misinformation, and vandalism.”&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> But even these concerns expose an inherent privilege—crimes against property, not the person. Much of the emergent IoT security work has focused on protecting the interests of early adopters, typically technologists themselves. There is more apparent concern among developers that an IoT coffeemaker might expose a WiFi password than that a buffer overflow might cause its heating element be stuck on, starting a fire that displaces a family. Yet people who worry about their next paycheck or their next meal can rarely afford to prioritize the operational security of their data.&lt;/p>
&lt;p>Often times, a lack of transparency and accountability accompanies a lack of consumer protection regulations. Lack of regulation generally enables companies, particularly startups, to move fast and disrupt the status quo. But software fails with alarming regularity, and when internet-connected software is installed on a physical system with failure modes that can lead to injury or death, disrupting the status quo means disrupting the entire ethical framework our society has constructed around holding people accountable for failures. If human error leads to an injury or death or undue financial loss, there are often liability laws and insurance policies to ensure the aggrieved receive restitution for their hardship; but with untraceable algorithmic failures it is not clear who, if anyone, is responsible for helping the victims return to relative normalcy. This lack of liability disproportionately hurts those who are not on the uphill side of financial privilege. If Samsung’s Family Hub™ accidentally leaks someone’s prescription information to their boss, who is to blame when they find themselves on the wrong end of a pink slip?&lt;/p>
&lt;p>Building an Empowered, Connected Future
What is compelling about the infrastructure framework made possible by the aggregated data of billions of devices, though, is the unprecedented power it has to do good. Technology has long promised that innovation would lead to technological empowerment of the underrepresented and underserved: access to education, employment, and medical care would all change as technology evolved. And although the evolution of technology has helped narrow the gap, companies still argue that there are insufficient data to accomplish these goals. In a self-review of their ethics practices, Facebook argues, “as the company grows, our research agenda expands to include projects that contribute value to our community and society. For instance, our accessibility team develops technologies to make Facebook more inclusive for people with disabilities.”&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> Facebook’s recent valuation of $350 billion makes it the sixth largest corporation in America;&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> the company does not indicate how much more growth is necessary to make the research agenda of accessibility a core priority.&lt;/p>
&lt;p>The slow investment rate in accessible technology is especially frustrating when considering how much of an impact low-cost, standardized access to connected sensing technology can have for people living with disabilities. People with lower-limb amputations, by way of example, are at increased risk of cardiovascular illness;&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup> smart health monitors, tailored to individual needs, would provide an immediate health benefit. Fine-grained biometric data would be an epidemiological boon in understanding care for many users with disabilities.&lt;/p>
&lt;p>Incidentally, medical devices are one of the few IoT-candidate consumer-level technologies where software is strongly regulated. Entering the medical device space means that products have to be demonstrated to be safe and effective, a time-consuming and expensive process. Yet, regulations are often at odds with high-velocity innovation culture. Despite regularly making futuristic claims where technology solves disease and social issues, tech companies at best react fearfully to regulations and at worst flaunt them entirely. When Austin, Texas voted by referendum to impose regulations on ride-sharing services, Uber and Lyft ceased operations in the city permanently, abandoning their drivers overnight.&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup>&lt;/p>
&lt;hr>
&lt;p>Robert Moses designed the footings of the Long Island Expressway to be too weak to support anything but vehicular traffic, forever blocking the development of a light rail system, and forever relegating Long Island a car-centered land. When infrastructure is designed only for the richest, most capable, or most eager users, that infrastructure excludes everyone else. Designing the IoT without considering the needs, lifestyles, backgrounds, and circumstances of a diverse user-base will only serve to widen the digital divide. Until the ethical calculus shows that the moral weight of inclusion is mightier than the earning potential from the privileged, the IoT will avoid serving those who could most benefit from it, in favor of those who can supply it most. Perhaps this is what Facebook meant by “as the company grows.”&lt;/p>
&lt;p>The technological infrastructure being built is collecting data on a very narrow segment of society. When this data is used for decision- and policy-making, early adopters are granted an implicit and unequal voice, in addition to the unequal benefits they gain. Because the intersection of early adopters and those with social and political privilege is so large, concerns of overrepresentation are too often swept under the rug. Ironically, this reinforces barriers to technological adoption. This was most evident when Apple shipped its HealthKit without a menstruation tracker.&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Nevertheless, immediate benefits can still be gained through conscientious design and a deliberate effort to provide access to IoT technology. Samsung’s Family Hub™ could provide data used to identify food access issues and address food deserts. Low-cost air-quality monitors could improve environmental quality, leading to better overall public health. Smart appliances could interact with power-generation facilities to reduce load, yielding energy efficiency improvements. And recent fatality notwithstanding, Tesla’s Autopilot feature has resulted in far fewer deaths-per-mile than conventional cars.&lt;/p>
&lt;p>In his 1980 essay “Do Artifacts Have Politics?” Langdon Winner wrote:&lt;/p>
&lt;blockquote>
&lt;p>&amp;hellip;the intractable properties of certain kinds of technology are strongly, perhaps unavoidably, linked to particular institutionalized patterns of power and authority. Here, the initial choice about whether or not to adopt something is decisive in regard to its consequences. There are no alternative physical designs or arrangements that would make a significant difference; there are, furthermore, no genuine possibilities for creative intervention by different social systems—capitalist or socialist—that could change the intractability of the entity or significantly alter the quality of its political effects…. In our times people are often willing to make drastic changes in the way they live to accord with technological innovation at the same time they would resist similar kinds of changes justified on political grounds.&lt;/p>
&lt;/blockquote>
&lt;p>The Internet of Things is showing us that we now have the computing power, connectivity, and data to create a technological infrastructure with the power to change how people live and how communities evolve. Society will be changed by the technologist’s actions; the technologist’s ethos must therefore include an assurance that their creations will not induce a change in one segment of society at the expense of another. We can’t allow the bridges of the Internet of Things to be built too low.&lt;/p>
&lt;section class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>&lt;em>The Power Broker,&lt;/em> Robert Caro, 1975.&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>[http://gothamist.com/2016/02/17/robert_caro_author_interview.php](“Robert Caro Wonders What New York is Going to Become,”) Christopher Robbins, Gothamist, February 17, 2016.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3" role="doc-endnote">
&lt;p>&lt;a href="http://lancasteronline.com/news/local/today-airs-segment-on-fake-rape-report-foiled-by-fitbit/article_0d49e904-0641-11e6-b5d8-5b67c6b6ee0d.html">“‘TODAY’ airs segment on fake rape report foiled by Fitbit in Lancaster County,”&lt;/a> Tom Knapp, Lancaster Online, April 19 2016.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4" role="doc-endnote">
&lt;p>Emily Gorcenski, via Twitter. &lt;a href="https://twitter.com/EmilyGorcenski/status/692003645437677568">https://twitter.com/EmilyGorcenski/status/692003645437677568&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5" role="doc-endnote">
&lt;p>&lt;a href="http://www.fda.gov/downloads/medicaldevices/deviceregulationandguidance/guidancedocuments/ucm429674.pdf">“General Wellness: Policy for Low Risk Devices,”&lt;/a> FDA, January 20 2015.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6" role="doc-endnote">
&lt;p>&lt;a href="http://www.cnn.com/2016/05/20/health/fitbit-accuracy-questioned/">“Fitbit&amp;rsquo;s accuracy questioned in lawsuit,”&lt;/a> Jen Christensen, CNN, May 20 2016.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7" role="doc-endnote">
&lt;p>&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/26154336">“Comparison of Consumer and Research Monitors Under Semistructured Settings,”&lt;/a> Bai, Yang, et al. 1, s.l. : Medicine &amp;amp; Science in Sports &amp;amp; Exercise, 2016 Vol. 48.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8" role="doc-endnote">
&lt;p>&lt;a href="http://www.scientificamerican.com/article/science-reveals-why-calorie-counts-are-all-wrong/">“Science Reveals Why Calorie Counts Are All Wrong,”&lt;/a> Rob Dunn, Scientific American, September 1 2013.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9" role="doc-endnote">
&lt;p>&lt;a href="http://www.nbcnews.com/feature/college-game-plan/oral-roberts-university-track-students-fitness-through-fitbits-n507661">“Oral Roberts University to Track Students’ Fitness Through Fitbits,”&lt;/a> Elizabeth Chuck, NBC, February 3 2016.&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10" role="doc-endnote">
&lt;p>&lt;a href="http://arstechnica.com/gadgets/2015/09/fitbit-guns-for-the-workplace-as-it-achieves-hipaa-compliance/">“Fitbit guns for the workplace as it achieves HIPAA compliance,”&lt;/a> Valentina Palladino, Ars Technica, September 17 2015.&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11" role="doc-endnote">
&lt;p>&lt;a href="http://arstechnica.com/cars/2016/06/teslas-autopilot-being-investigated-by-the-government-in-a-fatal-crash/">“Tesla&amp;rsquo;s Autopilot being investigated by the government following fatal crash,”&lt;/a> Jonathan M Gitlin, Ars Technica, June 30 2016.&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12" role="doc-endnote">
&lt;p>&lt;a href="https://www.teslamotors.com/blog/tragic-loss">“A Tragic Loss,”&lt;/a> Tesla Motors, June 30 2016.&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13" role="doc-endnote">
&lt;p>&lt;a href="https://www.teslamotors.com/blog/misfortune">“Misfortune,”&lt;/a> Tesla Motors, July 6 2016.&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14" role="doc-endnote">
&lt;p>&lt;a href="http://arstechnica.com/security/2016/05/samsung-smart-home-flaws-lets-hackers-make-keys-to-front-door/">“Samsung Smart Home flaws let hackers make keys to front door,”&lt;/a> Dan Goodin, Ars Technica, May 2 2016.&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15" role="doc-endnote">
&lt;p>&lt;a href="https://iotsecurity.eecs.umich.edu/img/Paper27_CameraReady_SmartThings_Revised_IEEEGen.pdf">“Security Analysis of Emerging Smart Home Applications,”&lt;/a> Earlence Fernandes, Jaeyeon Jung, and Atul Prakash, 2016. Proceedings of 37th IEEE Symposium on Security and Privacy.&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16" role="doc-endnote">
&lt;p>&lt;a href="http://scholarlycommons.law.wlu.edu/cgi/viewcontent.cgi?article=1042&amp;amp;context=wlulr-online">“Evolving the IRB: Building Robust Review for Industry Research,”&lt;/a> Molly Jackman, Lauri Kanerva. 3, s.l. : Wash. &amp;amp; Lee L. Rev. Online, 2016, Vol. 72.&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17" role="doc-endnote">
&lt;p>&lt;a href="http://money.cnn.com/2016/04/28/investing/facebook-trillion-dollar-market-value/">“Why Facebook could one day be worth $1 trillion,”&lt;/a> Paul R. La Monica, CNN Money, April 28 2016.&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18" role="doc-endnote">
&lt;p>&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/18281705">“Why traumatic leg amputees are at increased risk for cardiovascular diseases,”&lt;/a> J.E. Naschitz, R. Lenger. s.l. : QJM, 2008, Vol. 101.&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19" role="doc-endnote">
&lt;p>&lt;a href="http://money.cnn.com/2016/05/09/technology/austin-uber-lyft-drivers/">“Austin drivers in the lurch after Uber, Lyft exit,”&lt;/a> Sara Ashley O&amp;rsquo;Brien, CNN Money, May 10, 2016.&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20" role="doc-endnote">
&lt;p>&lt;a href="http://www.theverge.com/2014/9/25/6844021/apple-promised-an-expansive-health-app-so-why-cant-i-track">“Apple promised an expansive health app, so why can&amp;rsquo;t I track menstruation?”&lt;/a> Arielle Duhaime-Ross, The Verge, September 24 2015.&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/section></description></item><item><title>Early Termination Fees: The (Necessary?) Costs of 'Cancel Culture'</title><link>https://emilygorcenski.com/post/early-termination-fees-the-necessary-costs-of-cancel-culture/</link><pubDate>Thu, 17 Oct 2019 20:30:00 +0200</pubDate><guid>https://emilygorcenski.com/post/early-termination-fees-the-necessary-costs-of-cancel-culture/</guid><description>&lt;p>A lot of column inches have been burned on pieces about &amp;ldquo;Cancel Culture&amp;rdquo; lately; this is another one. The tenor of those pieces range from concern trolling about the fates of mostly-privileged folks who find themselves targeted by Cancel Culture, to pieces defending it as an unavoidable and necessary process of accountability. Too often, though, those pieces lack a critical element: the costs of Cancel Culture paid by those partaking in it. Without evaluating whether Cancel Culture is &amp;ldquo;good&amp;rdquo; or &amp;ldquo;bad&amp;rdquo; (which are fallacious concepts nevertheless), this piece will try to explore the taxes Cancel Culture imposes on the progress towards a goal.&lt;/p>
&lt;p>For those unaware, Cancel Culture can be described as a massive, and usually final, criticism of a person or entity because of their opinions, actions, or behavior regarding a certain thing, usually in the scope of social justice. Made possible largely through social media, Cancel Culture reflects widespread backlash, typically as a reaction to some event. Often times, the things that cause the canceling are not proximal causes, but rather distal complaints that reflect an accumulated list of grievances that must be brought to light. There are dozens of examples, and I will provide a few. When Quinn Norton was hired by the New York Times, she was &amp;ldquo;cancelled&amp;rdquo; over past comments she made that used homophobic slurs, among other things, and in response the New York Times rescinded her offer. When Natalie Wynn, better known as Contrapoints, made thoughtless remarks challenging the validity of non-binary identities, she was cancelled to the point where she deleted her Twitter account. And the entirety of the #MeToo movement is implicitly rooted in Cancel Culture; allegations of sexual violence and other misconduct have led to celebrities being dropped from movies and TV shows, to politicians withdrawing from races, and to people stepping down from jobs.&lt;/p>
&lt;p>Opponents of Cancel Culture will claim that it reflects the Wisdom of the Mob; that it risks harm without due process; and that lives, dreams, and reputations are ruined seemingly randomly, particularly because the grievances brought forth are often several years old. Proponents of it say that it is necessary to provide accountability; that outside a court of law, due process is merely the reflection of the invisible hand of the free market; that the act of &amp;ldquo;cancelling&amp;rdquo; is truth being spoken to power by the oppressed.&lt;/p>
&lt;p>I have, of course, played a not-insignificant role in the canceling of people. I was, for instance, quoted in &lt;a href="https://www.ibtimes.com/who-quinn-norton-newly-hired-journalist-dismissed-past-controversial-tweets-2653351">one of the pieces about Quinn Norton&lt;/a>, when I surfaced months-old complaints that she treated me callously when I asked her to be more mindful of the victims of neo-Nazi violence, particularly because she had past connections to one of the main players in the current far-right. I have taken politicians to task. And I have no doubt engaged in pettier interpersonal dramas. It would be incorrect and hypocritical for me to say that I can hold a blanket position against Cancel Culture in general, and one could make an argument that I have a not-insubstantial role in promoting it. Cancel Culture can be a powerful weapon, but lately I&amp;rsquo;ve been thinking about whether it has collateral damage.&lt;/p>
&lt;p>Optimistically, the act of cancelling is an act of enforcing accountability; one should not profit off of harm, and one should be held to answer for the harms done in the past so that they are not repeated in the future. Proponents will disarm criticisms of undue harms by pointing out that most of the people cancelled, particularly celebrities targeted by the #MeToo movement, simply resurface after laying low for a bit; that no lasting harm is done. It is here where I raise my eyebrow: if the cancelled person simply resurfaces once the heat dies down, then where is the accountability that we make such a fuss about?&lt;/p>
&lt;p>Moreover, we can ask what is &amp;ldquo;accountability&amp;rdquo; in this framework? Typically, we think of accountability as a level of taking responsibility for an action deemed harmful. That responsibility can be an admission of wrongdoing, an attempt to make whole, or a promise to do better in the future. In the context of modern criminal justice, we scale accountability based on the nature of the offense; the punishment for negligence is different than the punishment for malice. But cancellation is supposed final; implicitly, then, &amp;ldquo;accountability&amp;rdquo; is the demand to no longer co-exist.&lt;/p>
&lt;p>This isn&amp;rsquo;t per-se negative; I don&amp;rsquo;t want to co-exist in any space with a rapist or a Nazi. And I don&amp;rsquo;t think that wanting not to co-exist in a space with someone who has done harm is extreme or excessive. But it is stark, and it therefore means that those spaces now have an inside (where the cancelled person is not allowed) and an outside (where the cancelled person must now find their future). The question is who gets to define the inside? And when someone is relegated to the outside, never to be allowed back in, what does that mean for what they will do next?&lt;/p>
&lt;p>The challenge with Cancel Culture as a model of accountability is that by employing it we do not define what accountability actually looks like and what ends of justice are being served. Cancel Culture lacks nuance; was Norton negligent, willful, or malicious with her use of homophobic slurs and proximity to Andy Aurenheimer? How does Natalie Wynn leaving Twitter service the needs of non-binary people? Were there suitable alternatives? Accountability isn&amp;rsquo;t a thing that happens; accountability is a process that is supposed to move us towards justice. Of course, Wynn rejoined Twitter not long after her &amp;ldquo;cancellation.&amp;rdquo; Her next video, rather than making amends to the community she harmed, instead further widened the rift. There was no accountability after all this was settled, but instead a clear boundary, recognized more or less equally by those on either side of it. How then, did this move us towards justice?&lt;/p>
&lt;p>Most of the people engaged in so-called cancellation will often talk about being adherents of Restorative Justice philosophies. Without questioning whether these convictions are sincere, we can instead explore what restorative justice means in a practical sense. The National Associate of Community and Restorative Justice maintains &lt;a href="https://nacrj.org/index.php?option=com_content&amp;amp;view=category&amp;amp;layout=blog&amp;amp;id=15&amp;amp;Itemid=148">a list of public resources&lt;/a> on these concepts. For the most part, these resources deal with the concept of criminal justice, and alternatives thereof. But if we look at community justice within the framework of our digital spaces, where few laws exist to govern our conduct, we can start to see parallels.&lt;/p>
&lt;p>In &lt;a href="https://pdfs.semanticscholar.org/73d0/a984e85ad5614d5d5c9fd65c93e7426b0e3f.pdf">a paper titled, &amp;ldquo;Community Justice: A Conceptual Framework&amp;rdquo;&lt;/a> by D. R. Karp and T. R. Clear, the authors note that community justice includes many factors, including Equality, Inclusion, Mutuality, and Stewardship. They address reintegrative processes as a core element of a community justice model.&lt;/p>
&lt;blockquote>
&lt;p>Without a specification of behavioral norms, community justice processes can quickly devolve into a tyranny of the majority in which stultifying conformity is demanded without reflection on why social control processes are necessary.&lt;/p>
&lt;/blockquote>
&lt;p>But part of this approach requires that the offenders be able to accept that their conduct was in violation of &amp;ldquo;normative consensus.&amp;rdquo; This means that the offender must acknowledge their wrongdoing, but also that their concerns about community inclusion be addressed. Often times, as with drug crimes, this involves addressing the social ills serving as oppresive factors harming the offender. Without addressing &lt;em>why&lt;/em> a drug dealer needs to sell drugs to make a living, we can hardly begin to approach a notion of community justice at scale.&lt;/p>
&lt;p>These factors apply to our online communities as much as they do our co-located ones. It is not wrong to want to call out someone for bad behavior, but if we can come together on an agreement that accountability must be sought, we should be able to come together to derive a strategy for reintegrating the offender and addressing the harms in a constructive way. When we deal with vulnerable communities and safe spaces, it can be tempting to send a strong message to offenders. But sometimes, what we accomplish is setting our own demolition charges instead of reinforcing our own ramparts. In the end, this can undermine the safety of a space just as much as the original offender did. This is neither true justice nor true accountability.&lt;/p>
&lt;p>This is not to say that there are not people who deserve canceling. The #MeToo movement is a prime example of continued intolerable behavior finally reaching a boiling point. Many of the offenders were habitual offenders who faced no consequences under the existing justice models in place. Here, cancellation can work. But because it it effective in some scenarios does not mean we should accept it in all scenarios as the only possible tool to meet our needs. We can, and should, question the inclusion/exclusion model of communities as much as we question the inclusion/exclusion model of our prisons, particularly when looking at the possibility of expelling someone who is, for all intents and purposes, an in-group member. In many cases, the exclusion becomes permanent, and the boundary that is drawn becomes an impassable barrier. Someone who has done us harm in the past is not incapable of doing us good in the future. To permanently sever ties because of a reparable harm carries an opportunity cost. We would be wise not to ignore that cost in our value calculus. These are the early termination fees we pay when we are incapable or unwilling to model the communities we want to create.&lt;/p>
&lt;p>Creating a framework of community justice is not easy, nor is it a simple task of &lt;em>not&lt;/em> cancelling people. We have to put in the effort to understand what our community model is, what our values are, and what recompense looks like. Liberation isn&amp;rsquo;t the absence of grievance; liberation is the freedom to make mistakes and then make amends. But it requires patient stewardship and cultivation to establish what those norms are, what those amends look like, and what it means to be excluded or reintegrated. It should be easier to do this in an ungoverned digital community than it is in a regulated physical space; and yet, perhaps due simply to the experience level or the table stakes, there is much more structure around these ideas in the latter.&lt;/p>
&lt;p>There is no final chapter in any of these stories, but rather an ever changing community. Nevertheless, if we move with intention in our spaces, we can choose to explore and implement these models. I hope we do, because our practice in our online spaces translates will soon translate to how we govern our physical ones. We have to remember that we march towards justice, not perfection.&lt;/p></description></item><item><title>Antifa’s Keyboard Warriors (Medium)</title><link>https://gen.medium.com/antifas-keyboard-warriors-254f62be2a95</link><pubDate>Thu, 12 Sep 2019 15:15:00 +0200</pubDate><guid>https://emilygorcenski.com/post/antifas-keyboard-warriors-medium/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/1_3pIPUwgOTELF0i-tCKD_hw.gif"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/1_3pIPUwgOTELF0i-tCKD_hw.gif" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/1_3pIPUwgOTELF0i-tCKD_hw.gif" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/1_3pIPUwgOTELF0i-tCKD_hw.gif" width="600"/></media:content><description>&lt;p>I am quoted in this fantastic piece about the work that anti-fascists do to expose and name white supremacists and neo-Nazis.&lt;/p></description></item><item><title>Continuous Delivery for Machine Learning</title><link>https://martinfowler.com/articles/cd4ml.html#TechnicalComponentsOfCd4ml</link><pubDate>Thu, 05 Sep 2019 07:57:00 +0200</pubDate><guid>https://emilygorcenski.com/post/continuous-delivery-for-machine-learning/</guid><description>&lt;p>This article is the first in a series written by my colleagues on deploying machine learning continuously.&lt;/p></description></item><item><title>Review: Making Sense of the Alt-Right</title><link>https://emilygorcenski.com/post/review-making-sense-of-the-alt-right/</link><pubDate>Sun, 01 Sep 2019 13:47:00 +0200</pubDate><guid>https://emilygorcenski.com/post/review-making-sense-of-the-alt-right/</guid><description>&lt;p>&lt;em>Making Sense of the Alt-Right&lt;/em> was published right around the same time as Unite the Right in Charlottesville in 2017. George Hawley, writing from an academic&amp;rsquo;s lens, attempted to explain what was at the time a mostly-fringe phenomenon. With the benefit of hindsight, I finally read the book to see what we could learn from what was missed.&lt;/p>
&lt;p>Hawley makes clear in his introduction that many of his readers may not be happy with the approach he takes to characterizing and criticizing the Alt-Right, though he does argue that the movement is fundamentally white supremacist and racist in nature. The book attempts to provide a high-level, three-sixty view of the movement, which it succeeds in doing, but fails to truly dive deep in any of the many arcane caves that make up the Alt-Right.&lt;/p>
&lt;p>Hawley starts by separating the Alt-Right from other forms of modern conservativism, from its contemporary peers to the past generations' own versions of conservativism and white supremacy. He correctly identifies that the Alt-Right is a offshoot not only of white supremacist movements of the past, but also modern day conservative movements. Nevertheless, the Alt-Right is not strictly part of any of those things.&lt;/p>
&lt;p>Mainstream conservativism in the latter parts of the 20th Century dealt with its own divisions, where the neoconservative and paleoconservative movements wrestled for control of the right wing of American politics, with neoconservativism ultimately winning out. Likewise, white supremacy movements had their own evolutions, although these movements stayed strictly on the fringes of the mainstream and never gained any significant political power. For a time, it seemed like the more reactionary elements of the American right would be forever marginalized.&lt;/p>
&lt;p>But paleoconservativism, while disempowered, still had significant financial resources, and never really disappeared. Hawley shows how, after the turn of the century, the movement sought out younger, fresher ideas. These ideas became progressively more white supremacist in nature, leading, through a still-more-convoluted process, to the rise of the Alt-Right.&lt;/p>
&lt;p>Hawley provides a good survey-level overview of this history. His text clocks in at 175 pages; one could easily dedicate that to a detailed analysis of this history. Alas, the focus of the book is on the Alt-Right.&lt;/p>
&lt;p>There are no significant inaccuracies in the presentation of the Alt-Right, so fundamentally I have no problems with this. However, there are critical omissions, and while Hawley dedicates several dozen pages to the (relatively distal) 20th century precursors of the Alt-Right, he spends nearly no time on the contemporary lead-ins. Hawley touches on Gamergate, &lt;a href="https://journals.sagepub.com/doi/abs/10.1177/1742715018793744">considered by many experts to be the most significant catalyst of the Alt-Right&lt;/a>, only briefly. When he does, he describes it badly. &amp;ldquo;Gamergate started as a controversy about ethics in video game journalism,&amp;rdquo; is the kind of statement someone would make if their only engagement on the matter came from disinterested sources. He does not elaborate on the movement, discussing it for only about a page-and-a-half, seemingly only to introduce Milo Yiannopoulos, whom he later describes as not really Alt-Right.&lt;/p>
&lt;p>This is not the only sorely lacking characterization of the Alt-Right circa 2016-2017, when the book was written. Early on, Hawley claims, &amp;ldquo;I am aware of no acts of physical violence directly connected to the Alt-Right.&amp;rdquo; Nevertheless, towards the end of the book he does describe the Sacramento rally wherein several people were stabbed by neo-Nazis. Will Planer, a member of the Traditionalist Workers' Party, a firmly Alt-Right organization, &lt;a href="https://sacramento.cbslocal.com/2019/07/03/william-scott-planer-four-years-prison-sentence/">was later sentenced to four years in prison&lt;/a> after pleading guilty to an assault at that rally. Darkly, he states that he is not claiming that the Alt-Right was a terrorist movement; James Fields would commit his act of terrorism in Charlottesville around publication time.&lt;/p>
&lt;p>Hawley also engages in dangerous &amp;ldquo;both-sidesism.&amp;rdquo; He spends a paragraph hand-wringing about content moderation on social media platforms, a topic that he conveys no expertise on, while ignoring that the things he is afraid of have already been used against leftists, Black activists, queers, and sex workers for years. He preemptively victim-blames antifascists for being responsible for causing the violence brought against them.&lt;/p>
&lt;p>Furthermore, from his lens in 2016-2017, he perceives the Alt-Right as having little impact on mainstream conservativism, despite the election of Donald Trump. He spends not-insignificant time discussing the 2016 US Presidential Election, at one point seeming to blame Hillary Clinton for drawing attention to the Alt-Right &lt;a href="https://www.washingtonpost.com/news/the-fix/wp/2016/08/25/hillary-clintons-alt-right-speech-annotated/">in one of her speeches&lt;/a>. His framework of patriotism as a necessary characteristic of a genuine conservative movement—and a trait he finds lacking in the Alt-Right—is woefully off-base. He dismisses concerns that the contemporary Republican party would engage in serious prosectution of its political enemies, a prediction made foolish by &lt;a href="https://theintercept.com/2019/03/23/black-identity-extremist-fbi-domestic-terrorism/">the revelation that the FBI was tracking &amp;ldquo;Black Identity Extremists&lt;/a>.&lt;/p>
&lt;p>Not all of Hawley&amp;rsquo;s characterizations are incorrect. He wonders aloud what the Alt-Right would look like when it finally stepped off the internet (answer: Charlottesville) and he correctly describes a link between the Alt-Right and the Men&amp;rsquo;s Rights movement. He also adeptly describes the connections between the Alt-Right and the European New Right movement. And, with good nuance, he does a good job describing the neo-reactionary movement of the early to mid-2010s, a movement which has largely been cast aside due to the meteoric impact of the Alt-Right.&lt;/p>
&lt;p>The book doesn&amp;rsquo;t really dive into the Alt-Right in detail; rather, and true to its title, it covers the bare minimum, surface-level practical philosophies of the movement. The book discusses major figures in the movement with barely an introduction. Only Richard Spencer is scrutinized in detail. The book seems targeted at people who have only a mainstream, centrist point of view of politics, and seems more to assuage fears of—or lay covering fire for—concerns that mainstream conservativism could be described as progenitors of, allies to, or beneficiaries of the Alt-Right. To that end, our hindsight in a post-UTR world turns much of Hawley&amp;rsquo;s analysis on its head. But if I were to have written this book at the same time, I don&amp;rsquo;t know if my conclusions would have been much different. Charlottesville changed everything.&lt;/p></description></item><item><title>I lost my job for keeping Charlottesville police accountable. I'd do it again</title><link>https://www.theguardian.com/commentisfree/2019/aug/19/charlottesville-police-molly-conger-newspaper</link><pubDate>Mon, 19 Aug 2019 11:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/i-lost-my-job-for-keeping-charlottesville-police-accountable.-id-do-it-again/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/molly-guardian.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/molly-guardian.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/molly-guardian.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/molly-guardian.webp" width="600"/></media:content><description>&lt;p>My good friend Molly, aka socialistdogmom, wrote this incredible piece on how the Charlottesville police attacked her freedom of speech, and how the media failed her.&lt;/p></description></item><item><title>Fact-checking a joke of a lawsuit from a liar</title><link>https://emilygorcenski.com/post/fact-checking-a-joke-of-a-lawsuit-from-a-liar/</link><pubDate>Tue, 13 Aug 2019 12:00:00 +0200</pubDate><guid>https://emilygorcenski.com/post/fact-checking-a-joke-of-a-lawsuit-from-a-liar/</guid><description>&lt;p>Jason Kessler once again tried to make August 12 all about him, this time by re-filing his comical joke of a lawsuit against the City of Charlottesville. Because he has not yet wasted enough of Charlottesville&amp;rsquo;s taxpayers' dollars in his quest to not be the world&amp;rsquo;s saddest sadboy, we&amp;rsquo;ll go through graf by graf of his magnum opus to expose how much of a liar, cheat, and fraud he really, in my opinion, is. Shall we? To start, you can &lt;a href="https://www.courtlistener.com/recap/gov.uscourts.vawd.116228/gov.uscourts.vawd.116228.1.0.pdf">read his suit here&lt;/a>. This is a non-legal analysis and all content herein reflects merely my opinion and no one elses.&lt;/p>
&lt;p>I won&amp;rsquo;t copy the text of his claims, for simplicity.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Maryland, huh? Also Jason forgot a period at the end of this sentence.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Oh look, Parrott is involved.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Congratulations on looking up what a Monell claim is, but as &lt;a href="https://www.avvo.com/legal-answers/what-is-a-monell-claim--2306447.html">this forum&lt;/a> suggests, &amp;ldquo;[c]ivil rights cases are not do-it-yourself projects.&amp;rdquo;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>True.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>True.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>True.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Also true. But this is the last time you&amp;rsquo;ll be hearing about any of the defendants for quite a while in this ride.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ah yes, the heckler&amp;rsquo;s veto. Let&amp;rsquo;s see how this plays out.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Fact check: Jason Kessler texted co-organizer Richard Spencer claiming he would &amp;ldquo;raise an army&amp;rdquo; for free speech but also the &amp;ldquo;cracking of skulls&amp;rdquo; and advertised it to Spencer as the &amp;ldquo;Battle of Charlottesville.&amp;rdquo;&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/kessler-texts.jpeg" alt="Texts between Jason Kessler and Richard Spencer leading up to Unite the Right.">&lt;/p>
&lt;ol start="10">
&lt;li>
&lt;p>I wouldn&amp;rsquo;t admit to wanting to follow Kessler but ok.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Also, &amp;ldquo;racist,&amp;rdquo; &amp;ldquo;sexist,&amp;rdquo; and &amp;ldquo;bigoted.&amp;rdquo;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>At least they&amp;rsquo;re admitting they&amp;rsquo;re racist.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;Alt-Right&amp;rdquo; was a self-selected term. &amp;ldquo;Alt-Left&amp;rdquo; was a term invented by the &amp;ldquo;Alt-Right&amp;rdquo; in an attempt to reframe the narrative that they&amp;rsquo;re actually unlikeable bigoted assholes. Also, &amp;ldquo;[m]akes it it&amp;rsquo;s&amp;rdquo; is incorrect usage of apostrophes. All this time crafting this lawsuit and we&amp;rsquo;re really stumbling out of the gate on punctuation aren&amp;rsquo;t we?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The Alt-Right has been linked to multiple acts of terrorism and scores of arrests for violent instigatory acts. Antifascists using violence is only ever in self-defense to protect vulnerable people from being murdered, which is the stated goal of the &amp;ldquo;Alt-Right&amp;rdquo; &amp;ldquo;political messaging&amp;rdquo; and which has been borne out many times over.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The Alt-Right is perhaps considered Nazis because of things such as:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>chanting Nazi chants;&lt;/li>
&lt;li>wearing swastikas;&lt;/li>
&lt;li>throwing Nazi salutes;&lt;/li>
&lt;li>&lt;a href="http://archive.is/Vitq7">referring to themselves as &amp;ldquo;we Nazis.&amp;quot;&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol start="16">
&lt;li>
&lt;p>The claim here is that the city, its management, and the police wanted Antifa to come and commit violence to stop Jason. Just remember this for the upcoming paragraphs. To help set the mnemonic, here&amp;rsquo;s a nonsensical phrase to recall: purple mango.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>State of emergency has nothing to do with political speech, but ok. Fact check: August 10-12, 2018 was a state of emergency, too. Weird, that.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I guess.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>At least Kessler can establish venue, unlike some in the area.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Whatever.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Antifa isn&amp;rsquo;t a group, it&amp;rsquo;s an ideology. &lt;a href="https://reason.com/2019/07/24/ted-cruz-wants-antifa-investigated-by-the-fbi/">Even the FBI thinks so.&lt;/a> The defendants are not referenced here.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;Smashing the patriarchy&amp;rdquo; isn&amp;rsquo;t a call to violence, considering that the patriarchy is a system and not a physical person or thing, but whatever. We&amp;rsquo;re really gonna struggle with this &amp;ldquo;concrete/abstract&amp;rdquo; dichotomy throughout this. The remainder of the graf is a repeat of the same material from seven grafs ago. This is getting tedious. The defendants are not referenced here.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;Antifa has repeatedly put its violent rhetoric into practice&amp;rdquo;—I&amp;rsquo;m not sure what this is even supposed to mean? Rhetoric is speech, and it strikes me as very ill-conceived to be making an argument that &amp;ldquo;violent rhetoric&amp;rdquo; is somehow an indicator of violence, considering how Kessler himself engaged in violent rhetoric and is being sued into oblivion about it and is literally arguing the opposite there. The defendants are not referenced here.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is an incident in Washington, D.C., not Charlottesville. The defendants are not referenced here. Also, nearly all of the people arrested in the J20 incident &lt;a href="https://theintercept.com/2018/07/13/j20-charges-dropped-prosecutorial-misconduct/">had their charges dropped&lt;/a>. That detail is omitted.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The incident described in this graf took place over 3,000 miles away, in Berkeley. The only people proven to be at the Berkeley event who were also at Charlottesville were people who joined the &amp;ldquo;Alt-Right&amp;rdquo; side of things: the four members from RAM, (who were convicted on federal Conspiracy to Riot charges)[https://www.cbs19news.com/content/news/RAM-founder-sentenced-for-riot-charge-connected-to-Unite-the-Right-rally-512956061.html]. That detail is omitted. The defendants are not referenced here.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Likewise. That detail is omitted. The defendants are not referenced here. A more clever man would have merged this graf and the one above in some intelligent, coherent way.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>May 1 is May Day, it&amp;rsquo;s literally the left&amp;rsquo;s event. No &amp;ldquo;antifa&amp;rdquo; disrupted the July 8 KKK rally; it was slightly delayed but the Klan was given its full permitted window. The fact that July 8 was the KKK is omitted here. The defendants are not referenced.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;The people&amp;rdquo; referred to here are the Klan. None of them were assaulted. Also, remember purple mango? Here he claims a cop was thinking that he was going to have to shoot &amp;ldquo;antifa&amp;rdquo; (aka peaceful protesters). Huh. Seems like not a thing that people working together would be likely to end up doing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This claim is completely false. The claim is that in &lt;a href="https://www.policefoundation.org/wp-content/uploads/2017/12/Charlottesville-Critical-Incident-Review-2017.pdf">the Heaphy Report&lt;/a>, page 64, the police chief wasn&amp;rsquo;t going to protect rally participants from Antifa. The footnote in the claim quotes, &amp;ldquo;I&amp;rsquo;m not going to get them (Alt-right persons) in and out again.&amp;rdquo; Neither of these things are true. Here is what the report actually says:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>In anticipation of the August 12 rally, commanders suggested additional Mobile Field Forces and the removal of media from the barricaded area. Lieutenant Mooney recalled Chief Thomas stating, in reference to the August 12 event, that “I’m not going to get them in and out” of the event.&lt;/p>
&lt;/blockquote>
&lt;p>In other words, the quote was specifically about members of the media. It had nothing to do with &amp;ldquo;Alt-right members&amp;rdquo; and it had nothing to do with protecting people from &amp;ldquo;Antifa.&amp;rdquo; It literally had to do with whether media would be allowed inside a barricaded area or not and the logistics of that.&lt;/p>
&lt;ol start="30">
&lt;li>
&lt;p>Defendants were also aware of Plaintiff&amp;rsquo;s violent history and tactics.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This same thing has already been said.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is a reference to an event that took place in Portland, OR. There is no evidence presented any of the people involved in Portland had anything to do with Charlottesville.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Literally impossible to quantify what &amp;ldquo;fever pitch&amp;rdquo; is supposed to mean, but we need only look at threats from the &amp;ldquo;Alt-Right&amp;rdquo; here, such as the ones I warned Charlottesville City Council about. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The linked video shows an unrelated group of people in Phoenix, Arizona engaging in legal sporting in April 2017, several weeks before the Unite the Right rally permit application was filed. This detail is omitted here. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Virginia is an open carry state and Jason Kessler&amp;rsquo;s co-organizers, such as CJ Ross, also openly posted calls to arms with explicitly violent language. This detail is omitted here. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is a reference from a Chicago-based group referencing a boxing gym—a sport where people punch each other—posted weeks before the Unite the Right permit was filed. This detail is omitted here. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Another blatantly false paragraph. The graf claims that Philly Antifa &amp;ldquo;advised their supporters that offensive violence is &amp;lsquo;completely legal.'&amp;rdquo; Here is what the linked page actually says:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Liberal and Pacifist Anti-Racists are attacked for their completely legal and non-violent work regularly.&lt;/p>
&lt;/blockquote>
&lt;p>In other words, the only reference to &amp;ldquo;completely legal&amp;rdquo; is the reference that warns that liberal and pacifist activists who are engaged in non-violent, non-criminal acts are nevertheless themselves subject to violence. The website does not suggest that offensive violence is completely legal. A second misleading claim in this graph suggests that Philly Antifa called for Nazis to be &amp;ldquo;neutralized on the streets.&amp;rdquo; This is what the link actually says:&lt;/p>
&lt;blockquote>
&lt;p>Many Anti-Fascists do not engage in direct confrontation with fascists for a variety of reasons or concerns. But all Antifa know that confrontation is an important element in defeating fascism. An important part of fascist ideology is centered around “controlling the streets,” meaning establishing a hegemony over the political sphere and subcultures, unfettered access to young people for recruits, and a stage to perform their elaborate street theater propaganda rallies. When Anti-Fascists are successful, it means the Nazis and fascists in their town are completely neutralized on the streets, forcing them to act in a totally clandestine way.&lt;/p>
&lt;/blockquote>
&lt;p>These details are omitted here. This graf does not reference the defendants.&lt;/p>
&lt;ol start="38">
&lt;li>
&lt;p>This references a tweet that was posted weeks before the Unite the Right permit application was filed. Contrary to the claim in the graf, neither Plaintiff&amp;rsquo;s name appears in the tweet, the tweet it quotes, or the article that the quoted tweet links to. These details are omitted here. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The reference tweet contains only legal oppositional speech, the same thing Plaintiffs are arguing they were discriminated against for. This graf does not reference the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This graf alleges conduct by several non-defendants and is unclear whether any of the participants had any involvement in the counter-protests. One is a comment on a public call to non-violent action by Refuse Fascism, a group spun off of the Revolutionary Communist Party, a group regularly criticized and derided by antifascist organizers. Another reference here is an Instagram picture posted on November 19, 2017, more than two months after the Unite the Right rally took place. Another is a twitter post reference a violent incident outside a campaign rally, from over a year before the permit application for Unite the Right was filed. The last was a post made over a month after Unite the Right in reference to political opposition to supporters of the president. Unless &amp;ldquo;Antifa&amp;rdquo; has invented time travel, only one of the posts referenced in this graf was made in the time between the announcement of Unite the Right and the rally itself, and that post was a public comment by someone who did not attend the rally, posted to a public page of a group that did not attend the rally. It is unclear how any of this pertains to evidence of a conspiracy on behalf of the defendants.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Antifa isn&amp;rsquo;t a group and there are no headquarters anywhere.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This graf alleges intelligence about soda cans filled with concrete. The graf does not allege that any such devices were recovered at the scene of the rally or in its surroundings&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We&amp;rsquo;re on graf 43 and Defendant Lt. Crannis-Curl makes her first appearance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The allegation that Chief Thomas gave a stand-down order is unfounded and has been conclusively testified &lt;em>against&lt;/em> many times.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The klan. This graf is about the KKK, to be clear. This graf undermines the entire lawsuit. It only seems to demonstrate that police were, in fact, willing and able to control a situation even when &amp;ldquo;antifa&amp;rdquo; got unpleasant. The KKK were attendees of Unite the Right. Plaintiffs proffer no explanation why the KKK was treated favorably on July 8 but unfavorably on August 12.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This indentation is a nightmare.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>A repeat of the false claim that Thomas said he was not going to get the &amp;ldquo;Alt-Right&amp;rdquo; in and out. The statement was in fact about the media.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The quoted section of the report is actually from a section outlining arrest plans and contingencies for if unmanageable fights broke out and how to handle concerns for officers&amp;rsquo; safety.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is a meritless and unprovable non-factual statement.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is standard operating procedure for crowd management.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I&amp;rsquo;ll stipulate that Chief Thomas was a terrible overall police chief.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Why is this a paragraph? Just put it with the previous one. It adds nothing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is just Elmer Woodard&amp;rsquo;s personal white whale.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This was just an excuse to use slurs, as conduct of non-parties well after the events in question have little to do with the validity of the harms being alleged.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The first linked video shows an unidentifiable man using a stick to attempt to separate a white supremacist mob—who was later convicted of Conspiracy to Riot—from a victim they were mob-beating. None of these videos allege any conduct of the Defendants. The videos do show evidence that was used to convict several members of the &amp;ldquo;Alt-Right.&amp;rdquo;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>No conduct described in this graf involves Defendants nor clear evidence of instigatory violence.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This video in fact shows an incident where a man from the Alt-Right ran into a peaceful crowd from the street, tackling a much smaller person, and several people ultimately removed him safely and lawfully. No conduct described in this graf involves Defendants nor clear evidence of instigatory violence.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>No conduct described in this graf involves Defendants nor clear evidence of instigatory violence. Nothing described in this graf alleges any conduct that is unlawful in any way.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Federal court documents disagree with this assessment and this has been used to convict violent actors in criminal cases. Also, &amp;ldquo;results of this in progress heckler&amp;rsquo;s veto&amp;rdquo; literally doesn&amp;rsquo;t make sense.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It is unclear what this graf has to do with the conduct alleged.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Defendants are named! It&amp;rsquo;s a miracle!&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This graf could just be reincorporated into its predecessor.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It&amp;rsquo;s unclear what this claim means.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Second appearance by Defendant Crannis-Curl!&lt;/p>
&lt;/li>
&lt;li>
&lt;p>And one here. In another pointless paragraph.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rambling.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>More rambling.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>More rambling.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>More rambling.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>More rambling.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It&amp;rsquo;s incredibly unclear what this statement is doing here in graf 71.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Fact check: police arranged a transport and entry plan for all speakers. The speakers chose to unilaterally abandon that plan at the last moment.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This is about what Plaintiff Kessler perceived, but is not a fact.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Congratulations. You entered a park that 1000 other people also entered.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The permit application wasn&amp;rsquo;t for later in the day.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Permits don&amp;rsquo;t actually let you break the law. Weird, I know.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We&amp;rsquo;re seventy-seven grafs in and we finally have some conduct pertaining to Plaintiff Parrott. Nobody believes this, but ok.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Plaintiff whines about an unlawful assembly being declared just a few paragraphs after explaining how he witnessed people attending his rally being violent.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Same.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The referenced post does not involve conduct by defendants and in fact is a message politically against the quoted message regarding the Alt-Right&amp;rsquo;s desire to have killed more people.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This tweet is safety advice to avoid injuries.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Conduct described in this tweet is completely legal.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Graf does not actually allege unlawful conduct, but instead &amp;ldquo;boasting&amp;rdquo;—in other words, protected speech. Plaintiffs show no evidence that these boasts were materialized through actual conduct.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title>Terry McAuliffe Still Doesn’t Understand What Happened in Charlottesville</title><link>https://slate.com/news-and-politics/2019/08/terry-mcauliffe-charlottesville-unite-right-racist-rally-anti-fascist-anniversary.html</link><pubDate>Sat, 10 Aug 2019 08:30:00 +0200</pubDate><guid>https://emilygorcenski.com/post/terry-mcauliffe-still-doesnt-understand-what-happened-in-charlottesville/</guid><description>&lt;p>Read my piece in Slate on how our leaders, including Terry McAuliffe and Joe Biden, failed us in Charlottesville while capitalizing on our trauma.&lt;/p></description></item><item><title>Why the challenge being put forward at the White House's extremism discussion is no easy task</title><link>https://www.cbc.ca/news/world/ahead-of-white-house-meeting-experts-say-stopping-online-extremism-is-no-easy-task-1.5240846</link><pubDate>Fri, 09 Aug 2019 09:30:00 -0500</pubDate><guid>https://emilygorcenski.com/post/why-the-challenge-being-put-forward-at-the-white-houses-extremism-discussion-is-no-easy-task/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/el-paso-shooting-vigil.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/el-paso-shooting-vigil.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/el-paso-shooting-vigil.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/el-paso-shooting-vigil.jpg" width="600"/></media:content><description>&lt;p>I was interviewed for this piece by the CBC on the challenges facing content moderation of white nationalists on social media.&lt;/p></description></item><item><title>First Vigil's Tech Stack and the Limits of Static Sites</title><link>https://emilygorcenski.com/post/first-vigils-tech-stack-and-the-limits-of-static-sites/</link><pubDate>Sun, 28 Jul 2019 18:29:00 +0100</pubDate><guid>https://emilygorcenski.com/post/first-vigils-tech-stack-and-the-limits-of-static-sites/</guid><description>&lt;p>For a little more than six months, I&amp;rsquo;ve been running &lt;a href="https://first-vigil.com">First Vigil&lt;/a> entirely as a static site hosted directly on Google Cloud storage, and I&amp;rsquo;m getting close to the limits of the technical approach. This post will explore static site hosting and look at the challenges I have from a data to a infrastructure perspective.&lt;/p>
&lt;h2 id="the-first-vigil-tech-stack">The First Vigil Tech Stack&lt;/h2>
&lt;p>Before getting into some of the challenges and limitations, let&amp;rsquo;s talk about the tech stack that First Vigil is currently running. When I build First Vigil, I wanted to create something that could go live rapidly. There were a number of important cases I was tracking, and I wanted a fast path to production. I also had a number of other requirements:&lt;/p>
&lt;ul>
&lt;li>tool-independent, human-readable, hand-editable data;&lt;/li>
&lt;li>low-cost hosting;&lt;/li>
&lt;li>low maintenance hosting;&lt;/li>
&lt;li>easy path to production.&lt;/li>
&lt;/ul>
&lt;p>The first point is, in my opinion, my primary driver. I wanted to avoid a few challenges here. Namely, I wanted a format that non-tech experts could navigate. So it needed to be something fairly straightforward, with minimal syntactical quirks. I also didn&amp;rsquo;t want to maintain a CMS, and I wanted to be able to use Github&amp;rsquo;s built-in pull request system to validate contributors' additions and edits to the data. Furthermore, I also wanted the data to be tool-independent. Criminal cases can last years, if not longer. I wanted the data to be as readable and accessible at the end of the sentences of these far-right actors. This meant using a plain-text format as the source of truth, rather than a storage solution like a relational database.&lt;/p>
&lt;p>All of this saved me some engineering effort when getting the site off the ground. The solution, therefore, was to use YAML files to represent each case (more on why First Vigil is case-focused later.) The YAML is also convenient because it can be fairly easily transformed into frontmatter for static site generators. I wanted to use a static site because I could minimize hosting costs. First Vigil is run at a loss; minimizing hosting costs is necessary to keep the site sustainable.&lt;/p>
&lt;p>Both &lt;a href="https://first-vigil.com">First Vigil&lt;/a> and &lt;a href="https://howhatesleeps.com">HowHateSleeps&lt;/a> are static sites built using the wonderful &lt;a href="https://gohugo.io/">Hugo&lt;/a> static site generator (as is this blog). Both sites are statically hosted on Google Cloud Storage, each in their own buckets. Media files are hosted in a third bucket, which serves as a data lake for all the projects in the First Vigil initiative.&lt;/p>
&lt;p>There are but a few steps from the raw YAML data to production. This path has been designed to be as short as possible. But to describe it, we have to understand a little bit about how Hugo manages assets.&lt;/p>
&lt;h3 id="first-vigils-data-taxonomy">First Vigil&amp;rsquo;s Data Taxonomy&lt;/h3>
&lt;p>Court records are difficult. One must consider multiple possible many-to-many relationships. For any given incident, such as an assault, there may be one or more criminally-accused individuals, or defendants. Each defendant may catch one or more charges. Those charges can be spread out over one or more cases, in one or more jurisdictions. Furthermore, each defendant may belong to zero or more organizations. To complicate matters, each case may inherit one or more case identifiers (e.g. a federal case often gets assigned a magistrate judge case number at first until the defendants are indicted, and then it is assigned a criminal case identifier). And each charge may have one or more counts, and those counts can resolve differently.&lt;/p>
&lt;p>It may be tempting to treat this in full &lt;a href="https://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form">Boyce-Codd normal form&lt;/a>. However, doing so would violate the hand-editable requirement I set out at the beginning of the project. There are other problems; even when charges are filed with the same Code number, they can have slightly different charge descriptions depending on the jurisdiction. It was a bit easier to denormalize the data by picking a unit and building the relationships as a tree structure.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/fv-er-model.png" alt="An visualization of First Vigil&amp;rsquo;s data schema.">&lt;/p>
&lt;p>Therefore, the choice was made to track &lt;em>cases&lt;/em> as the primary data unit. Each case has one or more defendants, who each have one or more charges, each with one or more counts. Each defendant can have zero or more aliases and belong to zero or more groups. Each case has a single YAML file. These may not be small; some federal cases have 40+ defendants, each of whom are catching multiple charges.&lt;/p>
&lt;h3 id="first-vigils-asset-pipeline">First Vigil&amp;rsquo;s Asset Pipeline&lt;/h3>
&lt;p>Of relevance here are two patterns used by Hugo. The first is the &lt;code>static/&lt;/code> folder, which contains static assets like JS and CSS files, images, and the like. The second is the &lt;code>data/&lt;/code> folder. Both of these folders provide asset material to the Hugo build pipeline. In particular, we want to use the &lt;code>data/&lt;/code> folder to hold the case data for the &lt;em>pages&lt;/em> in the First Vigil site.&lt;/p>
&lt;p>Because Hugo is a static site generator, it looks at pages and posts and uses those to build static HTML. While processing each page, Hugo has access to the page&amp;rsquo;s/post&amp;rsquo;s frontmatter, to a site configuration and parameters, and to the data assets. But because this is page-based, and because First Vigil displays many cases per page, we need to extract data from the case YAML files and stage them in the data folder in a meaningful way. This is essentially a set of extraction and transformation pre-processing steps.&lt;/p>
&lt;p>The pages used fixed templates, and it is possible to create new clusters of cases with a unified theme, e.g. &lt;a href="https://first-vigil.com/pages/details/antagonizers/">The Antagonizers&lt;/a>, by specifying defendants, groups, or individual case numbers. This is done by creating a new markdown file, for which the python preprocessor can generate site YAML.&lt;/p>
&lt;p>These steps are executed with some basic python scripts that walk the source data folder, generate lists, sort and clean the data, and output them into Hugo-ready formats. This is a bit &lt;em>ad hoc&lt;/em> currently, and much more work is needed to clean up this process. Ideally, we&amp;rsquo;d skip the data transformation step entirely, and do all that work using Hugo&amp;rsquo;s templating system, but more on that later. Before we execute the pre-processing, however, there is a YAML schema validation step which executes to make sure that the freeform fields meet the expected range of values.&lt;/p>
&lt;p>In short, the process looks something like this:&lt;/p>
&lt;p>&lt;code>source-YAML -&amp;gt; YAML validation -&amp;gt; python preprocessing -&amp;gt; site-YAML -&amp;gt; Hugo generation -&amp;gt; deploy&lt;/code>&lt;/p>
&lt;h3 id="continuous-integration">Continuous Integration&lt;/h3>
&lt;p>First Vigil uses CircleCI for continuous integration and continuous delivery. Each commit to trunk goes to production. If a case YAML is edited, then those updates are reflected as soon as they are pushed to trunk or merged in via PR.&lt;/p>
&lt;p>To accomplish this, I&amp;rsquo;ve built a Docker image based on a minimal Alpine Linux distribution. The image includes Python, Hugo, and the gcloud command line utilities. I&amp;rsquo;ve configured CircleCI to use this as the build image, and I set up jobs to run the YAML validation, build the Hugo site, and upload those to the hosting bucket on Google Cloud. This job runs on commit triggers, as well as nightly. The nightly build is necessary to update the otherwise static &amp;ldquo;upcoming&amp;rdquo; cases page.&lt;/p>
&lt;p>One challenge with static site generation is how to test. I have very few tests because I have next to no code; the only testable code, really, is the python preprocessing. But one area where testing does prove super-valuable is in YAML validation. I want to enforce some schema on the YAML data, because the preprocessing is expecting certain fields and values. I also want to enforce enumerable values, e.g. in the Disposition field, so that it&amp;rsquo;s easier to search and understand the data.&lt;/p>
&lt;p>To do that, I use a YAML schema to validate against which is, unfortunately, somewhat verbose, and not entirely backwards compatible. A potential future solution might be to use something like &lt;a href="https://developers.google.com/protocol-buffers/">Protocol Buffers&lt;/a> which give me more control and more compatibility with less verbosity.&lt;/p>
&lt;h2 id="hosting-a-static-site">Hosting a Static Site&lt;/h2>
&lt;p>With respect to minimizing hosting costs, it&amp;rsquo;s expensive to run a compute instance 24/7, but it&amp;rsquo;s cheap to run a cloud storage bucket configured as a static site host. Google Cloud Storage makes it very easy to accomplish this.&lt;/p>
&lt;p>First, I set up a bucket with the name first-vigil.com. Google Cloud protects bucket names that can resolve to URLs; one must validate the domain by demonstrating ownership by copying a special key into a DNS TXT record. Once that&amp;rsquo;s done, you can set access privileges to the bucket, either on a per object or per bucket level. By giving &lt;code>allUsers&lt;/code> permission for &lt;code>Storage Legacy Bucket Reader&lt;/code>, the open internet can see the item without being able to list directory contents.&lt;/p>
&lt;p>However, this presents a problem: static hosting with Google Cloud Storage by default does not use TLS, and has no capabilities for managing a certificate. Even though First Vigil retains no users, session, or IP information anywhere, using &lt;a href="https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https">HTTPS is still important&lt;/a>. It is in my interest to protect users' communications, even if I&amp;rsquo;m not using cookies, logins, or any other form of tracking.&lt;/p>
&lt;h3 id="security-by-design">Security by Design&lt;/h3>
&lt;p>If I want to design for security, I need to enable a more robust solution. But I still didn&amp;rsquo;t want to incur the overhead of dealing with maintaining and paying for even a small compute instance. Thankfully, Google Cloud&amp;rsquo;s Load Balancer solves my worries, almost.&lt;/p>
&lt;p>To set this up, I create a Load Balancer instance. The Load Balancer consists of three components: a front-end, which is visible to the internet, a back-end, which is visible only inside Google Cloud, and host and routing rules. I can further configure the Load Balancer to be auto-scaling without the headache of managing a Kubernetes cluster myself.&lt;/p>
&lt;p>The Load Balancer backends allow you to specify either a backend bucket or service. I set up three backend buckets: one for First Vigil, one for HowHateSleeps, and one for the combined data lake. For backend buckets, there&amp;rsquo;s no need to specify a healthcheck or anything else; they&amp;rsquo;re just there. Next, I set up a static IP for each site. I&amp;rsquo;ll use these in the front-ends to ensure I can handle both HTTP and HTTPS traffic.&lt;/p>
&lt;p>On the frontend, I set up four front-ends: two each for First Vigil and HowHateSleeps. Note that the data lake doens&amp;rsquo;t get a front-end. More on that in a second. Each site has an HTTPS and an HTTP front end, each of which point to the static IP set up earlier. The HTTPS frontend also handles the SSL certificates, which I let Google manage. I configure certificates for the sites with no subdomain (e.g. &lt;code>first-vigil.com&lt;/code>) and for the static data lake subdomain (&lt;code>static.first-vigil.com&lt;/code>).&lt;/p>
&lt;p>Finally, I configure routing rules. I set up routing filters so that &lt;code>static.*&lt;/code> goes to the data lake backend, whereas all other traffic goes to the appropriate Cloud Storage backend. With this set, I can change my DNS routing to point to my static IP and I&amp;rsquo;m up and running. Both HTTP and HTTPS traffic should work.&lt;/p>
&lt;h3 id="downside-of-this-approach">Downside of this Approach&lt;/h3>
&lt;p>There is one big downside: by enabling HTTP traffic, I&amp;rsquo;m not helping add to the overall security of the internet. In an ideal world, I would instead configure an HTTP-to-HTTPS redirect. This is not so hard with Load Balancer, one can find &lt;a href="https://blog.realkinetic.com/http-to-https-using-google-cloud-load-balancer-dda57ac97c?gi=e6afba84b4bd">a good tutorial&lt;/a> online.&lt;/p>
&lt;p>However, this approach—redirecting with an nginx instance in Load Balancer—simply does not work when using backend buckets. There is no way that I could find to selectively route using the forwarding rules. I would need to configure this within a running backend service. This is because the forwarding rules are URL based and cannot see the scheme.&lt;/p>
&lt;p>Furthermore, not enabling HTTP is a poor option. Sometimes, social media sites choose to link to the &lt;code>http://&lt;/code> domain if you don&amp;rsquo;t specify &lt;code>https&lt;/code> explicitly. This leads to 404 errors because the load balancer has no path for those requests.&lt;/p>
&lt;h2 id="first-vigils-future">First Vigil&amp;rsquo;s Future&lt;/h2>
&lt;p>Clearly, First Vigil is stretching the capabilities of bucket-hosted static site generation. I am rapidly needing to manage the data in a better way; with 300+ cases and counting, it may be time for a database solution.&lt;/p>
&lt;p>First Vigil also lacks some filtering and searching functionality that I&amp;rsquo;d really like to include. The entire site structure is due for an overhaul: better mobile-friendly displays, better aggregation of cases, and better unstructured data document management are all necessary.&lt;/p>
&lt;p>This may mean that I need to get more creative in how I host First Vigil, or it may simply mean that I need a better tooling system for generating the static pages. I maintain that it is nonsensical to dynamically generate content that doens&amp;rsquo;t change more than a handful of times per day, and static sites keep compute time to a minimum and can even allow CDNs to do a lot of the heavy lifting.&lt;/p></description></item><item><title>Charlottesville attacker's Twitter account included praise for Hitler (Daily Dot)</title><link>https://www.dailydot.com/layer8/james-fields-twitter-account/</link><pubDate>Mon, 22 Jul 2019 12:10:00 -0500</pubDate><guid>https://emilygorcenski.com/post/charlottesville-attackers-twitter-account-included-praise-for-hitler-daily-dot/</guid><description>&lt;p>I uncovered James Fields' Twitter history in court documents and provided a statement for this excellent writeup in the Daily Dot.&lt;/p></description></item><item><title>Calm Technology</title><link>https://emilygorcenski.com/post/calm-technology/</link><pubDate>Wed, 10 Jul 2019 22:45:32 +0200</pubDate><guid>https://emilygorcenski.com/post/calm-technology/</guid><description>&lt;p>Amber Case studies humans and computers and how humans interact with computers. Some years ago I had the chance to hear her speak, and was moved by how she described our interface patterns with computers and computing, and how she accurately and adeptly assessed the cycles of computing trends in the industry. I finally got around to reading her book, &lt;em>Calm Technology&lt;/em>, and have found it useful in my professional experiences.&lt;/p>
&lt;p>&lt;a href="http://shop.oreilly.com/product/0636920039747.do">&lt;em>Calm Technology&lt;/em>&lt;/a> is a book about how humans can and should interact with computers. I found the book to be not only a thought-provoking look at how to design technology for people, but also a fascinating historical look at a somewhat-forgotten element of computing history. Starting with Xerox PARC (Palo Alto Research Center) and the work done there on computing in the 1990s, Case starts by walking us through the waves of how we &lt;em>structure&lt;/em> computing. The computing revolution first featured mainframes—centralized computing with connected terminals—before switching to the era of the personal computer. The cycle has reset as we move to cloud-native computing with mobile devices usurping the PC, though edge computing is moving us back again the other direction, with distributed computing being the next cutting edge. Whatever this means, what we can be sure of is that the number of devices is going to outnumber the number of people by 5-to-1, or more. So how do we plan for a world with 50+ billion devices? What will be our bottlenecks?&lt;/p>
&lt;p>Case&amp;rsquo;s answer to this is to look back at an earlier era of computing, when the folks at PARC began studying how people interact with computers in a meaningful way. With so many devices, they posited, we&amp;rsquo;d not be limited by storage or memory or processing power or bandwidth, but by human attention. How, when one device is capable of completely monopolizing our attention, are we supposed to live in a world with many devices per-person? The solution, she argues, is to intentionally design technology that respects human attention. Calling this &amp;ldquo;Calm Technology,&amp;rdquo; Case then spends her second chapter setting out several principles of calm technology.&lt;/p>
&lt;p>Among these seven principles are that &amp;ldquo;technology should require the smallest possible amount of attention&amp;rdquo; and &amp;ldquo;technology should amplify the best of technology and the best of humanity.&amp;rdquo; Using constructive examples of these principles in current practice, such as status lights on power plugs and colored indicators to compress information into rapidly-decoded passive indicators, she describes how technologists can and should think about designing for human intention. In particular, she spends significant time discussing speech and voice interfaces. She finds voice to be generally disruptive and problematic, arguing that voice interface requires too large a percentage of our cognitive capabilities to operate properly.&lt;/p>
&lt;p>Her third chapter spends more time on these patterns, discussing everything from how to use lights to indicate status or meaning, to the tactile sensations of things like car stereo knobs. She discusses the contextual importance of things like status shouts—notification patterns for communicating critical and time-sensitive information, and how these should not be overused. Importantly, she discusses two under-utilized modes of communication: haptic feedback and ambient feedback. Both of these means of communication can give the user important information and can deliver it privately. I&amp;rsquo;m intrigued by these options, not least because notification saturation is an all-too-familiar pattern in my life; I&amp;rsquo;d like to see designers make better use of these modes and I&amp;rsquo;d like to see environments that use AI and machine intelligence to create more contextually-aware spaces.&lt;/p>
&lt;p>Case&amp;rsquo;s fourth chapter provides a useful set of tools to evaluate technology design for its adherence to the principles of Calm Technology. These involve useful matrices and metrics for assessing technology design, and this flows nicely into her fifth chapter which discusses how to move an organization to one that embraces the phiolosophy. These chapters are extremely practical, perhaps too practical for just reading straight-through. Chapter 4, in particular, is a good interactive set of exercises. I&amp;rsquo;m curious to engage with some of these exercises with a designer at some point, and to see how I, as a data scientist, could design for these principles.&lt;/p>
&lt;p>All-in-all, I think that the book is a useful and clever look at technology design. I think the book could stress better the importance of getting things right, and how non-calm technology can permanently damage its relationship with the user by being overly antagonistic and having no chill. How many of you have deleted an app that won&amp;rsquo;t respect your notification load? The book also needs some editorial touch-ups. Some of the chapter sections could flow better, and there are definitely copy-editing mistakes. But for a short book that makes you think a little about how we use technology in a holistic manner, I think it&amp;rsquo;s worth reading at least the first three chapters, which are short enough to do on a morning commute or two.&lt;/p></description></item><item><title>The curse of the data lake monster</title><link>https://www.thoughtworks.com/insights/blog/curse-data-lake-monster</link><pubDate>Fri, 07 Jun 2019 10:19:00 +0200</pubDate><guid>https://emilygorcenski.com/post/the-curse-of-the-data-lake-monster/</guid><description>&lt;p>My wonderful colleagues Lucy and Kiran wrote a wonderful blog post about anti-patterns in Data Lake projects.&lt;/p></description></item><item><title>The feds need to up their game against domestic extremists, say critics</title><link>https://www.nbcnews.com/politics/justice-department/feds-need-their-game-against-domestic-extremists-say-critics-n1006001</link><pubDate>Wed, 15 May 2019 17:31:00 +0200</pubDate><guid>https://emilygorcenski.com/post/the-feds-need-to-up-their-game-against-domestic-extremists-say-critics/</guid><image><url>https://emilygorcenski.com/photo-gallery/media/190515-neo-nazi-rally-california-cs-925a_77e0c361b1ef13d0797b964f8cb82675.nbcnews-fp-1200-630.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/media/190515-neo-nazi-rally-california-cs-925a_77e0c361b1ef13d0797b964f8cb82675.nbcnews-fp-1200-630.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/media/190515-neo-nazi-rally-california-cs-925a_77e0c361b1ef13d0797b964f8cb82675.nbcnews-fp-1200-630.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/media/190515-neo-nazi-rally-california-cs-925a_77e0c361b1ef13d0797b964f8cb82675.nbcnews-fp-1200-630.webp" width="600"/></media:content><description>&lt;p>I was interviewed by NBC&amp;rsquo;s Anna Schecter to discuss how white supremacist domestic extremists are being handled by law enforcement.&lt;/p></description></item><item><title>Facing White Supremacy After Brexit</title><link>https://emilygorcenski.com/post/facing-white-supremacy-after-brexit/</link><pubDate>Sun, 05 May 2019 10:00:00 +0100</pubDate><guid>https://emilygorcenski.com/post/facing-white-supremacy-after-brexit/</guid><description>&lt;p>On April 24, 2019, I joined a panel hosted by the Mile End Institute at Queen Mary University in London to talk about white supremacy after Brexit and what that means for British politics going forward. I am neither British nor an expert on British politics, but I was pleased to offer a voice discussing the international ties of white supremacist organizing and the influences that has on shifting mainstream political discouse in the United Kingdom.&lt;/p>
&lt;p>I joined Drs. Omar Khan, Maya Goodfellow, Olivia Rutazibwa, and Clive Gabay at an event hosted by the &lt;a href="https://www.qmul.ac.uk/mei/">Mile End Institute&lt;/a> at Queen Mary University of London in late April to discuss the impact of Brexit on white supremacy and vice-versa. I rather enjoyed &lt;a href="https://www.qmul.ac.uk/history/news-and-events/items/mile-end-institute-facing-white-supremacy-after-brexit-politics-as-usual.html">this event&lt;/a>, particularly hearing the extremely deep personal and academic experiences from the other panelists. Brexit is a complex topic, and both the causes and effects of Brexit have manifold interactions with white supremacist politics generally, with significant secondary and tertiary effects that cannot easily be reduced to soundbite-level understandings.&lt;/p>
&lt;p>My own contribution to the panel, as a non-academic and a non-expert on UK politics, was to highlight the international ties of white supremacist organizing and how they interact with the ongoing Brexit narratives. Dr. Khan pointed out, with a bevy of detailed and perhaps worrisome statistics, that although the Brexit campaign was fueled in part by a racist fear of the other, Leavers are not themselves innoculated from troubling opinions on race and entitlement. Dr. Goodfellow spoke deeply about her experience studying anti-immigration sentiment and racism.&lt;/p>
&lt;p>I was particularly interested in Dr. Rutazibwa&amp;rsquo;s experience as a Rwandan Flemish Belgian woman who moved to the UK because, in her words, &amp;ldquo;the racism in the UK was &amp;lsquo;better.'&amp;rdquo; It&amp;rsquo;s true that nationalist sentiments—including deeply racist nationalist sentiments—are not unique to the English-speaking world, though by simple factors of language accessibility and population size, many of those issues do not rise to the same degree of popular awareness.&lt;/p>
&lt;p>For my own remarks, my intention was to draw the connections between Tommy Robinson, the popular far-right UK figure, and Generation Identity, an international far-right organization linked to both the Christchurch massacre as well as the Unite the Right violence in Charlottesville. We must look to the ways that far-right figures manipulate the core ideas of free speech and incitement and operate with a degree of connectedness to far-right terror that would be intolerable if they were promoting, for instance, jihadist extremism. Robinson and his ideological colleague Martin Sellner would have &lt;a href="https://en.wikipedia.org/wiki/Most-wanted_Iraqi_playing_cards">playing cards&lt;/a> if we treated white supremacist terror in the same way we treat fundamentalist Islamic terror.&lt;/p>
&lt;p>I will not attempt to summarize the words of my co-panelists, but rather simply link directly to &lt;a href="https://www.youtube.com/watch?v=yjJBqYdAmPw">the video of the event&lt;/a>. A transcript of my own remarks is presented below.&lt;/p>
&lt;h2 id="transcript">Transcript&lt;/h2>
&lt;h3 id="opening-remarks">Opening Remarks&lt;/h3>
&lt;p>I suppose I&amp;rsquo;m next. I guess I&amp;rsquo;ll start by saying that I&amp;rsquo;m probably the least credentialed person on this panel. I am not an academic in this domain, but I do consider myself an activist and a researcher. By training, I am a data scientist. I&amp;rsquo;m from Charlottesville, Virginia, although now I live in Berlin, Germany, which gives me the unique, perhaps, experience of fleeing &lt;em>to&lt;/em> Berlin to flee Nazis. But it is that work that I have done in Charlottesville, and that training I have as a technologist and a data scientist, that has led me to continue my activism in the counter-white supremacy movement in the United States and internationally, from the relative safety of a city that has seen this all before.&lt;/p>
&lt;p>One of the things that people… when they think about Charlottesville, when they don&amp;rsquo;t really know the city itself, they don&amp;rsquo;t understand that the event that made the headlines around the world, called Unite the Right (which was very on point in terms of the naming) was not the first event in Charlottesville with white supremacy. It was not even the first event that year in Charlottesville with white supremacy. In fact, it was the fourth event in Charlottesville that year when it comes to violent white supremacy, and it also was not the last. It was the most violent and the one that gathered the most headlines, but lost in that narrative, when we focus on the tiki torches and the car attack and the President&amp;rsquo;s comments about &amp;ldquo;very fine people on both sides,&amp;rdquo; are the efforts that we went through as a community, as activists, to try to prevent that from happening.&lt;/p>
&lt;p>There was a tremendous amount of work that was done leading up to the event in an effort to get the authorities—in this case, the city government and the city police, along with the state police—to deny the permit for the rally and prevent it from going on. One of the ways that we, as activists, tried to shut this rally down before it started, was by exposing many of the violent threats, the rhetoric, and the hate speech, which crossed the border from the American standard of tasteless but legal speech into imminent threats of violence. Unfortunately, our warnings fell on deaf ears, and it was even true that six weeks before the event I was able &lt;a href="https://twitter.com/EmilyGorcenski/status/879738730894036993">to name Vanguard America accurately&lt;/a> as an organisation that would make a terrorist attack. Of course, James Fields was marching with a Vanguard shield shortly before he committed the terror attack. The follow-up to that, when we analysed what went wrong and we read the whitewashed report of the performance of the city and state police in regards to the event, was that it was clear the authorities weren&amp;rsquo;t going to protect us; and if we wanted to do anything to prevent another Charlottesville from happening, we had to amplify our efforts as activists to engage with the media and to raise awareness around white supremacy.&lt;/p>
&lt;p>This sort of effort was boosted by the fact that anti-fascist activists had effectively infiltrated these organising circles and chatrooms. Not only did we have organiser chats from the Charlottesville event, but we had organising chats for events and groups all around the world, from Canada to South Africa to Europe. What this has done is enabled us, through Unicorn Riot—it&amp;rsquo;s an independent media collective—&lt;a href="https://discordleaks.unicornriot.ninja/discord/">they were able to publish these messages&lt;/a>. I believe there&amp;rsquo;s over 4 million messages now, and that might be an underestimate, of white supremacists organising around the world. I was able to do that along with several other researchers to expose, name and shame many of the people who conspired to commit violence and terror at the rally.&lt;/p>
&lt;p>It was about a year ago that one of the biggest exposées was announced, where I had named an individual by the name of &lt;a href="https://www.aljazeera.com/news/2018/04/neo-nazi-tyrone-exposed-marine-180413104204554.html">Michael Joseph Chesny&lt;/a> as a key organiser of the rally. He was a transportation coordinator and was listed &lt;a href="https://twitter.com/EmilyGorcenski/status/1110843200422449152">in an organisational chart&lt;/a>, near the top of the Unite the Right planning. His comments were unique and interesting, because in the planning chatrooms, in the channel for &amp;ldquo;legal questions,&amp;rdquo; &lt;a href="https://discordleaks.unicornriot.ninja/discord/view/246067?q=">he asked whether it was in fact legal to run down and kill protesters&lt;/a> if they were standing in the streets. Of course, this happened before James Fields did exactly that. What gets really disturbing is that Michael Chesney was a United States Marine. He was an explosives technician, based out of Cherry Point Naval Air Station in North Carolina. And what led me to him was that he was promoting a very unique logo in the chatrooms, one that only white supremacist researchers in the United States would be familiar with. That logo has now gone international because it is the logo of Generation Identity, which as you might know has connections throughout the UK, Europe and around the world, and is led by a man by the name of Martin Sellner in Austria. Sellner made headlines recently, when &lt;a href="https://www.euronews.com/2019/03/26/house-of-austrian-far-right-activist-raided-after-links-with-christchurch-attacker-uncover">it was revealed that the Christchurch, New Zealand shooter had donated a large sum of money to him&lt;/a> and had shared some of those symbols, and shared some of the Generation Identity propaganda in his manifesto.&lt;/p>
&lt;p>So what we&amp;rsquo;ve seen through all of this is that the organising and infiltration work that has been done to disrupt white supremacy locally in Charlottesville has had ripple effects throughout the world; and the warnings of violence that I personally gave to the city council on a July night in 2017 still ring true, as we watch terrorism happen all around the globe, by the same very networked group of people. Now, I&amp;rsquo;m not an expert on British politics. I&amp;rsquo;m not an expert on Brexit. But what I do know is that in March of last year, &lt;a href="https://www.bbc.com/news/blogs-trending-43393035">Martin Sellner was denied entry into the UK&lt;/a> to give a speech. Instead &lt;a href="https://www.hopenothate.org.uk/2018/03/12/tommy-robinson-speak-hyde-park-sunday/">he gave that speech to Tommy Robinson, who then delivered it at Speakers&amp;rsquo; Corner&lt;/a>. So it&amp;rsquo;s true to say that the American way of dealing with white supremacy is, in a sense, unique to American politics; but it is also true to say that this group of extreme nationalists is perhaps one of the most international activist groups in the world.&lt;/p>
&lt;p>So with that, I will conclude by saying that the effort that I&amp;rsquo;ve been undertaking in the time since Charlottesville has been to name, shame and expose these white supremacists by linking them to violence and crime, and trying to stitch together the narratives that the media are not very good at putting together themselves. So with that, I hope that we can continue this work and that there&amp;rsquo;s a lot of opportunity for crowdsourcing in this domain. Thank you very much.&lt;/p>
&lt;h3 id="qa">Q&amp;amp;A&lt;/h3>
&lt;p>&lt;strong>Q1: Recently, there was a controversy around &lt;a href="https://www.theguardian.com/politics/2019/apr/14/comparing-erg-to-nazis-not-strong-enough-says-david-lammy">David Lammy kind of having this outburst and invoking the 1930s&lt;/a>, the Nazis and I believe specifically 1938 in Czechoslovakia. I&amp;rsquo;d just be interested to know whether you think it&amp;rsquo;s helpful to raise the spectre of World War II, the Holocaust etc. at this juncture, or if it does more harm than good.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q2: While being mindful of the encouragement to think away from avowed and explicit white supremacy, to think about how white supremacy is interlaced with whiteness and the centre and so forth, it&amp;rsquo;s notable that over the last few years, there&amp;rsquo;s been an increase in avowedly and explicitly white supremacist activism on university campuses and in our classrooms. I was wondering what the panel think about how we, as teachers, as students, as members of universities, respond to and deal with that growth.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q3: I have a couple of questions, if I may. The first one is a general question to anyone who wishes to answer it. It&amp;rsquo;s regarding the idea of the rate of change in immigration, I have read that it is a valid fear that people have that things are changing too quickly. I think it was Tony Blair&amp;rsquo;s government that initiated that explosion of immigration that occurred in his time. That&amp;rsquo;s the thing that some people suggest as the reason why people have developed these ill-feelings towards immigration. If that is true, is it more a failure of our politicians to address that in an honest way and then deal with it accordingly that is contributing to this problem? I&amp;rsquo;d like your views on that. Secondly, a question for Emily regarding your database. Are you finding that the incidents of far-right extremism are becoming more and more violent as time goes on?&lt;/strong>&lt;/p>
&lt;p>I guess I&amp;rsquo;ll answer the very specific question first, and then I&amp;rsquo;ll try to combine your question about the campus activism with the Holocaust or World War II comparisons, because I think there&amp;rsquo;s something relevant connecting those. The first answer is… Is white supremacist crime becoming more violent? The answer to that is we don&amp;rsquo;t know. The reason we don&amp;rsquo;t know is that in America we don&amp;rsquo;t track—there is no centralised source of records for hate crimes. Every state in America has a different hate crime designation. They get applied differently, and &lt;a href="https://www.wlox.com/2019/02/04/calculating-hate-federally-mandated-count-leaves-out-untold-number-crimes-america/">it is often down to the reporting of the actual police officer who makes the arrest to determine whether or not something becomes a hate crime&lt;/a>. What that has left us with is trying to assemble information from news reports and newspapers, which is often no more than three or four paragraphs and is written by beat journalists that don&amp;rsquo;t have knowledge of white supremacist groups organising, or anything like that, so it&amp;rsquo;s hard to find that information. For that reason, &lt;a href="https://first-vigil.com">First Vigil&lt;/a>, the project that I&amp;rsquo;m running, only looks at cases going back to 2016, because it focuses on open court cases. If I ever get through my backlog of open court cases, I&amp;rsquo;ll extend it backwards. So if all of the Nazis out there could stop doing crimes for like a year, that&amp;rsquo;d be great. So it is very difficult to answer and rate the violence. I mean, we can look at some of the recent terror attacks that have happened in the past couple of years that haven&amp;rsquo;t happened in, say, the early 2010s, but then we can look back to the Oklahoma City bombing in 1993, so it&amp;rsquo;s really hard–or is it 1996? I forget. It&amp;rsquo;s hard to say.&lt;/p>
&lt;p>Regarding the campus activism and the comparisons to World War II, I do think that the comparisons to World War II are tricky but apt, and the reason that they&amp;rsquo;re apt is not so much to serve as a warning sign of where we could be going. Even at my most pessimistic, I do not think that we&amp;rsquo;re going to be ending up in the same place. But the reality is that in my country, we are putting children in cages in Walmarts, and so it is deeply uncomfortable in these comparisons. Where those comparisons I think are super valid is to spurn people to think about what they would have done if they were alive during that time, and to exhort them to act in that way now. That means doing things that they&amp;rsquo;re uncomfortable with, that means doing things that might even be illegal, such as blocking the street, or staging an unpermitted protest, or other things that I won&amp;rsquo;t say on the record.&lt;/p>
&lt;p>That connects this notion of campus activism to white supremacy. The reason that campus activism has been such a key driver is because universities have long had a reputation for being a bastion of free speech, and white supremacists use and manipulate the principles of free speech to share their message, to radicalise. And while I&amp;rsquo;m a very staunch free speech advocate, we have to recognise that the language they use is a language of incitement to violence, and just because they&amp;rsquo;re not literally saying &amp;ldquo;I want you to go stab that person,&amp;rdquo; doesn&amp;rsquo;t mean that they&amp;rsquo;re not telling their followers to go stab that person. So when we think about campus activism, we need to do better at educating our administrators on campuses on what these groups are, to highlight the connections that they have to violence, and to allow them and empower them to make a decision to act in the interests of public safety, which often means denying that platform, because what will happen is violence will break out. So I think that part of it is hard to handle on an individual basis, but it is something that we have to handle on a policy basis, and make the choice of whether we want to be the people that are going to stand idly by while someone else drums up the next terror attack, or if we&amp;rsquo;re going to try to do everything we can to stop it.&lt;/p>
&lt;p>&lt;strong>Q4: Today, British Muslims became an important target for white supremacist violence and racism. I think that apart from Dr Olivia, the issue was not really raised, and this is not only an academic debate, it is also in the national and international political scene. So my question is, what really are the reasons of this misrepresentation of this ethnic group? Is it more because we&amp;rsquo;re uncomfortable speaking about the subject, or is it more that we don&amp;rsquo;t consider it important enough to actually tackle the issue?&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q5: We talked about the logic of white supremacy and I think we need to go a bit more into depth about the nature of white supremacy. Have you heard anything new that we have not heard before? Like you have said before, I don&amp;rsquo;t really think this is anything new, and also I agree about the fear of immigrants and that situation, but if we look at South Africa with Orania, an all-white state in the heart of South Africa, can this really stem from a fear of migrants? I mean, the black South Africans are not migrants in their own country. The very foundations of America and Australia were built on this very same idea, so I just wanted to quickly ask, without getting rid of these symbols of the colonial flag which represents genocides of the Aboriginals and everything, can we really move forward from a decolonised narrative?&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q6: I&amp;rsquo;m pleased to see and hear some mention of the Second World War. I only missed it by a few months, but I suffered severe prejudice afterwards because I started school with a strange Hungarian name, while memories of a war fought against &amp;ldquo;Huns&amp;rdquo; were still very raw. Now, I have certain cynicism about educating people out of racialism, because you never know where the next egg is going to come from. And also, I don&amp;rsquo;t think it&amp;rsquo;s been very successful. Austria was always considered as being more German than the Germans – well, it was Hitler&amp;rsquo;s homeland – and there were very strong efforts made through the educational system to denazify the country. Now, in 1968, I had the ignominy of being marched out of a cinema in Richmond, because the Austrian au pair, who I&amp;rsquo;d taken with me, wouldn&amp;rsquo;t sit down and stop booing Julie Andrews in The Sound of Music, for the simple reason that she regarded it as her national duty to deny that her fellow nationals did not 100% support Hitler taking over their country, and she had been right through the denazification process and everything. So how you can guarantee that anything with education is not going to be counterproductive, I do not know, and I hope the panel have got some ideas on that.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q7: I wanted to speak up on something Olivia said but this is really for everyone, about comparison and the need for more comparison, which I&amp;rsquo;m very strongly in favour of. I think it&amp;rsquo;s very important. Two things, really: one is that it seems that in the academic literatures, there seems to be more comparison that isn&amp;rsquo;t filtering through to popular conceptions. I&amp;rsquo;m thinking particularly of comparison of anti-semitism and things like islamophobia, which are actually quite prevalent across academic literatures, but have become very hard to talk about. How do we talk about those more? And the second thing is, how do we move beyond the kind of rose-tinted comparisons that you mentioned, which I think are very common to many of us who travel across countries and feel immediate impressions that things are different, but those impressions might not really reflect realities. So just general thoughts on comparisons and how they are to be conducted and used.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q8: I think the question is particularly for Emily, but anyone who wants to take it up can. I wanted to ask what role, or what are the problems potentially with using the language of crime and terrorism in confronting the far-right? Because obviously the whole lexicon of crime and terrorism is a racialised discourse, and yet it obviously has also a moral purchase with people, and in technical legal terms, a lot of the acts committed in the name of white supremacy are crimes, and can be defined also as terrorism. So how can we strategically, or should we strategically engage with that lexicon, and what are the pitfalls of doing so?&lt;/strong>&lt;/p>
&lt;p>Thank you. I&amp;rsquo;ll keep this as quick as I can, but I do want to answer your question, because it&amp;rsquo;s excellent. One of the things, and this touches on education and some of the other questions, is there&amp;rsquo;s two sort of competing notions of how to be anti-racist. One of them is this theory of anti-discrimination, that we should treat all people the same regardless of their race, gender, sexuality or whatever. This is, at least in the American and some of the European traditions in law and scholarship, the prevailing mode. The other mode is anti-subordination, which is to say that it sort of embraces Desmond Tutu&amp;rsquo;s quote that &amp;ldquo;Neutrality in the face of injustice sides with the oppressor.&amp;rdquo; Education has been, at least over the past 20 or 30 years, mostly focused on anti-discrimination going all the way back to primary school, and so we have embraced that as the way that we&amp;rsquo;re supposed to properly be non-racist. To which I would say that we need to start looking at anti-subordination, and thinking in terms of racism not as the application of differences, but the understanding of power dynamics. And this talks about anti-semitism, the comparison&amp;rsquo;s there, also with anti-immigration sentiment. I do have a project I&amp;rsquo;m working on that identifies… We&amp;rsquo;ve identified nine principal axes that exist in English language media through which people are radicalised, but I can talk about that offline later.&lt;/p>
&lt;p>To briefly address the challenges, morally and otherwise, of dealing with crime and terrorism as a hook to combat white supremacy, I agree with that take. My phone says ACAB, which stands for All Colours Are Beautiful, obviously. But it is problematic to frame—to use the justice system, which is oppressive, and to use prison and policing, which is oppressive—as the means by which we are going to solve white supremacy. So it is a challenge to do that, but what I have done with the First Vigil project is look at how white supremacist communication is being done. And that is that they are trying to paint themselves as victims and not oppressors, that they are trying to co-opt the language of the left, and that they are trying to frame themselves as innocent. So what First Vigil is intended to do is to directly annihilate that narrative by showing that even if we, without any radical changes to our society, want to embrace our current system of justice and law, that they are still not within the bounds of it.&lt;/p></description></item><item><title>Live video of New Zealand shooting puts tech on defensive</title><link>https://thehill.com/policy/technology/434346-live-video-of-new-zealand-shooting-puts-tech-on-defensive</link><pubDate>Sat, 16 Mar 2019 05:52:00 -0500</pubDate><guid>https://emilygorcenski.com/post/live-video-of-new-zealand-shooting-puts-tech-on-defensive/</guid><description>&lt;p>I was interviewed for this piece in The Hill about the Christchurch massacre and tech&amp;rsquo;s role in it.&lt;/p></description></item><item><title>2019 Weekly Recap: Weeks 8-9</title><link>https://emilygorcenski.com/post/2019-weekly-recap-weeks-8-9/</link><pubDate>Sat, 02 Mar 2019 19:40:00 +0100</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-weeks-8-9/</guid><image><url>https://emilygorcenski.com/img/stuttgart.jpg"</url></image><enclosure url="https://emilygorcenski.com/img/stuttgart.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/img/stuttgart.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/img/stuttgart.jpg" width="600"/></media:content><description>&lt;p>Another multi-week recap, but that&amp;rsquo;s ok. I&amp;rsquo;m moving towards greater regularity here, but I&amp;rsquo;m not quite there.&lt;/p>
&lt;p>These two weeks have been all about settling! I did so many home things! Also, my partner visited! And I took time off work! I finally got internet set up in my flat—only took six months—and I bought the first piece of furniture for my living/study/work studio space. Pictures below. I&amp;rsquo;m investing in nice furniture for that room because I want it to be a space that brings me comfort and joy. Ikea flat pack furniture is great but it does not bring me joy.&lt;/p>
&lt;p>My partner and I went to Stuttgart for a day. It was a random blind booking trip and it was nice to see a city that had some inkling of topography to it. Berlin is just SO FLAT. I like Stuttgart, it&amp;rsquo;s a cute city that has all those German charms, doesn&amp;rsquo;t feel overwhelming. I&amp;rsquo;m discovering more and more that European seem to have as default all the things in America that we&amp;rsquo;re trying to build towards as exemplars. Every city I&amp;rsquo;ve visited has its pedestrian zone commerce area. It makes me realize just how not-special Charlottesville&amp;rsquo;s Downtown Mall really is in the bigger picture.&lt;/p>
&lt;p>With some needed time off work, I&amp;rsquo;m ready to continue working on side projects. First Vigil has been pretty busy these past couple of weeks; there&amp;rsquo;s been a lot of court activity to monitor. The case of &lt;a href="https://www.theatlantic.com/ideas/archive/2019/02/christopher-hasson-was-inspired-breivik-manifesto/583567/">Christopher Hasson&lt;/a> has been particularly disturbing.&lt;/p>
&lt;p>I still find my mental health improving, as evidenced by the number of things I&amp;rsquo;ve been putting on and crossing off of my to-do lists. I&amp;rsquo;m looking forward to the Spring.&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;p>I wasn&amp;rsquo;t very online these past two weeks! That&amp;rsquo;s good! As a result I don&amp;rsquo;t have anything to digest here. It&amp;rsquo;s not that I didn&amp;rsquo;t read anything, it&amp;rsquo;s that I didn&amp;rsquo;t dive into anything enough to take notes.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>&lt;strong>DataCamp&lt;/strong>&lt;/p>
&lt;p>I didn&amp;rsquo;t make any real progress here, though my experience working through the most basic python data science courses has inspired an upcoming blog post.&lt;/p>
&lt;p>&lt;strong>Lingoda&lt;/strong>&lt;/p>
&lt;p>I had to put my trial on hold. Frustratingly, there was a time-zone issue so all the classes I signed up for I had to cancel. I&amp;rsquo;m pretty confident that I&amp;rsquo;m at an A1 level in German right now anyways, so I&amp;rsquo;m going to do some self-study to top myself off there before committing money to a course. I&amp;rsquo;ll start with A2 level this month.&lt;/p>
&lt;p>&lt;strong>Coursera&lt;/strong>&lt;/p>
&lt;p>I&amp;rsquo;m enjoying the Introduction to American Law course I&amp;rsquo;m taking there, but it is really very, very superficial. I&amp;rsquo;ve learned some things, but I think I&amp;rsquo;d like to take a course that had some more rigorous expectations of engaging with the material.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I did some reading this week!&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>) &lt;small>&lt;em>Progress: 11%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 38%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.springer.com/de/book/9783319110790">&lt;em>Linear Algebra Done Right&lt;/em>, Sheldon Axler&lt;/a> (see my working progress &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>)&lt;small>&lt;em>Progress: 10%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>I&amp;rsquo;m giving a talk on &lt;a href="https://emilygorcenski.com/post/data-versioning/">Data Versioning&lt;/a> based largely on the same motivations as my blog post. I need to spend some time working on the First Vigil project board and catching up with folks in Berlin. I&amp;rsquo;m going to paint my new work studio, so I&amp;rsquo;m going to make sure to get to a hardware store at some point this week to get at least the basic supplies.&lt;/p></description></item><item><title>The Proud Boys: A Republican Party Street Gang (Political Research Associates)</title><link>https://politicalresearch.org/2019/02/28/proud-boys</link><pubDate>Thu, 28 Feb 2019 17:12:24 +0100</pubDate><guid>https://emilygorcenski.com/post/the-proud-boys-a-republican-party-street-gang-political-research-associates/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/RTS149BD_Reuters_StephenLam_0.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/RTS149BD_Reuters_StephenLam_0.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/RTS149BD_Reuters_StephenLam_0.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/RTS149BD_Reuters_StephenLam_0.jpg" width="600"/></media:content><description>&lt;p>My article on the Proud Boys for Political Research Associates' &lt;em>Public Eye&lt;/em> magazine.&lt;/p></description></item><item><title>2019 Weekly Recap: Weeks 5-7</title><link>https://emilygorcenski.com/post/2019-weekly-recap-weeks-5-7/</link><pubDate>Sun, 17 Feb 2019 23:00:00 +0100</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-weeks-5-7/</guid><image><url>https://emilygorcenski.com/img/spandau.jpg"</url></image><enclosure url="https://emilygorcenski.com/img/spandau.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/img/spandau.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/img/spandau.jpg" width="600"/></media:content><description>&lt;p>It&amp;rsquo;s been too long since the last recap! I&amp;rsquo;ve been super busy. I&amp;rsquo;ll try to compress three weeks into this one post, and apologies if it runs a little long.&lt;/p>
&lt;p>One of the reasons I&amp;rsquo;ve been so busy in the past couple of weeks is because I had so much travel on my schedule. In Week 6, I traveled to London with my best friend and co-worker for an internal summit. It was a great opportunity to get data professionals and business professionals together to figure out exactly what the unique bits about managing data projects were. Data projects are a little bit different than conventional or deterministic software projects, and those small differences can lead to big challenges when trying to figure out how to navigate the project space. I&amp;rsquo;m extremely grateful that an international team wanted to put this together and learn more about it.&lt;/p>
&lt;p>The same week, I traveled to the Stuttgart area for work as well. This was the culmination of weeks of work. The Stuttgart area is absolutely gorgeous and it reminds me of home. Low-lying mountains and sprawling country fields and a gorgeous city, I&amp;rsquo;m hopeful I&amp;rsquo;ll be able to work in that area more in the near future.&lt;/p>
&lt;p>I&amp;rsquo;ve been pretty heads-down with work, but now that I&amp;rsquo;ve crossed a few major items off my to-do list I can start expanding to other activities. I&amp;rsquo;ve not been reading as much lately, so I&amp;rsquo;ll start refocusing on that this upcoming week. I&amp;rsquo;m trialing an online language course with &lt;a href="https://www.lingoda.com/">Lingoda&lt;/a>, so we&amp;rsquo;ll see how that goes. I do want to work towards certificates, and I&amp;rsquo;m willing to pay, but the curriculum mechanics aren&amp;rsquo;t immediately clear to me at the trial account level. It won&amp;rsquo;t let me &amp;ldquo;test out&amp;rdquo; of a chapter without doing the online sessions, but even at the A1.1 level there are 50 sessions (equating 50 hours of material), and the certificate doesn&amp;rsquo;t unlock until you have hit at least 90% completion. I haven&amp;rsquo;t really figured out how to align the curriculum to the pricing scheme. We&amp;rsquo;ll see.&lt;/p>
&lt;p>I&amp;rsquo;m also taking a very basic introductory course on American Law on Coursera. I figure now that I&amp;rsquo;ve been sued I should do some formal readings on the subject for the first time since high school.&lt;/p>
&lt;p>I&amp;rsquo;m slowly taking on more collaborators for &lt;a href="https://first-vigil.com">First Vigil&lt;/a> and starting to frame a vision for the project. I did manage to power through a ton of research backlog last week and I&amp;rsquo;m quite happy with that. I&amp;rsquo;ve also done some backlog organizing to prepare for collaborators and started tidying up the project.&lt;/p>
&lt;p>The weather in Berlin has been astonishing this weekend. It was up to 13 degrees, and I took the opportunity to get on my bike and explore. Friday of Week 7 there was a BVG strike so I rode into work. I don&amp;rsquo;t often see Berlin from the street level, and I am greatly looking forward to months of bikeable weather. As an aside, physical activity along with supportive environments and a whole lot of autonomy has been doing wonders for my mental health. I&amp;rsquo;m powering through to-do lists, learning, and healing. That feels good. I feel good about that. It&amp;rsquo;s what I came to Berlin for.&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;p>Allow me to take a moment to whine a bit. Most of what I discover I find on Twitter while using my phone. As a result, my workflow for this section is to use Twitter&amp;rsquo;s bookmark feature, which means I have to explicitly navigate to the mobile web version of Twitter while writing these posts. That&amp;rsquo;s not a huge barrier but it is an irritating break in the workflow. I head that Twitter is shipping Bookmarks to web soon, but good heavens can we hurry it up?&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.teenvogue.com/story/naturalized-citizens-live-in-fear-of-status-reversal">Naturalized Citizens Like My Mother Now Live In Fear of Status Reversal&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This is an article that I read a few weeks back but I wanted to revisit. Zoé, who is a sharp and incisive writer who I respect deeply, tells a personal story about the very real fears of immigrants who are in America legally. Speaking about her mother, she writes,&lt;/p>
&lt;blockquote>
&lt;p>She recalled a scene from her childhood: In the rain, a dog was riding inside a truck driven by a white man, and a Black worker was drenched in the truck bed. So the news in the United States, to her, was an example of how white Americans similarly care about dogs more than Black people.&lt;/p>
&lt;/blockquote>
&lt;p>I&amp;rsquo;ve told her this directly, but Zoé&amp;rsquo;s writing style is like watching a good chess game or a fencing match. She frames a story from multiple angles, all with clear direction but from various perspectives, and perhaps you can see the endgame and perhaps you can&amp;rsquo;t, but the cleverness is in how all of these parts are all fit together, finally coming together in a brilliant denouement.&lt;/p>
&lt;p>Zoé takes the story and relates it to Dylann Roof, the man who murdered nine at a bible study in Charleston. She references Operation Paperclip, the effort to bring Nazi rocket scientists to the US to extract their knowledge. And she addresses the empty privilege of being the model immigrant: exceptional and PhD-holding, a new land assessing deeming you worthy enough to exist (but never worthy enough to hold you in esteem). She brings this together to show how those factors all collude in modern America to create an everlasting culture of fear, where even naturalization is seen as unsafe if your skin isn&amp;rsquo;t white.&lt;/p>
&lt;p>I am an immigrant now, someone living and working in a country that is not my own. Yet though I am trans, and though I am visibly Asian, and though I am an outspoken activist, I will never feel this level of fear in Germany, even with its troubling upswell of anti-migrant violence, that Zoé and her family fear in America. Americans shoud feel ashamed. Freedom and fear cannot coexist.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.theguardian.com/technology/2019/jan/23/conspiracy-theories-internet-survivors-truth?fbclid=IwAR1y5vP_5-TZClLAASLiyBSWJi47WvlEym-q9bU53-lZDsvqJb1P7N_G31E">Trapped in a hoax: survivors of conspiracy theories speak out&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This is such an important piece. We live in a time of weaponized conspiracy theories and we often forget who the victims are. This article looks into their lives, the harm that was done, and the impunity with which the hoaxers have operated. I recall when the Parkland shooting happened, and a young nonbinary person was blamed for it even though he was hundreds of miles away.&lt;/p>
&lt;blockquote>
&lt;p>The first death threats landed via Facebook messenger by nightfall: “I hope someone throws you out of a rotary aircraft, you commie!” Another made a direct reference to the concert venue that employed him. “They knew where I worked, what I did. It just got me so afraid.”&lt;/p>
&lt;/blockquote>
&lt;p>It&amp;rsquo;s notable how the Pinochet reference, which has been popularized in part by my assailant, has entered the common right-wing discourse. The right is gleeful about murder and cares not for the truth. But that&amp;rsquo;s not the saddest part. The saddest part is how few people seem to care.&lt;/p>
&lt;p>Lenny Pozner lost his child at Sandy Hook and has dedicated himself to fighting conspiracy theories online. He shares how isolating that work is, something that that strikes a chord with me. Fighting back is perhaps the thing that requires the most support, and it is one of the parts of activism that receives the least.&lt;/p>
&lt;blockquote>
&lt;p>What shocks Pozner most, he says, was how alone he was when he began this fight. “I was the only one standing up to the hoaxers, and other than the loss of my son that was my biggest disappointment at the time.”&lt;/p>
&lt;/blockquote>
&lt;p>We have to do better by our movement and support those who are willing to take the fight to the people who want us dead.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blog.skyliner.io/you-cant-have-a-rollback-button-83e914f420d9">You Can’t Have a Rollback Button&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Data flows forward with time. Anyone who works with data knows this. Consequently, it becomes very difficult to roll back systems that depend on data, because we can&amp;rsquo;t roll back data. So how do we reconcile this with the principles of continuous delivery that say that we must be able to roll back to any point in history at any given point in time?&lt;/p>
&lt;p>The article doesn&amp;rsquo;t really offer a solution that works in a pragmatic data science sense, but sets a foundation for how we &lt;em>could&lt;/em> be thinking. We must always be moving forward, which means we must always be able to disable features and push the fixes upwards, not backwards. In a data sense, this means we ought to always have a knowable fallback model that offers acceptable performance. This is worth a blog post in and of itself, so perhaps I will find some time for that this week.&lt;/p>
&lt;h3 id="what-im-learning">What I&amp;rsquo;m learning&lt;/h3>
&lt;p>I&amp;rsquo;m doing a bunch of online courses!&lt;/p>
&lt;p>First, my company has an account with &lt;a href="https://www.datacamp.com/">DataCamp&lt;/a>. A lot of people want to learn data science and have asked for my opinions on the material, so I&amp;rsquo;m trying to power through them and assess them for their practical suitability. So far I&amp;rsquo;ve found it incredibly slow and tedious, though I am starting from the most basic level. If nothing else, it&amp;rsquo;s inspired me to put together some thoughts on intro-level Python knowledge.&lt;/p>
&lt;p>I&amp;rsquo;m doing a trial run of &lt;a href="https://www.lingoda.com">Lingoda&lt;/a> to explore online language learning to see if it&amp;rsquo;s worth it for doing a certificate. I&amp;rsquo;m almost definitely at the A1 level of German with everything except speaking, so maybe I&amp;rsquo;ll just commit to that even if it is excessively costly.&lt;/p>
&lt;p>I&amp;rsquo;m also using &lt;a href="https://coursera.org">Coursera&lt;/a> to take an Intro to American Law class. I studied some law back in high school and got sued, so it&amp;rsquo;s not like I&amp;rsquo;m ignorant to the matter, but some formal study is fun and refreshing. Plus, I learned that &amp;ldquo;tortfeasor&amp;rdquo; is a word so I&amp;rsquo;ll just be making fun of lawyers forever for that.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I made no progress with books this week :(.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>) &lt;small>&lt;em>Progress: 3%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 38%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.springer.com/de/book/9783319110790">&lt;em>Linear Algebra Done Right&lt;/em>, Sheldon Axler&lt;/a> (see my working progress &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>)&lt;small>&lt;em>Progress: 10%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>My boyfriend is visiting next weekend (!!) and I&amp;rsquo;m excited to spend this week prepping for a talk. I&amp;rsquo;m going to try to get some reading done and really buckle down on learning things. I want to start moving tech tasks off the board for First Vigil and hopefull start working on a new design.&lt;/p></description></item><item><title>Data Versioning</title><link>https://emilygorcenski.com/post/data-versioning/</link><pubDate>Mon, 11 Feb 2019 17:30:00 +0100</pubDate><guid>https://emilygorcenski.com/post/data-versioning/</guid><description>&lt;p>Productionizing machine learning/AI/data science is a challenge. Not only are the outputs of machine-learning algorithms often compiled artifacts that need to be incorporated into existing production services, the languages and techniques used to develop these models are usually very different than those used in building the actual service. In this post, I want to explore how the degrees of freedom in versioning machine learning systems poses a unique challenge. I'll identify four key axes on which machine learning systems have a notion of version, along with some brief recommendations for how to simplify this a bit.&lt;/p>
&lt;h1 id="putting-intelligence-into-the-stack">Putting Intelligence into the Stack&lt;/h1>
&lt;p>Consider the following: you run a large webservice on a JVM-based stack, and now you want to incorporate a machine learning model. You have data scientists, and they have spent some time doing the research, and now they are ready to deliver their work product: a proof-of-concept model built in R, and you have to implement this somehow. And maintain it somehow. When none of your data scientists are backend engineers and none of your backend engineers speak R.&lt;/p>
&lt;p>There are many open questions regarding applied data science in a modern software engineering environment:&lt;/p>
&lt;ul>
&lt;li>how do we test apps that include machine learning?&lt;/li>
&lt;li>how do we approach the user experience?&lt;/li>
&lt;li>how do we apply principles of things like DevOps and continuous delivery?&lt;/li>
&lt;li>how do we keep documentation up-to-date for a black box artifact?&lt;/li>
&lt;li>etc.&lt;/li>
&lt;/ul>
&lt;p>Most of these questions don't have an accepted answer in the way that we have accepted answers in the world of app development, for instance. Even big tech companies are stumbling here. There's a lot of discussion to be had here, but I want to focus on one element of one question with this post: &lt;strong>how do we accomplish continuous delivery with data science?&lt;/strong> I won't go into all the details of &lt;a href="https://continuousdelivery.com/">continuous delivery&lt;/a> in this post, but I'll call out a couple key principles that machine learning applications often stuble on: the requirement for continuous improvement, and the requirement to be able to roll back to any release at any point in time. To understand why, I want to focus on how machine learning applications differ from deterministic ones.&lt;/p>
&lt;p>When we build standard services and software, which I'll call &lt;em>deterministic&lt;/em>, we have the concept of a version. We build software, it implements features and has dependencies, both downstream and upstream, and it performs some task. For a given featureset and change history, we assign that software a &lt;em>version&lt;/em> according to some scheme (the scheme doesn't really matter, and some are better than others). When we change the code, we change the version. If we need to roll back the software, we can roll back to a previous incarnation of the source code and re-build and re-deploy. This is the basic principle, though it is not always as easy as I make it sound here.&lt;/p>
&lt;p>When it comes to machine learning applications, we have a big issue. The central artifact is usually a compiled model, which can be very large, and which has no notion of anything resembling a service architecture, dependencies, or anything else. It is essentially a ball of logic with inputs and outputs. Encoded within this artifact are several assumptions: it inherits the shape, support, and type of the dataset that trains it; it inherits the distribution function of the dataset that trains it (what I like to call the &lt;em>state of the universe&lt;/em>); and it often relies on the code or the frameworks that created it.&lt;/p>
&lt;p>In other words, a machine learning system is &lt;strong>Model&lt;/strong> + &lt;strong>Data&lt;/strong> + &lt;strong>Code&lt;/strong>. And each of these can and do change. Let's look at how those changes can occur.&lt;/p>
&lt;h2 id="understanding-models">Understanding Models&lt;/h2>
&lt;p>A lot of data science primers and writeups treat models as the artifacts of a machine learning approach, or sometimes the abstract method by which it works, but I think this it too specific and restrictive. Let's take another view, and permit me a moment of metaphysicality.&lt;/p>
&lt;p>The universe acts on data in some way. There are inputs, which get modified by a &lt;em>process&lt;/em>, which result in the output. The process could be some physical description, e.g. &lt;span class="math">\(F=ma\)&lt;/span>; it could be random, e.g. the decay of an atom; it could be undiscoverable or even arbitrary and not fully explainable, e.g. whether you choose a white sauce or a red sauce for pasta dinner. The universe is the only perfect simulation of itself, but we don't demand perfection. After all, we don't need general relativity to know when to hit the brakes when driving our cars.&lt;/p>
&lt;p>A &lt;em>model&lt;/em> is an approximation of a given process. A model is restricted in both its &lt;em>domain&lt;/em> (the space of possible inputs) and its &lt;em>range&lt;/em> (the space of possible outputs). Our goal is to identify a model that provides a suitable approximation within the domain that we care about with a level of accuracy that well-describes the way the universe actually works.&lt;/p>
&lt;p>When building a model, we often want to start simple. Many problems can be solved by linear or logistic regression algorithms. When first applying machine learning to a problem, your biggest improvements will usually come from implementing &lt;em>any&lt;/em> solution, not necessary the optimal one (a topic for another day is the diminishing returns of model complexity). In this context, I consider the model to be the combination of &lt;em>hyperparameters&lt;/em> and &lt;em>algorithmic approach&lt;/em>, but not the parameters (which are dependent on data, discussed below).&lt;/p>
&lt;p>That said, the principle of continuous improvement tells us we should not rest here. Eventually, we may wish to improve our accuracy. Or the domain of applicability may change. As a result, our models must change. We can do this by retraining on new data, but eventually a given &lt;em>modeling approach&lt;/em> might no longer be suitable. At some point, we may grow out of our logistic regression breeches and decide to use a random forest or a neural network.&lt;/p>
&lt;p>Furthermore, we can apply different modeling approaches to the same data to compare performance. A logistic regression and a neural network could have similar accuracy behavior, but one might excel in a region of the problem domain where the other struggles.&lt;/p>
&lt;p>Different modeling approaches have different properties and limitations. A logistic regression is highly explainable, but a neural network is not. Therefore, when we consider what downstream requirements our system affects, our choice of model may have version-dependent impacts that are independent of the data used to train them. For this reason, the choice of model (including its hyperparameterization), should be thought of as a version axis.&lt;/p>
&lt;h2 id="understanding-data">Understanding Data&lt;/h2>
&lt;p>Data is super-relevant when exploring how machine learning versions can fluctuate. In fact, it is so important that I break this down into two separate, equally-important subcategories: &lt;strong>schema&lt;/strong> and &lt;strong>values&lt;/strong>.&lt;/p>
&lt;p>If we admit the metaphysical metaphor described in the previous section, then data is an &lt;em>measurement&lt;/em> or an &lt;em>assessment of state&lt;/em> of the universe. Data has a number of important properties, but the two we care most about are its shape and its distribution. The shape can be thought of as a schema, i.e. a structured way of describing the properties of the space the data lives in, and its values, i.e. the way it is distributed over that space.&lt;/p>
&lt;h3 id="understanding-how-values-change">Understanding How Values Change&lt;/h3>
&lt;p>Data changes. The truth of the universe changes. Economies ebb and flow, our user base grows or gets older. Trends change. Technology changes. There is no reason to expect that our data will always look the same, even if its underlying shape stays the same. We must always be retraining our models.&lt;/p>
&lt;p>This is a simple problem to understand but a more difficult thing to implement in a continuous delivery world. After all, if we need to be able to roll back to an arbitrary point in time, then we need to be able to version the data we train a model on at any given point in time. This is perhaps more pressing in data-driven applications than in software applications. In software, we always want to keep moving forward, but non-deterministic systems, such as AI applications, are extremely difficult to effectively patch.&lt;/p>
&lt;p>Other data issues can abound. Sometimes data can be wrongly recorded due to software bugs. Fraudster behavior can corrupt data. These things take time to catch, and sometimes they cannot be retroactively remedied. For this reason, it should be clear that we need to be able to retrain a model on the data as it is reflected at any point in the past, and consequently we should think of the actual values of our dataset as a version axis.&lt;/p>
&lt;h3 id="understanding-schemas">Understanding Schemas&lt;/h3>
&lt;p>A similar data issue exists with data schemas. We can think of a schema as the &amp;quot;shape&amp;quot; of the data (e.g. a relational database schema), and when we derive artifacts from data we often inherit some properties of this schema. For example, suppose you have a field representing a &lt;code>status&lt;/code>. What is this? Is this a string? Does this have subfields?&lt;/p>
&lt;p>Schema variations are irritating because so much depend on them: object models, database tables, XML payloads, etc. Machine learning artifacts can also depend on the schema as well; if a machine learning algorithm expects a &lt;code>status&lt;/code> field, it will break if at some point in the future this field becomes &lt;code>status_membership&lt;/code> and &lt;code>status_editor&lt;/code>, for instance.&lt;/p>
&lt;p>Data schemas can change independently of data. A third-party service could start serving JSON payloads with extra fields. A de-normalized field could be re-normalized without changing the values of the data. Rolling back schema changes is &lt;em>very difficult&lt;/em>. But it is not always avoidable. Data schemas represent a version axis because of the tight coupling they have with both upstream and downstream dependencies.&lt;/p>
&lt;h2 id="understanding-code">Understanding Code&lt;/h2>
&lt;p>Of all the components of a machine learning system, code is probably the best understood among technologists, because we have been working on building deterministic software systems for a while, and continuous delivery principles are pretty well understood in this context.&lt;/p>
&lt;p>For a machine learning system, we can break the code down into &lt;em>implementation code&lt;/em> and &lt;em>model development code&lt;/em>. We can also explore &lt;a href="https://en.wikipedia.org/wiki/Infrastructure_as_code">&lt;em>infrastructure as code&lt;/em>&lt;/a>, which is a relevant concept in this regard as well. The case for arguing that code represents a version axis is clear. But here we also call out that in practice, most compiled machine learning artifacts have code dependencies and so maintaining the dependencies becomes just as important as maintaining the model.&lt;/p>
&lt;h1 id="addressing-machine-learning-version-challenges">Addressing Machine Learning Version Challenges&lt;/h1>
&lt;p>Suppose you have made it this far and broadly agree that by putting intelligence into the production stack, we significantly complicated our notion of maintaining versions. We've introduced four main axes: model, values, schema, and code. And a machine learning system can change along all four of those axes dependently or independently.&lt;/p>
&lt;p>There are some broad approaches to tackle this challenge, and I'll describe some of them here.&lt;/p>
&lt;h2 id="treat-models-as-code">Treat Models as Code&lt;/h2>
&lt;p>One approach is to treat the model/modeling approach as code. Since we usually build models using some python or R scripts or the like, while using some libraries/dependencies like Tensorflow, we can simply treat the model as an extension of the code we're using.&lt;/p>
&lt;h4 id="where-this-goes-right">Where this goes right&lt;/h4>
&lt;p>This is a sensible approach, because we can just develop on master alongside the rest of our development and any rollbacks automatically include a rollback to a previous version of the model. This removes a degree of freedom by locking two logically-distinct concepts together. It also means that your data scientists aren't working in a silo, but are fully-integrated into a cross-functional team.&lt;/p>
&lt;h4 id="where-this-goes-wrong">Where this goes wrong&lt;/h4>
&lt;p>One of the challenges with this approach is that it fails to consider how the modeling approach may be linked to &lt;em>other&lt;/em> elements of the machine learning system and by consequence it couples all the rest of your code to your data and your schema, which may be drifting independently. This may or may not be a big challenge.&lt;/p>
&lt;h4 id="what-to-look-out-for">What to look out for&lt;/h4>
&lt;p>If you couple models and code, then it makes research a little bit harder, which means that data scientists doing experimental work to improve the product will need to work in development spikes, or that you'll need a more complex feature-flagging system to handle multiple (large) artifacts in the build process. Ultimately, as a model is the combination of hyperparameters and algorithmic approach, we may find ourself periodically reverting to &amp;quot;old&amp;quot; solutions as time evolves, which may feel strange when all the rest of the code keeps moving forward.&lt;/p>
&lt;h4 id="recommendations">Recommendations&lt;/h4>
&lt;p>I recommend treating models as code for the same reason we treat infrastructure as code. Though it introduces some challenges, it is a natural way to link two closely-related concepts, and the negative consequences are, in my experience, minimal.&lt;/p>
&lt;h2 id="link-schemas-and-values">Link Schemas and Values&lt;/h2>
&lt;p>This approach is also natural. When handling data, we simply store it as a blob somewhere. The values can be used to derive a schema anyhow, so this makes some sense.&lt;/p>
&lt;h4 id="where-this-goes-right-1">Where this goes right&lt;/h4>
&lt;p>This is probably the easiest to implement. We can simply dump a table at each training period, save a training table somewhere, use a datamart/materialized view/stored query with a time dependency, or any other technical solution. Furthermore, if we link the values and the schema, we have a pretty clear case of what the data represent at any given point. This means we don't have to impute missing values or write complex adapters/interfaces to squeeze old data into a new shape or vice versa, an approach that gets complex and implausible very quickly. It also prevents us from having to guess what the default value is for newly-added fields.&lt;/p>
&lt;h4 id="where-this-goes-wrong-1">Where this goes wrong&lt;/h4>
&lt;p>First, this is a bit more complex than just dumping the data at a given time point. This puts more dependency on tools to encode our schema and keep that linked to data. Furthermore, it may not be difficult at all to handle schema changes. But more critically, if we link values and schema, if our schema changes then we are essentially starting from scratch when the schema changes unless we figure out how to translate data from the old schema to the new. Anyone who has done a data migration knows that this is not always easy.&lt;/p>
&lt;h4 id="recommendations-1">Recommendations&lt;/h4>
&lt;p>I don't recommend to link values and schema. It is usually easier to simply dump values to CSV files or the like, and from there we can infer schemas as necessary or document them elsewhere. For things like new columns, it is sometimes possible to use statistical methods to impute values. It is sometimes not so hard to write adapters if the shape of data changes, but consider your use case. If it involves a major migration, or frequent changes, it might be better to link everything to your schema and adjust as needed.&lt;/p>
&lt;h2 id="link-data-and-code-using-version-control-for-data">Link Data and Code using Version Control for Data&lt;/h2>
&lt;p>This approach is used by tools like dvc. Simply put, we emit our data to some storage solution, hash the data in a meaningful way, and write a small stub that we can commit to source control alongside our code.&lt;/p>
&lt;h4 id="where-this-goes-right-2">Where this goes right&lt;/h4>
&lt;p>This approach is gaining in popularity, with tools like MLFlow, Pachyderm, and dvc offering functionality to accomplish this. This makes it much easier to share and repeat work, and guarantees that training and validation data is always the same. Storage is fairly cheap, and many of these tools integrate nicely with existing source control tools.&lt;/p>
&lt;h4 id="where-this-goes-wrong-2">Where this goes wrong&lt;/h4>
&lt;p>This can take up a lot of storage because we're potentially replicating the same data over and over. This also doesn't necessarily work for all types of data, either. The tooling for this is still not perfectly mature.&lt;/p>
&lt;h4 id="recommendations-2">Recommendations&lt;/h4>
&lt;p>I recommend trying to implement this as best as possible given your data storage and access solutions. Even with data that lives on something like HDFS, we can version control an array of filepaths and keep references to that. For blob data, we can create datasets that are hashed and controlled using any of these tools being developed.&lt;/p>
&lt;h2 id="unlink-datamodels-from-code">Unlink Data/Models from Code&lt;/h2>
&lt;p>Another approach I've is to simply unlink the model or the data from the rest of the implementing code. In this approach, a model release cycle is agreed upon, e.g. once per week. A new training and validation dataset is derived, set aside, and one or more new models are trained. This is then implemented in whatever service needs to use it.&lt;/p>
&lt;h4 id="where-this-goes-wrong-3">Where this goes wrong&lt;/h4>
&lt;p>This isn't continuous delivery and causes your data scientists to work in a silo.&lt;/p>
&lt;h4 id="recommendations-3">Recommendations&lt;/h4>
&lt;p>Don't do this. Doing this is a really good way to come into intractable integration issues.&lt;/p>
&lt;h2 id="restrict-modeling-approaches">Restrict Modeling Approaches&lt;/h2>
&lt;p>With this solution, you basically choose a modeling approach and commit to it. You may change the hyperparameters, and you certainly retrain the model, but you don't change the algorithmic approach, perhaps going so far as to implementing your own code.&lt;/p>
&lt;h4 id="where-this-goes-right-3">Where this goes right&lt;/h4>
&lt;p>This is not as foolish as it might sound. Most of the time, we need nothing more than a basic approach. And by specializing in one technique, it is possible to become an expert in all the various issues it might have. It allows you to specialize your supporting code (e.g. training and validation code, implementation code), and it makes tweaks and optimizations much easier.&lt;/p>
&lt;h4 id="where-this-goes-wrong-4">Where this goes wrong&lt;/h4>
&lt;p>If the only tool you have is a random forest-shaped hammer, then every problem better be a random forest-shaped nail. It bakes in a lot of dependency on the approach, tools, etc. into your code, making it hard to change later on. It is really a hyper-specific way of the first possible solution, linking models and code.&lt;/p>
&lt;h4 id="recommendations-4">Recommendations&lt;/h4>
&lt;p>This is a good approach if you have large-scale problems and need to be able to test and deploy multiple models regularly. It's also good if you have simple problems and want to avoid chasing the latest shiny technique. More broadly, I think most applications should open themselves up to a small variety of possible modeling approaches and stay within those boundaries.&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>Data science is hard to productionize, and one of the reasons it is hard is because it has so many moving parts. The notion of a &amp;quot;version&amp;quot; of a smart/AI/machine learning application has (at least) four possible axes on which it can drift. This poses a challenge in continuous delivery practices. These challenges can be addressed, but there are benefits and drawbacks to the various ways I've seen people try to address this in practice.&lt;/p>
&lt;p>In the end, keeping an eye on continuous delivery principles is important. We should strive to integrate data scientists into our delivery teams, involve developers in the data science efforts, and treat machine learning like functional software and not a magical black box.&lt;/p></description></item><item><title>2019 Weekly Recap: Week 4</title><link>https://emilygorcenski.com/post/2019-weekly-recap-week-4/</link><pubDate>Sat, 26 Jan 2019 23:30:00 +0100</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-week-4/</guid><image><url>https://emilygorcenski.com/img/selfies-2019/selfie-week04.jpg"</url></image><enclosure url="https://emilygorcenski.com/img/selfies-2019/selfie-week04.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/img/selfies-2019/selfie-week04.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/img/selfies-2019/selfie-week04.jpg" width="600"/></media:content><description>&lt;p>This week was wild! I had settled in for a nice week of getting some progress done on various work, extracurricular, and life things, and instead I ended up traveling to Köln on very short notice for half of the week. I really like Köln a lot, so I was happy to go. The city reminds me of Portland in a way, and I like working from my company&amp;rsquo;s office there. Because of that trip, I once again did not accomplish as much on personal tasks as I wanted. Alas.&lt;/p>
&lt;p>I have been worried lately about the amount of work I&amp;rsquo;m taking on, like I am engaging in work to distract myself from other personal matters. That&amp;rsquo;s actually true, really. I feel like I am clearing through backlog, but the reality is I have so many things in the icebox that the progress I&amp;rsquo;m making is not immediately visible, and that can be frustrating.&lt;/p>
&lt;p>To combat that, this weekend I gave myself permission to hang out with some friends. One thing that amazes me about Berlin is how social I can be here. In all the time I spent in Charlottesville, I always craved social connection. In Berlin, it feels like someone is always coming through town or there&amp;rsquo;s someone to meet up with. That&amp;rsquo;s maybe my favorite thing about this city, and finding a work-life balance has been more challenging than I&amp;rsquo;ve ever experienced in my life.&lt;/p>
&lt;p>From time to time, I take a look at my favorite poem, &lt;em>Ulysses&lt;/em> by Tennyson. Every time I read it, I see in it something new that is relevant to me. The end of the poem is so well known, the bits about moving earth and heaven. But it&amp;rsquo;s the rest of the poem that calls out to me in so many ways.&lt;/p>
&lt;blockquote>
&lt;p>How dull it is to pause, to make an end,
To rust unburnish&amp;rsquo;d, not to shine in use!
As tho' to breathe were life!&lt;/p>
&lt;/blockquote>
&lt;p>There is so much more to life than staying alive, and though I came to Berlin to stay alive, I need to also give myself permission to thrive whilst I&amp;rsquo;m here. I am trying. Four weeks into 2019 and the rest of history was a hundred years ago.&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;p>Allow me to take a moment to whine a bit. Most of what I discover I find on Twitter while using my phone. As a result, my workflow for this section is to use Twitter&amp;rsquo;s bookmark feature, which means I have to explicitly navigate to the mobile web version of Twitter while writing these posts. That&amp;rsquo;s not a huge barrier but it is an irritating break in the workflow. I head that Twitter is shipping Bookmarks to web soon, but good heavens can we hurry it up?&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://unboxresearch.com/articles/lsh_post1.html">Introduction to Locality-Sensitive Hashing&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This is a great explainer on Locality-Sensitive Hashing, which is a way to more rapidly approximate a nearest-neighbors algorithm. The post is very clear, though quite mathematical, and if you don&amp;rsquo;t have a bit of computing knowledge it might be a bit slower to parse. The visualizations, however, are outstanding, and I aspire to be that good at visualization.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.zeit.de/kultur/2019-01/rechtsextremismus-widerstand-rassismus-nationalsozialismus-soziale-medien-nazis-raus">Nazis rein&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>(my German is not so good and my grammar is terrible, but I will try a little.)&lt;/p>
&lt;p>Dieser Magazinartikel ist auf deutsche, aber es ist sehr wichtiger. Wie in den USA, der Rechtsextremismus hat politischer Einfluss, aber ist ein Rassist ein Nazi auch?&lt;/p>
&lt;blockquote>
&lt;p>Ob denn um Himmels willen mit Nazis auch AfD-Wähler gemeint seien? Schließlich seien es doch zu viele, als dass es sich bei ihnen allen um Nazis handeln könne. So ein Einwand ergibt natürlich nur Sinn, wenn ein wesentliches Merkmal des Rechtsextremismus darin besteht, dass er lediglich einer kleinen erlesenen Gruppe vorbehalten ist.&lt;/p>
&lt;/blockquote>
&lt;p>Translation:&lt;/p>
&lt;blockquote>
&lt;p>Can all of the AFD voters really be Nazis? After all, there are too many for them to all be Nazis. &lt;strong>This objection, of course, only makes sense if an essential feature of right-wing extremism is that it is reseved for a small, select group only.&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>This really nails it. After a lot of discourse after a journalist in Germany tweeted &amp;ldquo;Nazis raus&amp;rdquo; (Nazis out), the question has come up as to whether AFD voters could really be lumped together with Nazis. This is quite similar to what has happened in the US at a larger scale with Trump voters. Are all Trump voters racist? Are they all Nazis? I don&amp;rsquo;t know, but I do know this: every Trump voter and supporter voted for a racist who supports Nazis.&lt;/p>
&lt;p>This article hits it out of the park in its second at-bat, too, when talking about the rise of neo-Nazis in Germany in the 1980s.&lt;/p>
&lt;blockquote>
&lt;p>Man nannte sie Neonazis, weil man dachte, dass es sich um eine neu gegründete Bewegung handelt. Wie man heute weiß, stimmt das nicht wirklich. Zu den alten, überlebenden Nazis kamen neue Nazis dazu&amp;hellip; Aus welchem Grund soll man ein kompliziertes Präfix mitsprechen, wenn es sich im Wesentlichen um das alte Denken handelt?&lt;/p>
&lt;/blockquote>
&lt;p>Translation:&lt;/p>
&lt;blockquote>
&lt;p>They were called neo-Nazis, because it was presumed that they were a newly-formed movement. That&amp;rsquo;s not really true, as we know. The new Nazis were just added to the old. Why bother adding a complicated prefix, when it is really just the same old thinking?&lt;/p>
&lt;/blockquote>
&lt;p>This is exactly why I prefer to just say &amp;ldquo;Nazis&amp;rdquo; instead of &amp;ldquo;neo-Nazis.&amp;rdquo; Adding the prefix is mere sophistry, designed to do nothing but deflect from a damaging, hateful ideology. We should never engage Nazis on their terms.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;p>I made no progress with books this week :(.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>) &lt;small>&lt;em>Progress: 3%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 38%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.springer.com/de/book/9783319110790">&lt;em>Linear Algebra Done Right&lt;/em>, Sheldon Axler&lt;/a> (see my working progress &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>)&lt;small>&lt;em>Progress: 10%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>This week I&amp;rsquo;m preparing for a conference (interal to my employer only), as well as getting a huge project out at work. I&amp;rsquo;m putting the finishing touches on a piece about the Proud Boys, and I intend to get some work done on First Vigil. My backlog there is growing faster than it&amp;rsquo;s shrinking, so I want to commit a night to work on it and organize. I need a strategy and a vision, and I&amp;rsquo;m moving closer to one.&lt;/p>
&lt;p>I&amp;rsquo;ve got a post I&amp;rsquo;m working on about arguing while trans, and by gods I&amp;rsquo;m going to finish Chapter 2 of Axler if it kills me.&lt;/p></description></item><item><title>2019 Weekly Recap: Week 3</title><link>https://emilygorcenski.com/post/2019-weekly-recap-week-3/</link><pubDate>Sat, 19 Jan 2019 23:30:00 +0100</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-week-3/</guid><description>&lt;p>The time always goes so fast. This week was exceptionally productive and yet I still feel like I didn&amp;rsquo;t check enough off of my goals. Mentally, I&amp;rsquo;ve been exhausted. But I managed to clear some major stressors off my plate this week. I finished a piece on the Proud Boys that was long overdue and I needed to get it done. I gave a presentation at work recapping my most recent project, and I finished some slides for an upcoming internal work conference. I also got major work done on &lt;a href="https://first-vigil.com">First Vigil&lt;/a>, finishing some to-dos, like adding &lt;a href="https://first-vigil.com/pages/details/bowl-gang/">a writeup on the Dylann Roof violent fandom.&lt;/a> You didn&amp;rsquo;t really need that sentence. No one needed that sentence. I can&amp;rsquo;t believe I had to write it. Nevertheless, some interesting things worth sharing this week.&lt;/p>
&lt;p>&lt;small>&lt;em>I&amp;rsquo;ve decided this year that to try writing brief weekly summaries about what I&amp;rsquo;m doing, reading, working on, etc. The purpose of these posts is just to get myself into a bit of a rhythm of writing and spending more thoughtful time doing things that are meaningful to me. I&amp;rsquo;ll try to publish these on Saturdays, but that will be modulated by my work/travel/energy levels.&lt;/em>&lt;/small>&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.sciencedirect.com/science/article/pii/S1054139X18307845?dgcid=author">Racial Discrimination in the United States: A National Health Crisis That Demands a National Health Solution&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This academic paper calls for an investigation on the epidemiological effects of racism, citing evidence that health outcomes are worse in racial minority communities, largely due to the effects of racial discrimination.&lt;/p>
&lt;blockquote>
&lt;p>Systematic reviews and meta-analyses provide support for the notion that racial discrimination is related to multiple forms of illness, including depressive symptoms, anxiety, post-traumatic stress disorder, hypertension, and diabetes. These negative health consequences may be exacerbated during adolescence, a developmental transition marked by enhanced socioemotional processing. Racial discrimination is especially harmful in countries such as the United States that have a pronounced history of racism.&lt;/p>
&lt;/blockquote>
&lt;p>Racial violence and systematic white supremacy unsurprisingly manifest in public health. Too often we see that low-income housing in predominantly Black communities exhibit negative living conditions, such as poor or non-functioning heat, black mold, and of course, Flint still doesn&amp;rsquo;t have clean water. This of course should be expected to have health impacts, and the article is sure to note that the effect is more pronounced in adolescents.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.tor.com/2019/01/14/highway-to-the-danger-zone-the-heterosexual-tragedy-of-top-gun/">Highway to the Danger Zone: The Heterosexual Tragedy of &lt;em>Top Gun&lt;/em>&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This hilarious satire frames &lt;em>Top Gun&lt;/em> in the kind of language that straight critics use to describe queer film. Presuming that the film was a homosexual love story set against the backdrop of Naval Aviation in a world where heterosexuality was seen as deviance, the piece hits all the right notes: the secrecy between Maverick and Charlie&amp;rsquo;s relationship; the fatal &lt;del>queer&lt;/del>straight in Goose; and the role of the wingman in dating and other life successes.&lt;/p>
&lt;blockquote>
&lt;p>He continues to experiment with heterosexuality, until finally, he’s forced to reevaluate his life and choices. Goose meets a tragic end during a scene where some very cool Airplane Moves go very wrong, and in that moment, the only definitely-heterosexual character in the film is gone. Although Goose’s death is accidental and unrelated to his lifestyle, it cannot be denied that his demise represents a heterosexual tragedy. Without his influence, Maverick struggles to find direction—in his career and in his relationship with Charlie.&lt;/p>
&lt;/blockquote>
&lt;p>Perfect.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://socialsciences.nature.com/users/200472-amy-orben/posts/42763-beyond-cherry-picking">Beyond Cherry-Picking&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>There&amp;rsquo;s something broken about statistics, and about how we use data, and about how we design experiments. We focus too much on effects vs models, and we aspire towards bigness even when bigness isn&amp;rsquo;t where we need to be focusing. By using a large data set and formulating hundreds of thousands of hypotheses, this research team uses the statistical inevitability that statistically significant effects would be found to highligth the absurdity with which we are performing resarch these days.&lt;/p>
&lt;p>More importantly, however, they also call out how these types of findings make headlines and affect policy decisions, decisions which affect millions or billions of dollars in research funding each year.&lt;/p>
&lt;blockquote>
&lt;p>Although statistical significance is often used as an indicator that findings are practically significant, the paper moves beyond this surrogate to put its findings in a real-world context. In one dataset, for example, the negative effect of wearing glasses on adolescent well-being is significantly higher than that of social media use. Yet policymakers are currently not contemplating pumping billions into interventions that aim to decrease the use of glasses.&lt;/p>
&lt;/blockquote>
&lt;p>This has, in my opinion, relevant links to data science. The big data revolution still hasn&amp;rsquo;t quite panned out like many said it would, and a big part of that may be a consequence of many organizations not truly having big data, or when they do, having big enough data that it is impossible to escape ridiculous conclusions. In my opinion, we&amp;rsquo;ll eventually see a shift back towards model-driven techniques. This is not to say that big data is dead, but it is to say that it&amp;rsquo;s more than big data that we need to think about.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>) &lt;small>&lt;em>Progress: 3%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 38%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.springer.com/de/book/9783319110790">&lt;em>Linear Algebra Done Right&lt;/em>, Sheldon Axler&lt;/a> (see my working progress &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>)&lt;small>&lt;em>Progress: 10%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>Thankfully, I&amp;rsquo;m not traveling this week! I have some time to focus on work, and my goal is to clear some First Vigil backlog. I think I can finish clearing through the research pipeline this week. Also, I have some help with that now, and it&amp;rsquo;s been great to see the project move forward with other contributors. I want to finish through Chapter 3 of Axler, and get some more pleasure reading done. Mostly this week I&amp;rsquo;m focused on getting back to progression content in my own life.&lt;/p></description></item><item><title>Transgender Murders: By the Numbers</title><link>https://emilygorcenski.com/post/transgender-murders-by-the-numbers/</link><pubDate>Sun, 13 Jan 2019 00:12:31 +0100</pubDate><guid>https://emilygorcenski.com/post/transgender-murders-by-the-numbers/</guid><description>&lt;p>Revisiting some old works on the alarming murder rate of transgender people, particularly Black transgender women, has caused me to want to revisit some analysis on what the murder rate would look like in proportion to the cisgender white male population in the US.&lt;/p>
&lt;p>This post is supposed to be a rough estimate to attempt to assign scale to an epidemic problem. I am trying to avoid reducing trans lives to mere numbers. These deaths represent real people who deserved a better world, and we must honor them. We must also work to prevent the loss of life. I hope that this can provide some contextual meaning to how severe anti-transgender and anti-Black violence is in the United States.&lt;/p>
&lt;h2 id="baseline-data">Baseline Data&lt;/h2>
&lt;ul>
&lt;li>Incidence Rate of Transgender People (approx.)&lt;sup class="footnote-ref" id="fnref:1">&lt;a class="footnote" href="#fn:1">1&lt;/a>&lt;/sup>: &lt;span class="math">\(\frac{1}{250}\)&lt;/span>&lt;/li>
&lt;li>US Population (est., 01-July-2017)&lt;sup class="footnote-ref" id="fnref:2">&lt;a class="footnote" href="#fn:2">2&lt;/a>&lt;/sup>: &lt;span class="math">\(325.7\textrm{M}\)&lt;/span>&lt;/li>
&lt;li>African-American Population, percent (est.)&lt;sup class="footnote-ref" id="fnref:2">&lt;a class="footnote" href="#fn:2">3&lt;/a>&lt;/sup>: &lt;span class="math">\(13.4\%\)&lt;/span>&lt;/li>
&lt;li>White Population, percent (est.)&lt;sup class="footnote-ref" id="fnref:2">&lt;a class="footnote" href="#fn:2">4&lt;/a>&lt;/sup>: &lt;span class="math">\(76.6\%\)&lt;/span>&lt;/li>
&lt;li>Male Population, percent (est.)&lt;sup class="footnote-ref" id="fnref:2">&lt;a class="footnote" href="#fn:2">5&lt;/a>&lt;/sup>: &lt;span class="math">\(49.2\%\)&lt;/span>&lt;/li>
&lt;li>Number of Known US Transgender Murders, 2017&lt;sup class="footnote-ref" id="fnref:3">&lt;a class="footnote" href="#fn:3">6&lt;/a>&lt;/sup>: 29&lt;/li>
&lt;li>Number of Known US Transgender Murders of Black Transgender People (assigned male at birth)&lt;sup class="footnote-ref" id="fnref:3">&lt;a class="footnote" href="#fn:3">7&lt;/a>&lt;/sup>: 19&lt;/li>
&lt;li>Total US Murder Victims, 2017&lt;sup class="footnote-ref" id="fnref:4">&lt;a class="footnote" href="#fn:4">8&lt;/a>&lt;/sup>: 15,129&lt;/li>
&lt;li>Total White Male US Murder Victims, 2017&lt;sup class="footnote-ref" id="fnref:4">&lt;a class="footnote" href="#fn:4">9&lt;/a>&lt;/sup>: 4,616&lt;/li>
&lt;/ul>
&lt;h2 id="assumptions">Assumptions&lt;/h2>
&lt;p>For this analysis, we will make the following assumptions:&lt;/p>
&lt;ul>
&lt;li>the incidence rate of assigned male at birth transgender people is roughly the same as the incidence rate of assigned female at birth transgender people;&lt;/li>
&lt;li>the incidence rate of transgender people is independent of race;&lt;/li>
&lt;li>gender distribution is independent of race;&lt;/li>
&lt;/ul>
&lt;h2 id="analysis">Analysis&lt;/h2>
&lt;p>We'll look at the number of Black transgender people (assigned male at birth), since this population makes up the majority of murders of transgender people in the US.&lt;/p>
&lt;p>First, we estimate the number of Black people assigned male at birth in the United States:&lt;/p>
&lt;p>&lt;span class="math">\[3.257 \times 10^8 \cdot 0.134 \cdot 0.492 \approx 2.147 \times 10^7.\]&lt;/span>&lt;/p>
&lt;p>We'll use this to estimate the number of Black assigned male at birth transgender people.&lt;/p>
&lt;p>&lt;span class="math">\[\frac{1}{250} \cdot 2.147 \times 10^7 \approx 85890.\]&lt;/span>&lt;/p>
&lt;p>You might pause a moment here. Why did we use the overall incidence rate here, if we're only applying it to assigned male at birth people? We assumed that the incidence rate is independent of race and gender. The population scaling factors are already accounted for in the previous lines.&lt;/p>
&lt;p>Next, we compute the relative murder rate:&lt;/p>
&lt;p>&lt;span class="math">\[\frac{19}{85890} \approx 2.212 \times 10^{-4}.\]&lt;/span>&lt;/p>
&lt;p>We'll use this rate to compare to the cisgender white male population.&lt;/p>
&lt;p>&lt;span class="math">\[2.212 \times 10^{-4} \cdot 0.492 \cdot 0.766 \cdot 3.257 \times 10^8 \cdot \frac{249}{250} \approx 27043.\]&lt;/span>&lt;/p>
&lt;p>This means that if we scaled the murder rate of Black transgender women and nonbinary people to white cisgender men, we would see over 27,000 murders every year. By comparison, in 2017, there were 4,616 murders of white men.&lt;/p>
&lt;p>That means that Black trans women and nonbinary people experience a murder rate almost six times higher than white cisgender men. Put another way, 27,000 deaths is 9 times more people than were killed in the September 11 attacks. Image if your community experienced a September 11-scale assault nearly every five-and-a-half weeks.&lt;/p>
&lt;h2 id="conclusions">Conclusions&lt;/h2>
&lt;p>Anti-transgender violence against Black people is at epidemic levels. It is almost certain that the numbers reported underestimate the number of victims; in many cases, trans people's deaths aren't correctly reported, or the truth of their lives is covered up after their deaths. These numbers don't count assaults, which are difficult to track. Nor do they count the loss of life due to improper medical care, suicide, or drug overdose, three horrible symptoms of society's general anti-Blackness and anti-transgender attitudes.&lt;/p>
&lt;p>Much anti-transgender violence comes from people close to the victim, as is the case with murder overall; most murder is intra-racial, intra-community. The purpose of this post is not to blame white cisgender men for the deaths of trans women, save for the handful of cases where individual white cisgender men happen to also be the alleged killers. Instead, this is intended to put a size estimate to the epidemic. It is absolutely true that intimate partner violence and intra-community violence are major concerns. A significant amount of trans activism is about providing communities with the tools and understanding of trans people, so that they may succeed and thrive in the world.&lt;/p>
&lt;p>This comparison is not scientific nor is it intended to provide tools for intervention. Rather, it is to highlight the deafening silence when it comes to Black trans lives. Murder rates this high would almost certainly sound many alarms if it affected more dominant communities. Black trans lives matter, and the epidemic of violence against them deserves more attention. I hope that this effort raises some.&lt;/p>
&lt;h2 id="the-names-of-the-dead">The Names of the Dead&lt;/h2>
&lt;p>This analysis was restricted to 2017, the most recent year for which I could easily find data. The 20 people lost are more than numbers; they are real people, and they had names. These are their names.&lt;/p>
&lt;ul>
&lt;li>Mesha Caldwell, 41&lt;/li>
&lt;li>JoJo Striker, 23&lt;/li>
&lt;li>Tiara Richmond (aka Keke Collier), 24&lt;/li>
&lt;li>Chyna Gibson, 31&lt;/li>
&lt;li>Ciara McElveen, 26&lt;/li>
&lt;li>Jaquarrius Holland, 18&lt;/li>
&lt;li>Alphonza Watson, 38&lt;/li>
&lt;li>Chay Reed, 28&lt;/li>
&lt;li>Sherrell Faulkner, 46&lt;/li>
&lt;li>Kenne McFadden, 27&lt;/li>
&lt;li>Ava Le'Ray Barrin, 17&lt;/li>
&lt;li>Ebony Morgan, 28&lt;/li>
&lt;li>TeeTee Dangerfield, 32&lt;/li>
&lt;li>Jaylow McGlory, 29&lt;/li>
&lt;li>Kiwi Herring, 30&lt;/li>
&lt;li>Derricka Banner, 26&lt;/li>
&lt;li>Candace Towns, 30&lt;/li>
&lt;li>Brooklyn BreYanna Stevenson, 31&lt;/li>
&lt;li>Brandi Seals, 26&lt;/li>
&lt;/ul>
&lt;h2 id="references">References&lt;/h2>
&lt;div class="footnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">&lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5227946/">&amp;quot;Transgender Population Size in the United States: a Meta-Regression of Population-Based Probability Samples,&amp;quot; Meerwijk, E.L. and Sevelius, J.M., &lt;em>Am J Public Health&lt;/em>, 2017 February 107(2): e1-e8&lt;/a>
&lt;a class="footnote-return" href="#fnref:1">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:2">&lt;a href="https://www.census.gov/quickfacts/fact/table/US/PST045217">U.S. Census Quick Facts&lt;/a>
&lt;a class="footnote-return" href="#fnref:2">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:2">&lt;a href="https://www.census.gov/quickfacts/fact/table/US/PST045217">U.S. Census Quick Facts&lt;/a>
&lt;a class="footnote-return" href="#fnref:2">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:2">&lt;a href="https://www.census.gov/quickfacts/fact/table/US/PST045217">U.S. Census Quick Facts&lt;/a>
&lt;a class="footnote-return" href="#fnref:2">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:2">&lt;a href="https://www.census.gov/quickfacts/fact/table/US/PST045217">U.S. Census Quick Facts&lt;/a>
&lt;a class="footnote-return" href="#fnref:2">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:3">&lt;a href="https://www.hrc.org/resources/violence-against-the-transgender-community-in-2017">&amp;quot;Violence Against the Transgender Community in 2017&amp;quot;, HRC&lt;/a>
&lt;a class="footnote-return" href="#fnref:3">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:3">&lt;a href="https://www.hrc.org/resources/violence-against-the-transgender-community-in-2017">&amp;quot;Violence Against the Transgender Community in 2017&amp;quot;, HRC&lt;/a>
&lt;a class="footnote-return" href="#fnref:3">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:4">&lt;a href="https://www.statista.com/statistics/251877/murder-victims-in-the-us-by-race-ethnicity-and-gender/">Number of murder victims in the United States in 2017, by race/ethnicity and gender&lt;/a>
&lt;a class="footnote-return" href="#fnref:4">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;li id="fn:4">&lt;a href="https://www.statista.com/statistics/251877/murder-victims-in-the-us-by-race-ethnicity-and-gender/">Number of murder victims in the United States in 2017, by race/ethnicity and gender&lt;/a>
&lt;a class="footnote-return" href="#fnref:4">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>2019 Weekly Recap: Week 2</title><link>https://emilygorcenski.com/post/2019-weekly-recap-week-2/</link><pubDate>Sat, 12 Jan 2019 23:12:43 +0100</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-week-2/</guid><description>&lt;p>This was the first full week of the year, so I get the sense that &amp;ldquo;back to work&amp;rdquo; was the theme of many people&amp;rsquo;s lives. For me, it also marked my return to Berlin, and with that came an exceptional amount of busywork. I&amp;rsquo;m only here for a short time before heading off to my next project for a bit, but I wanted to get some things in place this week. Between running errands and meeting up with friends whom I hadn&amp;rsquo;t seen in weeks, I hardly had time to breathe. I didn&amp;rsquo;t get as much done as I&amp;rsquo;d like, but given how busy I was, I am shocked by how much I accomplished.&lt;/p>
&lt;p>&lt;small>&lt;em>I&amp;rsquo;ve decided this year that to try writing brief weekly summaries about what I&amp;rsquo;m doing, reading, working on, etc. The purpose of these posts is just to get myself into a bit of a rhythm of writing and spending more thoughtful time doing things that are meaningful to me. I&amp;rsquo;ll try to publish these on Saturdays, but that will be modulated by my work/travel/energy levels.&lt;/em>&lt;/small>&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="http://www.espn.com/nhl/story/_/id/25653424/how-spanish-hockey-announcers-translate-game">How Spanish hockey announcers translate the game&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This is a fun piece about how the Las Vegas Golden Knights' Spanish-language announcers call the game. It&amp;rsquo;s an excellent look into how language works and how making things accessible to people is a benefit for everyone involved. I am particularly delighted by the way Riviera describes a scrum where the puck is at a player&amp;rsquo;s feet:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;I couldn&amp;rsquo;t figure out how to say that the puck was in the middle of their skates, and the players were trying to dig it out. So I would say they were &amp;lsquo;chopping onions and cilantro and tomatoes,&amp;rsquo; just to make a reference to how it looked when they were trying to get the puck out of the corner,&amp;rdquo; said Jesus Lopez, who calls Vegas Golden Knights games in Spanish on ESPN Deportes (1460 AM).&lt;/p>
&lt;/blockquote>
&lt;p>I remember studying Spanish and playing hockey in high school. We&amp;rsquo;d have assignments to write about things that we did over the weekend or things that we enjoyed, and there were few resources available for how to translate phrases. Lopez translates a check against the boards as a &lt;em>torta de jamón&lt;/em>, or a &amp;ldquo;ham sandwich,&amp;rdquo; and I think that&amp;rsquo;s delightful.&lt;/p>
&lt;p>Having lived in multiple foreign countries now, I am shocked at how many English language words and phrases make it into native conversation. I&amp;rsquo;m surprised that these announces do go so far to describe the action in Spanish; hockey is better when it can be for everyone.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.nbcnews.com/feature/nbc-out/american-psychological-association-links-masculinity-ideology-homophobia-misogyny-n956416">American Psychological Association links &amp;lsquo;masculinity ideology&amp;rsquo; to homophobia, misogyny&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The APA has finally made official what us feminists have known for years: there is a toxic brand of masculinity that damages men just as much as it damages other people, and men have been long needing a specific set of guidelines to deal with these behavioral traits before they become harmful.&lt;/p>
&lt;p>The article is not an indictment of masculinity, although many reacted to it that way. It calls out male privilege as a &amp;ldquo;double-edged sword;&amp;rdquo; in our &amp;lsquo;SJW&amp;rsquo; parlance, we&amp;rsquo;d say, &amp;ldquo;patriarchy hurts men, too.&amp;rdquo;&lt;/p>
&lt;blockquote>
&lt;p>“Men who benefit from their social power are also confined by system-level policies and practices as well as individual-level psychological resources necessary to maintain male privilege,” the guidelines state. “Thus, male privilege often comes with a cost in the form of adherence to sexist ideologies designed to maintain male power that also restrict men’s ability to function adaptively.”&lt;/p>
&lt;/blockquote>
&lt;p>Men overwhelmingly commit violent crimes, including mass shootings and acts of terror. There are entire subcultures of masculine ideology built around entitlement, poisoned by the hatred that entitlement breeds. These guidelines should be seen as a step towards &lt;em>serving them&lt;/em>, but it will be a hard sell for a culture that has built its identity around those toxic principles.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://edition.cnn.com/2018/12/21/politics/first-police-officer-charged-with-hate-crime-in-years/index.html">This is the first police officer charged with a federal hate crime in at least 10 years&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>About time. Bordentown Township police chief Frank Nucera Jr. was indicted on Federal hate crime charges. This is extremely rare by itself, but the way he was taken down is even more stunning.&lt;/p>
&lt;blockquote>
&lt;p>Sergeant Nathan Roohr had been secretly making tapes for months because he felt Nucera created a toxic work environment, and he found the chief&amp;rsquo;s remarks about minorities offensive. The FBI investigation revealed that at least nine other officers were using hidden recording devices, as they reportedly shared Roorh&amp;rsquo;s concerns.&lt;/p>
&lt;/blockquote>
&lt;p>It&amp;rsquo;s seldom that we see police officers turning on their own, but it should go as no surprise that a racist cop who creates a toxic work environment also gives his command all the tools they need to subvert his authority. Nevertheless, this will be a hard case to win because the standard is almost impossibly high to begin with.&lt;/p>
&lt;blockquote>
&lt;p>Federal excessive force prosecutions are relatively rare because the government must prove an officer specifically set out to deprive a victim of his or her constitutional rights, per a 1945 Supreme Court decision known as Screws V. United States.&lt;/p>
&lt;/blockquote>
&lt;p>Intent is often hard to prove and it&amp;rsquo;s even harder to prove a specific intent when the wrongdoers are aware of the many ways to avoid leaving that evidence. It will be interesting to watch how the case unfolds.&lt;/p>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a>) &lt;small>&lt;em>Progress: 3%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 25%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.springer.com/de/book/9783319110790">&lt;em>Linear Algebra Done Right&lt;/em>, Sheldon Axler&lt;/a> (see my working progress &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>)&lt;small>&lt;em>Progress: 10%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>I&amp;rsquo;ll be bouncing around Berlin this week trying to get things settled in my flat for when I return from my next trip. I have a few countries to go between here and there, though, so it&amp;rsquo;ll be a busy one. I have a couple pieces I&amp;rsquo;m writing, one that will be published soon and one that is an internal piece for my company. I&amp;rsquo;ve also got some blog posts in development and a bunch of conferences to prepare for and organize. No rest for the wicked, I guess. Bis später!&lt;/p></description></item><item><title>Linear Algebra Done Right: Chapter 1</title><link>https://emilygorcenski.com/post/linear-algebra-done-right-chapter-1/</link><pubDate>Mon, 07 Jan 2019 00:30:00 +0100</pubDate><guid>https://emilygorcenski.com/post/linear-algebra-done-right-chapter-1/</guid><description>&lt;p>This post works though the exercises for Chapter 1 of Axler's &lt;em>Linear Algebra Done Right&lt;/em>. The summary review can be found &lt;a href="https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/">here&lt;/a>.&lt;/p>
&lt;p>Chapter 1s are usually gentle introductions and that is no less true for this text than any other. After the briefest introduction of complex numbers and their arithmetic, and an introduction of the concept of a field to almost the minimal extent possible, Axler presents the concepts of vector spaces, vector subspaces, and sums and direct sums. The latter is perhaps the most surprising of anything introduced in this chapter; most undergraduate texts tend to skip this entirely.&lt;/p>
&lt;p>Axler introduces fields but tells the reader to ignore them for the most part, and seems to present the concept so that he can use &lt;span class="math">\(\mathbb{F}\)&lt;/span> to represent &lt;span class="math">\(\mathbb{R}\)&lt;/span> or &lt;span class="math">\(\mathbb{C}\)&lt;/span>. He moves the reader towards abstract concepts but develops very little foundation as to why, how, or for what benefit. Likewise, he introduces abstract polynomial vector spaces, &lt;span class="math">\(\mathcal{P}(\mathbb{F})\)&lt;/span> with seemingly little guidance.&lt;/p>
&lt;p>Strangely, he presumes familiarity with set theory and set builder notation; I've had far more advanced texts spend at least a couple early pages on this to ensure completeness. No theorems, and one or two useful propositions, are presented and proved. His writing style does not beget clarity; most texts, even ones that strive for more abstraction, will present things like properties and definitions in some coherent, explicit manner. Axler does not, and you have to do the mental bookkeeping by extracting what he wants from his prose.&lt;/p>
&lt;p>&lt;em>1. Suppose &lt;span class="math">\(a\)&lt;/span> and &lt;span class="math">\(b\)&lt;/span> are real numbers, not both &lt;span class="math">\(0\)&lt;/span>. Find real numbers &lt;span class="math">\(c\)&lt;/span> and &lt;span class="math">\(d\)&lt;/span> such that &lt;span class="math">\(1 / (a + bi) = c + di\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>We have&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
1 / (a + bi) &amp;= c + di \\
1 &amp;= (a + bi)(c + di) \\
&amp;= ac - bd + (bc + ad)i.
\end{align}\]&lt;/span>&lt;/p>
&lt;p>This implies&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
ac - bd &amp;= 1, \\
bc + ad &amp;= 0.
\end{align}\]&lt;/span>&lt;/p>
&lt;p>Let us proceed by cases. Suppose &lt;span class="math">\(a = 0.\)&lt;/span> Then by hypothesis, &lt;span class="math">\(b \neq 0\)&lt;/span>. From &lt;span class="math">\(ac - bd = 1\)&lt;/span> we get &lt;span class="math">\(d = -\frac{1}{b}\)&lt;/span> and from &lt;span class="math">\(bc + ad = 0\)&lt;/span> we get &lt;span class="math">\(bc = 0 \implies c = 0\)&lt;/span>.&lt;/p>
&lt;p>Suppose &lt;span class="math">\(b = 0,\)&lt;/span> then by hypothesis &lt;span class="math">\(a \neq 0\)&lt;/span> and we reduce to real-number division.&lt;/p>
&lt;p>Finally, suppose neither &lt;span class="math">\(a\)&lt;/span> nor &lt;span class="math">\(b\)&lt;/span> are zero. Then &lt;span class="math">\(bc = -ad \implies c = -\frac{ad}{b}\)&lt;/span>. Substituting, we find, &lt;span class="math">\(-\frac{a^2d}{b} - bd = 1\)&lt;/span>, which reduces to &lt;span class="math">\(d(a^2+b^2) = -b\)&lt;/span>. This gives us the general result&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
c &amp;= \frac{a}{a^2+b^2}, \\
d &amp;= -\frac{b}{a^2+b^2}.
\end{align}\]&lt;/span>&lt;/p>
&lt;p>&lt;em>2. Show that &lt;span class="math">\(\frac{-1+\sqrt{3}i}{2}\)&lt;/span> is a cube root of &lt;span class="math">\(1.\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>We verify through computation:&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
\left(\frac{-1 + \sqrt{3}i}{2}\right)^3 &amp;= \left(-\frac12+\frac{\sqrt3}{2}i\right) \left( -\frac12 - \frac{\sqrt3}{2}i\right) \\
&amp;= \frac14 + \frac34 \\
&amp;= 1.
\end{align}\]&lt;/span>&lt;/p>
&lt;p>&lt;em>3. Prove that &lt;span class="math">\(-(-v) = v\)&lt;/span> for every &lt;span class="math">\(v \in V.\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>From &lt;span class="math">\(-v + v = 0\)&lt;/span>, we have that &lt;span class="math">\(-v \equiv (-1)v\)&lt;/span>, so &lt;span class="math">\(-(-v) = (-1)(-v) = (-1)((-1)v).\)&lt;/span> By scalar multiplication, this becomes &lt;span class="math">\(-(-v) = (-1)(-1)v = 1v = v\)&lt;/span>.&lt;/p>
&lt;p>&lt;em>4. Prove that if &lt;span class="math">\(a \in \mathbb{F}, v \in V\)&lt;/span>, and &lt;span class="math">\(av = 0\)&lt;/span>, then &lt;span class="math">\(a = 0\)&lt;/span> or &lt;span class="math">\(v = 0.\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>Suppose not. Then &lt;span class="math">\(a \neq 0\)&lt;/span> and &lt;span class="math">\(v \neq 0\)&lt;/span>. Since &lt;span class="math">\(av = (av_1, av_2, \ldots)\)&lt;/span> and since &lt;span class="math">\(v \neq 0\)&lt;/span> implies that there exists some &lt;span class="math">\(j\)&lt;/span> for which &lt;span class="math">\(v_j \neq 0\)&lt;/span>, this implies that &lt;span class="math">\(av_j = 0\)&lt;/span> for non-zero &lt;span class="math">\(a\)&lt;/span> and &lt;span class="math">\(v_j\)&lt;/span>. However, since &lt;span class="math">\(\mathbb{F}\)&lt;/span> is a field, it has no non-zero zero divisors, so this proves the contradiction.&lt;sup class="footnote-ref" id="fnref:1">&lt;a class="footnote" href="#fn:1">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;em>5. For each of the following subsets of &lt;span class="math">\(\mathbb{F}^3\)&lt;/span>, determine whether it is a subspace of &lt;span class="math">\(\mathbb{F}^3\)&lt;/span>:&lt;/em>&lt;/p>
&lt;p>&lt;em>(a.) &lt;span class="math">\(\{(x_1, x_2, x_3) \in \mathbb{F}^3\ :\ x_1 + 2x_2 + 3x_3 = 0\}\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>&lt;em>(b.) &lt;span class="math">\(\{(x_1, x_2, x_3) \in \mathbb{F}^3\ :\ x_1 + 2x_2 + 3x_3 = 4\}\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>&lt;em>(c.) &lt;span class="math">\(\{(x_1, x_2, x_3) \in \mathbb{F}^3\ :\ x_1x_2x_3 = 0\}\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>&lt;em>(d.) &lt;span class="math">\(\{(x_1, x_2, x_3) \in \mathbb{F}^3\ :\ x_1 = 5x_3\}\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>We can proceed by checking against the subspace axioms. For &lt;em>(a)&lt;/em>, we have &lt;span class="math">\(0 + 2\cdot 0 + 3\cdot 0 = 0\)&lt;/span> and &lt;span class="math">\(ax_1 + 2ax_2 + 3ax_3 = a(x_1+2x_2+3x_3) = a0 = 0\)&lt;/span> so we must only do work to verify closure by addition. Let &lt;span class="math">\(x, y\)&lt;/span> be two vectors satisfying the subset condition. Take &lt;span class="math">\(x_1+y_1 + 2(x_2 + y_2) + 3(x_3 + y_3) = x_1 + 2x_2 + 3x_3 + y_1 + 2y_2 + 3y_3 = 0 + 0 = 0.\)&lt;/span> Therefore, the set is closed under vector addition, so the space is a subspace.&lt;/p>
&lt;p>For &lt;em>(b)&lt;/em>, we have an immediate counterexample: &lt;span class="math">\(0 + 2\cdot 0 + 3\cdot 0 \neq 4,\)&lt;/span> so the subset is not a subspace.&lt;/p>
&lt;p>For &lt;em>(c)&lt;/em>, consider &lt;span class="math">\(x = (1, 0, 0)\)&lt;/span> and &lt;span class="math">\(y = (0, 1, 1)\)&lt;/span>. Then, &lt;span class="math">\(x+y = (1, 1, 1)\)&lt;/span> is not in the set, so it is not closed under addition and cannot be a subspace.&lt;/p>
&lt;p>For &lt;em>(d)&lt;/em>, we have that &lt;span class="math">\(0 = 5\cdot 0\)&lt;/span>. If &lt;span class="math">\(x_1 = 5x_3\)&lt;/span>, then &lt;span class="math">\(ax_1 = 5ax_3\)&lt;/span>, so all that is left is to check closure of addition. Once again, if &lt;span class="math">\(x\)&lt;/span> and &lt;span class="math">\(y\)&lt;/span> meet the criteria, then &lt;span class="math">\(x_1 = 5x_3\)&lt;/span> and &lt;span class="math">\(y_1 = 5y_3\)&lt;/span> so &lt;span class="math">\(x_1 + y_1 = 5x_3 + 5y_3 \implies (x_1 + y_1) = 5(x_3 + y_3)\)&lt;/span> so we do in fact have a vector subspace.&lt;/p>
&lt;p>&lt;em>6. Give an example of a nonempty subset &lt;span class="math">\(U\)&lt;/span> of &lt;span class="math">\(\mathbb{R}^2\)&lt;/span> such that &lt;span class="math">\(U\)&lt;/span> is closed under addition and under taking additive inverses, but &lt;span class="math">\(U\)&lt;/span> is not a subspace of &lt;span class="math">\(\mathbb{R}^2\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>This is the first thought-provoking exercise of the book. We can construct what we must see in the counter-example from what is given. If &lt;span class="math">\(U\)&lt;/span> is closed under addition (satisfying one axiom), and is closed under additive inverses, then it must also contain the identity element (satisfying another axiom). The remaining axiom is closure under scalar multiplication. This makes it easy at this point. Let&lt;/p>
&lt;p>&lt;span class="math">\[U = \left\{ (x, y)\ :\ x, y \in \mathbb{Z}\right\},\]&lt;/span>&lt;/p>
&lt;p>then for any &lt;span class="math">\(\alpha \in \mathbb{R} \setminus \mathbb{Z}\)&lt;/span> it is clear that &lt;span class="math">\(\alpha (x,y) \notin U\)&lt;/span>.&lt;/p>
&lt;p>&lt;em>7. Give an example of a nonempty subset &lt;span class="math">\(U\)&lt;/span> of &lt;span class="math">\(\mathbb{R}^2\)&lt;/span> such that &lt;span class="math">\(U\)&lt;/span> is closed under scalar multiplication, but &lt;span class="math">\(U\)&lt;/span> is not a subspace of &lt;span class="math">\(\mathbb{R}^2\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>Like the previous example, we can use the axioms to derive an example. Consider the following:&lt;/p>
&lt;p>&lt;span class="math">\[U = \left\{ (x, 0)\ :\ x \in \mathbb{R} \right\} \cup \left\{ (0, y)\ :\ y \in \mathbb{R} \right\}.\]&lt;/span>&lt;/p>
&lt;p>Evidently, &lt;span class="math">\(U \subset \mathbb{R}^2.\)&lt;/span> For any &lt;span class="math">\(v \in U\)&lt;/span>, we have &lt;span class="math">\(\alpha v\)&lt;/span> implies &lt;span class="math">\((\alpha x, 0) \in U\)&lt;/span> or &lt;span class="math">\((0, \alpha y) \in U\)&lt;/span>, so we satisfy closure under scalar multiplication. However, &lt;span class="math">\((x, y) \notin U\)&lt;/span> for &lt;span class="math">\(x, y\)&lt;/span> both nonzero, so we do not satisfy closure under addition, and therefore we have not created a subspace.&lt;/p>
&lt;p>&lt;em>8. Prove that the intersection of any collections of subspaces of &lt;span class="math">\(V\)&lt;/span> is a subspace of &lt;span class="math">\(V.\)&lt;/span>&lt;/em>&lt;/p>
&lt;p>Let &lt;span class="math">\(U_i\)&lt;/span> be a subspace of &lt;span class="math">\(V\)&lt;/span> for all &lt;span class="math">\(i\)&lt;/span>, and let &lt;span class="math">\(U = \bigcap_i U_i\)&lt;/span>. Suppose &lt;span class="math">\(U\)&lt;/span> is not a subspace of &lt;span class="math">\(V\)&lt;/span>. Then, at least one of the following statements must be true:&lt;/p>
&lt;ul>
&lt;li>There is a &lt;span class="math">\(U_j\)&lt;/span> such that &lt;span class="math">\(0 \notin U_j\)&lt;/span>.&lt;/li>
&lt;li>Take &lt;span class="math">\(x, y \in U\)&lt;/span>. Then, there is a &lt;span class="math">\(U_k\)&lt;/span> such that &lt;span class="math">\(x, y \in U_k\)&lt;/span> but &lt;span class="math">\(x + y \notin U_k\)&lt;/span>.&lt;/li>
&lt;li>Take &lt;span class="math">\(x \in U\)&lt;/span>. Then, there is a &lt;span class="math">\(U_l\)&lt;/span> such that &lt;span class="math">\(x \in U_l\)&lt;/span> but &lt;span class="math">\(\alpha x \notin U_l\)&lt;/span>.&lt;/li>
&lt;/ul>
&lt;p>Each of these conditions violates the hypotheses that for all &lt;span class="math">\(j\)&lt;/span>, &lt;span class="math">\(U_j\)&lt;/span> is a subspace. Therefore, &lt;span class="math">\(U\)&lt;/span> must be a subspace.&lt;/p>
&lt;p>&lt;em>9. Prove that the union of two subspaces of &lt;span class="math">\(V\)&lt;/span> is a subspace of &lt;span class="math">\(V\)&lt;/span> if and only if one of the subspaces is contained in the other.&lt;/em>&lt;/p>
&lt;p>Let &lt;span class="math">\(V_1\)&lt;/span> and &lt;span class="math">\(V_2\)&lt;/span> be subspaces of &lt;span class="math">\(V\)&lt;/span> and assume that &lt;span class="math">\(U = V_1 \cup V_2\)&lt;/span> is a subspace of &lt;span class="math">\(V\)&lt;/span>. Take &lt;span class="math">\(x \in V_1 \setminus V_2\)&lt;/span> and &lt;span class="math">\(y \in V_2 \setminus V_1\)&lt;/span>. Evidently, &lt;span class="math">\(x, y \in U\)&lt;/span>, so &lt;span class="math">\(x + y \in U\)&lt;/span>. Since &lt;span class="math">\(U = V_1 \cup V_2\)&lt;/span>, then &lt;span class="math">\(x + y \in V_1\)&lt;/span> or &lt;span class="math">\(x + y \in V_2\)&lt;/span>, necessarily. By closure under addition, this implies that either &lt;span class="math">\(y \in V_1\)&lt;/span> or &lt;span class="math">\(x \in V_2\)&lt;/span>, contradicting the assumption that both subspaces can have unique elements.&lt;/p>
&lt;p>For the converse, assume &lt;span class="math">\(V_1 \subset V_2\)&lt;/span>. Then &lt;span class="math">\(V_1 \cup V_2 = V_2\)&lt;/span>, which is a subspace by hypothesis.&lt;/p>
&lt;p>&lt;em>10. Suppose &lt;span class="math">\(U\)&lt;/span> is a subspace of &lt;span class="math">\(V\)&lt;/span>. What is &lt;span class="math">\(U + U\)&lt;/span>?&lt;/em>&lt;/p>
&lt;p>Since &lt;span class="math">\(U\)&lt;/span> is a subspace, it is closed under addition. Since every element of &lt;span class="math">\(U+U\)&lt;/span> is the sum of two elements of &lt;span class="math">\(U\)&lt;/span>, and since &lt;span class="math">\(U\)&lt;/span> is closed under addition, then &lt;span class="math">\(U + U = U\)&lt;/span>.&lt;/p>
&lt;p>&lt;em>11. Is the operation of addition on the subspaces of &lt;span class="math">\(V\)&lt;/span> commutative? Associative?&lt;/em>&lt;/p>
&lt;p>Let &lt;span class="math">\(U_1, U_2, U_3\)&lt;/span> be subspaces of &lt;span class="math">\(V\)&lt;/span>. We have:&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
U_1 + U_2 &amp;= \left\{ x + y\ :\ x \in U_1, y \in U_2 \right\} \\
&amp;= \left\{ (x_1, x_2, \ldots) + (y_1, y_2, \ldots)\ :\ x \in U_1, y \in U_2 \right\} \\
&amp;= \left\{ (x_1 + y_1, x_2 + y_2, \ldots)\ :\ x \in U_1, y \in U_2 \right\} \\
&amp;= \left\{ (y_1 + x_1, y_2 + x_2, \ldots)\ :\ x \in U_1, y \in U_2 \right\} \\
&amp;= \left\{ (y_1, y_2, \ldots) + (x_1, x_2, \ldots)\ :\ x \in U_1, y \in U_2 \right\} \\
&amp;= U_2 + U_1.
\end{align}\]&lt;/span>&lt;/p>
&lt;p>Therefore, addition is commutative.&lt;/p>
&lt;p>Furthermore,&lt;/p>
&lt;p>&lt;span class="math">\[\begin{align}
(U_1 + U_2) + U_3 &amp;= \left\{ (x + y) + z\ :\ x \in U_1, y \in U_2, z \in U_3 \right\} \\
&amp;= \left\{ x + (y + z)\ :\ x \in U_1, y \in U_2, z \in U_3 \right\} \\
&amp;= U_1 + (U_2 + U_3).
\end{align}\]&lt;/span>&lt;/p>
&lt;p>Therefore, addition is also associative.&lt;/p>
&lt;p>&lt;em>12. Does the operation of addition on subspaces of &lt;span class="math">\(V\)&lt;/span> have an additive identity? Which subspaces have additive inverses?&lt;/em>&lt;/p>
&lt;p>Consider a subset containing the zero vector and nothing more; this is trivially a subspace. Moreover, since every subspace by definition contains the zero vector, adding this trivial subspace to any other nontrivial subspace yields precisely the non-trivial subspace.&lt;/p>
&lt;p>Suppose a subspace is an additive inverse of another subspace. Then, by the definition of subspace addition, &lt;em>every&lt;/em> combination of sums of elements must be the zero vector. But since every subspace contains the zero vector, this can only be true if every element of the subspace and its additive inverse is the zero vector. Therefore, only the trivial subspace has an additive inverse.&lt;/p>
&lt;p>&lt;em>13. Prove or give a counterexample: if &lt;span class="math">\(U_1, U_2, W\)&lt;/span> are subspaces of &lt;span class="math">\(V\)&lt;/span> such that &lt;span class="math">\(U_1 + W = U_2 + W\)&lt;/span>, then &lt;span class="math">\(U_1 = U_2\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>This is not generally true. Let &lt;span class="math">\(U_1 = W\)&lt;/span> and let &lt;span class="math">\(U_2\)&lt;/span> be the trivial subspace. Then since &lt;span class="math">\(W + W = W\)&lt;/span>, we have &lt;span class="math">\(U_1 + W = U_2 + W\)&lt;/span> but by definition &lt;span class="math">\(U_1 \neq U_2\)&lt;/span>.&lt;/p>
&lt;p>&lt;em>14. Suppose &lt;span class="math">\(U\)&lt;/span> is the subspace of &lt;span class="math">\(\mathcal{P}(\mathbb{F})\)&lt;/span> consisting of all polynomials &lt;span class="math">\(p\)&lt;/span> of the form&lt;/em>&lt;/p>
&lt;p>&lt;span class="math">\[p(z) = az^2 + bz^5,\]&lt;/span>&lt;/p>
&lt;p>&lt;em>where &lt;span class="math">\(a, b \in \mathbb{F}\)&lt;/span>. Find a subspace &lt;span class="math">\(W\)&lt;/span> of &lt;span class="math">\(\mathcal{P}(\mathbb{F})\)&lt;/span> such that &lt;span class="math">\(\mathcal{P}(\mathbb{F}) = U \oplus W\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>Proposition 1.9 of the text tells us that &lt;span class="math">\(\mathcal{P}(\mathbb{F}) = U \oplus W\)&lt;/span> if and only if &lt;span class="math">\(\mathcal{P}(\mathbb{F}) = U + W\)&lt;/span> and &lt;span class="math">\(U \cap W = \{0\}\)&lt;/span>. Therefore, we can construct &lt;span class="math">\(W\)&lt;/span> in such a way as to avoid the &amp;quot;powers&amp;quot; contained in &lt;span class="math">\(U\)&lt;/span>; namely:&lt;/p>
&lt;p>&lt;span class="math">\[W = \left\{ \sum_{i \neq 2, 5} c_i z^i\ :\ c_i \in \mathbb{F} \right\}.\]&lt;/span>&lt;/p>
&lt;p>Let us verify that &lt;span class="math">\(W\)&lt;/span> has all the desired properties:&lt;/p>
&lt;ul>
&lt;li>&lt;span class="math">\(0 \in W\)&lt;/span>: let &lt;span class="math">\(c_i = 0\)&lt;/span> for all $i$;&lt;/li>
&lt;li>closed under addition: let &lt;span class="math">\(x, y \in W\)&lt;/span>, then by the properties of fields, we find that &lt;span class="math">\(x + y \in W\)&lt;/span>;&lt;/li>
&lt;li>closed under scalar multiplication: &lt;span class="math">\(\alpha c_i \in \mathbb{F}\)&lt;/span> for all &lt;span class="math">\(\alpha \in \mathbb{F}\)&lt;/span> implies that &lt;span class="math">\(\alpha x \in W\)&lt;/span> for all &lt;span class="math">\(x \in W\)&lt;/span>;&lt;/li>
&lt;li>&lt;span class="math">\(U \cap W = \{0\}\)&lt;/span>: by construction;&lt;/li>
&lt;li>&lt;span class="math">\(U + W = \mathcal{P}(\mathbb{F})\)&lt;/span>: by construction.&lt;/li>
&lt;/ul>
&lt;p>Therefore, &lt;span class="math">\(\mathcal{P}(\mathbb{F}) = U \oplus W\)&lt;/span>.&lt;/p>
&lt;p>&lt;em>15. Prove or give a counterexample: if &lt;span class="math">\(U_1, U_2, W\)&lt;/span> are subspaces of &lt;span class="math">\(V\)&lt;/span> such that &lt;span class="math">\(V = U_1 \oplus W\)&lt;/span> and &lt;span class="math">\(V = U_2 \oplus W\)&lt;/span>, then &lt;span class="math">\(U_1 = U_2\)&lt;/span>.&lt;/em>&lt;/p>
&lt;p>Let &lt;span class="math">\(V = \left\{ \left( x_1, x_2 \right) \ :\ x_1, x_2 \in \mathbb{F} \right\}\)&lt;/span>. Take &lt;span class="math">\(U_1 = \left\{ \left( x_1, 0 \right) \ :\ x_1 \in \mathbb{F} \right\}\)&lt;/span> and &lt;span class="math">\(U_2 = \left\{ \left(0, x_2 \right) \ :\ x_2 \in \mathbb{F} \right\}\)&lt;/span>. Then, clearly we have &lt;span class="math">\(U_1, U_2 \subset V\)&lt;/span> and that &lt;span class="math">\(U_1, U_2\)&lt;/span> satisfy the vector space conditions. Hence, they are subspaces of &lt;span class="math">\(V\)&lt;/span>.&lt;/p>
&lt;p>Now take &lt;span class="math">\(W = \left\{ \left( x_1, x_1 \right) \ :\ x\in \mathbb{F} \right\}\)&lt;/span>. Again, it is clear that &lt;span class="math">\(W \subset V\)&lt;/span> and the vector space axioms hold. So &lt;span class="math">\(W\)&lt;/span> is a subspace of &lt;span class="math">\(V\)&lt;/span> as well.&lt;/p>
&lt;p>Now, it is clear that &lt;span class="math">\(U_1 \neq U_2\)&lt;/span>, and that &lt;span class="math">\(U_1 \cap W = \{0\} = U_2 \cap W,\)&lt;/span> by definition. So we must simply show that &lt;span class="math">\(V = U_1 + W = U_2 + W\)&lt;/span>. Take &lt;span class="math">\(\left(x_1, x_2\right) = v \in V\)&lt;/span>, and let &lt;span class="math">\(x_1 &lt; x_2\)&lt;/span>. Then, choose &lt;span class="math">\(\left(x_1, x_1\right) = w_1 \in W\)&lt;/span> and then choose &lt;span class="math">\(\left(x_2 - x_1, 0\right) \in U_1\)&lt;/span>. Likewise, if &lt;span class="math">\(x_2 > x_1\)&lt;/span>, we merely reverse the indices. This demonstrates that &lt;span class="math">\(V = U_1 + W = U_2 + W\)&lt;/span>, so &lt;span class="math">\(V = U_1 \oplus W = U_2 \oplus W\)&lt;/span>, and a counterexample is derived.&lt;/p>
&lt;div class="footnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">Axler does not introduce this property of fields at this stage of the text. Implicitly, by the books convention, we have &lt;span class="math">\(\mathbb{F}\)&lt;/span> to be assumed as either &lt;span class="math">\(\mathbb{R}\)&lt;/span> or &lt;span class="math">\(\mathbb{C}\)&lt;/span>, but this restriction herein adds very little except extra baggage to account for.
&lt;a class="footnote-return" href="#fnref:1">&lt;sup>[return]&lt;/sup>&lt;/a>&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Working Review: Linear Algebra Done Right, Sheldon Axler</title><link>https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/</link><pubDate>Mon, 07 Jan 2019 00:00:00 +0100</pubDate><guid>https://emilygorcenski.com/post/working-review-linear-algebra-done-right-sheldon-axler/</guid><description>&lt;p>During my undergrad, I took a linear algebra class that I struggled with enough to switch sections to another professor early in the semester. A big reason I switched classes was the text, &lt;em>Linear Algebra Done Right&lt;/em> by Sheldon Axler.&lt;/p>
&lt;p>I despised the presentation of the book; I found its tone and title arrogant, and a lack of worked examples stunted my learning. I had extensive experience with matrix algebra in the past, but this class presented the material abstractly. I wasn&amp;rsquo;t prepared for that.&lt;/p>
&lt;p>At that point, I hadn&amp;rsquo;t learned how to prove things properly. I hadn&amp;rsquo;t learned the meaning of abstraction and I had struggled with non-computational mathematics. This book didn&amp;rsquo;t present itself well to me, and I still find it&amp;rsquo;s writing to be a bit non-obvious at times. But I wanted to revisit this book so many years later, now that I am intellectually more mature and with a better understanding of the text under my belt.&lt;/p>
&lt;p>So I&amp;rsquo;m going to work through it again, to see how I&amp;rsquo;m doing. I&amp;rsquo;m working through the Second Edition. &lt;a href="https://www.amazon.com/Linear-Algebra-Right-Undergraduate-Mathematics/dp/0387982582">The book&lt;/a> is now in its third edition; I don&amp;rsquo;t know what changes have been made, but I think the second edition is perfectly suitable for refreshing my undergraduate knowledge of the topic.&lt;/p>
&lt;p>I&amp;rsquo;ll go through the book chapterwise; direct links to worked exercises will be updated here.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://emilygorcenski.com/post/linear-algebra-done-right-chapter-1/">Chapter 1&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>2019 Weekly Recap: Week 1</title><link>https://emilygorcenski.com/post/2019-weekly-recap-week-1/</link><pubDate>Sat, 05 Jan 2019 11:09:19 -0500</pubDate><guid>https://emilygorcenski.com/post/2019-weekly-recap-week-1/</guid><description>&lt;p>My holiday break is coming to an end and it was good to be back in Charlottesville for a spell. I had the chance to spend time with family and friends and rang in the new year with &lt;a href="https://twitter.com/socialistdogmom">@socialistdogmom&lt;/a>&amp;rsquo;s adorable antifascist dachshunds. I&amp;rsquo;m heading off on some travels, which includes a trip to Berlin to bring some things out to my flat there, before heading out to my next assignment. Much of the week was spent socializing, traveling, and relaxing so this recap is perhaps a bit lite.&lt;/p>
&lt;p>&lt;small>&lt;em>I&amp;rsquo;ve decided this year that to try writing brief weekly summaries about what I&amp;rsquo;m doing, reading, working on, etc. The purpose of these posts is just to get myself into a bit of a rhythm of writing and spending more thoughtful time doing things that are meaningful to me. I&amp;rsquo;ll try to publish these on Saturdays, but that will be modulated by my work/travel/energy levels.&lt;/em>&lt;/small>&lt;/p>
&lt;h3 id="what-ive-read">What I&amp;rsquo;ve read&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://briarpatchmagazine.com/articles/view/the-grunt-work-of-antifascism">The grunt work of antifascism&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This piece by the fantastic Kim Kelly looks into what antifascist activism looks like behind the scenes. Kim reached out to me for comment for this a while back, and I was happy that she was able to include my comments on the work being done by the parents and community members in Albemarle Co, Virginia, working with the &lt;a href="https://www.facebook.com/pages/category/Community/Hate-Free-Schools-Coalition-of-Albemarle-County-491986071217483/">Hate-Free Schools Coalition&lt;/a> to remove the hateful symbols of the Confederacy from our public schools. The piece gives due respect to the amount of research and analysis that gets done in the movement.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.huffingtonpost.com/entry/opinion-blackkklansman-spike-lee-oscars-trump-charlottesville_us_5c252e7ae4b08aaf7a8ea97d?ncid=engmodushpmg00000004">&amp;lsquo;BlacKkKlansman&amp;rsquo; was the most frighteningly accurate movie of 2018&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Talia Lavin breaks down what she found relevant about BlacKkKlansman in the cultural moment we live in. This movie has a lot of meaning to me, because its dramatic ending scene starts with the August 11 torch march and the August 12 car attack, two critical events in my life. My feelings on the movie are mixed: on the one hand, I think that this media is important and I think it&amp;rsquo;s necessary to share these messages and reinforce the fact that hate hasn&amp;rsquo;t gone away; on the other, Spike Lee is profiting off of the trauma of my community and me. Lee did not ask or receive permission from the students and community members that were in the film. And troublingly, they censor the faces of the torch marchers but not the activists opposing them. This is disturbing and dehumanizing.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.refinery29.com/en-us/2019/01/220816/alexandria-ocasio-cortez-dancing-video-college">The right keeps trying (&amp;amp; failing) to smear Alexandria Ocasio-Cortez&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>An excellent take by Andrea González-Ramírez, a Latina woman, on how AOC is exposing deep-rooted fears in conservative minds after an attempt to smear her backfired in an epic way. This bit succinctly summarizes the political moment we &lt;em>could&lt;/em> be in if we commit ourselves to it:&lt;/p>
&lt;blockquote>
&lt;p>At its root, the pushback is related to how the right is largely terrified of the shifting demographics in the country. Ocasio-Cortez, a young Latina from a working class background, has become an avatar for those anxieties, particularly because she defeated one of the most powerful old, white men in the House and she hasn&amp;rsquo;t shied away from speaking her truth.&lt;/p>
&lt;/blockquote>
&lt;h3 id="what-im-reading">What I&amp;rsquo;m reading&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.com/Magnificent-Ambersons-Booth-Tarkington/dp/1482708329/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1546705856&amp;amp;sr=1-1&amp;amp;keywords=the+magnificent+ambersons&amp;amp;refinements=p_n_feature_browse-bin%3A2656022011">&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington&lt;/a> (part of my &lt;a href="https://emilygorcenski.com/post/the-modern-library-project/">Modern Library project&lt;/a> &lt;small>&lt;em>Progress: 0%&lt;/em>&lt;/small>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Short-Stories-German-Beginners-Yourself/dp/1473683378/ref=sr_1_3?ie=UTF8&amp;amp;qid=1546705815&amp;amp;sr=8-3&amp;amp;keywords=short+stories+in+german">&lt;em>Short Stories in German&lt;/em>, Olly Richards and Alex Rawlings&lt;/a> &lt;small>&lt;em>Progress: 0%&lt;/em>&lt;/small>&lt;/li>
&lt;/ul>
&lt;h3 id="the-week-ahead">The week ahead&lt;/h3>
&lt;p>This upcoming week will mostly be re-settling into a routine. I&amp;rsquo;ve got a bunch of work to do on this blog and on First Vigil. I have about 6 or 7 cases to add that I&amp;rsquo;ve already researched, and some tooling to write to make it easier to contribute. I&amp;rsquo;m hoping to get some reading done on my flights and do some work studying German.&lt;/p></description></item><item><title>Bangkok 2018</title><link>https://emilygorcenski.com/post/bangkok-2018/</link><pubDate>Fri, 28 Dec 2018 15:48:26 -0500</pubDate><guid>https://emilygorcenski.com/post/bangkok-2018/</guid><image><url>https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic.jpg" width="600"/></media:content><description>&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/street.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/street-thumb.jpg" alt="" />&lt;/a>
&lt;h2>ถนน นครสวรรค์ (Nakhon Sawan Rd)&lt;/h2>
&lt;p>The Bike for Dad event closed a lot of roads, and here, ถนน นครสวรรค์ (Nakhon Sawan Rd) is tranquil as evening falls.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/street2.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/street2-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Pawn&lt;/h2>
&lt;p>The many alleys of Bangkok are where the city life really happens.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-1.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-1-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Bike for Dad&lt;/h2>
&lt;p>While exploring Bangkok, I stumbled into the Bike for Dad event, led by His Majesty the King. Old City was lit up brightly for the event.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-2.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-2-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Bike for Dad&lt;/h2>
&lt;p>While exploring Bangkok, I stumbled into the Bike for Dad event, led by His Majesty the King. Old City was lit up brightly for the event.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-3.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/bike-for-dad-3-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Bike for Dad&lt;/h2>
&lt;p>While exploring Bangkok, I stumbled into the Bike for Dad event, led by His Majesty the King. Old City was lit up brightly for the event.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/democracy-monument.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/democracy-monument-thumb.jpg" alt="" />&lt;/a>
&lt;h2>อนุสาวรีย์ประชาธิปไตย (Democracy Monument)&lt;/h2>
&lt;p>Not the best framing, but the Democracy Monument is gorgeous, especially with traffic shut down.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/traffic-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Traffic&lt;/h2>
&lt;p>Bangkok is notorious for its traffic woes, but from time to time, as the sun sets, a beautiful scene can be seen.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/2561.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/2561-thumb.jpg" alt="" />&lt;/a>
&lt;h2>2561&lt;/h2>
&lt;p>Thailand&amp;rsquo;s epoch is the death of the Buddha, so in Thailand the year 2561 corresponds to 2018 in the Gregorian calendar.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/khao-san-road.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/khao-san-road-thumb.jpg" alt="" />&lt;/a>
&lt;h2>ถนนข้าสาน (Khao San Rd)&lt;/h2>
&lt;p>The Khao San Road is a world-famous tourist destination, bustling with street vendors and late-night shops.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/rama-iii.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/rama-iii-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Memorial to King Rama III&lt;/h2>
&lt;p>A momument stands honoring King Rama III of Thailand.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/wat-soonthorn-thammathan.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/wat-soonthorn-thammathan-thumb.jpg" alt="" />&lt;/a>
&lt;h2>วัดสุนทรธรรมทาน (Wat Soonthorn Thammathan)&lt;/h2>
&lt;p>A Buddhist temple in Old City Bangkok.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/victory-monument.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/victory-monument-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Victory Monument&lt;/h2>
&lt;p>Bangkok has its own Siegessäule, commemorating Thailand&amp;rsquo;s victory over France in WWII.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/selfie-xmas.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/selfie-xmas-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Christmas Selfie!&lt;/h2>
&lt;p>Bangkok takes its Christmas decorations very seriously.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/tranz.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/tranz-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Hotel Tranz&lt;/h2>
&lt;p>Criminally, I was not staying at Hotel Tranz.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/canal.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/canal-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Canals&lt;/h2>
&lt;p>Bangkok has many canals. Most are polluted, but some retain their simple beauty.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-1.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-1-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-2.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-2-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-3.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-3-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-4.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-4-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-5.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-5-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-6.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-6-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-7.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-7-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-8.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-8-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-9.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-9-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-10.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-10-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-11.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-11-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-12.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-12-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>Messages against cultural appropriation.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-13.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-13-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-14.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/grand-palace-14-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Grand Palace&lt;/h2>
&lt;p>A scene from the Grand Palace.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/ministry.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/ministry-thumb.jpg" alt="" />&lt;/a>
&lt;h2>The Defense Ministry&lt;/h2>
&lt;p>This building calls back to Parisian architechture, an oddity in a city with such unique and beautiful Buddhist styles.&lt;/p>
&lt;/article>
&lt;article class="thumb">
&lt;a href="https://emilygorcenski.com/photo-gallery/bangkok-2018/river1.jpg" class="image">&lt;img src="https://emilygorcenski.com/photo-gallery/bangkok-2018/river1-thumb.jpg" alt="" />&lt;/a>
&lt;h2>Chao Phraya&lt;/h2>
&lt;p>Ferry traffic on the Chao Phraya river.&lt;/p>
&lt;/article></description></item><item><title>Various European Travels 2018</title><link>https://emilygorcenski.com/post/various-european-travels-2018/</link><pubDate>Fri, 28 Dec 2018 15:48:26 -0500</pubDate><guid>https://emilygorcenski.com/post/various-european-travels-2018/</guid><image><url>https://emilygorcenski.com/photo-gallery/europe-2018/hamburg.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/europe-2018/hamburg.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/europe-2018/hamburg.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/europe-2018/hamburg.jpg" width="600"/></media:content><description/></item><item><title>Book Report: The Turmoil by Booth Tarkington</title><link>https://emilygorcenski.com/post/book-report-the-turmoil-by-booth-tarkington/</link><pubDate>Fri, 28 Dec 2018 11:05:00 -0500</pubDate><guid>https://emilygorcenski.com/post/book-report-the-turmoil-by-booth-tarkington/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/building-buildings-closed-273280.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/building-buildings-closed-273280.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/building-buildings-closed-273280.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/building-buildings-closed-273280.jpg" width="600"/></media:content><description>&lt;p>Capping off the Modern Library' Top 100 list at #100 is &lt;em>The Magnificent Ambersons&lt;/em>, the second entry in Booth Tarkington&amp;rsquo;s &lt;em>Growth&lt;/em> trilogy. Although other entries on the list reflect entire trilogies or quartets, the initial and final books in this trilogy are not repreented in this entry. &lt;em>The Magnificent Ambersons&lt;/em>, which won Tarkington his first Pulitzer, does stand alone. However, I found myself feeling a little cheap by counting this entry complete without covering the entirety of the trilogy.&lt;/p>
&lt;p>The first book in the series is &lt;a href="https://www.goodreads.com/book/show/2451408.The_Turmoil">&lt;em>The Turmoil&lt;/em>&lt;/a>, written in 1915. Tarkington grew up in Indiana during the Second Industrial Revolution, a period characterized by rapid growth and heavy migration, in a country expanding faster than its means to control such expansion. Every boom period is followed by a bust, and Tarkington&amp;rsquo;s works seek to capture some of the human elements of this characteristic of capitalism.&lt;/p>
&lt;p>Published in 1915, &lt;em>The Turmoil&lt;/em> foretells the crushing bust that would soon affect many mid-sized Midwestern cities. The story follows the Sheridan family, a new-wealth capitalist family that rose to the top during the early industrial expansion in an unnamed but prototypical Midwestern city. Led by Mr. Sheridan, a powerful but mediocre patriarch, the Sheridan family consists of Mr. and Mrs. Sheridan and their four adult children: Jim, Roscoe, Bibbs, and Edith. Bibbs is the family&amp;rsquo;s black sheep. Sickly and frail and anxious with dreams of becoming a writer, Bibbs is forced by his father to work on the factory floor.&lt;/p>
&lt;p>Tarkington&amp;rsquo;s novel serves as a capitalist retelling of the story of Job. Tarkington&amp;rsquo;s characters are one dimensional; that one dimension is little more than a vessel to convey the story of the trial of Sheridan&amp;rsquo;s (Job&amp;rsquo;s) faith in capital (God). Sheridan is beset by a series of maladies: Jim dies in an construction accident brought on by unregulated corner-cutting; Roscoe discovers his wife is having an emotional affair and falls into a state of non-functioning alcoholism and quits the family business; and while trying to &amp;ldquo;teach&amp;rdquo; Bibbs how to use a machine that he is absolutely unqualified to use, Sheridan manages to cut off the tips of several fingers, leaving his hand mangled. Meanwhile, Edith leaves for Florida and marries Robert Lamhorn, the man who had been emotionally cheating with her sister-in-law, Sibyl.&lt;/p>
&lt;p>Bibbs befriends Mary Vertrees, the daughter of the old-wealth family whose riches are rapidly dwindling. Initially courting Jim before he died, Mary and Bibbs grow close. Mary invites Bibbs over to watch her play one night, coyly avoiding mention that the family piano will be sold in the middle of the night. Bibbs&amp;rsquo;s physical and mental health improve as they get closer—and as Bibbs falls in love. Finding a rhythm in the machine shop, Bibbs engages gently with socialism and spends his spare time writing poems about his newfound friendship with Mary.&lt;/p>
&lt;center>&lt;img src="https://emilygorcenski.com/photo-gallery/writing/turmoil-character-tree.png"style="margin: 0" width="80%"
alt="A relationship diagram of the principal named characters in The Turmoil" />&lt;/center>
&lt;center>A relationship diagram of the principal named characters in The Turmoil&lt;/center>&lt;br />
&lt;p>Mary&amp;rsquo;s character is as one-dimensional as the rest. She is little more than 1915&amp;rsquo;s version of &lt;a href="https://tvtropes.org/pmwiki/pmwiki.php/Main/ManicPixieDreamGirl">the Manic Pixie Dream Girl trope&lt;/a>; Bibbs, the flawed male sympathetic protagonist. Mary exists merely to provide Bibbs a way to heal and to discover his competence and confidence. When it is revealed that Mary&amp;rsquo;s interest in Bibbs may not be genuine, he abandons his whimsy and burns his writing. Bibbs accepts his father&amp;rsquo;s offer to take an executive position in the company, replacing the wayward Roscoe. Bibbs succeeds in this role, and quietly and anonymously purchasess the Vertrees family&amp;rsquo;s valueless stock for an absurd sum. Mary, unaware of the purchase, sees Bibbs nearly run down by a car and re-connects with him in Bibbs&amp;rsquo;s penthouse office in the city&amp;rsquo;s tallest building.&lt;/p>
&lt;p>Sheridan&amp;rsquo;s faith in capital is rewarded, and thanks to the sacrifice of a woman whose role in the story is nothing more than to make a man whole, Sheridan&amp;rsquo;s success is guaranteed to live on through his unlikely son, Bibbs.&lt;/p>
&lt;p>&lt;em>The Turmoil&lt;/em> is filled with the toxic gender roles typical of the time. Mr. Sheridan is a token of mediocrity. His tastes in art and home decor are tacky and outdated. His self-confidence is at odds with reality; his perception of reality is distorted so that everything he likes is Good and everything he dislikes is Wrong. One might be willing to say that Sheridan is a prototype of Donald Trump.&lt;/p>
&lt;p>The novel also touches on the environmental calamity of the time. The city, beset by the dust, smoke, and grime of rapid industrial expansion, is often portrayed as filthy and unhealthy. Sheridan views the smoke as a symbol of greatness and growth, dismissing townsfolks' concerns about its harmful effects. Gaslighting the community, Sheridan tells concerned citizens that the smoke is what gives them their paychecks, that they ought to be grateful.&lt;/p>
&lt;p>When Bibbs engages with communist and socialst ideas on the factory floor, it seems as though the novel may serve as an open challenge to unchecked capitalism. And when Bibbs is presented as a sickly character with feminine interests, Tarkington manages to hint towards a rejection of the American masculinity&lt;/p>
&lt;p>Ultimately, the novel fails on both fronts. Capitalism is saved by the acts of a capricious and enigmatic woman who exists only to heal the troubled man, who steps in to provide Sheridan with a remedy to his tormented ailments. The only hint that the rest of the &lt;em>Growth&lt;/em> trilogy may not be full of such apologetics is a parting scene where Sheridan, removing the bandages from his industrial accident, reveals a permanently mangled and disfigured hand, a reminder of Capital&amp;rsquo;s omnipotency. We can see in this story much of what we see in the world today: declining wages, ecological crisis, and the unchecked power of a talentless demagogue. Unfortunately, the story gives its reader little hope that those patterns of history will be avoided this time around.&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;em>Header image: &lt;a href="https://www.pexels.com/photo/building-buildings-closed-clouds-273280/">Pixabay&lt;/a>&lt;/em>&lt;/p></description></item><item><title>The Modern Library Project</title><link>https://emilygorcenski.com/post/the-modern-library-project/</link><pubDate>Fri, 28 Dec 2018 10:51:03 -0500</pubDate><guid>https://emilygorcenski.com/post/the-modern-library-project/</guid><description>&lt;p>Before the turn of the 21st century, a list of books called the &lt;a href="http://www.modernlibrary.com/top-100/">Modern Library Top 100&lt;/a> was published. Critic and scholars identified what they felt were the 100 most important English-language books of the 20th century. For years, I have been intending to tackle this list, and when I was younger I got about 25% of the way through.&lt;/p>
&lt;p>However, I was less wise then, and more susceptible to the white patriarchial imposition of what makes a &amp;ldquo;classic.&amp;rdquo; I intend to read thee books once again, starting anew, but to view them through the lens of our 21st Century morality. How do these books engage with race, or gender? Do they hold up over time?&lt;/p>
&lt;p>To do this, I plan to work through the list by tens, starting from #100 and moving down to #10, before restarting at #99, etc. When a book is part of a series, I will, to reasonable extent, read the series to frame its context. I&amp;rsquo;ll write a short report on each book, covering my thoughts within this critical lens. These reviews won&amp;rsquo;t be comprehenive, but I will try to capture the essential elements of the novels. I do not intend to cover every aspect of race, or gender, or immigration, or any other axis. My goal is to try to contextualize contemporary media of the 21st Century with its most familiar kin. Many of these novels are problematic. I&amp;rsquo;ll talk about that. And, while trying to avoid a bias towards discarding these modern classics out of a default cynicism, I&amp;rsquo;ll try to evaluate whether these stories do in fact withstand the test of time.&lt;/p>
&lt;h3 id="100-91">100-91&lt;/h3>
&lt;ol start="100">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-magnificent-ambersons-by-booth-tarkington/">&lt;em>The Magnificent Ambersons&lt;/em>&lt;/a> by Booth Tarkington&lt;/li>
&lt;/ol>
&lt;!-- 99. _The Ginger Man_ by J. P. Donleavy
98. _The Postman Always Rings Twice_ by James M. Cain
97. _The Sheltering Sky_ by Paul Bowles
96. _Sophie's Choice_ by William Styron
95. _Under the Net_ by Iris Murdoch
94. _Wide Sargasso Sea_ by Jean Rhys
93. _The Magus_ by John Fowles
92. _Ironweed_ by William Kennedy
91. _Tobacco Road_ by Erskine Caldwell -->
&lt;h3 id="90-81">90-81&lt;/h3>
&lt;ol start="90">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-midnights-children-by-salman-rushdie/">&lt;em>Midnight&amp;rsquo;s Children&lt;/em>&lt;/a> by Salman Rushdie&lt;/li>
&lt;/ol>
&lt;!-- 89. _Loving_ by Henry Green
88. _The Call of the Wild_ by Jack London
87. _The Old Wives' Tale_ by Arnold Bennett
86. _Ragtime_ by E.L. Doctorow
85. _Lord Jim_ by Joseph Conrad
84. _The Death of the Heart_ by Elizabeth Bowen
83. _A Bend in the River_ by V.S. Naipaul
82. _Angle of Repose_ by Wallace Stegner
81. _The Adventures of Augie March_ by Saul Bellow -->
&lt;h3 id="80-71">80-71&lt;/h3>
&lt;ol start="80">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-brideshead-revisited-by-evelyn-waugh/">&lt;em>Brideshead Revisited&lt;/em>&lt;/a> by Evelyn Waugh&lt;/li>
&lt;/ol>
&lt;h3 id="70-61">70-61&lt;/h3>
&lt;ol start="70">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-alexandria-quartet-by-lawrence-durrell/">&lt;em>The Alexandria Quartet&lt;/em>&lt;/a> by Lawrence Durrell&lt;/li>
&lt;/ol>
&lt;h3 id="60-51">60-51&lt;/h3>
&lt;ol start="60">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-moviegoer-by-walker-percy/">&lt;em>The Moviegoer&lt;/em>&lt;/a> by Walker Percy&lt;/li>
&lt;/ol>
&lt;h3 id="50-41">50-41&lt;/h3>
&lt;ol start="50">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-tropic-of-cancer-by-henry-miller/">&lt;em>Tropic of Cancer&lt;/em>&lt;/a> by Henry Miller&lt;/li>
&lt;/ol>
&lt;h3 id="40-31">40-31&lt;/h3>
&lt;ol start="40">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-heart-of-the-matter-by-graham-greene/">&lt;em>The Heart of the Matter&lt;/em>&lt;/a> by Graham Greene&lt;/li>
&lt;/ol>
&lt;h3 id="30-21">30-21&lt;/h3>
&lt;ol start="30">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-the-good-soldier-by-ford-madox-ford/">&lt;em>The Good Soldier&lt;/em>&lt;/a> by Ford Madox ford&lt;/li>
&lt;/ol>
&lt;h3 id="20-11">20-11&lt;/h3>
&lt;ol start="20">
&lt;li>&lt;a href="https://emilygorcenski.com/post/book-report-native-son-by-richard-wright/">&lt;em>Native Son&lt;/em>&lt;/a> by Richard Wright&lt;/li>
&lt;/ol>
&lt;h3 id="10-1">10-1&lt;/h3>
&lt;ol start="10">
&lt;li>&lt;em>The Grapes of Wrath&lt;/em> by John Steinbeck&lt;/li>
&lt;/ol></description></item><item><title>2019: Setting Intentions</title><link>https://emilygorcenski.com/post/2019-setting-intentions/</link><pubDate>Wed, 26 Dec 2018 21:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/2019-setting-intentions/</guid><description>&lt;p>Last year, I wrote a post about my intentions for 2018. They were exceedingly optimistic, particularly given how much work I had to do in 2018 for safety and healing, but it was a well-intentioned effort nevertheless. What I learned from it is that I need to be more specific and set more concrete plans.&lt;/p>
&lt;p>So for this year&amp;rsquo;s version of the post, I&amp;rsquo;m going to be more specific. Here we go.&lt;/p>
&lt;h4 id="code-more-for-fun">Code more for fun&lt;/h4>
&lt;p>Last year I wanted to spend more time learning more skills and keeping up to date on coding. I did a pretty good job at that, and I learned a lot about data engineering and infrastructure. This year, I want to start experimenting with Julia and to write a basic app in F#.&lt;/p>
&lt;h4 id="study-math">Study Math&lt;/h4>
&lt;p>It&amp;rsquo;s been too many years since I&amp;rsquo;ve taken courses for progress towards my Master&amp;rsquo;s degree. For this, I want to refresh my calculus skills. I&amp;rsquo;m going to work through my copy of Stewart&amp;rsquo;s Calculus, cover to cover. I also want to refresh working through Rudin&amp;rsquo;s &lt;em>Principles of Mathematical Analysis&lt;/em>.&lt;/p>
&lt;h4 id="study-language">Study Language&lt;/h4>
&lt;p>Last year my goal was to reach A1 in German. I probably am close to that just through immersion. This year, I want to formally achieve B1 competency. To accomplish that, I plan to work through the texts I already own. My goal is to spend 3 hours a week in self-study, and to sign up for a language class when I have a sense of where I might find some stability in Germany.&lt;/p>
&lt;p>Also, I want to have comfort reading Thai and be able to reach roughly A1 in the language.&lt;/p>
&lt;h4 id="keep-first-vigil-going">Keep First Vigil Going&lt;/h4>
&lt;p>There are still a lot of Nazi cases to track, so I want to make sure I am working on First Vigil weekly.&lt;/p>
&lt;h4 id="furnish-my-berlin-apartment">Furnish my Berlin Apartment&lt;/h4>
&lt;p>I want to get my living space into livable shape. I have a whole living room to furnish, lights to install, and a spare bedroom to equip.&lt;/p>
&lt;h4 id="exercise-more">Exercise More&lt;/h4>
&lt;p>Surgery for the last two years has set me back, and my body is suffering and I&amp;rsquo;m not getting younger. I want to ride my bike more. I want to sign up for a ballet class again, and I want to skate more. Ideally, I&amp;rsquo;ll find a beer league in Berlin to play hockey.&lt;/p>
&lt;h4 id="learn-the-dulcimer">Learn the Dulcimer&lt;/h4>
&lt;p>I have a dulcimer! I want to play it more and get comfortable knowing at least three songs by the summer. This is probably very doable.&lt;/p>
&lt;h4 id="write-more">Write More&lt;/h4>
&lt;p>I want to get better at writing, and the only way to do that is to write more. So I want to commit time to working on writing every week, and I want to keep this blog up to date by adding regular content. This will require me to set aside time every week to write and work on things. That&amp;rsquo;s the point; carving out time for myself and the things I enjoy, and spend less time doing what the world demands of me.&lt;/p>
&lt;h4 id="read-more">Read more&lt;/h4>
&lt;p>Years and years ago, I set a goal to read the &lt;a href="http://www.modernlibrary.com/top-100/">Modern Library Top 100&lt;/a>. I managed to get about a quarter of the way through, but it&amp;rsquo;s been a while since I&amp;rsquo;ve worked on it. And a lot in my life has changed, so I&amp;rsquo;m going to restart from scratch. I&amp;rsquo;m going to work on it in descending order, by 10s. So I&amp;rsquo;ll start with #100, then move to #90, #80, and so on. My goal for the end of the year is to finish all the books ranked $0 \bmod 10$, i.e. 10 books, give or take. Not all of the entries on the list are single books; some are trilogies, etc., so it&amp;rsquo;s a good amount of reading. Many of the books I plan to read this year I&amp;rsquo;ve already read, but it&amp;rsquo;s good to re-read them with a new perspective.&lt;/p>
&lt;p>In fact, here are the books I intend to read:&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="100">
&lt;li>&lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>This book is actually the second in a trilogy, preceded by &lt;em>The Turmoil&lt;/em> and followed by &lt;em>The Midlander&lt;/em>. I have read &lt;em>The Magnificent Ambersons&lt;/em> once before, but never the trilogy. So I plan to knock out all three.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="90">
&lt;li>&lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>I loved this book the first time around and cannot wait to read it again.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="80">
&lt;li>&lt;em>Brideshead Revisited&lt;/em>, Evelyn Waugh&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;ol start="70">
&lt;li>&lt;em>The Alexandria Quartet&lt;/em>, Lawrence Durrell&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>These books blew my mind when I first read them. It&amp;rsquo;ll be a joy to get back to them again. I remember my young queer self being moved by the inclusion of bisexual characters.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="60">
&lt;li>&lt;em>The Moviegoer&lt;/em>, Walker Percy&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>This was my favorite book to recommend to bratty high school students looking for a short read at the end of summer vacation when I worked at a bookstore.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="50">
&lt;li>&lt;em>Tropic of Cancer&lt;/em>, Henry Miller&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;ll go ahead and read &lt;em>Tropic of Capricorn&lt;/em> after this, too, but I remember the first 40 pages of this being absolutely bizarre and sexual.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="40">
&lt;li>&lt;em>The Heart of the Matter&lt;/em>, Graham Greene&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;ol start="30">
&lt;li>&lt;em>The Good Soldier&lt;/em>, Ford Madox Ford&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>This took me forever to get through the first time around. Frankly, it was boring as fuck. I&amp;rsquo;ll power through it again.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="20">
&lt;li>&lt;em>Native Son&lt;/em>, Richard Wright&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>This one I haven&amp;rsquo;t read yet. This is such an important book and I am glad I can read it when I am more mature.&lt;/p>
&lt;ul>
&lt;li>
&lt;ol start="10">
&lt;li>&lt;em>The Grapes of Wrath&lt;/em>, John Steinbeck&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>I have read this book at least three times but I&amp;rsquo;ll get through it again. It really is a spectacular novel.&lt;/p></description></item><item><title>2018: A Look Back</title><link>https://emilygorcenski.com/post/2018-a-look-back/</link><pubDate>Tue, 25 Dec 2018 23:21:44 -0500</pubDate><guid>https://emilygorcenski.com/post/2018-a-look-back/</guid><image><url>https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/bike-for-dad.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/bike-for-dad.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/bike-for-dad.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/bike-for-dad.jpg" width="600"/></media:content><description>&lt;p>Last year, I wrote &lt;a href="https://emilygorcenski.com/post/2018-setting-intentions/">a post&lt;/a> to try to hold myself accountable for self-improvement goals in 2018. I thought 2018 might be a better year, and in a lot of ways it was, but I was perhaps not prepared for how hard it would be. I did a lot of great things this year, and I missed some goals, too. So, to prepare for next year, let&amp;rsquo;s have a look back at what 2018 held for me, and then in a later post I&amp;rsquo;ll look ahead for what goals I want to set for myself.&lt;/p>
&lt;h2 id="2018-brags">2018 Brags&lt;/h2>
&lt;p>Hey, I&amp;rsquo;ve got a lot of brags here in the 2018, so let&amp;rsquo;s go through some of them! In no particular order&amp;hellip;&lt;/p>
&lt;ul>
&lt;li>I launched &lt;a href="https://first-vigil.com">First Vigil&lt;/a>, a resource for tracking white supremacist crime;&lt;/li>
&lt;li>I was named to Bitch Magazine&amp;rsquo;s &lt;a href="https://www.bitchmedia.org/article/2018-bitch-50">Bitch 50&lt;/a>;&lt;/li>
&lt;li>I co-wrote a book chapter in &lt;a href="https://www.oreilly.com/library/view/seeking-sre/9781491978856/">Seeking SRE&lt;/a> with my good friend Liz Fong-Jones;&lt;/li>
&lt;li>Liz and I also &lt;a href="https://www.youtube.com/watch?v=8Dro0mreAxk">keynoted SRECon EMEA&lt;/a>;&lt;/li>
&lt;li>I published an opinion piece in &lt;a href="https://www.refinery29.com/en-us/2018/10/215302/pittsburgh-shooting-reason-white-supremacists-trump">Refinery29&lt;/a>;&lt;/li>
&lt;li>I appeared in a documentary on PBS Frontline called &lt;a href="https://www.pbs.org/wgbh/frontline/film/documenting-hate-charlottesville/">Documenting Hate: Charlottesville&lt;/a>;&lt;/li>
&lt;li>My assailant pleaded guilty and the nonsensical lawsuit was settled for a mutual release of claims;&lt;/li>
&lt;li>I started a new job as a Lead Consultant Data Scientist;&lt;/li>
&lt;li>I moved to Germany and got a Blue Card;&lt;/li>
&lt;li>I traveled to Asia for the first time when worked in Bangkok for a while for a work project;&lt;/li>
&lt;li>I saw new cities: Köln, Aachen, Düsseldorf, Amsterdam, Paris, กรุงเทพมหานคร (Bangkok);&lt;/li>
&lt;li>Most importantly, I made many friendships and shared many stories.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/paris.jpg" alt="The Eiffel Tower in late summer, Paris">&lt;/p>
&lt;h2 id="2018-misses">2018 Misses&lt;/h2>
&lt;p>There were a lot of things I wanted to do in 2018 but fell short. Let&amp;rsquo;s take a look.&lt;/p>
&lt;h3 id="working-on-the-house">Working on the house&lt;/h3>
&lt;p>Moving to Berlin did not facilitate progress on this goal in any way&amp;hellip; These projects need to get done so this will carry forward.&lt;/p>
&lt;h3 id="working-on-coding-and-math">Working on coding and math&lt;/h3>
&lt;p>One thing I learned was not to set vague goals like this anymore. I did do a bit of coding for fun, but I didn&amp;rsquo;t dive into math studies the way I wanted to. So for 2019 I&amp;rsquo;ll be more clear.&lt;/p>
&lt;h3 id="study-language">Study Language&lt;/h3>
&lt;p>I set a goal for myself here to be at least A1 in German by year&amp;rsquo;s end. Honestly, I probably am, but my confidence is not there. It&amp;rsquo;s been a source of frustration that I&amp;rsquo;ve been unable to dedicate study time to this, so I&amp;rsquo;m going to work on that in 2019. I did pick up some Thai this year, though!&lt;/p>
&lt;h3 id="read-more">Read more&lt;/h3>
&lt;p>Big fail here. I did get through one book, &lt;em>The Turmoil&lt;/em>, which is a prequel to the starting point of the Modern Library project I want to undertake.&lt;/p>
&lt;h2 id="a-year-in-review">A year in review&lt;/h2>
&lt;p>All things considered, 2018 was a damn hard year. Healing in the months since the terror attack in Charlottesville was not easy. It is still not easy. 2018 felt a lot like picking up the pieces. But I still managed to do some amazing work amidst the trauma and the terror and the chaos, and if I can do that much good in 2018, it actually leaves me hope for 2019.&lt;/p>
&lt;p>Next up, I&amp;rsquo;ll be writing my 2019 plan.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/weekly-recaps/2018/tegeler-see.jpg" alt="The Tegeler See in summer, Berlin">&lt;/p></description></item><item><title>Bio+CV</title><link>https://emilygorcenski.com/about/</link><pubDate>Wed, 12 Dec 2018 12:00:00 -0500</pubDate><guid>https://emilygorcenski.com/about/</guid><description>&lt;p>Hi there! I&amp;rsquo;m Emily F. Gorcenski, and this is my personal website. Before going further, please note that the opinions share on this site belong only to me and I do not speak for my employer or any other organization unless stated otherwise. I am a data scientist by profession, a mathematician and engineer by training, and an activist by passion. On this page, you&amp;rsquo;ll find a brief CV, bio, and other information that you might care about or need.&lt;/p>
&lt;h2 id="short-autobiography">Short Autobiography&lt;/h2>
&lt;p>I am a data scientist and engineer by training and a social justice activist by passion. Occasionally, I write about politics, software, and politics-in-software. I am also a regular conference speaker.&lt;/p>
&lt;p>I studied Aeronautical Engineering and Mathematics at Rensselaer Polytechnic Institute in Troy, NY. My degree is in Mathematics, and my focus is on Numerical Analysis and Uncertainty Quantification. My undergraduate research fellowship was done at the Princeton Plasma Physics Laboratory, and I spent the first part of my career in research and development before shifting to data science and engineering. I have worked in a wide range of technical fields, from aerospace control systems, signal processing, video game development, occupational therapy for rehabilitation, and more. Some of my work is summarized in my &lt;a href="#curriculum-vitae">CV below&lt;/a>. Presently, I work as a data science and data engineering consultant for Thoughtworks Germany, where I help clients build high-quality data-driven, intelligent software applications efficiently.&lt;/p>
&lt;p>In addition to my regular professional work, I also sit on the advisory boards of the Prosecution Project at Miami University in Ohio (Dr. Michael Loadenthal), and on the Youth Equity and Sexuality Laboratory at Suffolk University (Dr. Mimi Arbeit), two research labs studying political violence. My experience in contemporary right-wing violence is driven in large part by my personal experiences as a survivor of neo-Nazi terrorism in my home city of Charlottesville, Virginia, when terrorists came to the Unite the Right neo-Nazi hate rally intent on doing violence. As part of my efforts to understand this violence, I created First Vigil (offline but returning soon), a database of criminal cases involving hate crimes, right-wing anti-government militancy, and white supremacist violence. For that work, I&amp;rsquo;ve been given accolades; among them, I was named as &lt;a href="https://www.bitchmedia.org/article/2018-bitch-50">one of 2018&amp;rsquo;s most influential feminists by Bitch Magazine&lt;/a>.&lt;/p>
&lt;p>My research into the far-right has been part of several stories. My research, footage, and experiences were part of &lt;a href="https://www.pbs.org/wgbh/frontline/film/documenting-hate-charlottesville/">&lt;em>Documenting Hate&lt;/em>&lt;/a>, a documentary by PBS Frontline and ProPublica that won an Emmy in 2019. The Peabody and Emmy Award-winning documentary, &lt;a href="https://www.vice.com/en_us/article/qvzn8p/vice-news-tonight-full-episode-charlottesville-race-and-terror">&lt;em>Charlottesville: Race and Terror&lt;/em>&lt;/a> focused on neo-Nazi Christopher Cantwell, who days later became internationally-known as &amp;ldquo;The Crying Nazi&amp;rdquo; after learning I had sworn a felony warrant against him. I was (briefly) depicted as a fictionalized character in &lt;em>American Horror Story: Cult&lt;/em>, and I have been the focus of several news stories, including &lt;a href="https://www.washingtonpost.com/local/he-once-defended-the-poor-in-court-now-he-defends-white-supremacists/2018/07/01/0c7bfa6a-6901-11e8-9e38-24e693b38637_story.html">a front-page feature in the &lt;em>Washington Post&lt;/em>&lt;/a>, &lt;a href="https://www.vice.com/en_us/article/mbyvjn/the-data-scientist-tracking-americas-white-supremacists-emily-gorcenski-first-vigil">a profile in &lt;em>Motherboard&lt;/em>&lt;/a>, &lt;a href="https://www.theguardian.com/us-news/2020/oct/01/white-supremacist-protest-activism-emily-gorcenski">a profile in &lt;em>The Guardian&lt;/em>&lt;/a>, and &lt;a href="https://taz.de/Emily-Gorcenski-enttarnt-US-Neonazis/!5749588/">a profile in &lt;em>Die Tageszeitung&lt;/em> (German)&lt;/a>.&lt;/p>
&lt;p>From time-to-time, I turn my research and experience into published analysis and opinion, some of which are linked in &lt;a href="#publications">the Publications section&lt;/a> of my CV below. I am available as a guest on TV appearances and have appeared on programs from &lt;em>TODAY&lt;/em> to Al Jazeera&amp;rsquo;s &lt;em>The Stream&lt;/em>. Please email me at the above email address if you would like me to appear on your segment. I am also available for conference talks. For previous talks, please see &lt;a href="#selected-conferences">the Conferences section&lt;/a> below. I am currently offering talks in the following topic areas:&lt;/p>
&lt;ul>
&lt;li>continuous delivery for data-driven software;&lt;/li>
&lt;li>data mesh;&lt;/li>
&lt;li>data reliability engineering;&lt;/li>
&lt;li>the social role of technology and technologists in contemporary society;&lt;/li>
&lt;li>joyful intersections of math and technology.&lt;/li>
&lt;/ul>
&lt;p>Thanks for reading!&lt;/p>
&lt;h2 id="curriculum-vitae">Curriculum Vitae&lt;/h2>
&lt;h4 id="experience">Experience&lt;/h4>
&lt;h6 id="head-of-data-thoughtworks-deutschland-gmbh-berlin-germany">Head of Data: ThoughtWorks Deutschland GmbH, Berlin, Germany&lt;/h6>
&lt;p>&lt;em>August 2018 — Present&lt;/em>&lt;/p>
&lt;p>ThoughtWorks is a global technology consultancy that helps its clients excel at software development. With offices in 17 countries and over 11,000 employees, Thoughtworks is a recognized leader in software engineering, Agile, and other technology best practices.&lt;/p>
&lt;p>I am a Principal Consultant, Data Scientist, and serve as Head of Data and AI for Thoughtworks Germany and Thoughtworks Europe. In my role, I advise clients in a variety of technology development efforts in the data science space. These efforts can include: consulting on data mesh transformations, designing effective data platforms to empower faster data analytics and data science, data research and exploration, and implementing agile workflows and continuous delivery for machine learning applications. My unique experience in technology transition means I am well-suited for both advisory and delivery roles in the data science space. Some of my accomplishments with ThoughtWorks include:&lt;/p>
&lt;ul>
&lt;li>Designing and building a location analytics platform for land use analysis;&lt;/li>
&lt;li>Designing workshops for teaching continuous delivery and agile development methodologies in a data science space;&lt;/li>
&lt;li>Training project and product managers on effective ways to utilize data and data scientists on cross-functional teams.&lt;/li>
&lt;/ul>
&lt;h6 id="senior-data-scientist-simple-portland-usa">Senior Data Scientist: Simple, Portland, USA&lt;/h6>
&lt;p>&lt;em>September 2016 — May 2018&lt;/em>&lt;/p>
&lt;p>Simple Financial Technical Corporation is a personal finance company acting as a technology-first organization. The core product is a consumer checking account with an app-first design. The company offered web, iOS, Android, and mobile-web apps to allow customers to manage finances, interact with support, and plan budgets. The company operated no physical branches.&lt;/p>
&lt;p>I worked as Senior Data Scientist, where I analyzed customer behavior, including app usage spending/saving behavior, customer satisfaction, and fraud detection and mitigation. Additionally, I served as mentor for six other data scientists with varying levels of experience and skills. Key accomplishments include:&lt;/p>
&lt;ul>
&lt;li>Building a generalized genetic algorithm framework for optimizing risk models;&lt;/li>
&lt;li>Implementing and maintaining a knowledge repository for insight documentation;&lt;/li>
&lt;li>Developing and implementing an improved fraud-detection model with rapid deployment needs;&lt;/li>
&lt;li>Designing experiments to quantify customer behavior and assess feature feasibility.&lt;/li>
&lt;/ul>
&lt;h6 id="research-engineer-barron-associates-inc-charlottesville-usa">Research Engineer: Barron Associates, Inc., Charlottesville, USA&lt;/h6>
&lt;p>&lt;em>April 2008 — May 2016&lt;/em>&lt;/p>
&lt;p>Barron Associates, Inc. is a small research engineering firm specializing in real-time control systems, simulation, and mathematical modeling in the aerospace, automotive, and biotechnology fields. Predominantly working in technology transition—the complex space between core research and technology implementation—Barron Associates helped move technologies and methodologies from university laboratories to production environments within industry and government.&lt;/p>
&lt;p>I served Barron Associates as a Research Engineer. Using my background in computational mathematics, I worked on interdisciplinary teams with world-class domain experts to help demonstrate and prove complex algorithms and ideas in real-world environments. In addition, I wrote winning grant proposals for new work, led multi-center teams, and presented the company’s work and vision before industry and academic professionals. A sample of my projects is presented below.&lt;/p>
&lt;p>&lt;strong>Intelligent Prognostics for Vehicle Maintenance Planning&lt;/strong>&lt;/p>
&lt;p>&lt;em>Objective&lt;/em>: Using engine, powertrain, and vehicle telemetry, dynamically detect degraded performance to schedule preventative maintenance and allow for greater variability in maintenance schedules.&lt;/p>
&lt;p>&lt;em>Approach&lt;/em>: Using MATLAB and Simulink, developed a high-fidelity model of engine and vehicle dynamics. Applied modeling approach to large-scale real-world datasets to identify performance and detect failures. Used inverse methods to correct for sensor bias and noise. Applied Kalman filtering techniques for fault detection.&lt;/p>
&lt;p>&lt;strong>Neural Networks for Low-Resolution Image Classification&lt;/strong>&lt;/p>
&lt;p>&lt;em>Objective&lt;/em>: Develop a method for identifying humans in variable sea-state conditions using low-resolution radar images.&lt;/p>
&lt;p>&lt;em>Approach&lt;/em>: With the requirements of running on real-time embedded hardware, developed a feature extraction pipeline based on Hough Transformations to extract image data. Built a multiclass classification algorithm using polynomial neural networks. Trained and validated data in a real-world environment using a functional radar platform.&lt;/p>
&lt;p>&lt;strong>Wearable Health Tracker for Lower-Limb Amputees&lt;/strong>&lt;/p>
&lt;p>&lt;em>Objective&lt;/em>: Develop a wearable IoT health monitor for lower-Limb combat amputees capable of assessing physical health in people with complex medical needs.&lt;/p>
&lt;p>&lt;em>Approach&lt;/em>: Designed algorithms for a photoplethysmography-based health monitor capable of being embedded within gel prosthetics linings. Ensured algorithms would be functional in atypical conditions e.g. tissue ossification, where commercial health trackers generally fail.&lt;/p>
&lt;p>&lt;strong>Image Analysis for Automated Corrosion Mapping&lt;/strong>&lt;/p>
&lt;p>&lt;em>Objective&lt;/em>: Develop software capable of identifying corrosion pits in laser profilometry scans of nickel-based superalloys corroded at high temperature with sulfur-based salts.&lt;/p>
&lt;p>&lt;em>Approach&lt;/em>: Used regularization methods to detect pits while preserving surface geometries where convolutional methods would typically fail. Built algorithms for automating volumetric measurement and classifying inclusions to detect conditions that would lead to adverse stress concentrations. Designed software package to output results to commercially-available failure prediction tools.&lt;/p>
&lt;h4 id="skills">Skills&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Programming&lt;/strong>: Python, SQL, C#, MATLAB, FORTRAN, C/C++, Java&lt;/li>
&lt;li>&lt;strong>Python-specific Competencies&lt;/strong>: Python 3.x, jupyter, pandas, numpy/scipy, keras&lt;/li>
&lt;li>&lt;strong>Frameworks and Technologies&lt;/strong>: Terraform, neo4j, Postgres, Docker, Jupyterhub, GoCD, CircleCI, Jenkins&lt;/li>
&lt;li>&lt;strong>Cloud Competencies&lt;/strong>: Azure (AKS, Storage), AWS (Elastic Beanstalk, Route53, S3, Redshift, Lambda), Google Cloud (Firebase, Cloud Storage, Load Balancer, Kubernetes Engine, Compute Engine, Cloud Functions), Databricks, Jupyterhub&lt;/li>
&lt;li>&lt;strong>Tools&lt;/strong>: Visual Studio .NET/VSCode, Anaconda, git, Jira, Trac, Trello, Chartio, Tableau, Grafana, Scalyr, Lightstep&lt;/li>
&lt;/ul>
&lt;h4 id="education">Education&lt;/h4>
&lt;ul>
&lt;li>BS Mathematics (applied and computational), 2007, Rensselaer Polytechnic Institute, Troy, NY&lt;/li>
&lt;li>Post-graduate work (Mathematics), 2011-2014 University of Virginia (non-matriculated), Charlottesville, VA&lt;/li>
&lt;/ul>
&lt;h4 id="certificates">Certificates&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.credly.com/badges/daec2b1b-3b68-4a95-9a1a-1ea04706b25d/embedded">Microsoft Azure Data Fundamentals DP-900&lt;/a> (June 2023)&lt;/li>
&lt;li>Deutsch B2 (Goethe Institut), June 2022&lt;/li>
&lt;li>Deutsch B1 (Goethe Institut), July 2021&lt;/li>
&lt;li>&lt;a href="56986b1f-9436-4205-a646-fe20b349e59f">Microsoft Azure Fundamentals AZ-900&lt;/a> (January 2021)&lt;/li>
&lt;li>Deutsch A1 (telc), October 2019&lt;/li>
&lt;/ul>
&lt;h4 id="languages">Languages&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>English&lt;/strong>:
&lt;ul>
&lt;li>Native Fluency (American)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>German&lt;/strong>:
&lt;ul>
&lt;li>Conversational (CEFR B2)&lt;/li>
&lt;li>B2 Zertifikat (Goethe Institut), June 2022&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Spanish&lt;/strong>:
&lt;ul>
&lt;li>Lapsed Learner (~CEFR A2)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h4 id="published-writing">Published Writing&lt;/h4>
&lt;ul>
&lt;li>&lt;em>¡No Pasarán!&lt;/em> (chapter &amp;ldquo;Antifascism Through the Lens of Transgender Identity&amp;rdquo;), edited by Shane Burley, AK Press&lt;/li>
&lt;li>&lt;em>A Field Guide to White Supremacy&lt;/em> (contributor to chapter &amp;ldquo;Thoughts on the &lt;em>Associated Press&lt;/em> Stylebook&amp;rdquo;), edited by Kathleen Belew and Ramón Gutiérrez, University of California Press&lt;/li>
&lt;li>&lt;a href="https://slate.com/news-and-politics/2021/11/defendants-in-charlottesville-rally-trial-had-no-coherent-strategy.html">&amp;ldquo;What Will Jurors Make of Charlottesville Trial Defendants’ Incoherent Defense?&amp;quot;&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://slate.com/news-and-politics/2021/10/with-the-charlottesville-trial-white-supremacists-try-again-to-unite-the-right.html">&amp;ldquo;White Supremacists Have Returned to Charlottesville in Another Attempt to “Unite the Right”&amp;quot;&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.politicalresearch.org/2020/06/03/ben-shapiro-and-conservative-chorus">&amp;ldquo;Ben Shapiro and the Conservative Chorus&amp;rdquo;&lt;/a>, Political Research Associates, June 3, 2020&lt;/li>
&lt;li>&lt;em>Seeking SRE&lt;/em> (chapter &amp;ldquo;Intersections between Operations and Activism&amp;rdquo;), co-authored with Liz
Fong-Jones (Google), edited by David Blank-Edelman (Microsoft), O’Reilly Media, Inc.,
2018&lt;/li>
&lt;li>&lt;a href="https://slate.com/news-and-politics/2019/08/terry-mcauliffe-charlottesville-unite-right-racist-rally-anti-fascist-anniversary.html">&amp;ldquo;Terry McAuliffe Still Doesn’t Understand What Happened in Charlottesville,&amp;quot;&lt;/a> Slate, August 8, 2019&lt;/li>
&lt;li>&lt;a href="https://politicalresearch.org/2019/02/28/proud-boys">&amp;ldquo;The Proud Boys: A Republican Party Street Gang,&amp;quot;&lt;/a> Political Research Associates (feature), February 28, 2019&lt;/li>
&lt;li>&lt;a href="https://www.refinery29.com/en-us/2018/10/215302/pittsburgh-shooting-reason-white-supremacists-trump">&amp;ldquo;The Pittsburgh Shooting Proves Trump Emboldens Racists — &amp;amp; Social Media Empowers Them,&amp;quot;&lt;/a> Refinery29 (op-ed), October 28, 2018&lt;/li>
&lt;li>&lt;a href="https://www.teenvogue.com/story/queer-people-of-color-react-charlottesville">&amp;ldquo;Queer People and People of Color React to Charlottesville Activism,&amp;quot;&lt;/a> Teen Vogue (op-ed), August 24, 2017&lt;/li>
&lt;li>&lt;a href="https://www.theguardian.com/commentisfree/2017/aug/15/mr-trump-were-not-same-neo-nazis-charlottesville">&amp;ldquo;No Mr. Trump, we’re not the same as the neo-Nazis,&amp;quot;&lt;/a> The Guardian (op-ed), August 16, 2017&lt;/li>
&lt;li>&lt;a href="https://www.out.com/news-opinion/2017/5/05/president-trump-complicates-healthcare-transgenders-americans">&amp;ldquo;President Trump Complicates Healthcare for Transgender Americans,&amp;quot;&lt;/a> Out.com (op-ed), May 05, 2017&lt;/li>
&lt;/ul>
&lt;h4 id="selected-technical-talks">Selected Technical Talks&lt;/h4>
&lt;p>(&lt;em>forthcoming events in italics&lt;/em>)&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://bigdataconference.eu/">Big Data Europe&lt;/a>, &amp;ldquo;Four years of Data Mesh in Practice: What works, what doesn’t, and what’s left to learn&amp;rdquo;, Vilnius, Latvia, November 2023&lt;/li>
&lt;li>Better Ways, Athens, Greece, September 2023&lt;/li>
&lt;li>&lt;a href="https://women-in-data-ai.tech/sessions/from-data-to-decision">Women in Data &amp;amp; AI&lt;/a>, &amp;ldquo;From Data to Decision&amp;rdquo;, Berlin, Germany, June 2023&lt;/li>
&lt;li>&lt;a href="https://www.sloconf.com/speakers#emily-gorcenski">SLOConf 2023&lt;/a>, &amp;ldquo;A &amp;ldquo;moving SLO&amp;rdquo; for machine learning&amp;rdquo;, Online, May 2023&lt;/li>
&lt;li>SLOConf 2022, &amp;ldquo;A Better SLO for Data-intensive Systems,&amp;rdquo; May 2022, &lt;a href="https://www.youtube.com/watch?v=F58JYWJJVnA&amp;amp;list=PLLNq9CBV7AFy4yGD9GrtpjZqsvM7lqpeb&amp;amp;index=3">Online&lt;/a>&lt;/li>
&lt;li>Big Data EU 2021, &amp;ldquo;Using Service Level Objective Theory to Design Great Data Products,&amp;rdquo; September 2021, Online&lt;/li>
&lt;li>Percona Live Online, &amp;ldquo;SRE for Good: Engineering Intersections between Operations and Social Activism&amp;rdquo; (keynote), with Liz Fong-Jones (Google), October 2020, Online&lt;/li>
&lt;li>DeliveryConf, &amp;ldquo;Continuous Delivery for Machine Learning: Patterns and Pains,&amp;rdquo; January 2020, Seattle [&lt;a href="https://www.youtube.com/watch?v=bFW5mZmj0nQ">video&lt;/a>]&lt;/li>
&lt;li>XConf EU 2019, &amp;ldquo;When Data Meets Device: Looking forward to a data-driven physical world,&amp;rdquo; July 2019, Manchester &amp;amp; Barcelona&lt;/li>
&lt;li>SRECon EMEA 2018, &amp;ldquo;SRE for Good: Engineering Intersections between Operations and Social Activism&amp;rdquo; (keynote), with Liz Fong-Jones (Google), August 2018, Düsseldorf&lt;/li>
&lt;li>Mozfest 2017, &amp;ldquo;Debunking Fake News and Fake Science&amp;rdquo; (keynote), with Sarah Jeong (New York Times), October 2017, London [&lt;a href="https://www.youtube.com/watch?v=TXL4SfXH5zM">video&lt;/a>]&lt;/li>
&lt;li>PyData Berlin 2017, &amp;ldquo;Polynomial Chaos, a Technique for Modeling Uncertainty,&amp;rdquo; July 2017, Berlin [&lt;a href="https://www.youtube.com/watch?v=Z-Qio-n6yPc">video&lt;/a>]&lt;/li>
&lt;li>JSConfEU 2017, &amp;ldquo;The Ethics of the Internet of Things,&amp;rdquo; May 2017, Berlin [&lt;a href="https://www.youtube.com/watch?v=xLL7Fo_em2E">video&lt;/a>]&lt;/li>
&lt;/ul>
&lt;h4 id="activism">Activism&lt;/h4>
&lt;p>(&lt;em>forthcoming events in italics&lt;/em>)&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.buzzsprout.com/1845829/9121829-the-new-white-supremacy-in-europe-and-the-us">World Pride Copenhagen&lt;/a>, København, August 2021&lt;/li>
&lt;li>COGSEC, &lt;a href="https://cogsec.online/">&amp;ldquo;Data and Daylight: New Tools for Exposing and Countering Neofascist Actors&amp;rdquo;&lt;/a>, in conjunction with the &lt;a href="https://cogsec.online/">Center for Media Engagement&lt;/a> at the University of Texas, March 2021, Online (&lt;a href="https://www.youtube.com/watch?v=E6iIVEW-Qjg">video&lt;/a>)&lt;/li>
&lt;li>&lt;a href="https://shorensteincenter.org/big-if-true-webinar-amplified-hate-and-its-effects-2/">&amp;ldquo;Big, If True Webinar: Amplified Hate and its Effects,&amp;quot;&lt;/a> panel hosted by &lt;a href="https://shorensteincenter.org/">the Shoreinstein Center on Media, Politics, and Public Policy&lt;/a> at the Harvard Kennedy School, February 2021&lt;/li>
&lt;li>&lt;a href="https://www.jassberlin.org/post/using-data-to-track-and-expose-neo-nazis">&amp;ldquo;Digital Anti-fascism,&amp;quot;&lt;/a> lecture hosted by the &lt;a href="https://www.jassberlin.org/">Jewish Activism Summer School&lt;/a> at Universität Potsdam, January 2021&lt;/li>
&lt;li>&lt;a href="https://millercenter.org/">&amp;ldquo;Using the F-Word: Fascist drift in America,&amp;quot;&lt;/a> panel hosted by &lt;a href="https://millercenter.org/">the Miller Center&lt;/a> at the University of Virginia, January 2021&lt;/li>
&lt;li>&amp;ldquo;Facing White Supremacy after Brexit: Politics as Usual?,&amp;rdquo; panel hosted by &lt;a href="http://mei.qmul.ac.uk/">the Mile End Institute&lt;/a> at Queen Mary University of London, April 2019, London&lt;/li>
&lt;/ul></description></item><item><title>The Pittsburgh Shooting Proves Trump Emboldens Racists — &amp; Social Media Empowers Them (Refinery29)</title><link>https://https://www.refinery29.com/en-us/2018/10/215302/pittsburgh-shooting-reason-white-supremacists-trump.com</link><pubDate>Sun, 28 Oct 2018 17:15:00 -0500</pubDate><guid>https://emilygorcenski.com/post/the-pittsburgh-shooting-proves-trump-emboldens-racists-social-media-empowers-them-refinery29/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/r29.jpg"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/r29.jpg" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/r29.jpg" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/r29.jpg" width="600"/></media:content><description>&lt;p>My article in Refinery29 on the Tree of Life murders in Pittsburgh.&lt;/p></description></item><item><title>2018: Setting Intentions</title><link>https://emilygorcenski.com/post/2018-setting-intentions/</link><pubDate>Sun, 31 Dec 2017 18:15:45 +0000</pubDate><guid>https://emilygorcenski.com/post/2018-setting-intentions/</guid><description>&lt;p>When a hard year ends, sometimes the best thing to do is look forward. So I wanted to revisit this blog with the purpose to set some intentions for 2018. In 2017 I put a lot more of myself into things I didn&amp;rsquo;t see coming: doing activism in Charlottesville, traveling, speaking, and more. It took a toll. I lost a lot. So for 2018 I want to spend more time on the things that make me whole.&lt;/p>
&lt;p>This post is a way to hold myself accountable. So here are the things I want to commit time to in 2018:&lt;/p>
&lt;ul>
&lt;li>Working on renovating my house.&lt;/li>
&lt;/ul>
&lt;p>The house restoration projects were put on hold in 2017 due to my surgery and many other dramas. But now that we&amp;rsquo;re done with that, I want to resume getting the house in order and share the progress as I go. Goals for 2018 are to finish painting the exterior, to replace the floors in the upstairs, and to finish the room I&amp;rsquo;d like to use as my office.&lt;/p>
&lt;p>To hold myself accountable and to plan this work, my wife and I have a shared Trello board. This way the work isn&amp;rsquo;t organized entirely in my head. It also helps with planning and budgeting for projects.&lt;/p>
&lt;ul>
&lt;li>Work on coding and math.&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;ve not done spare-time programming in a while. I&amp;rsquo;d like to improve my skills, which are getting rusty. I want to play around with some Python data science architectures. And I&amp;rsquo;d like to start playing with F#. One way I want to get better with Python is to start working on HackerRank type projects and Exercism exercises more.&lt;/p>
&lt;ul>
&lt;li>Study language.&lt;/li>
&lt;/ul>
&lt;p>Living in Europe for several months this year has emboldened me. Communicating in other languages is a ton of fun. So this year I want to really buckle down and work on my German and my Czech. It&amp;rsquo;s not unreasonable to set a goal of being A1 in German by the end of the year. To accomplish this, I&amp;rsquo;ve got Rosetta Stone and Chatterbug subscriptions and plenty of books. One way to work on this is to keep notebooks up to date and also use this blog to work on learning.&lt;/p>
&lt;ul>
&lt;li>Read more&lt;/li>
&lt;/ul>
&lt;p>Years and years ago, I set a goal to read the &lt;a href="http://www.modernlibrary.com/top-100/">Modern Library Top 100&lt;/a>. I managed to get about a quarter of the way through, but it&amp;rsquo;s been a while since I&amp;rsquo;ve worked on it. And a lot in my life has changed, so I&amp;rsquo;m going to restart from scratch. I&amp;rsquo;m going to work on it in descending order, by 10s. So I&amp;rsquo;ll start with #100, then move to #90, #80, and so on. My goal for the end of the year is to finish all the books ranked $0 \bmod 10$, i.e. 10 books, give or take. Not all of the entries on the list are single books; some are trilogies, etc., so it&amp;rsquo;s a good amount of reading. Many of the books I plan to read this year I&amp;rsquo;ve already read, but it&amp;rsquo;s good to re-read them with a new perspective.&lt;/p>
&lt;p>In fact, here are the books I intend to read:&lt;/p>
&lt;h4 id="100-_the-magnificent-ambersons_-booth-tarkington">100. &lt;em>The Magnificent Ambersons&lt;/em>, Booth Tarkington.&lt;/h4>
&lt;p>This book is actually the second in a trilogy, preceded by &lt;em>The Turmoil&lt;/em> and followed by &lt;em>The Midlander&lt;/em>. I have read &lt;em>The Magnificent Ambersons&lt;/em> once before, but never the trilogy. So I plan to knock out all three.&lt;/p>
&lt;h4 id="90-_midnights-children_-salman-rushdie">90. &lt;em>Midnight&amp;rsquo;s Children&lt;/em>, Salman Rushdie&lt;/h4>
&lt;p>I loved this book the first time around and cannot wait to read it again.&lt;/p>
&lt;h4 id="80-_brideshead-revisited_-evelyn-waugh">80. &lt;em>Brideshead Revisited&lt;/em>, Evelyn Waugh&lt;/h4>
&lt;h4 id="70-_the-alexandria-quartet_-lawrence-durrell">70. &lt;em>The Alexandria Quartet&lt;/em>, Lawrence Durrell&lt;/h4>
&lt;p>These books blew my mind when I first read them. It&amp;rsquo;ll be a joy to get back to them again. I remember my young queer self being moved by the inclusion of bisexual characters.&lt;/p>
&lt;h4 id="60-_the-moviegoer_-walker-percy">60. &lt;em>The Moviegoer&lt;/em>, Walker Percy&lt;/h4>
&lt;p>This was my favorite book to recommend to bratty high school students looking for a short read at the end of summer vacation when I worked at a bookstore.&lt;/p>
&lt;h4 id="50-_tropic-of-cancer_-henry-miller">50. &lt;em>Tropic of Cancer&lt;/em>, Henry Miller&lt;/h4>
&lt;p>I&amp;rsquo;ll go ahead and read &lt;em>Tropic of Capricorn&lt;/em> after this, too, but I remember the first 40 pages of this being absolutely bizarre and sexual.&lt;/p>
&lt;h4 id="40-_the-heart-of-the-matter_-graham-greene">40. &lt;em>The Heart of the Matter&lt;/em>, Graham Greene&lt;/h4>
&lt;h4 id="30-_the-good-soldier_-ford-madox-ford">30. &lt;em>The Good Soldier&lt;/em>, Ford Madox Ford&lt;/h4>
&lt;p>This took me forever to get through the first time around. Frankly, it was boring as fuck. I&amp;rsquo;ll power through it again.&lt;/p>
&lt;h4 id="20-_native-son_-richard-wright">20. &lt;em>Native Son&lt;/em>, Richard Wright&lt;/h4>
&lt;p>This one I haven&amp;rsquo;t read yet. This is such an important book and I am glad I can read it when I am more mature.&lt;/p>
&lt;h4 id="10-_the-grapes-of-wrath_-john-steinbeck">10. &lt;em>The Grapes of Wrath&lt;/em>, John Steinbeck&lt;/h4>
&lt;p>I have read this book at least three times but I&amp;rsquo;ll get through it again. It really is a spectacular novel.&lt;/p></description></item><item><title>Queer People and People of Color React to Charlottesville Activism (Teen Vogue)</title><link>https://www.teenvogue.com/story/queer-people-of-color-react-charlottesville</link><pubDate>Thu, 24 Aug 2017 11:57:00 -0500</pubDate><guid>https://emilygorcenski.com/post/queer-people-and-people-of-color-react-to-charlottesville-activism-teen-vogue/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/qpocfb.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/qpocfb.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/qpocfb.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/qpocfb.webp" width="600"/></media:content><description>&lt;p>My article for Teen Vogue on Charlottesville&amp;rsquo;s resistance to Nazis being led by queer people of color and queer disabled people.&lt;/p></description></item><item><title>No, Mr Trump, we're not the same as the neo-Nazis</title><link>https://www.theguardian.com/commentisfree/2017/aug/15/mr-trump-were-not-same-neo-nazis-charlottesville</link><pubDate>Tue, 15 Aug 2017 22:13:00 -0500</pubDate><guid>https://emilygorcenski.com/post/no-mr-trump-were-not-the-same-as-the-neo-nazis/</guid><image><url>https://emilygorcenski.com/photo-gallery/writing/3500.webp"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/writing/3500.webp" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/writing/3500.webp" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/writing/3500.webp" width="600"/></media:content><description>&lt;p>My op-ed in the Guardian on President Trump&amp;rsquo;s &amp;ldquo;both sides&amp;rdquo; response to Charlottesville.&lt;/p></description></item><item><title>I saw the attack in Charlottesville, I knew it was coming</title><link>http://www.dazeddigital.com/politics/article/37059/1/i-saw-the-attack-at-charlottesville-i-knew-it-was-coming</link><pubDate>Tue, 15 Aug 2017 12:00:00 -0600</pubDate><guid>https://emilygorcenski.com/post/i-saw-the-attack-in-charlottesville-i-knew-it-was-coming/</guid><description>&lt;p>My piece for Dazed written in the aftermath of Unite the Right in Charlottesville.&lt;/p></description></item><item><title>What is Victory, What is Failure?</title><link>https://emilygorcenski.com/post/what-is-victory-what-is-failure/</link><pubDate>Fri, 14 Jul 2017 12:54:30 +0000</pubDate><guid>https://emilygorcenski.com/post/what-is-victory-what-is-failure/</guid><description>&lt;p>I have been driven lately to consider the moment we are living in and to consider what the goal of my activism is. Direct actions must have clear goals to be effective, but so too must movements and activists. And we must be honest about what achieving those goals means. How do we measure success? How do we measure failure?&lt;/p>
&lt;p>We&amp;rsquo;re living in a pivotal moment right now. Someone told me recently that she reflected on where we are in history and that this was a Moment&amp;mdash;capital &amp;lsquo;M.&amp;rsquo; So what does victory look like? What does failure look like?&lt;/p>
&lt;p>Recently I&amp;rsquo;ve had the good fortune of visiting Europe several times. While I was there I visited many sites of many recent trauma&amp;rsquo;s of humanity&amp;rsquo;s past. And it should come as no surprise that the site that moved me most was Bebelplatz, the site of the famous Nazi book burning in May of 1933.&lt;/p>
&lt;p>This event is famous and some folks know the basic facts: Goebbels spoke before a crowd of 40,000 people while 20,000 books burned. And some people know that those books were the research volumes of the Institut für Sexualwissenschaft. But what most people don&amp;rsquo;t know is that these volumes were the most comprehensive resource on transsexuality ever compiled, perhaps even to this day. Much of this information has never been duplicated. These studies were 80 years ahead of their time&amp;mdash;but only because they were destroyed. We are only now beginning to re-understand some basic facts of gender and sexual fluidity that were openly studied almost a century ago. Of all the people the Nazis came for, they came for trans people first.&lt;/p>
&lt;p>I fell to my knees and wept over the memorial.&lt;/p>
&lt;p>The Moment we are in now isn&amp;rsquo;t Nazi Germany in 1933. It&amp;rsquo;s before that. It&amp;rsquo;s the time when Hitler&amp;rsquo;s movement was still growing. We&amp;rsquo;re at an inflection point: the alt-right can still fail. Trump&amp;rsquo;s America can still fade to the shadows. But it has momentum. And it needs resistance. And what we do right now will determine whether the racist, bigoted forces of the alt-right succeed or fail.&lt;/p>
&lt;p>If we win, history may never know. The alt-right may be consigned to a footnote in history, the hard-fought successes of small, anonymous activists lost in the noise. But if we lose, history may eventually remember us as those who saw it and stood against it only to fail. We fight for the privilege to remain anonymous in history. To have no tales written about our desperate stand. We fight to continue the fight. Victory will be invisible. I&amp;rsquo;m okay with that.&lt;/p></description></item><item><title>No, The White Supremacists Aren't Looking For Attention</title><link>https://emilygorcenski.com/post/no-the-white-supremacists-arent-looking-for-attention/</link><pubDate>Sun, 25 Jun 2017 20:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/no-the-white-supremacists-arent-looking-for-attention/</guid><description>&lt;p>There is a pervasive belief that the white supremacist-led rallies taking place around the country are attention-seeking exploits. “Don’t counter-protest, they crave your attention,” the admonishments go. “If you ignore them they will go away.”
Frankly, this is bullshit.&lt;/p>
&lt;p>White supremacy has never been about attention. While some personalities may seek it to satisfy their egos or to grow their brands, there is no evidence that attention-seeking is the mission of these groups. The August 12 “Unite the Right” rally scheduled in my hometown of Charlottesville will feature popular alt-right personalities such as Richard Spencer (63.5k Twitter followers), Baked Alaska (174k Twitter followers), and Based Stick Man (26.3k Twitter followers). These people don’t need attention. They already have it. Nobody is coming to Charlottesville, Virginia (MSA population: ~207,000) for the size of the audience. Most people can’t even distinguish the city from Charlotte, North Carolina. We don’t even have an Olive Garden.&lt;/p>
&lt;p>It further beggars belief that these right-wing personalities could be craving so strongly the focus of the “antifa” that they hate so much. Alt-right message boards are laden with an anti-leftist rage that betrays fear, not admiration. The right trembles when the Black Bloc shows up.&lt;/p>
&lt;p>Oh, and have I mentioned yet that the far-right owns the White House, Congress, and the Supreme Court? And we’re still peddling this narrative of desperation?&lt;/p>
&lt;p>Indeed, this is because white supremacists are not seeking attention. They are seeking hegemony. They are seeking the dominance of the other. They are seeking power on the backs of the labor of the marginalized. Denying attention doesn’t starve these organizations of access to power. Politicians in the states of Georgia and North Carolina have recently been photographed alongside known white supremacists. Steve Bannon and Seb Gorka are presidential advisors. Much like the schoolyard bully, ignoring them proves to be a terrible strategy for making them go away.&lt;/p>
&lt;p>White supremacy has been ignored for years and yet it is now the strongest it has been in my lifetime. White supremacy continues to grow in strength largely because white liberals continue to enable them by acceding to their demands and imploring people to not resist. It is inconceivable to think that movements with hundreds of thousands of followers cannot self-sustain if not for the ire of the left.&lt;/p>
&lt;p>White supremacists seek to maintain existing power structures, not build new ones. Ignoring them supports the status quo. Ignoring empowers them to act unimpeded to accomplish their agenda. White supremacy is a fungus that grows in a damp, shitty darkness. It is eradicated by the light of day and the vocal, unwavering resistance of those who refuse to be oppressed by it any longer. It is eradicated through the allyship of white people willing to follow marginalized folk with vast experience leading and organizing. White supremacy didn’t start with Trump; and if you’re just discovering here in 2017 that it has a platform, you’re probably unsuited to proffer advice on how to combat it, particularly when that advice is exactly what you’ve been doing this whole time.&lt;/p>
&lt;p>People who want attention don’t use private, invite-only Facebook groups. They don’t use codenames. They don’t obscure their faces in photos.&lt;/p>
&lt;p>White supremacy doesn’t want your attention. It wants your inaction. Don’t give it what it wants. Show up, follow, and resist.&lt;/p></description></item><item><title>President Trump Complicates Healthcare for Transgender Americans (Out.com)</title><link>https://www.out.com/news-opinion/2017/5/05/president-trump-complicates-healthcare-transgenders-americans</link><pubDate>Fri, 05 May 2017 13:12:00 -0500</pubDate><guid>https://emilygorcenski.com/post/president-trump-complicates-healthcare-for-transgender-americans-out.com/</guid><description>&lt;p>My article for Out.com on the impact of the Trump Administration&amp;rsquo;s policies on transgender healthcare in America.&lt;/p></description></item><item><title>Followup: OkCupid and Open Science</title><link>https://emilygorcenski.com/post/followup-okcupid-and-open-science/</link><pubDate>Thu, 12 May 2016 20:00:00 -0500</pubDate><guid>https://emilygorcenski.com/post/followup-okcupid-and-open-science/</guid><description>&lt;p>A recovered post on the response to the OkCupid data breach in 2016&lt;/p>
&lt;p>The storm has died down a bit regarding the breach of almost 70,000 OkCupid users’ highly personal data. The response was rapid and critical; &lt;a href="https://emilygorcenski.com/post/when-open-science-isnt-the-okcupid-data-breach/">my response&lt;/a> focused on the lack of informed consent practice, along with some other issues, while a &lt;a href="https://web.archive.org/web/20160625055610/https://ironholds.org/blog/when-science-goes-bad-consent-data-and-doubling-down-on-the-internet/">fantastic take by Oz Keyes&lt;/a> explored how the researchers buried academic dishonesty behind a virtue of openness.&lt;/p>
&lt;p>It is this latter point that perhaps deserves some more introspection. I am a strong proponent of open source, open science, and open data, and this is highlighted in &lt;a href="https://emilygorcenski.com/post/quality-in-the-consumer-iot/">my conference talks&lt;/a> along with my research approach. Open science and open data is a worthy virtue. But it is not the only virtue.&lt;/p>
&lt;p>Like many arguments over free speech, it is easy to lose the forest for the trees. While the freedom of speech is one of the most fundamental human rights we have, it is not the only such right. And like data, particularly government-funded data, should be open, openness does not absolve the analyst of the sins of its use.&lt;/p>
&lt;p>In my prior post, I called for the Center for Open Science to remove the archive. I now refute that stance. The Center for Open Science negotiated with Mr. Kierkegaard to, for now, password protect the sensitive user information. Although this has flaws, it is in my opinion the best near term solution.&lt;/p>
&lt;p>There is a salient truth in this situation: &lt;strong>open science worked&lt;/strong>. The authors had a fervent predilection for open data; fittingly, it was this that bit them in the ass. Open science is about democritizing (or at least de-meritocracizing) peer review. In this case, the authors put their research up for review on an open platform. Users with various levels of expertise, in queer issues, research ethics, statistical methodology, and so forth, including expertise that far outstrips my own, were able to freely analyze and criticize the research. The fundamental working premise of open science was operating in full gear.&lt;/p>
&lt;p>I no longer think that COS should remove the data or the report. The user information is, for now, protected. COS should ensure that it remains so. But the report and the compiled results should stay. The failures of methodology and scientific method should remain on full display. These researchers should not so easily escape the ramifications of their shortcomings. I am happy to read a retraction. But science is about transparency, and removing this would, rightly, be both a strike against transparency and a strike against the peer review that discredited the research.&lt;/p>
&lt;p>Importantly, the repository should stand as a strong example of the working potential of open science.&lt;/p></description></item><item><title>When Open Science Isn't: The OkCupid Data Breach</title><link>https://emilygorcenski.com/post/when-open-science-isnt-the-okcupid-data-breach/</link><pubDate>Wed, 11 May 2016 20:00:00 -0500</pubDate><guid>https://emilygorcenski.com/post/when-open-science-isnt-the-okcupid-data-breach/</guid><description>&lt;p>My commentary on the OkCupid data breach: a recovered post from 2017.&lt;/p>
&lt;p>&lt;em>Content Warning: Actual Nazis. Disclosure: I have an NIH Certification in Human Subjects research, and I regularly attend non-affiliated events that the Center for Open Science graciously hosts, including the monthly Charlottesville Women in Tech meetup. Some slight edits have been made to fix typos and tie up loose threads. &lt;strong>Update: I have posted some follow-up comments regarding my opinion of Center for Open Science’s best course of action &lt;a href="https://emilygorcenski.com/post/followup-okcupid-and-open-science/">here&lt;/a>&lt;/strong>. This post was recovered in 2021 from archive.org and not all formatting may have been preserved.&lt;/em>&lt;/p>
&lt;p>Earlier today, a pair of individuals ostensibly affiliated with Danish universities, “published” a paper performing large scale data analysis on user response data from Ok Cupid. These individuals, under the guise of open science, then pushed the full dataset to the Open Science Framework, a service hosted by the Center of Open Science, which happens to be located in my home city of Charlottesville.&lt;/p>
&lt;p>The data they published happened to include complete usernames in the clear, along with responses to questions on the Ok Cupid site. The questions include responses of a highly private nature, including sexual preferences, health habits, and more.&lt;/p>
&lt;p>These data were obtained by using a scraper bot that would walk OKC profiles and gather data. Presumably, this was not done with Ok Cupid’s permission.&lt;/p>
&lt;p>The purpose of this research appears to be begging the question. Despite the wealth of available information in the data, the users chose to test hypotheses comparing cognitive ability to religious affiliation and to explore correlations between Zodiac signs and certain preferences. This has a dramatic stench of attempting to find a dataset to match a pre-formed conclusion; in this case, it smells a lot like the prototypical rhetoric of a specific athiest politic. One author’s comments betray any sense of independence in this regard.&lt;/p>
&lt;p>The study itself is deeply flawed in multiple ways. Let’s explore them.&lt;/p>
&lt;h2 id="the-ethics-of-data-acquisition">The Ethics of Data Acquisition&lt;/h2>
&lt;p>As mentioned, the authors confess to using a bot to scrape OKC data. This is a violation of OKC’s terms of service, of course. But there is something bigger at stake here. This is a &lt;em>fundamental violation&lt;/em> of research ethics.&lt;/p>
&lt;p>During World War II, the Nazi scientist Karl Brandt conducted human trials and unethical medical practices against prisoners of concentration camps. These trials included, among other things, forced sterilization, forced abortion, and eugenics. After the war, he was convicted of war crimes during the Doctors’ Trial. As a consequence of his actions, the Nuremberg Code was established to govern the ethics of medical research. The &lt;a href="https://web.archive.org/web/20160610082154/https://www.ushmm.org/information/exhibitions/online-features/special-focus/doctors-trial/nuremberg-code">Nuremberg Code&lt;/a> lays out ten points for ethical human subjects research. Point number one among them: &lt;strong>“Required is the voluntary, well-informed, understanding of the human subject in a full legal capacity.”&lt;/strong>&lt;/p>
&lt;p>The Nuremberg Code served as the basis for the &lt;a href="https://web.archive.org/web/20160610082154/http://www.wma.net/en/30publications/10policies/b3/">Declaration of Helsinki&lt;/a> by the World Medical Association, an organization with 112 national medical associations. The code also served as the basis of 45 CFR 46, the United States code that governs medical research.&lt;/p>
&lt;p>A similar code of conduct for medical ethics was written following syphillis trials on African Americans in the United States: the &lt;a href="https://web.archive.org/web/20160610082154/http://www.hhs.gov/ohrp/regulations-and-policy/belmont-report/">Belmont Report&lt;/a> established a similar set of ethical guidelines for medical research, and this report is used by the US Department of Health and Human Services to structure human subject protections regulations. Among the guidelines in this report: &lt;strong>to gather informed consent from the patient.&lt;/strong>&lt;/p>
&lt;p>Informed consent is the &lt;em>sine qua non&lt;/em> of conducting medical research. Failure to obtain informed consent is the &lt;em>biggest possible failure&lt;/em>. These authors purport to be conducting legitimate psychosocial analysis. Even though they are merely analyzing existing data, the hypothesis they wish to test fall under the well-established guidelines of medical research ethics.&lt;/p>
&lt;p>OkCupid users &lt;em>do not&lt;/em> automatically consent to third party psychological research, plain and simple. This study violates the first and most fundamental rule of research ethics. In fact, OkCupid’s Terms of Service includes the following statement:&lt;/p>
&lt;blockquote>
&lt;p>You further agree that you will not use personal information about other users of this Website for any reason without the express prior consent of the user that has provided such information to you.&lt;/p>
&lt;/blockquote>
&lt;h2 id="benefit-to-humanity">Benefit to Humanity&lt;/h2>
&lt;p>Human subjects research must also meet the guidelines of &lt;em>beneficence&lt;/em> and &lt;em>equipoise&lt;/em>: the researchers must do no harm; the research must answer a legitimate question; and the research must be of a benefit to society. Do the hypotheses here satisfy these requirements? It should be obvious they do not.&lt;/p>
&lt;p>Many words can be said about the effect of certain organized religions on human history. But many more can be said about religion’s effect on local communities and on individual wellness. Freedom of religion is considered a fundamental human right, and while we can perform scientific studies about its impact on populations, we have to have a fundamental respect for persons and their rights. The researchers appear not to be asking a legitimate question; indeed, their language in their conclusions seem to indicate that they already chose an answer. Even still, attempting to link cognitive capacity to religious affiliation is fundamentally an eugenic practice. This study does not meet these criteria.&lt;/p>
&lt;h2 id="data-safety">Data Safety&lt;/h2>
&lt;p>Were these data to leak as a result of a hack, the infosec community would be up in arms. These data include personal identifiable information with highly sensitive results. The users then dumped the data on an open repository, where anyone can easily download and view the results. The impact of this can be dramatic: users can be shamed, fired from jobs, relationships terminated, etc. as a result of these data. It is a red herring to say that the data were available online. No user could reasonably gather this information through normal use in a reasonable amount of time.&lt;/p>
&lt;h2 id="methodological-flaws">Methodological Flaws&lt;/h2>
&lt;p>Suppose the researchers &lt;em>did&lt;/em> have a legitimate research question. OkCupid allows users who self-identify as queer to set a filter preventing straight-identified users from viewing their profile. This is not a safety setting so much as it is a user experience improvement. However, the result is that queer people are likely invisible to the scraper bot (unless the researchers had the foresight of identifying the bot as queer; this appears not to be the case). Consequently, the underlying data set contains a significant sample bias: queer people are excluded disproportionately from the data. This is conventional queer erasure: queer identified folks are not included in a study, so conclusions applying only to straight people are used to inform conclusions which then get pressed upon queer people. This bias is unfortunately commonplace, but the authors appeared to make no effort to address it.&lt;/p>
&lt;h2 id="peer-review-failure">Peer Review Failure&lt;/h2>
&lt;p>I used the term “published” in quotes earlier because what the authors did barely meets any definition of the term. The journal in which they published the paper appears to be edited by one of the authors of the paper. The journal has no impact score, and the conclusions of prior papers appear to follow a similar trend: relgious people are less intelligent, immigration (particularly from the Middle East) lowers intelligence in European countries, etc. These papers have exhibit disturbing far-right trends with dramatic methodological failures and should not be considered scientific research in any way.&lt;/p>
&lt;p>Unfortunately, the damage has been done by uploading OKC user identities to the Internet. Hopefully, COS will take these data down, as it represents neither science nor openness in any meaningful way.&lt;/p>
&lt;h2 id="a-last-note">A Last Note&lt;/h2>
&lt;p>OkCupid probably did not sanction this research, but that does not mean they could not have prevented it. A basic rate-limiter on requests would stifle any bot; particularly one that has exponentially increasing timeouts. For any website that allows user data to be public, this should be fundamental security praxis. This incident does not represent open science; it represents a security breach, enabled by a lack of countermeasures, and should be handled and treated as such.&lt;/p></description></item><item><title>Quality in the Consumer IoT</title><link>https://emilygorcenski.com/post/quality-in-the-consumer-iot/</link><pubDate>Thu, 21 Apr 2016 00:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/quality-in-the-consumer-iot/</guid><description>&lt;p>&lt;em>This is a companion post for my talk of the same title given on April 22, 2016 at &lt;a href="https://iotfuse.com/conference-2016/">IoT Fuse&lt;/a> in Minneapolis, MN. Content warning: this post discusses some issues with illness and death, including mental illness; sexual assault; and contains an image of raw meat.&lt;/em>&lt;/p>
&lt;h1 id="quality-in-the-consumer-iot">Quality in the Consumer IoT&lt;/h1>
&lt;h2 id="iot-fuse-2016">IoT Fuse 2016&lt;/h2>
&lt;p>The Internet of Things represents a massive technology shift. Truthfully, much of the march towards the realization of the Internet of Things has taken place along multiple gradually-incrementing threads. But we are finally at a place where technology and expertise exists to begin weaving these threads together into a bigger tapestry. And, like many historical technological shifts, when these threads reach their confluence, the impact becomes bigger than the sum of the parts.&lt;/p>
&lt;p>In the Consumer IoT&amp;mdash;which I broadly define as the embedding of the internet into devices we encounter in our personal (but not necessarily professional) lives&amp;mdash;this confluence leads to a deceptively large cultural shift. Previously, as users we could choose when to remove the internet from our space. We elected to sit down at a PC or to pick up a smartphone; when we left them behind, we left them behind. But the IoT proposes to remove this capability. The internet will now be in our cars, our refrigerators, and even in the the very walls of our homes.&lt;/p>
&lt;p>IoT manufacturers don&amp;rsquo;t simply want to sell you a smart device. Samsung isn&amp;rsquo;t selling a smart refrigerator. They&amp;rsquo;re selling you a &lt;a href="http://www.samsung.com/us/explore/family-hub-refrigerator/">Family Hub&lt;/a>. Nissan isn&amp;rsquo;t selling you an car with a smart console. They&amp;rsquo;re selling you a &lt;a href="http://www.nissanusa.com/blog/carwings-app">remote control for your vehicle&lt;/a>. IoT manufacturers even want to put the internet &lt;a href="https://www.getquip.com/">into your toothbrush&lt;/a>.&lt;/p>
&lt;p>It&amp;rsquo;s worth noting that refrigerators, cars, and toothbrushes are &lt;em>already&lt;/em> part of our quotidian lives. We already own these devices. IoT isn&amp;rsquo;t about selling a device. It&amp;rsquo;s about selling software. And this is a pretty big stretch. As IoT developers, we&amp;rsquo;re asking consumers to extend to us an unprecedented level of trust. We&amp;rsquo;re asking them to invite our software and our algorithms into their homes and their lives.&lt;/p>
&lt;blockquote>
&lt;p>The consumer has no goodwill for a novel inconvenience.&lt;/p>
&lt;/blockquote>
&lt;p>This proposition bears a lot more moral weight than your traditional software engineering challenge. And to match it, we have to convince the consumer that we&amp;rsquo;re making quality products. But what exactly does quality mean? Quality can mean many things to many people, but broadly speaking, I&amp;rsquo;ll explore it from three perspectives. Quality is:&lt;/p>
&lt;ol>
&lt;li>the satisfaction of consumer expectations;&lt;/li>
&lt;li>engineering and design process;&lt;/li>
&lt;li>the ethics of how and why we do business.&lt;/li>
&lt;/ol>
&lt;p>With respect to the first point, consumers expect that an IoT product &lt;em>just works&lt;/em>. A user might get hooked on novelty, but by definition, novelty wears off&amp;mdash;usually by the 4th interaction, if you&amp;rsquo;re lucky. And with regards to the second problem, IoT devices have to be designed robustly with respect to both their canonical function (e.g. cleaning your teeth) as well as their connected function (e.g. tracking oral hygiene habits). The consumer has no goodwill for a novel inconvenience. With regards to the third definition, this calls back to some very important concepts in hard engineering fields that software engineering has largely ignored: the ethics of the engineer to not do harm. To me, these three definitions all intersect. And when failures happen, the fault tree usually includes incursions against all of these principles. Let&amp;rsquo;s explore a few past and potential failure cases.&lt;/p>
&lt;p>To do so, I&amp;rsquo;m going to stand on the shoulders of giants and borrow a concept directly from CC Zona&amp;rsquo;s talk &amp;ldquo;Consequences of an Insightful Algorithm,&amp;rdquo; which she gave as the keynote to RubyConf, among others: &lt;a href="https://www.youtube.com/watch?v=Vpr-xDmA2G4">https://www.youtube.com/watch?v=Vpr-xDmA2G4&lt;/a>. This concept is &amp;ldquo;Failure Bingo,&amp;rdquo; and I&amp;rsquo;ve adapted the concept to the IoT. The columns are roughly organized into generalized categories: software failures, usability failures, process/management failures, user harm, and &amp;ldquo;legal landscape.&amp;rdquo; There&amp;rsquo;s nothing particularly critical about the tiles themselves; they&amp;rsquo;re just the first 5 examples that came to mind. Feel free to substitute them with your own examples, if you&amp;rsquo;d like. Incidentally, this process is more or less equivalent to performing a software Failure Mode Effects Analysis (FMEA), a risk analysis technique.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/talks/failure_bingo.png" alt="A 5-by-5 matrix of failure causes and effects">&lt;/p>
&lt;h3 id="volkswagen-diesel-scandal">Volkswagen Diesel Scandal&lt;/h3>
&lt;p>Last year, Volkswagen admitted to &lt;a href="http://blog.caranddriver.com/everything-you-need-to-know-about-the-vw-diesel-emissions-scandal/">using software to cheat on emissions tests.&lt;/a>. There is a well-known link between &lt;a href="https://www.sciencedaily.com/releases/2015/09/150915094302.htm">air pollution and deaths from heart disease&lt;/a>, and the increase in pollution from the Volkswagen engines could be statistically &lt;a href="http://www.cnbc.com/2015/10/29/vw-excess-emissions-linked-to-60-us-deaths-study.html">linked to up to 60 deaths in the US&lt;/a>. What does this have to do with IoT? Look at how Car and Driver phrases it:&lt;/p>
&lt;p>!!! Volkswagen installed emissions software&amp;hellip; that allows them to sense the unique parameters of an emissions drive cycle.&lt;/p>
&lt;p>This isn&amp;rsquo;t just in the same ballpark as IoT software; it&amp;rsquo;s sitting in the same dugout. To save time and space, I won&amp;rsquo;t elaborate on all of the failures; suffice it to say, the failure bingo is quite comprehensive. Let&amp;rsquo;s move on.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/talks/failure_vw.png" alt="Failure matrix for the Volkswagen scandal, with multiple failure causes and effects marked off">&lt;/p>
&lt;h3 id="nissan-leaf">Nissan Leaf&lt;/h3>
&lt;p>Sticking with the automotive theme, and moving closer into IoT space, Nissan has &lt;a href="http://www.wired.co.uk/news/archive/2016-02/24/nissan-car-hacked">recently disabled its Nissan ConnectEV app&lt;/a>. This happened after a hack of the Leaf &lt;a href="https://www.troyhunt.com/controlling-vehicle-features-of-nissan/">went public&lt;/a>. In short, the app used a rough variant of a RESTful API to communicate with the associated vehicle. Commands to turn on the air conditioning, for instance, could be executed by basically visiting a web page. There are two notable failures in this case: first, the API used an unauthenticated &lt;code>GET&lt;/code> to change the behavior of the vehicle; second, the company didn&amp;rsquo;t respond to the discoverer&amp;rsquo;s numerous good faith messages to fix the app before going public. Even more striking is that the hack could affect &lt;em>any&lt;/em> Nissan Leaf. All one needs is the VIN&amp;mdash;a &lt;strong>serial identifier&lt;/strong>.&lt;/p>
&lt;p>Obviously, this could be used to cause deliberate harm: a hacker could run the battery down on someone&amp;rsquo;s car, preventing them from getting to work or to the hospital, for instance. But this is more than a security woe. Just throwing a bunch of encryption at this problem won&amp;rsquo;t make it go away. This is a maintainability flaw. If the API is that fragile, how can we guarantee that we won&amp;rsquo;t induce wild failures 10 years from now when the app is updated to support iOS 12? What if that app happens &lt;em>over the air while driving?&lt;/em> Part of the answer, is well-established quality engineering practices. Another part of the answer is to regulate connected software with access to vehicle features.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/talks/failure_nissan.png" alt="A failure matrix for the Nissan Leaf hack, showing several failure effects marked off">&lt;/p>
&lt;h3 id="samsung-family-hub">Samsung Family Hub&lt;/h3>
&lt;p>Now let&amp;rsquo;s look forward. Samsung is releasing the Family Hub refrigerator. This device is novel: it has a touchscreen built into the door. This device can show family photos, manage calendars and shopping lists, and track fridge inventory. To accomplish the latter task, the device takes photos of the inside of the fridge every time the door shuts so you can track its contents. This is a great idea with some far-reaching consequences.&lt;/p>
&lt;p>Imagine you or a loved one currently has or has recovered from an eating disorder. Imagine the harm that the endless photostream of food can cause to that person. What about users who need to refrigerate medicine? That&amp;rsquo;s extremely private medical information. Of course, Samsung is not a covered entity, so HIPAA privacy regulations don&amp;rsquo;t apply. But the data are just as sensitive as what your provider or insurance carrier holds. Is Samsung treating those data with due regard?&lt;/p>
&lt;h3 id="microsoft-band">Microsoft Band&lt;/h3>
&lt;p>I made &lt;a href="https://twitter.com/internetofshit/status/692004889380179968">the video linked here&lt;/a>. In it, I used the photoplethysmography sensor on a Microsoft Band to read an active 120 bpm heart rate from a raw chicken breast. This is a fun bit of trivium with a bit of a dark side.&lt;/p>
&lt;p>We have readily integrated fitness trackers into our lives, &lt;a href="http://vitals.lifehacker.com/these-infographics-show-the-problems-with-calorie-count-1771540530?utm_source=recirculation&amp;amp;utm_medium=recirculation&amp;amp;utm_campaign=thursdayPM">despite their inaccuracies&lt;/a>. But we have maybe given into too much reliance on their data. Last year, a woman&amp;rsquo;s rape claim was dismissed because her activity tracker did not corroborate her accusations. She was charged with &lt;a href="http://www.nbcphiladelphia.com/news/tech/Fitbit-Fitness-Tracker-Proves-Woman-Lied-Sexual-Assault-376201701.html">a crime and put on probation&lt;/a>. The attorney general said the tracker data &amp;ldquo;sealed the deal.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>A woman&amp;rsquo;s rape claim was dismissed and she was charged with a crime based on tracker data, but I can pull 120 bpm off a piece of raw chicken.&lt;/strong> We must be careful with the amount of deference we give to these devices. There are no regulations and no standards to control the effectiveness and accuracy of these devices. There is no quality assurance that is not self-imposed by the manufacturer.&lt;/p>
&lt;h3 id="guaranteeing-quality">Guaranteeing Quality&lt;/h3>
&lt;p>The opportunity for harm is great, so as developers and manufacturers, we have to take it seriously. There is one space in which there is ample predicate for how to manage quality development of software and hardware: the medical device industry is heavily regulated. Medical device development, deployment, support, product labeling, marketing, and data transmission is all regulated under various US federal laws; Canada and Europe have equivalent regulations. Medical device software regulation was born out of a high-profile failure: &lt;a href="https://en.wikipedia.org/wiki/Therac-25">THERAC-25&lt;/a>. Medical device manufacturers and software engineers have to perform extensive risk analyses based on the risk profile of the device itself.&lt;/p>
&lt;p>This is interesting to note, because medical devices are one of the most clear confluences of both consumer demand and developer innovation. People who rely on medical devices in their everyday lives are clamoring to have better integration with modern society. There is a clear use case in this field, not to mention a lot of money&amp;mdash;at least &lt;a href="http://www.mordorintelligence.com/industry-reports/global-wearable-medical-device-market-industry">one estimate&lt;/a> projects the &lt;em>wearable&lt;/em> medical device market, a small subset of IoT consumer medical devices, at $7.8 billion annually by 2020. IoT makers needs to be unafraid of the regulatory environment surrounding this space.&lt;/p>
&lt;p>That is not to say that the regulatory marketplace isn&amp;rsquo;t burdensome. In one example, a Kickstarter project for the &lt;a href="https://www.kickstarter.com/projects/1305386921/mybivy">myBivy app&lt;/a> has raised almost $27,000 to create an app to treat PTSD-induced night terrors, a common ailment in combat veterans. However, this device claims a medical intervention, hence it qualifies as a regulated medical device, and also proposes to transmit data to providers, meaning it also falls under HIPAA. Sadly, $27,000 is about one-fifth of the cost of just getting that regulatory process in-place. It doesn&amp;rsquo;t matter how great the myBivy algorithms are. They have to surivive a regulatory landscape that induces heavy up-front costs.&lt;/p>
&lt;h3 id="tech-cannot-guarantee-the-success-of-tech">Tech cannot guarantee the success of tech&lt;/h3>
&lt;p>All the best algorithms in the world, all the best practices and best integrations and best services are insufficient to guarantee success. Consumers demand quality even when they don&amp;rsquo;t realize it. Consumers expect safety. Consumers expect to not be shamed by their refrigerator. Consumers expect their thermostats to always work. Innovation and novelty are not good enough. We need to design products with an understanding of what quality means to all stakeholders.&lt;/p>
&lt;p>Quality is not an individual effort. All IoT developers are in a sink-or-swim environment and we need to work together. One high-profile IoT failure can doom many unrelated projects. It is possible to collaborate in IoT space. It is possible to take distinct actions to ensure product quality. Among them:&lt;/p>
&lt;ul>
&lt;li>Hire diverse candidates and &lt;em>give them agency&lt;/em>. Let them say no to a feature. Empower them to explore alternatives. Let their world experience become the channel through which you communicate to trust to people like them&lt;/li>
&lt;li>Contribute to open source and open science. Data are not the only valuable resources for an IoT maker. If you use open-source software, allow and encourage your employees to contribute to its development during work hours. It will help make that software more robust in the future and establish your brand&amp;rsquo;s commitment to quality.&lt;/li>
&lt;li>Value soft skills. Documentation is critically important. So is customer interaction, usability, support, and all of the other things that we forget about when we classically evaluate a developer. Code will not move us forward. Changing culture is the only guarantor of IoT success. We must be culturally saavy.&lt;/li>
&lt;/ul>
&lt;p>That&amp;rsquo;s all for tonight. There is a lot to parse here and not enough time or space to discuss it all. As always, feel free to reach out to me on &lt;a href="https://twitter.com/EmilyGorcenski">Twitter&lt;/a> if you want to discuss ways to design quality IoT products.&lt;/p></description></item><item><title>Commodities, Culture, and Code</title><link>https://emilygorcenski.com/post/commodities-culture-and-code/</link><pubDate>Tue, 15 Mar 2016 22:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/commodities-culture-and-code/</guid><description>&lt;p>There is a general belief that social impact consideration, project/time management, documentation strategies, analysis of ethics, and so forth are non-technical skills. These so-called &amp;quot;soft&amp;quot; skills are not necessarily reviled, per se, but they are often viewed as second-class competencies in comparison to &amp;quot;hard&amp;quot; talents such as code production, hardware, analysis, and so forth. This dichotomy is not only false, as I will discuss, but it is also evidently harmful. Yet this attitude is so common as to be almost axiomatic.&lt;/p>
&lt;p>I was recently participating in/mostly-watching a &lt;a href="https://twitter.com/emgrasmeder/status/706091500191551489">Twitter thread&lt;/a> musing on the false dichotomy between &amp;quot;technical&amp;quot; talks and &amp;quot;soft&amp;quot; talks at tech/tech-adjacent conferences.&lt;/p>
&lt;p>Within the space of tech conferences, there is a general sense that soft talks (I will cease using quotation marks) are ignored as irrelvant, dismissed as elementary, or relegated to the domain of women and/or non-CS programmers. This is a dangerous notion to hold onto.&lt;/p>
&lt;p>Soft skills apply broadly in the workplace; although any given employee may not be individually responsible for managing/changing/supervising the soft aspects of the development cycle, development doesn't happen in a silo. Each employee shares responsibility in their own work environment, and good allyship requires active involvement, not simply passive support. These are not simple issues to understand: managing people is hard because it involves individuals, no two who are the same. This is not easily abstracted; we cannot use the factory pattern and program our way out of soft challenges.&lt;/p>
&lt;p>But because these issues often have to deal with people, there is a tendency to assign these talents a feminine gender. Our culture still presumes that women hold greater interpersonal talent, and accordingly these people skills are seen as a woman's responsibility. In extreme cases, some even see interpersonal skills as a weakness. This is, of course, sexism manifest.&lt;/p>
&lt;p>When women are seen solely for their soft skills, it dramatically undercuts their opportunities for advancement. Hard-skill acolytes may complain about lack of technical content in conferences (perhaps because their lack of soft skills makes them uncomfortable?) and seniority is too often linked to technical benchmarks, meaning that promotions and raises often skip those who dedicate their time budget to soft development.&lt;/p>
&lt;p>Soft skill debt is akin to technical debt--neglect it and you will eventually regret it. Documentation matters, client education/participation matters. But because so many tech projects are time-budgeted in Narnia, there often isn't enough up-front allocation of time for soft-skill management. This embeds a sense that soft-skills are't as valuable (because if they were, obviously, they would have been budgeted for).&lt;/p>
&lt;hr>
&lt;p>This unhealthy attitude hides a stark reality in tech culture, one that the industry doesn't much like to address: programming is a commodity skill.&lt;/p>
&lt;p>Sure, there is a difference between a good programmer and a bad one. But frequently, bad code happens a user tries to program their way out of ignorance, and not because a developer lacks skill. Programmers are often evaluated based on their skills instead of their ceilings, but even good programmers lean heavily on external resources to do their work. By and large, there is almost no value to memorizing seldom-used API calls, patterns, or data structures: they can easily be recalled with a Google search, and there is little difference in the long run between an experienced programmer implementing code from memory and a novice one implementing it from a Google search result. One may argue that the latter takes more time, but if one's budgets are built around a developer knowing every possible programming technique by heart, then the issue isn't lack of quality developers, but rather a failure of an ability to accurately anticipate project needs and resource availability--a soft skill.&lt;/p>
&lt;p>We don't often see programming as a commodity skill because the industry is so tied to its academic roots. Interviews too often test obscure or overly-fundamental knowledge: can you write a linked list, can you identify the syntactical bug in this code. I'm sorry, but in 13 years of R&amp;amp;D, and another 4 years ahead of that of consumer development, I've never once had to create a linked list by hand, from memory, to solve a problem. The real problems we face in industry almost never map to the kind of gatekeeper fundamentals that computer science programs use to weed out students.&lt;/p>
&lt;p>The truth is that these types of problems are often boring to the experienced developer, and when we fetishize the myth of the 10x developer, the grass around the programming industry seems a lot greener than it is. Students work their asses off to memorize operation counts of obscure algorithms: this buys them a chair and a Macbook Pro at whatever hot tech company is out there. And when they realize that modern development involves making a header 2 pixels higher, or changing the validation logic on a signup form, it's easy for them to stop seeing the forest for the trees.&lt;/p>
&lt;p>So new artificial gates are created to help blockade the view that programming jobs, ultimately, are fairly fungible. What if we write JavaScript in ELM? What if we use Clojure to generate CSS? What do you mean you don't know what a monad is?&lt;/p>
&lt;p>This is not to say that I hate functional programming; I actually like it. Rather, this pattern, which repeats itself again and again in the tech industry, is unfortunate in part because it sets unnecessary artificial barriers to entry, and in part because it also continues to funnel attention and money to the same privileged programmers who don't need it in the first place. What's more frustrating, really, is that there are perfectly good open problems to solve with &lt;em>existing&lt;/em> paradigms, languages, and practices. What about accessibility? What about deployability? How about instead of rolling your own XML parser in JavaScript-née-Ruby, we instead help make the web usable for the elderly, who increasingly need it to access medical records?&lt;/p>
&lt;p>In the end, these decisions have to be made by those with strong soft skills. It's fun to fart around with a new programming language. It's less fun to back-convert your site to Section 508 compatibility. But one of those things your users will notice, and one they will never give a damn about.&lt;/p>
&lt;hr>
&lt;p>The emphasis on soft skills takes the joy out of a lot of programmers, partly because it does force them to recognize their skills as basically replaceable on the open market. And it's a hard thing to hear, and an easy thing to dismiss, when someone with a microphone and a speaker slot starts talking about the importance or impact of the &amp;quot;boring&amp;quot; bits of development. To some it feels like an attack. &amp;quot;Why are we listening to this lady prattle on about documenting API endpoints? I want to learn about the new Flux implementation so I can go back to the office and crush code!&amp;quot; When we talk about soft skills, it reminds many developers that the excuse of &amp;quot;not enough time, not enough budget&amp;quot; doesn't hold water when there's a Mario Kart tournament during work hours or when perfectly good work time is spent trying to get some beta version of &lt;em>latest hot framework&lt;/em> working in Safari.&lt;/p>
&lt;p>When these talks strip away the facade of joy, they are easy to deride. And when they are so often given by women or minorities, who are already standing at the artificial gates of &lt;span class="math">\(O(n\log n)\)&lt;/span>, then it becomes even easier to deride them as irrelevant.&lt;/p>
&lt;p>But remember: the lifecycle of a framework is shorter than the lifecycle of a language which is shorter than the lifecycle of a career. But budgets, documentation, ethics, inclusivity, client interactions, and co-worker support will &lt;em>always&lt;/em> be a factor. That soft skills talk you ignore might be the most important one at the conference.&lt;/p></description></item><item><title>Beyond the Buzz: The Internet of Things</title><link>https://emilygorcenski.com/post/beyond-the-buzz-the-internet-of-things/</link><pubDate>Mon, 29 Feb 2016 22:00:00 +0000</pubDate><guid>https://emilygorcenski.com/post/beyond-the-buzz-the-internet-of-things/</guid><description>&lt;p>&lt;em>This is a companion post to accompany the Charlottesville Women in Tech&lt;/em> &lt;a href="http://www.charlottesvillewomenintech.com/2016/02/february-meeting-beyond-the-buzz-the-internet-of-things/">Beyond the Buzz: The Internet of Things&lt;/a> &lt;em>panel on February 10, 2016. This post contains my responses to some of the questions prepared in advance of the panel.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Content warning: An image of a raw piece of meat appears in this article below the fold.&lt;/strong>&lt;/p>
&lt;h1 id="beyond-the-buzz-the-internet-of-things">Beyond the Buzz: The Internet of Things&lt;/h1>
&lt;h2 id="charlottesville-women-in-technology-2016">Charlottesville Women in Technology 2016&lt;/h2>
&lt;h5 id="what-is-your-angle-on-iot-what-does-it-have-to-do-with-your-professionalpersonal-endeavors">What is your &amp;lsquo;angle&amp;rsquo; on IoT? What does it have to do with your professional/personal endeavors?&lt;/h5>
&lt;p>My personal interest in IoT is in quality issues, particularly how and when government and safety regulations do and do not apply. Furthermore, I have a deep-seated interest in cultural issues as they pertain to IoT products. The IoT is posed to integrately deeply in our lives and culture. Exploring secondary and tertiary effects of this innovation is something I find very fascinating.&lt;/p>
&lt;h5 id="what-do-you-see-as-the-most-promising-application-of-iot-or-the-top-three-most-promising">What do you see as the most promising application of IoT? Or the top three most promising?&lt;/h5>
&lt;p>I find it very compelling that we can shorten the distance between industry and consumer. For example, an IoT-enabled power-generation factory can distribute alerts about increased load. Smart appliances could subscribe to these notices and take actions to reduce power usage. This would have an effect of operating more efficiently while also lowering maintenance frequency and fuel use on the generation-side of the equation. Likewise, IoT medical devices could distribute medical care to people who otherwise might not receive it, such as those who cannot travel easily, or those who cannot afford hands-on specialist time.&lt;/p>
&lt;h5 id="what-do-you-think-is-the-most-important-factor-to-the-long-term-success-of-a-world-full-of-networked-objects-what-needs-to-happen-andor-what-needs-to-be-prevented-from-happening">What do you think is the most important factor to the long-term success of a world full of networked objects? What needs to happen and/or what needs to be prevented from happening?&lt;/h5>
&lt;p>We absolutely must remember that software is about people. Innovation for the sake of innovation is only going to lead to disaster. At every step, we should be asking, &amp;ldquo;should we be doing this? Who is left out if we do this? What downstream effects will this innovation have on society?&amp;rdquo;&lt;/p>
&lt;h5 id="what-is-your-viewpoint-on-security-as-it-relates-to-iot-are-you-optimistic-or-pessimistic-that-the-known-and-perhaps-unknown-security-problems-can-be-successfully-managed">What is your viewpoint on security as it relates to IoT? Are you optimistic or pessimistic that the known (and perhaps unknown?) security problems can be successfully managed?&lt;/h5>
&lt;p>I think security is hugely important, but it is a subset of robustness. Internet security in general is a tough battle and in some sense I don&amp;rsquo;t have a strong feeling as though the good guys are winning. But I feel like if we design for robustness, limit ourselves in what data we collect and why, we can make security issues more manageable.&lt;/p>
&lt;h5 id="on-a-lighter-note-do-you-have-a-favorite-iot-frustrationdisaster-story">On a lighter note, do you have a favorite IoT frustration/disaster story?&lt;/h5>
&lt;p>Absolutely! Recently, I used a smartwatch with a heart rate sensor to falsely detect a heartbeat in a piece of raw chicken breast. The video went &lt;a href="https://twitter.com/internetofshit/status/692004889380179968">semi-viral&lt;/a> and ended up getting picked up by a couple of British tabloids (&lt;a href="http://metro.co.uk/2016/01/27/this-chicken-breast-has-a-surprisingly-healthy-heart-rate-considering-its-dead-5647836/">Metro.co.uk&lt;/a> and &lt;a href="http://www.dailystar.co.uk/tech/news/491009/Microsoft-band-heart-rate-raw-chicken-breast">Dailystar.co.uk&lt;/a>). In fact, I&amp;rsquo;ll have a blog post coming up on this sometime in the near future.&lt;/p>
&lt;hr>
&lt;p>&lt;em>The following questions are ones I submitted for possible consideration, but did not get asked due to time constraints&lt;/em>&lt;/p>
&lt;h5 id="what-are-some-public-safety-issues-regarding-iot">What are some public safety issues regarding IoT?&lt;/h5>
&lt;p>IoT adoption actually has several impacts on public health. The way software behaves can change how machinery behaves. This can be dramatic: what happens if a software failure in a &lt;a href="https://www.teslamotors.com/powerwall">Tesla Powerwall&lt;/a> causes the device to overheat and explode? This can also be subtle: what are the health effects of &lt;a href="http://www.bbc.com/news/business-34324772">Volkswagen&amp;rsquo;s engine control hack&lt;/a>? Most IoT products exist in unregulated spaces. Consumers often have an implicit sense of trust: if you buy a coffee maker, you expect it to be evaluated for safety. This is most commonly performed by an organization like &lt;a href="http://ul.com/">Underwriters Laboratories&lt;/a>. But the UL has no standards that mention &lt;a href="http://ulstandards.ul.com/standards-catalog/?search=Internet">internet&lt;/a> and no standards that mention &lt;a href="http://ulstandards.ul.com/standards-catalog/?search=software">software&lt;/a>. So how can you be certain that your internet-enabled coffee maker is actually safe?&lt;/p>
&lt;h5 id="what-are-some-non-technical-challenges-regarding-iot-adoption">What are some non-technical challenges regarding IoT adoption?&lt;/h5>
&lt;p>Depending on what you consider technical, usability is the first thing that comes to mind. However, usability can be a very technical field, even if it doesn&amp;rsquo;t involve programming. So let me present it from the other side of the coin. Consider cultural issues on how people use devices. There are many intersectional considerations: class, race, gender, religion, etc. The IoT aims to be pervasive. That means that the utility and necessity of these devices, along with their benefits, have to have value to people with dramatically different cultural backgrounds.&lt;/p>
&lt;h5 id="what-contributions-can-non-technical-people-make-to-iot-adoption">What contributions can non-technical people make to IoT adoption?&lt;/h5>
&lt;p>Maybe this is a subset of usability, ultimately, but studying people. Explore how people interact with devices that &lt;em>don&amp;rsquo;t&lt;/em> currently connect to the internet. What are their usage patterns and behaviors? Furthermore, developer evangelism is critically important. Developers need to know how subject matter experts work. What are their frustrations? What would they love to have be online if they could make it themselves? The ability to be interdisciplinary is key.&lt;/p>
&lt;h5 id="who-regulates-iot-devices">Who regulates IoT devices?&lt;/h5>
&lt;p>&lt;em>(My comments here are US-centric)&lt;/em>&lt;/p>
&lt;p>As I mentioned before, most IoT devices are not regulated. But in some spaces, we do have a set of both mandatory regulations and voluntary standards.&lt;/p>
&lt;p>Medical devices are regulated by the Medical Device Amendment (&lt;a href="http://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfcfr/CFRSearch.cfm?CFRPartFrom=800&amp;amp;CFRPartTo=1299">21 CFR 800&lt;/a>) to the Federal Food, Drugs, and Cosmetics Act. Medical device software has been explicitly regulated since the &lt;a href="https://en.wikipedia.org/wiki/Therac-25">THERAC-25 incidents&lt;/a>.&lt;/p>
&lt;p>Avionics software is &lt;em>de facto&lt;/em> regulated under standard document &lt;a href="https://en.wikipedia.org/wiki/DO-178B">DO-178B&lt;/a>. DO-178B is part of the reason why the question, &amp;ldquo;I have GPS tracking on my iPhone, why couldn&amp;rsquo;t they put one on MH-370?&amp;rdquo; is difficult to answer. This standard is a guidance, but the FAA generally considers adherence to be a mandatory requirement.&lt;/p>
&lt;p>In 2012, the NHTSA began exploring best practices for safety and reliability of computer code on vehicles, but so far has not established any legal authority to regulate the development of such software.&lt;/p>
&lt;p>The National Institute of Standards and Technology (NIST) &lt;a href="http://www.hldataprotection.com/2015/09/articles/consumer-privacy/nist-releases-draft-framework-on-the-internet-of-things/">has begun exploring generalized regulation of the IoT&lt;/a>, but headway is slow.&lt;/p>
&lt;p>The US Consumer Product Safety Commission is practically silent on the issue.&lt;/p>
&lt;h5 id="what-are-your-biggest-concerns-about-iot-adoption">What are your biggest concerns about IoT adoption?&lt;/h5>
&lt;p>My biggest concern is cultural. We are already experiencing a sharp digital divide, and Silicon Valley innovators often appear out-of-touch with the rest of the population in general. I am concerned that the IoT will be integrated predominantly into the lives of the already-privileged, destabilizing an already shaky cultural rift. We can see this already in the demographic differences between Twitter users and Twitter employees, for instance. &lt;a href="https://medium.com/@taliajane/an-open-letter-to-my-ceo-fb73df021e7a">Talia Jane&amp;rsquo;s Medium article&lt;/a> about minimum-wage work at Yelp! also sticks out.&lt;/p>
&lt;h5 id="who-is-putting-support-behind-iot-adoption-for-industrial-applications-for-consumer-applications">Who is putting support behind IoT adoption for industrial applications? For consumer applications?&lt;/h5>
&lt;p>Everybody who is making a product or selling a service is banking on the IoT, or should be. Literally every kind of product that you can imagine has someone trying to put a network-enabled computer chip inside. Of course, the big Fortune 100 companies are largely tackling the large-scale problems. But there is a lot of innovation happening in small businesses and startups, as well.&lt;/p></description></item><item><title>A Remarkable Tiny Proof</title><link>https://emilygorcenski.com/post/a-remarkable-tiny-proof/</link><pubDate>Mon, 29 Feb 2016 21:30:00 +0000</pubDate><guid>https://emilygorcenski.com/post/a-remarkable-tiny-proof/</guid><description>&lt;p>There is a proof that I love, one that is very succinct and easy to understand to someone with only middle-school knowledge of mathematics. But it's remarkable in that inside of it lies a deep-seated idea, one that I find very difficult to wrap my head around sometimes. Let's have some fun and walk through it. I'm going to write this post in a mathematical language, but I want it to be accessible to a general audience, so I'm going to explain some terms as I go. (I generally won't do this).&lt;/p>
&lt;p>Before we begin, we're going to need a small but general prior result. In mathematics, we call this a &lt;em>lemma&lt;/em>, even though some things called lemmas turn out to be quite important indeed.&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;h4 id="lemma">Lemma&lt;/h4>
&lt;p>&lt;span class="math">\(\sqrt{2}\)&lt;/span> is irrational.&lt;/p>
&lt;h4 id="proof">Proof&lt;/h4>
&lt;p>A rational number takes the form &lt;span class="math">\(\frac{p}{q}\)&lt;/span>, where &lt;span class="math">\(p\)&lt;/span> and &lt;span class="math">\(q\)&lt;/span> are integers (e.g. whole numbers such as &lt;span class="math">\(-2,-1,0,1,2...\)&lt;/span>) which have no common factors. In other words, there is no other number that can be divided into both &lt;span class="math">\(p\)&lt;/span> and &lt;span class="math">\(q\)&lt;/span> and have integers come out both times. Any number that is not rational is called irrational. Now, suppose for a minute that &lt;span class="math">\(\sqrt{2}\)&lt;/span> &lt;em>were&lt;/em> rational. Then, there are some integers &lt;span class="math">\(p\)&lt;/span> and &lt;span class="math">\(q\)&lt;/span> such that &lt;span class="math">\(\sqrt{2} = \frac{p}{q}\)&lt;/span>. Now, let's do some math for a bit.&lt;/p>
&lt;p>&lt;span class="math">\[
\begin{align}
\sqrt{2} &amp;= \frac{p}{q}, \\\\
2 &amp;= \left(\frac{p}{q}\right)^2, \\\\
2 &amp;= \frac{p^2}{q^2}, \\\\
2q^2 &amp;= p^2.
\end{align}
\]&lt;/span>&lt;/p>
&lt;p>Now, suppose that &lt;span class="math">\(p\)&lt;/span> was an odd number. Then we can write &lt;span class="math">\(p\)&lt;/span> in the following form: &lt;span class="math">\(p = 2k+1\)&lt;/span> for some &lt;em>other&lt;/em> integer &lt;span class="math">\(k\)&lt;/span>. For instance, &lt;span class="math">\(5 = 2\times 2 + 1\)&lt;/span>. If &lt;span class="math">\(p\)&lt;/span> is odd, then&lt;/p>
&lt;p>&lt;span class="math">\[
\begin{align}
p^2 &amp;= (2k+1)^2 \\\\
&amp;= (2k+1)(2k+1) \\\\
&amp;= 4k^2+4k+1.
\end{align}
\]&lt;/span>&lt;/p>
&lt;p>Since &lt;span class="math">\(4k^2+4k\)&lt;/span> is divisible by 2, it must be even; therefore, &lt;span class="math">\(4k^2+4k+1\)&lt;/span> is necessarily odd. This is a problem, because regardless of whether $q$ is odd or even, &lt;span class="math">\(2q^2\)&lt;/span> &lt;em>must&lt;/em> be even. Therefore, this means that &lt;span class="math">\(p\)&lt;/span> &lt;em>must&lt;/em> be even. So lets say instead that &lt;span class="math">\(p=2m\)&lt;/span>.&lt;/p>
&lt;p>Now, we have &lt;span class="math">\(2q^2 = (2m)^2\)&lt;/span> which is equivalent to &lt;span class="math">\(2q^2 = 4m^2\)&lt;/span>, which is equivalent to &lt;span class="math">\(q^2 = 2m^2\)&lt;/span>. But now let's apply our logic again: &lt;span class="math">\(2m^2\)&lt;/span> must be even, so by what we just did in the previous paragraph, &lt;span class="math">\(q\)&lt;/span> must be even. Therefore, &lt;span class="math">\(p\)&lt;/span> and &lt;span class="math">\(q\)&lt;/span> are both even, which means they have a common factor! This goes against our earlier assertion that a rational number has the form &lt;span class="math">\(\frac{p}{q}\)&lt;/span> where &lt;span class="math">\(p\)&lt;/span> and &lt;span class="math">\(q\)&lt;/span> have &lt;em>no common factors&lt;/em>. This absurdity establishes what's known as a &lt;em>proof by contrapositive&lt;/em>: we assert the opposite of the conclusion we want to be true, and show that it must mean that our hypothesis is nonsense. Therefore, &lt;span class="math">\(\sqrt{2}\)&lt;/span> &lt;em>must be irrational&lt;/em>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Ok, now that we've spent some time on that proof, we can use the irrationality of &lt;span class="math">\(\sqrt{2}\)&lt;/span> as an unquestionable argument from here on out. So let's get to the meat of this remarkable little result. I will state a theorem. In mathematics, a theorem is a statement that can be proven true. Sometimes a theorem gives us important results. Other times, it establishes minor stepping stones along the way. In this case, because this is the focus of this blog post, I will call this teeny-tiny result a theorem.&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;h4 id="theorem">Theorem&lt;/h4>
&lt;p>There exists an irrational number that when raised to an irrational power, results in a rational number.&lt;/p>
&lt;h4 id="proof-1">Proof&lt;/h4>
&lt;p>Consider &lt;span class="math">\(\sqrt{2}\)&lt;/span>, which is irrational. Then, &lt;span class="math">\(\sqrt{2}^{\sqrt{2}}\)&lt;/span> is either rational or irrational. If it is rational, then we are done. If it is irrational, then consider &lt;span class="math">\(\left(\sqrt{2}^{\sqrt{2}}\right)^{\sqrt{2}} = \sqrt{2}^{\sqrt{2} \cdot \sqrt{2}} = \sqrt{2}^2 = 2\)&lt;/span>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>That's it. Easy as can be. Theorems such as these are called &lt;em>existence theorems&lt;/em>. They tell us facts about mathematics, but it is likely that we cannot use them to construct practical examples of what we want to see. Mathematicians deal with these all the time. In this case, this existence theorem tells us something remarkable: we can take two irrational numbers and construct a rational from them using exponentiation. This can be a surprising result, because there are &lt;em>many, many&lt;/em> more irrational numbers than rational ones.&lt;/p>
&lt;p>But something should be really uncomfortable here: We've never established whether &lt;span class="math">\(\sqrt{2}^{\sqrt{2}}\)&lt;/span> is rational or irrational.&lt;/p>
&lt;p>We've used what logicians call the &lt;em>Law of the Excluded Middle&lt;/em>. In this case, the number &lt;span class="math">\(\sqrt{2}^{\sqrt{2}}\)&lt;/span> must be either irrational or not; there is no middle case. We don't immediately know what qualities &lt;span class="math">\(\sqrt{2}^{\sqrt{2}}\)&lt;/span> has. But it turns out &lt;em>we don't care.&lt;/em> Regardless of which case is true, the pathway leads us to our desired result!&lt;/p>
&lt;p>To me, this is very deep. It means that we can use truths we don't possess to prove things that are unquestionably true. It would be like mending a fence using either a screwdriver or a hammer without your ability to know which tool you're using. In either case the fence is mended, but you have no idea what truth kept your horses in the pasture.&lt;/p>
&lt;p>This is not to say that we don't understand each of the possible truths individually--we know quite well what it means if &lt;span class="math">\(\sqrt{2}^{\sqrt{2}}\)&lt;/span> is rational or not. This knowledge allows us to see that both paths lead to the result.&lt;/p>
&lt;p>To me, getting to a destination whilst having absolutely no idea which path is taken is a bit unnerving. But it is also liberating to know that such strict control is unnecessary to discover beautiful things in the world.&lt;/p></description></item><item><title>On the Republican Bathroom Dread</title><link>https://emilygorcenski.com/post/on-the-republican-bathroom-dread/</link><pubDate>Sat, 27 Feb 2016 14:30:00 +0000</pubDate><guid>https://emilygorcenski.com/post/on-the-republican-bathroom-dread/</guid><description>&lt;p>By now, you have probably heard that the &lt;a href="http://www.advocate.com/transgender/2016/2/25/republican-national-committee-endorses-anti-trans-bathroom-bills">Republican National Committee has made restricting trans students' bathroom use&lt;/a> a national party platform. This comes on the heels of &lt;a href="http://www.bustle.com/articles/143574-the-number-of-anti-lgbt-bills-in-america-reached-a-record-high-last-year-just-in-case">44 state-level anti-trans bills&lt;/a> being introduced and proceeding through various layers of legislative processes.&lt;/p>
&lt;p>The RNC&amp;rsquo;s resolution is as confusing as it is terrifying. What&amp;rsquo;s not immediately clear in any of this process is the problem that these resolutions and bills purport to solve, particularly because it&amp;rsquo;s aimed at students. Like most actions that come from a place of fear, the drum-beating is about &amp;ldquo;protecting the children.&amp;rdquo; But what threat do transgender children actually pose? Multiple states and even more municipalities have protections in place for trans students. No incidents have been reported. Which should be obvious, because what exactly is a trans kid going to do?&lt;/p>
&lt;p>These bills, of course, are a proxy for other Republican battles. The fight to attempt to erode Titles VII and IX continues on under some perverse notion of &amp;ldquo;small government.&amp;rdquo; What&amp;rsquo;s unclear is how replacing one government regulation with another oppositional one somehow shrinks government involvement. But this is not new. Transgender people are being used as the latest token in a long battle of trying to restore power to the ol' boys club. The Republican party sees us as a perfect target: we&amp;rsquo;re distinctly &lt;em>other&lt;/em>; we have a complicated connection with sex work and sexuality; we largely exist in the shadows; our needs can be very concretely targeted as a direct and measurable cost burden to society. This echoes the same tired approach the Republican party has been using with various shades of success in the battles against affirmative action, same-sex marriage, DADT, and more: focus on what seems most &amp;ldquo;other&amp;rdquo; and apply it to the point of greatest vulnerability. &amp;ldquo;College is expensive! Black student scholarships will make you poor!&amp;rdquo; &amp;ldquo;If gays get married, then the sanctity of your marriage is violated!&amp;rdquo; &amp;ldquo;What if a gay man has to &lt;em>defend against terrorism?&lt;/em>&amp;rdquo; &amp;ldquo;What if you were in a bathroom with a woman who had a penis?&amp;rdquo;&lt;/p>
&lt;p>These fears, while visceral, are rarely borne out in reality: gays have been serving and fighting in wars since there have been wars; the cost of college attendance has nothing to do with the number of black students attending; gay marriage hasn&amp;rsquo;t actually brought hellfire into our world. But bathrooms, oh boy. Bathrooms are a vulnerable place. Maybe it&amp;rsquo;s some evolutionary aspect of our psychologies, like how a dog surveys its surroundings while it&amp;rsquo;s doing its business. Or maybe we&amp;rsquo;re just so sexually-repressed as a culture that we can&amp;rsquo;t distinguish between exposing our genitals to open air for the sake of waste removal and exposing our genitals to open air for the sake of fun sexy times.&lt;/p>
&lt;p>What may be shocking for the RNC to learn is that because trans people are actually just regular people, we feel equally or more vulnerable in bathrooms. The conservative characterization of what happens in the bathroom usually involves some combination of:&lt;/p>
&lt;ol>
&lt;li>you might get peeped on;&lt;/li>
&lt;li>you might get assaulted;&lt;/li>
&lt;li>sex happens.&lt;/li>
&lt;/ol>
&lt;p>Let&amp;rsquo;s break this down critically. First, the issue of peeping. I&amp;rsquo;m not sure anyone has ever used a restroom to spy on someone getting rid of yesterday&amp;rsquo;s Chipotle. And even if they did, we have the internet for that. No one is going to put themselves through second puberty, refresh their entire wardrobe, go through a lenghty and frustrating ID change process (yo, I have &lt;em>fifty-seven&lt;/em> organizations and counting that I have to do name changes with), face public humiliation and risk having their family disown them just so they can catch a glimpse of a random person&amp;rsquo;s genitals through the crack between the stall door and the divider. &lt;em>This doesn&amp;rsquo;t happen.&lt;/em> In fact, bathrooms are &lt;em>so terrifying&lt;/em> to me that I generally just stare at my shoes while I&amp;rsquo;m waiting for a stall, terrified that someone might see my face and clock me for the wrong gender.&lt;/p>
&lt;p>Bathrooms are horrifying. I have deliberately chosen what restaurant to eat at based on whether I know if they have single-occupant bathrooms or not. Given the choice, I will always choose the establishment that offers me the choice of being by myself over being in a crowd with other women. This is because, I, trans woman, &lt;em>actually prefer to not be around &lt;strong>anybody&lt;/strong> while doing my business!&lt;/em> Incredible, I know.&lt;/p>
&lt;p>Second, the issue of assault. It&amp;rsquo;s true: a trans person might commit an assault, because trans people are just people, and sometimes people are horrible. But there have been no incidents of trans people in the US committing assaults in public bathrooms. There are, however, &lt;a href="http://www.cnsnews.com/blog/eric-scheiner/man-womens-room-cites-transgender-rule">instances of cisgender people exposing themselves&lt;/a>. So tell me, who here is the problem?&lt;/p>
&lt;p>Besides, this argument elides two considerations: assault is already illegal and the little stick figure on the bathroom door isn&amp;rsquo;t actually a deterrent in any way at all, and that assault of trans people is also a thing that happens with shocking regularity. I, a very femme trans woman, am &lt;em>substantially&lt;/em> more likely to be spontaneously assaulted by a man in a men&amp;rsquo;s room than any cisgender person is to be assaulted by a trans person of the same gender. Forcing trans people to use the restrooms of their assumed birth sex will &lt;em>increase&lt;/em> assaults, not decrease them.&lt;/p>
&lt;p>Finally, let&amp;rsquo;s look at this issue of trans people using the bathrooms for sex. This probably stems from this idea that trans people are sex workers, which is simply untrue. Some are. Some are by choice, and some are by circumstance. What is certain is that by continuing the social pressure that suppresses a trans person&amp;rsquo;s ability to operate openly in society, we are more likely to shove more trans people into the shadows where sex work is the only option for survival. But regardless, bathroom sex is a thing cis people tend to engage in regularly. For chrissakes, &lt;a href="http://deadspin.com/tag/stadium-sex">Deadspin has a &lt;code>stadium-sex&lt;/code> tag&lt;/a>. Or maybe this fear of bathroom conduct comes because of a history of bathroom misconduct within the Republican party itself, e.g. &lt;a href="https://en.wikipedia.org/wiki/Bob_Allen_(Florida_politician)">Bob Allen&lt;/a>, &lt;a href="https://en.wikipedia.org/wiki/Larry_Craig_scandal">Larry Craig&lt;/a>, &lt;a href="http://nypost.com/2013/10/15/us-rep-grimm-gal-pal-disappear-into-bar-bathroom-for-17-minutes/">Michael Grimm&lt;/a>, etc. If these are the party concerns, perhaps it&amp;rsquo;s time to look in the mirror, instead of out the window.&lt;/p>
&lt;p>Don&amp;rsquo;t get me wrong, this is all categorically absurd, but it is also terrifying now that trans exclusions have become an official party platform. The Republican party is attempting to legislate transgender people out of existence, and it&amp;rsquo;s starting by denying the most basic of human needs to the most vulnerable people in our community. This is not a conservative value system speaking. This is cultural warfare. And the Republican party is deliberately trying to foment fear in order to achieve its political objectives. This is a last-ditch effort of a dying movement trying to retain relevancy. What&amp;rsquo;s most terrifying is that they can still win. And the first sacrifice will be the transgender kids around the country, many of whom are already suffering. Come November, know this: the Republican party has lashed its success to the survival or death of transgender youth.&lt;/p></description></item><item><title>Social and Design Factors in Video Games for Therapy and Rehabilitation</title><link>https://emilygorcenski.com/post/social-and-design-factors-in-video-games-for-therapy-and-rehabilitation/</link><pubDate>Thu, 25 Feb 2016 22:30:00 +0000</pubDate><guid>https://emilygorcenski.com/post/social-and-design-factors-in-video-games-for-therapy-and-rehabilitation/</guid><image><url>https://emilygorcenski.com/photo-gallery/talks/puppy1.png"</url></image><enclosure url="https://emilygorcenski.com/photo-gallery/talks/puppy1.png" length="" type="image/jpeg"/><media:content url="https://emilygorcenski.com/photo-gallery/talks/puppy1.png" width="850" medium="image" type="image/jpeg"><media:thumbnail url="https://emilygorcenski.com/photo-gallery/talks/puppy1.png" width="600"/></media:content><description>&lt;p>&lt;em>This post accompanies my talk given at &lt;a href="http://www.alterconf.com/sessions/washington-dc">AlterConf DC&lt;/a> on 30 January 2016. A video of the talk with visible slides can be seen &lt;a href="http://confreaks.tv/videos/alterconfwashington2016-social-and-design-factors-in-video-games-for-therapy-and-rehabilitation">here&lt;/a>.&lt;/em>&lt;/p>
&lt;h1 id="social-and-design-factors-in-video-games-for-therapy-and-rehabilitation">Social and Design Factors in Video Games for Therapy and Rehabilitation&lt;/h1>
&lt;h2 id="alterconf-dc-2016">AlterConf DC 2016&lt;/h2>
&lt;p>Over the past few years, there has been a growing trend of trying to leverage video games as medical interventions in rehabilitation spaces. This trend has taken many names&amp;ndash;gamification, serious games, etc.&amp;ndash;but these names also apply to applications and concepts beyond the medical field. We&amp;rsquo;ll simply use the term &lt;em>Video Game Therapy&lt;/em> to mean video games used and/or designed explicitly for self-improvement in the light of some medically-recognized condition. The applications are still broad. Therapy games can be used for addiction recovery, physical and occupational therapy, mental health management, and much much more. In this post I want to talk a bit about my work in this space. The post will be largely introductory, but I want to talk about some specific social factors that can dramatically affect the success of a therapy game that aren&amp;rsquo;t immediately apparent.&lt;/p>
&lt;h2 id="identity-in-gaming">Identity in Gaming&lt;/h2>
&lt;p>Using video games for healing is a very personal topic for me. During my senior year of college oh those many years ago, I was diagnosed with a pretty serious endocrine disorder. This disorder adversely affected both my physical and mental health: my resting heart rate was 140 bpm; my personality was awful; I couldn&amp;rsquo;t sleep, couldn&amp;rsquo;t focus. Eventually, with one semester until graduation, I was forced to take a medical leave of absence.&lt;/p>
&lt;p>The impact of leaving school was dramatic for me. All of my social structure was built around my university. All my friends were there. All my dreams hinged upon going to grad school. I had a strong identity as a student and as an academic. The summer before my diagnosis, I had a prestigious research fellowship studying fusion energy at Princeton. And I was beginning to understand my sexuality, if not my gender. That year, I had started coming out to close friends as bisexual. When I got sick, all of that changed.&lt;/p>
&lt;p>Recovery was not easy, both mentally and physically. I resisted medical treatment&amp;ndash;I just wanted to go back to school. I wanted everything to be normal again. Everything that I had that I was good at was gone. Eventually, I stabilized medically enough to take several jobs, first at a driving range, then as a substitute teacher, then as a part-time clerk at a bookstore. This was a pretty far cry from doing nuclear physics at Princeton. I was lost, lonely, broke, and despondent. Worse still, I had no identity.&lt;/p>
&lt;p>Eventually, I found a video game. I took to it like a fish to water. It gave me something to do. Each level was a goal. The virtual world was an escape from the real one. I had friends who played, and we suddenly had something to talk about while we tossed boxes of books around. Eventually, my health started turning around. And the more I played, the healthier I felt. And the healthier I felt, the better I became at the game. This video game gave me an identity again. And eventually, I got healthy enough, and had saved enough money, to return to finish my degree. And I got better at the game. And then I graduated, and I got better at the game. And then I got a job, and I got better at the game. And eventually, I became one of the top players in the world. I met a partner through the game. Things were pretty good.&lt;/p>
&lt;p>But something else happened along the way. Eventually, I stopped needing the game, because most of the things I had lost had come back. I was a student again, and then an engineer; I was a partner to a lovely person. But in this tireless peak to be as good at the game as possible, I found that I had to make a choice: be good, or be myself.&lt;/p>
&lt;p>Being good meant being healthy. But once I was healthy, what was &amp;ldquo;being good&amp;rdquo; even worth? The game was suppressing a huge part of who I was: I was bisexual and I was transgender, and I couldn&amp;rsquo;t share either of those things within the in-game community. It was simply too hostile. The game culture didn&amp;rsquo;t support people like me. I needed to be out. I needed to be myself. But I couldn&amp;rsquo;t do that if I kept playing. So I quit. And ten years after I first started to come out, I came out as bisexual again. And a couple years later, I would finally come out as trans.&lt;/p>
&lt;p>Video games have this immense power to shape our self-image of who we are. Identity and gaming is inseparable. But so is identity and trauma. So my core question is: how can we use the power of video games to resore the identities of those who have suffered trauma?&lt;/p>
&lt;h2 id="why-video-games-for-therapy">Why Video Games for Therapy&lt;/h2>
&lt;p>The logic behind early efforts in making therapy games goes something like this: &amp;ldquo;games are fun, therapy is boring. If therapy is a game, then therapy is fun.&amp;rdquo; Ask any therapist: adherence is the biggest obstacle to success. So games seem like an attractive solution. People get lost in games, farming achievements, doing daily quests, trying for a new high score. Games offer the kind of motivational appeal that therapists can only dream of. But, after many years of trying, therapy games haven&amp;rsquo;t exactly been setting the world aflame. Why is this?&lt;/p>
&lt;p>Let&amp;rsquo;s explore the core assumption here.&lt;/p>
&lt;blockquote>
&lt;p>Video games are fun.&lt;/p>
&lt;/blockquote>
&lt;p>Are they? I posit not.&lt;/p>
&lt;p>Video games are infuriating. They&amp;rsquo;re annoying and frustrating. They&amp;rsquo;re compelling and emotional. They make us laugh, they make us cry. They make us throw our headsets across the room. They keep us up at night. They connect us to people around the world. They do all these things that aren&amp;rsquo;t just &lt;em>fun&lt;/em>. Fun is what happens when the other things go on. Fun is what happens when our experiences transcend our quotidian reality. Games aren&amp;rsquo;t fun. Games are powerful.&lt;/p>
&lt;h2 id="self-determination-theory">Self-Determination Theory&lt;/h2>
&lt;p>As it turns out, there is a psychological model that posits that motivation comes from the satisfaction of three basic psychological needs: Competence, Autonomy, and Relatedness. This is the core premise of &lt;em>&lt;a href="http://www.amazon.com/Glued-Games-Video-Spellbound-Directions/dp/0313362246">Glued to Games&lt;/a>&lt;/em>. (Disclosure: Scott Rigby, the author, was a paid consultant on a project for which I was Principal Investigator). As it turns out, some of the most popular commercial games can be shown to satisfy these psychological needs.&lt;/p>
&lt;p>When I learned about this theory, a lightbulb went off in my head. I instantly understood exactly why I sunk so much time into a video game while I was healing. I needed competence: before I got sick, I had school. Afterwards, nothing. I needed autonomy: before I got sick, I had goals and a dream. Afterwards, I lived with my parents again. I needed relatedness: before I got sick, I had friends and companions. Afterwards, I had nobody. The game gave me all of that.&lt;/p>
&lt;p>Relatedness is a very powerful idea. Using relatedness, we can tell a user that they belong. We can console them. We can empathize with their trauma. We can journey with them through their recovery. If we can design for relatedness, we might be able to make therapy games successful.&lt;/p>
&lt;h2 id="therapy-gaming">Therapy Gaming&lt;/h2>
&lt;p>So what does one do in a therapy game? In occupational therapy, the goal is often to restore the patient to enough functionality that they can perform Activities of Daily Living (ADLs) such as grooming, eating, and going to the bathroom. This doesn&amp;rsquo;t virtualize well &amp;ndash; it&amp;rsquo;s too uncanny. Alternatively, the next level of self-care is considered the Instrumental Activity of Daily Living: shopping, preparing food, doing housework, tracking finances. These are easier to virtualize. But they&amp;rsquo;re not really fun. You can only turn &amp;ldquo;doing laundry&amp;rdquo; into a game for so long before it gets boring again.&lt;/p>
&lt;p>In one of our prototypes, we designed an activity for putting away groceries and an activity for preparing breakfast. Clinically, these activities were interesting. But to many of the users, they weren&amp;rsquo;t very good at all. They were, at first, perhaps novel, but novelty only covers sins for so long.&lt;/p>
&lt;h2 id="identity-and-relatedness">Identity and Relatedness&lt;/h2>
&lt;p>As it turns out, the game we developed was designed for stroke victims, many of whom tend to be elderly. And some of the elderly men found these tasks to be somewhat insulting. To them, shopping, dealing with groceries, and cooking were all highly-gendered tasks that belonged to women. And so what happened was we failed our relatedness test: rather than communicating to the user that the virtual world was one in which they belonged, we instead piled onto their trauma. Their identity had already been compromised by their stroke. And now here we were telling them to do &amp;ldquo;women&amp;rsquo;s work.&amp;rdquo; And although that opinion is far from progressive, the objective of treatment is to provide care. Instead, we were risking harm.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/talks/avatar7.png" alt="An in-game user-playable avatar of an overweight woman of color, © Barron Associates">&lt;/p>
&lt;p>&lt;small>Copyright Barron Associates, Inc&lt;/small>&lt;/p>
&lt;p>So in the subsequent version of the software, we explored other ways to communicate relatedness in a game. We came up with several ways to do this:&lt;/p>
&lt;ul>
&lt;li>Provide avatars and character models that match the person&amp;rsquo;s self-image;&lt;/li>
&lt;li>Provide tasks that empower the user;&lt;/li>
&lt;li>Provide choice in what the user can do.&lt;/li>
&lt;/ul>
&lt;p>We made sure to include avatars of several skin tones, several body sizes, and several genders. We don&amp;rsquo;t expect all of these users to select these avatars. We don&amp;rsquo;t even expect the user to select the avatar that best matches their real-life persona. But by showing them multiple options, we relate to the user and send a message that they belong.&lt;/p>
&lt;p>We made sure to design tasks that empowered the user. One of the biggest factors cited by patients in choosing to undergo therapy is that they don&amp;rsquo;t want to have their pets taken away. We added a puppy to the game for the user to care for. And in fact, we added six puppies to choose from, and the user was able to adopt their favorite. Not only does this give the user an NPC with which to bond, it also empowers their sense of competence by requiring them to care for the animal. This tells the user that we believe in their capabilities.&lt;/p>
&lt;p>&lt;img src="https://emilygorcenski.com/photo-gallery/talks/puppy1.png" alt="A screen capture of a virtual Husky puppy running through a yard, © Barron Associates">&lt;/p>
&lt;p>&lt;small>Copyright Barron Associates, Inc&lt;/small>&lt;/p>
&lt;p>Further, we allowed the user to skip activities. Even the puppy dog is a controversial choice: a Muslim user, for instance, may have a cultural resistance to caring for a dog. So we let the user skip those activities if they feel uncomfortable.&lt;/p>
&lt;p>Ultimately, this design experience leads to the key points for Relatedness design:&lt;/p>
&lt;ol>
&lt;li>Relate to your user;&lt;/li>
&lt;li>Don&amp;rsquo;t ever make your user relate to you.&lt;/li>
&lt;/ol>
&lt;p>Unfortunately, many game developers find option 2 to be easier. And perhaps this is why Video Game Therapy has not yet had its breakout success.&lt;/p>
&lt;h2 id="final-remarks">Final Remarks&lt;/h2>
&lt;p>Games have a remarkable power to modulate identity, so cultural and social issues are not supplemental to the design of a game; they are &lt;strong>central&lt;/strong> to it. By considering the user&amp;rsquo;s needs, it is possible to make therapy fun. It is possible to give users challenges that they can identify with. It is possible to empower the user through simple gameplay. Games &lt;em>can&lt;/em> be used for healing, but we have to recognize what exactly it is that games do to make people healthy.&lt;/p>
&lt;p>And more importantly, it&amp;rsquo;s also important to remember that therapy games are medical devices, and that when we design them we must keep in mind the core ethic of the medical profession: &lt;strong>do no harm.&lt;/strong> It&amp;rsquo;s doesn&amp;rsquo;t have to be perfect. It&amp;rsquo;s not necessary to design for every user&amp;rsquo;s unique cultural experience. But it is necessary to have these discussions during the design phase, and to take ownership of the features that you put in or leave out. The games are about people. It&amp;rsquo;s important not to forget that.&lt;/p></description></item></channel></rss>