<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.johngerace.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.johngerace.com/" rel="alternate" type="text/html" /><updated>2026-03-05T00:05:57+00:00</updated><id>https://www.johngerace.com/feed.xml</id><title type="html">John Gerace</title><subtitle>Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><entry><title type="html">New project: The Interactive Orrery</title><link href="https://www.johngerace.com/project-orrery/" rel="alternate" type="text/html" title="New project: The Interactive Orrery" /><published>2026-02-22T00:00:00+00:00</published><updated>2026-02-22T00:00:00+00:00</updated><id>https://www.johngerace.com/project-orrery</id><content type="html" xml:base="https://www.johngerace.com/project-orrery/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/project-orrery.png" alt="Screenshot of the interactive orrery" class="align-center" /></p>

<p class="text-center"><a href="https://www.johngerace.com/orrery/">See the orrery!</a></p>

<p>I’ve always wanted to build an orrery. One of those geared-up mechanical ones, especially, but that’s beyond my current ability to do, so I figured I’d build a digital one, which is more in line with my skill set.</p>

<p>Currently included:</p>

<ul>
  <li>The eight major planets</li>
  <li>Dwarf planets</li>
  <li>The asteroid belt</li>
  <li>The Kuiper belt</li>
  <li>The Jupiter trojan asteroids.</li>
</ul>

<p>You can toggle between a logarithmic view, which will display things a little more densely, and a linear view, which is better for showing the really eccentric orbits of some of the dwarf planets, but it makes the Kuiper belt objects difficult to see.</p>

<p>I plan to modify this over time to add more objects like some notable comets, the scattered disc, moons, and the Sednoids.</p>

<h3 id="implementation">Implementation</h3>

<p>Claude Sonnet 4.5 assisted with the orbital equations and pointed me at the right data references. It seems to have done pretty well in this regard as far as I can tell, but I’m looking forward to learning more about the math and really grokking it.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="software" /><category term="art" /><category term="projects" /><category term="tech" /><summary type="html"><![CDATA[A mesmerizing look at the cosmos!]]></summary></entry><entry><title type="html">I Don’t Want To Meet My Heroes</title><link href="https://www.johngerace.com/i-dont-want-to-meet-my-heroes/" rel="alternate" type="text/html" title="I Don’t Want To Meet My Heroes" /><published>2026-01-24T00:00:00+00:00</published><updated>2026-01-24T00:00:00+00:00</updated><id>https://www.johngerace.com/i-dont-want-to-meet-my-heroes</id><content type="html" xml:base="https://www.johngerace.com/i-dont-want-to-meet-my-heroes/"><![CDATA[<p>I’ve had the opportunity over the years to meet some famous people I really admired, mostly writers of some sort at readings or conventions or just in the course of grad school. In some ways it’s a really neat experience because they become more humanized, actual people instead of the god-tier art monsters of my imagination. For the most part they’re still brilliant in person and they cast an aura that gives them an outsized presence. But I decided a long time ago that if I had a choice, I’d never meet my heroes because it’s disappointing nearly 100% of the time.</p>

<h3 id="its-me-hi-im-the-problem-its-me">It’s me. Hi. I’m the problem. It’s me.</h3>

<p>I never know what to say when I meet anyone, let alone genius-level artists. I’ve told Cesar Aira how much I admired reading and translating his work, but his English isn’t great and my spoken Spanish is awful. I don’t know that he really understood what I was talking about so I felt kind of stupid not being able to communicate in the moment. He was kind enough to sign a couple of books for me and nod and all that.</p>

<p>The same thing has happened with Grant Morrison. I don’t know if he still does this, but he used to spend a ton of time with fans during signings at NY Comic Con, where I met him, so if you had something to say he was more than happy to chat. He was super generous about his time which was notable for how famous he was already. He’s a comic book savant and you could have a really deep conversation with him if you were immersed in that world, but I don’t really speak Comic Book. I don’t read superhero comics often. I just like reading some of his work like Doom Patrol, We3, Invisibles, with some JLA and New X-Men in the mix. He’s got an impressive body of work and I enjoy it as long as I don’t need tons of historical context. But when I met him I didn’t have much to say other than that I enjoyed his work. He signed a few JLA books, I said thank you, and went on my way.</p>

<h3 id="except-when-im-not-the-problem">Except when I’m not the problem</h3>

<p>Also at that same NY Comic Con, I met a really well-known sci-fi author whose books I’d been reading since I was in middle school. He’s written well over 100 books, been on bestseller lists dozens of times, and had made quite a career for himself by then. He had his own large booth with his books laid in stacks around four sides worth of tables with a 10-foot-tall publisher banner in the middle. He was there with his wife and his assistant.</p>

<p>No other fans were at the table, which I found strange since he’s written books for some large franchises that have garnered him multi-million dollar book deals, so he and his wife were just hanging out, chatting behind his life’s work. His assistant ran interference when I approached the table and started telling me about his career and his recent work, and that was all well and good, but I actually did have something I wanted to say to the writer.</p>

