<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adam Tal</title>
    <description>The latest articles on DEV Community by Adam Tal (@the_adam_tal).</description>
    <link>https://dev.to/the_adam_tal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1086213%2F51bd348b-2b08-4415-94a9-f0fbcaed23ec.jpeg</url>
      <title>DEV Community: Adam Tal</title>
      <link>https://dev.to/the_adam_tal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/the_adam_tal"/>
    <language>en</language>
    <item>
      <title>From Production Outage to the Front Page of Hacker News</title>
      <dc:creator>Adam Tal</dc:creator>
      <pubDate>Sat, 20 May 2023 20:48:45 +0000</pubDate>
      <link>https://dev.to/the_adam_tal/from-production-outage-to-the-front-page-of-hacker-news-5178</link>
      <guid>https://dev.to/the_adam_tal/from-production-outage-to-the-front-page-of-hacker-news-5178</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TXphQu9e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fb8ynvvtgunxk83u2d2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TXphQu9e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fb8ynvvtgunxk83u2d2d.png" alt="Image description" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello, everyone! I'm Adam, currently the Director of Payments Engineering at Vimeo. It's graduation season, meaning many are about to embark on their own professional journeys. It's an exciting time, and in the spirit of this, I'd like to share a story from my career, which spans over a decade in engineering.&lt;/p&gt;

&lt;p&gt;We often celebrate our wins and milestones, as we should, but we tend to gloss over the challenging times, the missteps, and the lessons they bring. I've experienced my fair share of these lessons; &lt;strong&gt;I've brought down production at every company I've worked for at least once&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;While that might sound alarming, it's in those moments of crisis that I've learned the most, grown exponentially as an engineer, and come away with valuable insights.&lt;/p&gt;

&lt;p&gt;Today, I'd like to share one such story.&lt;/p&gt;

&lt;p&gt;To set the stage, I was leading the Platform Engineering team at a startup credit card company. Buried in refactoring work, I discovered an empty Database (DB) table named "cards." It was a mystery – not referenced anywhere in the code, devoid of data, and mentioned in dusty old documents earmarked for deletion.&lt;/p&gt;

&lt;p&gt;After discussing it with colleagues and doing some due diligence, I decided to axe it. A DB migration to drop the table was prepared and launched. A simple enough task. But as we're aware in tech, simple rarely equates to trouble-free.&lt;/p&gt;

&lt;p&gt;Within 15 minutes post-deployment, our production environment buckled and crashed. A seemingly innocuous migration had spiraled into an engineering catastrophe. As the orchestrator of this chaos, I was now on a mission for answers.&lt;/p&gt;

&lt;p&gt;Diving into DB logs and audit trails, the puzzle began to unravel. The empty table had a Foreign Key (FK) to another table. To drop it, Postgres needed to lock the referenced table. That table? ... "users." A relatively essential table, hard to get a lock on.&lt;/p&gt;

&lt;p&gt;A database deadlock ensued. The migration query was unable to secure the necessary locks due to these hostage-taking threads. This query also held a lock on the main application table, lining up all other queries in a deadlock-laden conga line that would never move.&lt;/p&gt;

&lt;p&gt;The application, overwhelmed by the surge of waiting queries, went down. The immediate resolution? Terminate the migration query.&lt;/p&gt;

&lt;p&gt;From this tumultuous experience, the idea for &lt;a href="https://github.com/AdmTal/PostgreSQL-Query-Lock-Explainer"&gt;my tool&lt;/a&gt; was born.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
pg_explain_locks "DROP TABLE cards"

+-------------+---------------+---------------------+
| Relation ID | Relation Name | Lock Type           |
+-------------+---------------+---------------------+
| 16415       | cards         | AccessExclusiveLock |
| 16416       | users         | AccessExclusiveLock |
+-------------+---------------+---------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ordeal became an intensive crash course in database fundamentals, a challenging yet enriching learning experience that left an indelible mark on my professional journey.&lt;/p&gt;