<p>I wanted to thank him for being one of my sources of inspiration over the years that ultimately lead me to want to write. All the joy his books had given me was the sort of thing I wanted my writing to be for other people. The assistant said he’d autograph any book I bought, so I picked out a novel, a relatively inexpensive mass market paperback, a standalone story I hadn’t yet read. This got the attention of the writer. He and his wife stood to chat with me. He started pointing out which of his books he liked best and asked me what I liked to read. I gave him a couple examples and he grabbed a special edition hardcover of a novel he’d co-written with another famous person I was familiar with. I’m not an idiot and I saw this for the upsell it was, but the book did seem interesting and there were some cool illustrations, so I said to myself, “how often do you get to meet a writer with this kind of status and thank him for his work and come away with a nice autographed copy of a book you might really enjoy?” I sprang for the hard cover.</p>

<p>When the assistant rang me up he asked if I wanted it autographed. Sure, yeah, why not. The assistant said, “That’ll be $3 extra.”</p>

<p>‘Scuse me? I’m paying $30 for a book, Grant Fucking Morrison is doing autographs for free with a line around the center of the room and this guy’s nickel-and-diming me for an autograph that his assistant made me think would be included with the purchase? Like I said, I’m not an idiot, but I am a sucker, and at this point I thought to myself, “this is going to be the worst kind of story I get to tell for the rest of my life,” so I paid the $3.</p>

<p>I still wanted to thank him for his work, so I did, and I felt a genuine sense gratitude in that moment despite the weird commercial interaction, but he didn’t really acknowledge me and just kind of waved me away and went back to chatting with his wife.</p>

<p>That was that. Awkward and disappointing.</p>

<p>He was enough of an ass that I don’t read his work anymore and that $33 autographed hard cover is sitting unread on my shelf to this day. It now serves as a potent reminder not be like that guy.</p>

<h3 id="expectation-vs-reality">Expectation vs Reality</h3>

<p>Artists are just people, right? They’re not going to be perfect. And I certainly wouldn’t expect them to be.</p>

<p>Which raises the question: what did I want from these encounters anyway?</p>

<p>Really, I just wanted a cordial interaction. Meeting these three particular authors seemed like a good idea at the time, and I like thanking artists. Art is a thankless job and it’s nice to know one’s work is appreciated. Ask me how I know…</p>

<p>Beyond that, nothing. I neither need nor want souvenirs. I really don’t care about autographs, special editions, collectibles, or anything like that. I would ideally want to come away with an additive experience, something that either enhances or improves my relationship with the artist’s work, but artists are under no obligation to provide that for anyone at any point.</p>

<p>Given that, I’ve resolved to content myself with attending readings and other literary events and listening quietly. I’ll enjoy a few drinks with friends and leave it there.</p>

<p>I do also want to note that not all of my interactions with artists go poorly! I’ve met plenty of other writers I admire - I went to an MFA program with a pretty stacked faculty - and my relationships with them were absolutely fine. Sometimes even great. But sometimes also disappointing. The difference there is the context. They get paid to help me improve my writing. They’re not trying to sell their book. They assigned work and I completed it with the discussion to follow. Slightly different situation.</p>

<h3 id="ill-stick-with-my-illusions-thanks">I’ll stick with my illusions, thanks</h3>

<p>I draw way more inspiration from the images of writers I’ve conjured in my head based on the work that I’ve connected with. I don’t want anything to mar my experience of their art, whether it’s because of my idiocy or their assholery. The visions I have of them are motivating ideals and meeting them in person never lives up to those ideals. I appreciate that some people derive benefit from connecting with their role models in person and maybe from even cultivating an ongoing relationship, but I seem not to be one of them and I’m OK with that.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="writing" /><category term="art" /><category term="life" /><summary type="html"><![CDATA[They're people? Just like me??? Ugh...]]></summary></entry><entry><title type="html">My Thoughts on the Framework Laptop</title><link href="https://www.johngerace.com/framework-laptop-review/" rel="alternate" type="text/html" title="My Thoughts on the Framework Laptop" /><published>2026-01-12T00:00:00+00:00</published><updated>2026-01-12T00:00:00+00:00</updated><id>https://www.johngerace.com/framework-laptop-review</id><content type="html" xml:base="https://www.johngerace.com/framework-laptop-review/"><![CDATA[<p>I’ve had my <a href="http://www.frame.work">Framework</a> laptop since November 2025, and I’ve been using it daily, but a lot of the reviews I encountered before buying it didn’t really seem to address the stuff that gets a little annoying, most of which wouldn’t have been a deal breaker, but there are a few things that really make me shake my fist angrily.</p>

<h3 id="my-setup">My setup</h3>

<p>I use Ubuntu Linux exclusively on my laptops. At this point in its evolution it just works on pretty much any computer I’ve installed it on and the Framework is no exception. They’ve got solid support for it and it shouldn’t be an issue for anyone to set it up as long as they’re OK with installing it themselves instead of getting a laptop with an operating system already installed.</p>

<h3 id="requirements-and-budget">Requirements and Budget</h3>

<p>My use cases are fairly limited to writing, browsing the internet, occasional coding (nothing graphic intensive), and running local LLMs. In an emergency, I also need to be able to do my coding for work on it. I’m definitely not doing anything that would require a dedicated graphics card, like gaming or video editing. Local LLMs run well enough as long as they aren’t too big and as long as you configure your machine with enough RAM, so you don’t need a graphics card even if you want to do something computationally expensive like that.</p>

<p>Given that, I thought 32gm of RAM would be more than enough, but I really wanted to have the option to upgrade in the future.</p>

<p>I wanted about 1TB of storage because of the LLMs and because I sometimes download the photos and videos from my camera while I’m on vacation. Storage was still cheap, so that didn’t break the bank.</p>

<p>My last laptop had a battery that swelled up, which was the impetus for the new computer, but it was an old Macbook Pro from 2016 and I would’ve had to get the Apple store to replace it at a likely cost of several hundred dollars, which I didn’t want to spend on a computer that was already 9 years old. I really wanted to be able to replace the battery myself in the next laptop so I could keep it for longer.</p>

<p>Budget: $1000.</p>

<h3 id="the-competition">The competition</h3>

<p>Lenovo had some good sales for computers around $1000, but they usually had 16gb of RAM, occasionally 32gb, but they almost always had 256gb/512gb of storage. And never in a configuration in which it was 32gb RAM + 512gb storage, and definitely NEVER in a configuration where the RAM wasn’t soldered down (meaning I couldn’t upgrade it).</p>

<p>Lenovo’s configurations were cheaper than Dell’s and HP’s, but even Lenovo’s refurb site didn’t have anything that fit both my specs and my budget.</p>

<p>Framework’s 13” laptop was a decent price, but a little above my range at ~$1100, even for the DIY version (once expansion cards, storage, RAM, and charger are factored in). However, I didn’t want to spend $1000 on a laptop that didn’t have the specs I wanted because I would’ve been really salty about it.</p>

<p>After a little browsing, I determined that getting a DIY Framework laptop would be slightly cheaper than getting a Lenovo with my desired configuration, plus I waited until I could get the RAM and storage on sale, so I went with that. Unfortunately, the cheaper AMD Ryzen 7040 series processors were out of stock, so I got an AI 300 series processor, which bugged me, but oh well.</p>

<p>A note about Windows vs Linux: Contrary to popular belief, you don’t have to pay for Windows. You can download it and use it for free (legitimately!), but you won’t be able to customize things like screensavers and desktop backgrounds and stuff unless you buy a key (~$25 on Kinguin). Plus it puts a watermark on the lower right hand side of your desktop. If you want to save money and you still want Windows, just go for that. It makes the Windows vs Linux decision much less of a cost issue.</p>

<h3 id="the-good-and-the-mediocre">The Good and The Mediocre</h3>

<p>Assembly was a breeze. The instructions were easy to understand and my 4-year-old helped me set it up. The only thing you need is a screwdriver and it’s included!</p>

<p>The chassis isn’t as sturdy as a Macbook’s, but it’s fine. It feels a little plastic-y and less rigid than a Macbook Pro. I don’t travel with it often, so it mostly lives on my desk and I carry it around the house. Not a rugged laptop, but it’s not super delicate either.</p>

<p>The fan doesn’t spin up often for my use cases except when I run local LLMs, so it’s not usually noisy, but when the fans run they aren’t much louder than my work M1 MBP’s.</p>

<p>The default 2.2k matte display is great. I hate high resolutions screens because I do not have the eyes of a falcon or the eyes of an 18-year-old. 2.2k resolution is as high def as I can go on a screen that small without scaling, and even then I have to squint occasionally. I really don’t see a world in which I would want a 2.8k display, even if it’s 120Hz.</p>

<p>The speakers are tinny, and I’m sure they’re not nearly as good as an up-to-date Macbook Pro’s, but they’re better than the ones on my iPhone 13 mini and much better than the ones on my old laptop. It’s a step forward for me.</p>

<p>The camera is fairly crappy even though the resolution is higher than what I get on my Apple M1 MBP work laptop, but I really don’t mind. It’s good enough and I don’t use it often. I love that I can disconnect the microphone and camera with a flick of a switch. It scratches a privacy-obsessed itch of mine.</p>

<p>The battery life is lower than average, I think, but sufficient for me. Like I said, it lives at home so it’s always near a plug, but I can easily get 6 - 8 hours of normal office productivity work out of it. I’ve never run it fully down, so I don’t know for sure about that number, but I’ve never had a problem. It’s not a computer you’d want to rely on if you really need solid battery life.</p>

<h3 id="the-infuriating">The Infuriating</h3>

<p>My biggest pet peeve is the fact that the USB-A port on the front left side is buggy. It doesn’t detect my devices unless I restart the computer or reseat the expansion port. It’s a <a href="https://community.frame.work/t/tracking-fw13-amd-usb-a-expanson-card-powers-down-and-does-not-wake-up/45296">well-known problem</a> that still doesn’t have a fix, even though it seems to have been around for years. I’m not sure why Framework haven’t fixed it yet. This is the kind of thing that should count as baseline functionality, especially since swapping ports around is one of the Framework laptop’s value propositions. It’s not like USB-A is a rare thing either!</p>

<p>The four expansion ports are <a href="https://knowledgebase.frame.work/expansion-card-functionality-on-framework-laptop-13-amd-ryzen-ai-300-series-Hy5SfMRs1l">not all created equal</a>. They have different capabilities, so you have to choose where you install each card depending on what cards you buy and what you want to do with them. According to the graphic on that link the left front port is one of the ones that should be perfect for USB-A!</p>

<p>This is the kind of thing I hope they can fix in a firmware update.</p>

<p>I’m not sure if this would’ve been a deal breaker for me. By now it’s a foregone conclusion since I was past the return date by the time I discovered it. I’m fortunate enough to have a dongle I can use if I really need to plug in a thumb drive, but it’s super annoying to have to do that if I don’t want to wait for a restart.</p>

<h3 id="a-little-pricey-but-decent">A little pricey, but decent</h3>

<p>I’d buy the Framework again if I could. I’m pretty used to fixing things on my own if I need to, so the flexibility gives me a little peace of mind. I’m going to run this thing for 10+ years if I can swing it, then I’ll replace the battery and hope to get 10 more if the company’s still around by then.</p>

<p>It would be a good computer if it had a USB-A port that just worked no matter where I plugged it in. I haven’t had any other issues or complaints aside from that, but it’s definitely an expensive computer for what I use it for. Value-wise, not amazing, but not terrible either. The performance for the money is fine. Maybe not the best out there, but it’s good enough that I don’t feel ripped off.</p>

<p>Ultimately, you pay a premium for the repairability aspect because the company is so young and maybe doesn’t have the economies of scale that larger manufacturers have. It’s an investment in their philosophy with the hopes that it’ll pay off down the line as a cheaper upgrade or repair. That feels worth the money to me.</p>

<p>I hope this helps someone in their laptop-buying decision process!</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="tech" /><summary type="html"><![CDATA[It's a computer!]]></summary></entry><entry><title type="html">Book Review: _Utopia Avenue_ by David Mitchell</title><link href="https://www.johngerace.com/book-utopia-avenue/" rel="alternate" type="text/html" title="Book Review: _Utopia Avenue_ by David Mitchell" /><published>2025-10-05T00:00:00+00:00</published><updated>2025-10-05T00:00:00+00:00</updated><id>https://www.johngerace.com/book-utopia-avenue</id><content type="html" xml:base="https://www.johngerace.com/book-utopia-avenue/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/cover-utopia-avenue.png" alt="By https://www.hodder.co.uk/titles/david-mitchell-6/utopia-avenue/9781444799422/, Fair use, https://en.wikipedia.org/w/index.php?curid=64610180" class="align-center" /></p>

<p>David Mitchell is my favorite author, and <em>Cloud Atlas</em> is one of my favorite novels of all time. All other books are doomed to suffer in comparison.</p>

<p>Sorry, <em>Utopia Avenue</em>, you started off on the back foot.</p>

<p>The prose in this novel is so similar in feel to Mitchell’s previous work and the setting is part of the expansive Mitchellverse that weaves through each of his stories. I approached with high expectations.</p>

<p>Maybe I desired too much from it. Maybe that ultimately doomed my opinion of the book.</p>

<p>We see a familiar cast of characters throughout the novel’s substantial 550+ pages from the 1960s rock scene, but also many appearances by characters from Mitchell’s other books. I’ll try not to spoil anything here, but some of these characters are significantly more impactful to the story than others. One of the more jarring of these sends the novel careening into deep left field. I mean, like, a way-past-the-bleachers-and-into-the-parking-lot kind of thing, given where the story had taken us until that point. He does eventually pull the story back into familiar territory, but it left me to wonder if we needed that aspect of the story at all.</p>

<p>The novel reads like Mitchell’s love letter to music, about which he is clearly and intensely passionate. It’s indulgent. He writes lyrics for Utopia Avenue’s hit songs, he describes the qualities of music in glorious detail, we have delightful cameos from famous musicians both pre- and post-fame. But he’s more focused on celebrating his love for music than on developing the depth of his characters.</p>

<p>The story is a straightforward drama that plays out the biography of a band. The characters each have their own personality, their own unique persona - Elf is the hyper-talented but marginalized-because-female keyboardist, Dean is rough-edged boy from the wrong side of the tracks, Griff is the gruff and practical drummer, Jasper is the tortured artist, but everyone meshes so easily that their coming-together feels a little too perfect, a little too set-up. The band face misfortune and they persevere and emerge with their relationship intact, but I didn’t fear for their well-being or care for them at any more than a superficial level. The story never swings for the fences, except for maybe that one part I mentioned earlier, which, again, felt remarkably out of place.</p>

<p>While it’s not that good for a David Mitchell book – it’s possibly my least favorite of his – it’s fun, and even a decent book compared to the contemporary landscape. It’s entertaining and I legitimately enjoyed reading it, but it lacks the profundity that might elevate it to the level of a truly compelling story.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="book review" /><category term="literature" /><summary type="html"><![CDATA[Musically palatable]]></summary></entry><entry><title type="html">Book Review: _The Tainted Cup_ by Robert Jackson Bennett</title><link href="https://www.johngerace.com/book-tainted-cup/" rel="alternate" type="text/html" title="Book Review: _The Tainted Cup_ by Robert Jackson Bennett" /><published>2025-09-21T00:00:00+00:00</published><updated>2025-09-21T00:00:00+00:00</updated><id>https://www.johngerace.com/book-tainted-cup</id><content type="html" xml:base="https://www.johngerace.com/book-tainted-cup/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/cover-tainted-cup.png" alt="By Robert Jackson Bennett - https://app.thestorygraph.com/books/e1def2b4-516d-47bc-a60d-7de779b4b1cb, Fair use, https://en.wikipedia.org/w/index.php?curid=79774396" class="align-center" /></p>

<p><em>The Tainted Cup</em> is the first in the <em>Shadow of the Leviathan</em> series by Robert Jackson Bennett, the third installment of which is due in 2026. This book had received some high praise and I was eager to read a fantasy mystery after I had enjoyed Josiah Bancroft’s <em>The Hexologists</em> and was awaiting the sequel.</p>

<p>The story focuses largely on Dinios Kol, someone physically altered to possess a perfect memory, who is now assistant to the famed eccentric detective Ana Dolabra. There’s been a strange murder - an imperial officer, killed when a tree sprouted from his body. Dolabra sends her assistant out to the crime scene to gather all the details, which he brings for her to make sense of. This, amid a backdrop of an empire in danger from enormous titans that emerge from the ocean to destroy civilization.</p>

<p>The mystery was a compelling driver - it builds to a satisfying climax and makes good use of the unique features of the fantasy world, Daretana, to keep the story engaging. The world, however, did not pop with vividness as much as I had hoped. The book is a page-turner, for sure, even at 400+ pages, and even though the world building is present, it’s a little on the tepid side. Not enough to keep me from wanting to read on, but enough that the setting didn’t hook me and draw me in. I knew more about the world than I felt or visualized.</p>

<p>It’s a better mystery/thriller than it is a fantasy novel, though the fantasy aspect does give the murder plot a more unique flavor. Plus, there’s a fair dose of character and wit. I don’t usually enjoy committing to a series, but the strength of this novel makes the sequel seem worth reading.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="book review" /><category term="literature" /><summary type="html"><![CDATA[A surprising buddy cop, Holmes and Watson fantasy]]></summary></entry><entry><title type="html">Book Review: _Sphere_ by Michael Crichton</title><link href="https://www.johngerace.com/book-sphere/" rel="alternate" type="text/html" title="Book Review: _Sphere_ by Michael Crichton" /><published>2025-08-13T00:00:00+00:00</published><updated>2025-08-13T00:00:00+00:00</updated><id>https://www.johngerace.com/book-sphere</id><content type="html" xml:base="https://www.johngerace.com/book-sphere/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/cover-sphere.jpeg" alt="Front cover of Sphere by Michael Crichton - Fair use, https://en.wikipedia.org/w/index.php?curid=17751046" class="align-center" /></p>

<p>To be perfectly upfront, I read this book because I was desperate for something to read while on jury duty. This book has sat on my shelf, unread, since the late 90s and its comeuppance arrived when my local library had no available ebooks that I wanted to read.</p>

<p>I had previously read two Michael Crichton books: <em>Jurassic Park</em> and <em>Congo</em>, but maybe only when I was 12 or so, and I enjoyed them. Crichton’s reputation for writing solid mass market thrillers was enough for me to assume that this book would be adequately entertaining.</p>

<p>And indeed it was.</p>

<p>The premise is that the United States Navy has discovered a mysterious underwater object in the Pacific Ocean and they have summoned a team of scientists to assist with the investigation. As they work to discover the nature of this object during a prolonged stay in a deep-sea habitat, odd things begin to happen…</p>

<p><em>Sphere</em> was fine, even interesting for the first two thirds of the story, before things started to seriously unravel. It proceeds as one might expect of a popular mystery/thriller novel. However, as the mystery of the sphere became clearer things started to get so ridiculous that I was pulled out of the story a little, but by then I just wanted to know how it ended so I kept on anyway.</p>

<p>The nice thing about the novel was that I didn’t have to think at all. These kinds of novels don’t assume anyone knows anything, so there were a lot of explanatory passages in <em>Sphere</em> about black holes, underwater exploration, military operations, and all that. When I want some really really light reading, I’m generally looking to be spoon fed everything, and in this regard <em>Sphere</em> more than met my expectations.</p>

<p>I appreciate Michael Crichton books because they know the reader is here for a good time, not a long time, and <em>Sphere</em> helped me sail through my jury duty without totally rotting my gourd. It doesn’t pose thought-provoking philosophical questions or delve deep into its characters’ psyches or address urgent social concerns, and I would never have expected it to. It’s entertainment, pure and simple.</p>

<p>Maybe I’ll make a tradition out of this. I know I have a copy of <em>The Andromeda Strain</em> somewhere at home…</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="book review" /><category term="literature" /><summary type="html"><![CDATA[Wonderfully adequate]]></summary></entry><entry><title type="html">Book Review: _Wolf Hall_ by Hilary Mantel</title><link href="https://www.johngerace.com/book-wolf-hall/" rel="alternate" type="text/html" title="Book Review: _Wolf Hall_ by Hilary Mantel" /><published>2025-07-21T00:00:00+00:00</published><updated>2025-07-21T00:00:00+00:00</updated><id>https://www.johngerace.com/book-wolf-hall</id><content type="html" xml:base="https://www.johngerace.com/book-wolf-hall/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/cover-wolf-hall.jpeg" alt="Front cover of Wolf Hall by Hilary Mantel - By May be found at the following website: https://www.amazon.co.uk/Wolf-Hall-Hilary-Mantel/dp/0007230184., Fair use, https://en.wikipedia.org/w/index.php?curid=24601780" class="align-center" /></p>

<p>My greatest motivation to read this book was the fact that my mother gifted me the entire trilogy. I’m not usually a fan of historical fiction and this novel was no exception.</p>

<p>The prose is definitely noteworthy, but the narrative was a slog. I just didn’t care for all the fuss around Henry VIII’s scandalous divorce proceedings. So many people lauded for their intellect spending their time on a matter that I have no emotional connection with…</p>

<p>My favorite parts of the story were those of Thomas Cromwell’s home life. He’s in the middle of the black plague, he’s raising his sons and wards (which is an interesting working relationship to see dramatized). Cromwell navigates life in those scenes with the same logic we might have used during the pandemic and with the same considerations for his kids’ future. He frets over their bad decisions and he plans for their marriages, all while ascending from his modest beginnings at the hand of an abusive father through the ranks of the court to Henry’s right hand man. The estate houses the entire extended family and I find those dynamics far more interesting than the dynamics of the royal court.</p>

<p>Those home scenes evoke the most emotion and pathos in the story. I’d read an entire novel about Cromwell’s life outside the royal court.</p>

<p>I appreciate the extent to which Mantel has animated these characters nearly 500 years after the events of the novel, and I can understand why that might be appealing to fans of historical fiction, i.e. Mom.</p>

<p>Even if I didn’t enjoy it, at least now I can talk to her about it, which is worth something.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="book review" /><category term="literature" /><summary type="html"><![CDATA[Oh my God. Who the hell cares? - Peter Griffin]]></summary></entry><entry><title type="html">Apparently my wired headphones are technically wireless…</title><link href="https://www.johngerace.com/wired-headphones/" rel="alternate" type="text/html" title="Apparently my wired headphones are technically wireless…" /><published>2025-07-06T00:00:00+00:00</published><updated>2025-07-06T00:00:00+00:00</updated><id>https://www.johngerace.com/wired-headphones</id><content type="html" xml:base="https://www.johngerace.com/wired-headphones/"><![CDATA[<p>I love the convenience of wired headphones - I never have to worry about batteries and I’m way way way less likely to lose them. They won’t drop out of my ears or my pocket and disappear forever.</p>

<p>I don’t love that iPhones have ditched their headphone jack and now I need an adapter so my phone can be just a little itty bitty teeny tiny bit slimmer.</p>

<p>I also don’t love that the official Apple lightning-to-headphone adapter is as flimsy as a blade of grass. Mine died after three years, which I consider a long life, but that means I need a replacement.</p>

<p>BUT…</p>

<p>Apple no longer makes those adapters because they’ve switched from lightning ports to USB-C, and while I applaud the move from a proprietary format to a standard format, I’m not upgrading my phone for it. It feels like one of those moves in which Apple’s slowly trying to make me more uncomfortable until I get irritated enough to buy another phone.</p>

<p>I thought I had found an official Apple adapter on Gopuff, so I bought two thinking I would hoard them. If my last one survived three years, two would last six, and by then Apple wouldn’t provide any more security updates to my iPhone 13 mini from 2021 and I’d buy another phone anyway.</p>

<p>Turns out that the adapter was NOT an official Apple adapter, but it does feel way more sturdy.</p>

<p>It also, to my great confusion, requires a Bluetooth connection.</p>

<p>WTF?</p>

<p>It turns out that hardware manufacturers have to pay Apple a licensing fee to sell accessories that use their proprietary lightning port. But the lightning port still provides power to unlicensed hardware.</p>

<p>The creative minds at budget-conscious hardware companies circumvent this licensing by tapping into the power to drive a tiny Bluetooth device on the headphone end of my adapter that converts from Bluetooth to audio.</p>

<p>Pretty ingenious, but also…now I have to have my Bluetooth on if I want to use my wired headphones.</p>

<p>Hey, Apple: <a href="https://en.wikipedia.org/wiki/Enshittification">Enshittification</a> much?</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="design" /><category term="til" /><summary type="html"><![CDATA[Sneaky sneaky sneaky...]]></summary></entry><entry><title type="html">The Senior Engineer’s Guide: Document Your Intent - An Anecdote</title><link href="https://www.johngerace.com/document-your-intent/" rel="alternate" type="text/html" title="The Senior Engineer’s Guide: Document Your Intent - An Anecdote" /><published>2025-06-22T00:00:00+00:00</published><updated>2025-06-22T00:00:00+00:00</updated><id>https://www.johngerace.com/document-your-intent</id><content type="html" xml:base="https://www.johngerace.com/document-your-intent/"><![CDATA[<p>In the fall of 2015, Peloton’s tax partner, Avalara experience an outage on Black Friday, during which their tax calculation API was entirely down. Peloton used this API to determine that amount of tax due for an order in a given postal code for a given basket of goods, which is more complicated than it sounds because it considers a combination of state and local taxes, which includes the type of products in the order (clothes and exercise equipment may be taxed at different rates, for example), and it tracks the aggregate amount of tax the company owes to each state in which it operates.</p>

<p>Peloton, for reasons I won’t get into here, had spun up its own homegrown e-commerce platform instead of going with something more out-of-the-box like Magento, and the software wasn’t perfect. During this outage, the checkout software essentially prevented customers from placing orders because we couldn’t retrieve a tax calculation.</p>

<p>After that Black Friday outage I was tasked with writing what we called a “kill switch” to disable tax calculation, setting it to $0 and marking orders with a flag that said there was a tax outage. I was specifically told to write this manual switch instead of an automatic circuit breaker because business wanted to be the ultimate decision maker, and with this flag we hoped to possibly collect the outstanding tax from Avalara.</p>

<p>This seemed like a real long shot to me, and it wasn’t ever possible in the end because Avalara, like all smart API providers, don’t hold themselves liable for losses. I didn’t want to do it that way, but the CTO and my boss both acknowledged the technical shortcomings after I raised my concerns, and we went forward with the manual switch.</p>

<p>It wasn’t an ideal solution, but, to quote Kurt Vonnegut: “So it goes.”</p>

<h3 id="architecture">Architecture</h3>

<p>I made a simple table with four fields:</p>

<ul>
  <li>A string for the name of the feature in question</li>
  <li>A boolean to indicate whether the feature was active or inactive</li>
  <li>A UUID of the last user to update the flag</li>
  <li>A timestamp of the last time the flag was updated</li>
</ul>

<p>We made this accessible in our CMS UI, which included a permissioning system, and restricted access to superusers only.</p>

<p>This functionality was essentially a permanent feature flag. The difference between this kill switch and a feature flag is that feature flags are typically intended to be temporary and are often used to do controlled launches. Once the new code is determined to be stable, the feature flag is removed, and the old code is discarded.</p>

<h3 id="fast-forward">Fast forward</h3>

<p>Peloton didn’t really have an established back end feature flag framework. The front end teams used something like Optimizely, which was much more feature-rich and allowed for things like A/B tests, but the back end teams didn’t really need that kind of power.</p>

<p>However after maybe a year or two, and unbeknownst to me, one team did want feature flag functionality. and one of the younger engineers went digging and found this kill switch feature.</p>

<p>They decided to use it to launch one of their new features, which had nothing at all to do with e-commerce and was not intended to be a permanent flag. They must have also told their colleagues, because other teams started to use the kill switch feature as an ethereal feature flag, and that’s essentially what it became.</p>

<h3 id="in-which-i-smack-my-head">In which I smack my head</h3>

<p>The real problem for this kind of usage was that our kill switch UI displayed nothing aside from a set of hard-coded switches in a specially-privileged CMS page that these teams didn’t know about, either because they weren’t permissioned to view it or they didn’t dig deep enough to find out where the data was used. So they built a custom UI that displayed all the rows in the table and allowed CMS users to toggle them on and off.</p>

<p>The issue here is that the way they built their own less-privileged CMS page was such that it didn’t differentiate between kill switches and feature flags, so any CMS user could have easily made a mistake and disabled the Avalara tax calculation, even if they didn’t have the permission to access the kill switch UI.</p>

<h3 id="this-is-your-life-now">This is your life now</h3>

<p>I explained the intent of the kill switch functionality to these teams after I found out what they’d been doing with it, but by then it was too late. They weren’t going to build separate functionality to handle their use case, rightly or wrongly, and my business sponsors didn’t want to pay for a tech debt project to extend the functionality to differentiate properly between kill switches and feature flags.</p>

<p>At the time of my departure kill switches and feature flags were still coupled, but we’d largely moved away from kill switches in favor of circuit breakers and smarter default error handling.</p>

<p>Fortunately, we hadn’t had any issues with mistaken toggles of critical functions.</p>

<h3 id="retrospective">Retrospective</h3>

<p>I could have made the intent of the kill switch much clearer both in code and in our Confluence documentation. Why did we build it? As critical and highly-permissioned functionality, I should have outlined who gets permission, the shortcomings of the solution we’d put together so quickly, and a list of potential enhancements, and a vision for what it <em>should</em> look like.</p>

<p>That doesn’t mean other teams wouldn’t have built their feature flags on top of that functionality anyway, but at least they’d be more informed about the scope of feature and about the potential to create a security issue.</p>

<p>Documenting this stuff in the code, or at least inserting a comment to the full documentation would have been a good idea to make it more likely that a curious engineer would find it, but there are no guarantees.</p>

<p>I was miffed that people didn’t just ask me about the feature since the guy who usurped it knew me quite well, but sometimes we just have to let go and accept our new reality. The best we can do is to write sufficient documentation, even if it isn’t perfect (it doesn’t even have to be good, just good enough), and we have to trust that our colleagues will find it and use it to make informed decisions, even if we might disagree with them.</p>

<p>The best we could have hoped for was that no issues arose from this change in use case, and we were fortunate that things played out that way.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="software" /><category term="career" /><category term="senior-engineers-guide" /><summary type="html"><![CDATA[Holy crap, dude, that's not what I meant!]]></summary></entry><entry><title type="html">Movie Review: _Freaks_</title><link href="https://www.johngerace.com/movie-freaks/" rel="alternate" type="text/html" title="Movie Review: _Freaks_" /><published>2025-05-29T00:00:00+00:00</published><updated>2025-05-29T00:00:00+00:00</updated><id>https://www.johngerace.com/movie-freaks</id><content type="html" xml:base="https://www.johngerace.com/movie-freaks/"><![CDATA[<p><img src="https://www.johngerace.com/assets/images/poster-freaks.jpeg" alt="Theatrical release poster for Freaks - By https://www.imdb.com/title/tt8781414/, Fair use, https://en.wikipedia.org/w/index.php?curid=59483585" class="align-center" /></p>

<p>(Warning: Spoilers abound!)</p>

<p>The concept of Freaks shares a whole darn lot with X-Men: persecuted mutants with special powers trying to live their lives. Except <em>Freaks</em> doesn’t have the Charles Xavier team-building aspect. If someone told me it was part of the X-Men universe, I’d probably believe it for how similar the vibe is. The big conceit is that “freaks” – this is oddly not just a derogatory term, that’s what they’re formally called, which is a little ridiculous – are sent to Madoc Mountain where they’re ostensibly executed, and Chloe, our seven-year-old hero, wants to rescue her formerly-thought-to-be-dead mother from certain doom.</p>

<p>We only ever see four freaks, but it’s enough to get a sense for the kind of havoc they could wreak on society. It’s not clear how many there were and why they didn’t just totally dominate all the normies when things started to get dicey. The freaks we see, one of whom is played by the wonderful Bruce Dern, are ridiculously powerful. I’m sure even a child’s playgroup could have flattened a city! To wit, Dallas was apparently attacked and mostly destroyed.</p>

<p>The story felt pretty crafted at the outset, witholding the exposition of all the context. Who’s good? Who’s bad? Why are people bleeding from their eyes? Ultimately, the story delivers on all that and it turns out to be a pretty exciting movie! If we don’t think too critically about some of the questionable child-rearing decisions Chloe’s dad and grandfather make, it’s quite easy to enjoy.</p>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;&quot;Software developer, writer, translator, dad, urban sketcher, journaler, maker, worrywart&quot;, &quot;location&quot;=&gt;nil, &quot;email&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/jgerace&quot;}, {&quot;label&quot;=&gt;&quot;LinkedIn&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-linkedin&quot;, &quot;url&quot;=&gt;&quot;https://www.linkedin.com/in/john-gerace&quot;}, {&quot;label&quot;=&gt;&quot;Medium&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-medium&quot;, &quot;url&quot;=&gt;&quot;https://medium.com/@johngerace&quot;}]}</name></author><category term="movie review" /><summary type="html"><![CDATA[X-Men without boarding schools.]]></summary></entry></feed>