&lt;p&gt;In the aftermath, &lt;a href="https://github.com/AdmTal/PostgreSQL-Query-Lock-Explainer"&gt;I developed a tool&lt;/a&gt; to better understand DB locks' interactions and their impacts on an application. Four years later, this humble tool found itself on the &lt;a href="https://news.ycombinator.com/item?id=35981238"&gt;front page of Hacker News&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Continue to build, stumble, and learn. The journey is long, and each step, misstep, or fall is a stepping stone toward growth. You never know what your next mistake might teach you.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>opensource</category>
      <category>python</category>
      <category>career</category>
    </item>
    <item>
      <title>Created a Fully Automated Daily Trivia Podcast with ChatGPT - It's a Blast!</title>
      <dc:creator>Adam Tal</dc:creator>
      <pubDate>Sat, 20 May 2023 20:35:36 +0000</pubDate>
      <link>https://dev.to/the_adam_tal/created-a-fully-automated-daily-trivia-podcast-with-chatgpt-its-a-blast-3ll9</link>
      <guid>https://dev.to/the_adam_tal/created-a-fully-automated-daily-trivia-podcast-with-chatgpt-its-a-blast-3ll9</guid>
      <description>&lt;p&gt;Hey, fellow developers!&lt;/p&gt;

&lt;p&gt;I'm excited to share my latest project with you all: I used ChatGPT to create a fully automated daily trivia podcast, and it's turning out to be an absolute blast! We're three episodes in so far, and I'm loving the results. I'll make sure to post an update later this week with full stats on the podcast's performance.&lt;/p&gt;

&lt;p&gt;One of the coolest aspects of this project is that it really showcases the vast and generalized trivia knowledge embedded within the ChatGPT LLM. I think you'll be pleasantly surprised by the trivia questions and answers it generates.&lt;/p&gt;

&lt;p&gt;You can find this podcast on all the usual platforms, so feel free to give it a listen. To make things easier, I used Buzzsprout for podcast hosting. If you're ever thinking about starting your own podcast, I highly recommend them – they made it incredibly simple to get started and host on all platforms for free. Here's the link to my podcast: &lt;a href="https://www.buzzsprout.com/2185630/share"&gt;https://www.buzzsprout.com/2185630/share&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the first 20 episodes, I used Wondercraft AI, but I'm currently developing my own code for the next set of episodes. I'm using Eleven Labs and PyDub for this, and I'll definitely share the results when everything is ready.&lt;/p&gt;

&lt;p&gt;So, check out the podcast, and let me know what you think! I'd love to hear your feedback and any suggestions you might have. Happy listening!&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>ai</category>
      <category>podcast</category>
      <category>trivia</category>
    </item>
    <item>
      <title>Convert a Subreddit into a Podcast with AI</title>
      <dc:creator>Adam Tal</dc:creator>
      <pubDate>Sat, 20 May 2023 20:33:26 +0000</pubDate>
      <link>https://dev.to/the_adam_tal/convert-a-subreddit-into-a-podcast-with-ai-1h09</link>
      <guid>https://dev.to/the_adam_tal/convert-a-subreddit-into-a-podcast-with-ai-1h09</guid>
      <description>&lt;p&gt;Hey all,&lt;/p&gt;

&lt;p&gt;Wanted to share this code I co-wrote with ChatGPT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AdmTal/crowdcast"&gt;https://github.com/AdmTal/crowdcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a script that converts a subreddit into a podcast.  Pretty neat!&lt;/p&gt;

&lt;p&gt;I made it specifically for my new sub /r/crowdcast&lt;/p&gt;

&lt;p&gt;I thought it would be neat to make a crowd sourced podcast using AI - so there it is!&lt;/p&gt;

&lt;p&gt;Here’s how it turns out:&lt;br&gt;
&lt;a href="https://www.buzzsprout.com/2188164/share"&gt;Listen to Xrowdcast podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two episodes so far.&lt;/p&gt;

&lt;p&gt;I hope some of you leave some comments and are part of next week’s cast!&lt;/p&gt;

&lt;p&gt;Thanks for reading, please reach out with any questions or feedback you might have&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>gpt4</category>
      <category>elevenlabs</category>
    </item>
  </channel>
</rss>
