<?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: Jessica Temporal</title>
    <description>The latest articles on DEV Community by Jessica Temporal (@jesstemporal).</description>
    <link>https://dev.to/jesstemporal</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F238241%2F6069ae7c-7b26-40f6-ad35-31377af2d653.jpeg</url>
      <title>DEV Community: Jessica Temporal</title>
      <link>https://dev.to/jesstemporal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jesstemporal"/>
    <language>en</language>
    <item>
      <title>Go watch it =)</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Fri, 28 Aug 2026 15:53:48 +0000</pubDate>
      <link>https://dev.to/jesstemporal/-10j5</link>
      <guid>https://dev.to/jesstemporal/-10j5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/auth0/you-dont-need-to-read-the-code-anymore-1cm9" class="crayons-story__hidden-navigation-link"&gt;"You Don't Need to Read the Code Anymore"&lt;/a&gt;
    &lt;div class="crayons-article__cover crayons-article__cover__image__feed"&gt;
      &lt;iframe src="https://www.youtube.com/embed/_mWlFA9WuR8" title="&amp;quot;You Don't Need to Read the Code Anymore&amp;quot;"&gt;&lt;/iframe&gt;
    &lt;/div&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/auth0"&gt;
            &lt;img alt="Auth0 for Developers logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F634%2Fc6bfc78f-136d-456b-96dc-bcc4be1c88f9.jpg" class="crayons-logo__image" width="400" height="400"&gt;
          &lt;/a&gt;

          &lt;a href="/carlastabile" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F550123%2F37561a9e-396f-4a02-bade-a8670d4a035c.jpg" alt="carlastabile profile" class="crayons-avatar__image" width="800" height="689"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/carlastabile" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Carla Urrea Stabile
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Carla Urrea Stabile
                
                
              
              &lt;div id="story-author-preview-content-4486107" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/carlastabile" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F550123%2F37561a9e-396f-4a02-bade-a8670d4a035c.jpg" class="crayons-avatar__image" alt="" width="800" height="689"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Carla Urrea Stabile&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/auth0" class="crayons-story__secondary fw-medium"&gt;Auth0 for Developers&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/auth0/you-dont-need-to-read-the-code-anymore-1cm9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 27&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/auth0/you-dont-need-to-read-the-code-anymore-1cm9" id="article-link-4486107"&gt;
          "You Don't Need to Read the Code Anymore"
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/auth0/you-dont-need-to-read-the-code-anymore-1cm9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/auth0/you-dont-need-to-read-the-code-anymore-1cm9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Undo anything in Git: reset vs revert, explained</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Wed, 26 Aug 2026 10:30:00 +0000</pubDate>
      <link>https://dev.to/jesstemporal/undo-anything-in-git-reset-vs-revert-explained-55ij</link>
      <guid>https://dev.to/jesstemporal/undo-anything-in-git-reset-vs-revert-explained-55ij</guid>
      <description>&lt;p&gt;Made a mess in Git? You can undo almost anything, and I'll show you how.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this video:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git reset and its three flavors (soft/default/hard)&lt;/li&gt;
&lt;li&gt;reset vs revert, and which to use when&lt;/li&gt;
&lt;li&gt;git reflog to recover "lost" commits&lt;/li&gt;
&lt;li&gt;git commit --amend comes in around&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jtemporal.com/undoing-the-last-commits-using-git-reset/" rel="noopener noreferrer"&gt;🔗 Read the full post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtube.com/@jesstemporal" rel="noopener noreferrer"&gt;📨 Subscribe for one of these every month&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Gear I use&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4uTKd7b" rel="noopener noreferrer"&gt;Mic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/43KsGU7" rel="noopener noreferrer"&gt;Camera&lt;/a&gt;
(As an Amazon Associate I earn from qualifying purchases.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👋 Let's connect&lt;br&gt;
&lt;a href="https://jtemporal.com" rel="noopener noreferrer"&gt;Blog&lt;/a&gt; • &lt;a href="https://x.com/jesstemporal" rel="noopener noreferrer"&gt;X/Twitter&lt;/a&gt; • &lt;a href="https://linkedin.com/in/jessicatemporal" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://bsky.app/profile/jesstemporal.com" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Federated Identity vs Single Sign-On (SSO) | Stop Confusing IAM Architecture</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 24 Aug 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/auth0/federated-identity-vs-single-sign-on-sso-stop-confusing-iam-architecture-52il</link>
      <guid>https://dev.to/auth0/federated-identity-vs-single-sign-on-sso-stop-confusing-iam-architecture-52il</guid>
      <description>&lt;p&gt;Are you confused about the difference between Federated Identity and Single Sign-On (SSO)? You’re not alone. While both deal with authentication and access control, they solve fundamentally different architectural challenges. &lt;/p&gt;

&lt;p&gt;In this video, we break down Federated Identity vs. SSO with real-world developer examples, protocol overviews (SAML, OAuth, OIDC), and clear diagrams so you can design secure identity systems with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 What You'll Learn
&lt;/h2&gt;

&lt;p&gt;The core technical definitions of SSO and Federated Identity&lt;br&gt;
Key differences: Single domain vs. Cross-domain trust relationships&lt;br&gt;
How identity providers (IdPs) operate across enterprise boundaries&lt;br&gt;
Real-world protocols: SAML, OpenID Connect (OIDC), and OAuth 2.0&lt;br&gt;
When to implement SSO vs. when you actually need Federation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://auth0.com/blog/federated-identity-vs-single-sign-on-key-differences/" rel="noopener noreferrer"&gt;Read the full blog post by Andrea Chiarelli here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>identity</category>
      <category>security</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>We Let AI Resurrect a 2-Year-Old Flask Python App (Cursor + Auth0)</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 17 Aug 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/auth0/we-let-ai-resurrect-a-2-year-old-flask-python-app-cursor-auth0-234b</link>
      <guid>https://dev.to/auth0/we-let-ai-resurrect-a-2-year-old-flask-python-app-cursor-auth0-234b</guid>
      <description>&lt;p&gt;Updating old codebases usually means hours of re-configuring environments, fixing broken dependencies, and hunting for lost secrets. In this walkthrough, we use Cursor IDE and the new Auth0 plugin to automatically resurrect a 2-year-old Python Flask application. Watch how AI seamlessly sets up the Auth0 CLI, generates environment variables, and configures our authentication tenant from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How to install and navigate the Auth0 plugin within Cursor IDE.&lt;/li&gt;
&lt;li&gt;Using AI prompts to automate Auth0 tenant creation and Flask secret key generation.&lt;/li&gt;
&lt;li&gt;Navigating the Auth0 CLI device authorization code flow inside an AI environment.&lt;/li&gt;
&lt;li&gt;Troubleshooting AI prompt timeouts and natively restarting development servers via Cursor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources &amp;amp; Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jtemporal/flask-to-fastapi" rel="noopener noreferrer"&gt;🐙 GitHub Repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cursor.com/marketplace/auth0" rel="noopener noreferrer"&gt;💻 Auth0 Plugin in Cursor Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/docs/quickstart/webapp/python" rel="noopener noreferrer"&gt;🔐 Auth0 Python/Flask Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/docs/deploy-monitor/auth0-cli#auth0-cli" rel="noopener noreferrer"&gt;📖 Auth0 CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Give Claude Real-Time Auth0 Docs Access (MCP Server)</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 10 Aug 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/auth0/how-to-give-claude-real-time-auth0-docs-access-mcp-server-55f5</link>
      <guid>https://dev.to/auth0/how-to-give-claude-real-time-auth0-docs-access-mcp-server-55f5</guid>
      <description>&lt;p&gt;Stop relying on outdated LLM training data or incomplete web scrapes when writing identity code. In this video, we walk through how to add Auth0 documentation MCP (Model Context Protocol) servers directly to your setup, giving Claude Code real-time access to the Auth0 documentation. &lt;/p&gt;

&lt;p&gt;We walk through adding both the "Auth0 for AI Agents" documentation server and the "General Auth0 Documentation" server, verifying their connections, and putting them to the test with real-world prompt scenarios like human-in-the-loop consent and Auth Code vs. Client Credentials flows.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The problem with generic LLM training data for precise identity management.&lt;/li&gt;
&lt;li&gt;How to add the Auth0 for AI Agents documentation server for protected agent architectures.&lt;/li&gt;
&lt;li&gt;How to add the General Auth0 documentation server for quick access to SDKs and flows.&lt;/li&gt;
&lt;li&gt;Verifying and listing active MCP servers within Claude Code.&lt;/li&gt;
&lt;li&gt;Real-world prompt testing (CIBA/Backchannel authentication and flow comparison).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Related Videos and Playlists
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLZ14qQz3cfJL-OH27WpS51G_Bz0DLCp9t" rel="noopener noreferrer"&gt;Auth0 + MCP + Skills + AI Coding Agents (Playlist)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=nG3Gxrtn6Uo" rel="noopener noreferrer"&gt;See the Auth0 Claude Code Plugin &amp;amp; Stripe Integration In Action&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>documentation</category>
      <category>mcp</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Recovering lost commits with git reflog</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sat, 20 Jun 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/jesstemporal/recovering-lost-commits-with-git-reflog-3d3o</link>
      <guid>https://dev.to/jesstemporal/recovering-lost-commits-with-git-reflog-3d3o</guid>
      <description>&lt;p&gt;There is a particular kind of panic that hits when a commit looks like it just vanished. Maybe you ran a hard reset, or a rebase went sideways, and the work you had a minute ago is nowhere in your history. Before you assume it is gone for good, there is one command that may be able to bring it back: &lt;code&gt;git reflog&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the reflog?
&lt;/h2&gt;

&lt;p&gt;Git keeps a private log of everywhere HEAD has been. Everything you do in Git that moves &lt;a href="https://jtemporal.com/undoing-the-last-commits-using-git-reset/" rel="noopener noreferrer"&gt;the HEAD pointer&lt;/a&gt; is recorded, whether you made a commit, did a checkout, ran a reset, or a rebase or merge moved it around.&lt;/p&gt;

&lt;p&gt;The log of that movement lives in the reference log (reflog for short), and it is local to your machine. So even when a commit no longer shows up when you do &lt;code&gt;git log&lt;/code&gt;, the reference to it usually still lives in the reflog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding the commit you lost
&lt;/h2&gt;

&lt;p&gt;To see the reference log you can run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reflog

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

&lt;/div&gt;



&lt;p&gt;You get a list of recent moves, with the most recent entry at the top, like shown in the following image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e1biywz8xy9ujvaacwv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e1biywz8xy9ujvaacwv.webp" alt="git reflog output showing recent HEAD movements" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each line has a short hash, a reference like &lt;code&gt;HEAD@{2}&lt;/code&gt;, and a description of what happened, things like “commit”, “reset: moving to”, or “checkout”.&lt;/p&gt;

&lt;p&gt;Even though it may be hard to get used to reading this new format of log, the description and order usually make it clear where you were and can be the indication you need to know where you want to go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting back to it
&lt;/h2&gt;

&lt;p&gt;Once you have spotted the right entry, copy its hash. Then move your branch back to that point:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;&amp;lt;hash&amp;gt;&lt;/code&gt; with the hash you found in the reflog.&lt;/p&gt;

&lt;p&gt;For example, thinking of the image above, if you want to go to the state before the reset you’d need to run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; a68cffa

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

&lt;/div&gt;



&lt;p&gt;And after that, your working state matches the moment before the mistake, like it never happened.&lt;/p&gt;

&lt;p&gt;A quick note of caution: &lt;code&gt;git reset --hard&lt;/code&gt; discards your current uncommitted changes, so make sure you actually want to land on that older state before you run it. If you are not sure, you can use &lt;code&gt;git switch&lt;/code&gt; to the hash first to look around without moving your branch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;Most people learn about the reflog the hard way after losing the work to a reset or a rebase, so knowing it exists can be extremely helpful in a pinch.&lt;/p&gt;

&lt;p&gt;Here’s a recap of the steps to restore a previous lost state with reflog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find the state you want to go back to, and copy its hash.&lt;/li&gt;
&lt;li&gt;Check if that’s the actual state you want to restore with &lt;code&gt;git switch &amp;lt;hash&amp;gt;&lt;/code&gt;. If it’s not, repeat steps 1 and 2 until you find the correct state.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;git reset --hard &amp;lt;hash&amp;gt;&lt;/code&gt; to get back to it.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>git</category>
      <category>english</category>
      <category>protip</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Recuperando commits perdidos com git reflog</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sat, 20 Jun 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/jesstemporal/recuperando-commits-perdidos-com-git-reflog-51hp</link>
      <guid>https://dev.to/jesstemporal/recuperando-commits-perdidos-com-git-reflog-51hp</guid>
      <description>&lt;p&gt;Tem um tipo específico de pânico que bate quando parece que um commit simplesmente sumiu. Talvez você tenha rodado um hard reset, ou um rebase deu errado, e o trabalho que estava aí um minuto atrás não aparece em lugar nenhum do seu histórico. Antes de assumir que ele foi embora para sempre, tem um comando que pode te ajudar a trazer isso de volta: &lt;code&gt;git reflog&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o reflog?
&lt;/h2&gt;

&lt;p&gt;O Git mantém um registro privado de todos os lugares por onde o HEAD passou. Tudo o que você faz no Git que move &lt;a href="https://dev.to/desfazendo-um-ou-mais-commits/"&gt;o ponteiro HEAD&lt;/a&gt; fica registrado, seja porque você fez um commit, deu um checkout, rodou um reset, ou porque um rebase ou merge mexeu nele.&lt;/p&gt;

&lt;p&gt;Esse registro de movimento fica no log de referência (do inglês &lt;em&gt;reference log&lt;/em&gt; ou reflog, para encurtar) e ele é local na sua máquina. Então, mesmo quando um commit não aparece mais no &lt;code&gt;git log&lt;/code&gt;, a referência para ele geralmente ainda está no reflog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Encontrando o commit que você perdeu
&lt;/h2&gt;

&lt;p&gt;Para ver o reference log, você pode rodar o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reflog

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

&lt;/div&gt;



&lt;p&gt;Você vai ver uma lista de movimentos recentes, com a entrada mais recente no topo, como na imagem abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e1biywz8xy9ujvaacwv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e1biywz8xy9ujvaacwv.webp" alt="saída do git reflog mostrando movimentos recentes do HEAD" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cada linha tem um hash curto, uma referência como &lt;code&gt;HEAD@{2}&lt;/code&gt;, e uma descrição do que aconteceu, coisas como “commit”, “reset: moving to” ou “checkout”.&lt;/p&gt;

&lt;p&gt;Mesmo que seja difícil se acostumar a ler esse novo formato de log, a descrição e a ordem geralmente deixam claro onde você estava e podem ser a indicação que você precisa para saber para onde quer voltar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voltando para lá
&lt;/h2&gt;

&lt;p&gt;Quando você encontrar a entrada certa, copie o &lt;em&gt;hash&lt;/em&gt;. Depois, mova o seu branch de volta para aquele ponto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Substitua &lt;code&gt;&amp;lt;hash&amp;gt;&lt;/code&gt; pelo hash que você encontrou no reflog.&lt;/p&gt;

&lt;p&gt;Por exemplo, pensando na imagem acima, se você quiser voltar para o estado antes do reset, você precisaria rodar o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; a68cffa

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

&lt;/div&gt;



&lt;p&gt;Depois disso, o seu estado de trabalho volta a bater com o momento antes do erro, como se nada tivesse acontecido.&lt;/p&gt;

&lt;p&gt;Uma observação rápida: &lt;code&gt;git reset --hard&lt;/code&gt; descarta as suas mudanças não commitadas. Então tenha certeza de que você realmente quer cair nesse estado anterior antes de rodar o comando. Se você não tiver certeza, você pode usar &lt;code&gt;git switch&lt;/code&gt; para ir até o hash primeiro e dar uma olhada sem mover o seu branch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recapitulando
&lt;/h2&gt;

&lt;p&gt;A maioria das pessoas aprende sobre o reflog do jeito difícil, depois de perder trabalho por causa de um reset ou de um rebase. Então saber que ele existe pode ser uma mão na roda numa emergência.&lt;/p&gt;

&lt;p&gt;Recapitulando os passos para restaurar um estado anterior perdido com o reflog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Encontre o estado para o qual você quer voltar e copie o hash.&lt;/li&gt;
&lt;li&gt;Confira se esse é mesmo o estado que você quer restaurar com &lt;code&gt;git switch &amp;lt;hash&amp;gt;&lt;/code&gt;. Se não for, repita os passos 1 e 2 até encontrar o estado certo.&lt;/li&gt;
&lt;li&gt;Rode &lt;code&gt;git reset --hard &amp;lt;hash&amp;gt;&lt;/code&gt; para voltar para ele.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>git</category>
      <category>português</category>
      <category>colinha</category>
    </item>
    <item>
      <title>agenticstack.sh: compare tools for building AI agents</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Fri, 19 Jun 2026 03:00:00 +0000</pubDate>
      <link>https://dev.to/jesstemporal/agenticstacksh-compare-tools-for-building-ai-agents-1l07</link>
      <guid>https://dev.to/jesstemporal/agenticstacksh-compare-tools-for-building-ai-agents-1l07</guid>
      <description>&lt;p&gt;If you are building AI agents and wondering which tools to use, &lt;a href="https://agenticstack.sh" rel="noopener noreferrer"&gt;agenticstack.sh&lt;/a&gt; is worth bookmarking. 🔖&lt;/p&gt;

&lt;p&gt;This website lets you compare tools like auth, email, hosting, CMS, and others, so you’ll pick the best one for your use case.&lt;/p&gt;

&lt;p&gt;It has comparative tables you can use to make an informed decision.&lt;/p&gt;

&lt;p&gt;And since we are talking about AI here, it even has skills that you can install so you can ask questions right in your AI assistant chat. 😄&lt;/p&gt;


&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/R7nI0qm8OA4"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;p&gt;Let me know if you try it!&lt;/p&gt;

&lt;p&gt;Follow along for more tips like this!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>short</category>
      <category>devtools</category>
    </item>
    <item>
      <title>git stash: save your work without committing</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Thu, 18 Jun 2026 03:00:00 +0000</pubDate>
      <link>https://dev.to/jesstemporal/git-stash-save-your-work-without-committing-3he0</link>
      <guid>https://dev.to/jesstemporal/git-stash-save-your-work-without-committing-3he0</guid>
      <description>&lt;p&gt;You’re working, some priority comes up, but you’re not ready to make a commit yet, and you need to switch branches. What do you do? 🤔&lt;/p&gt;

&lt;p&gt;Some people like to make a throwaway commit just to save the work so they can undo it later, but I prefer &lt;code class="language-plaintext highlighter-rouge"&gt;git stash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Think of it like a stack. You take the changes you made, bundle them up, save them locally, and then your working directory goes back to a clean state.&lt;/p&gt;

&lt;p&gt;Each bundle is a stash and it gets saved on index zero.&lt;/p&gt;

&lt;p&gt;You can then switch branches, do whatever you need to do, and when you come back, you can &lt;code class="language-plaintext highlighter-rouge"&gt;pop&lt;/code&gt; or &lt;code class="language-plaintext highlighter-rouge"&gt;apply&lt;/code&gt; the stash, and your most recent changes go back to where they were.&lt;/p&gt;

&lt;p&gt;One heads up though: if you have new files that git isn’t tracking yet, they won’t be automatically added to this stash. So before you make a stash with new files, you need to stage them first. 😅&lt;/p&gt;

&lt;p&gt;Want the full breakdown on git stash? I covered it in more depth here: &lt;a href="/using-git-stash-and-git-stash-pop/"&gt;Using git stash: pop, apply, and drop&lt;/a&gt;&lt;/p&gt;


&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/rnAiEg_si8s"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;p&gt;If you want more git tips that save your work, follow along!&lt;/p&gt;

</description>
      <category>english</category>
      <category>git</category>
      <category>protip</category>
      <category>short</category>
    </item>
    <item>
      <title>Preview Auth0 Changes Safely with Deploy CLI Dry Run</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Tue, 16 Jun 2026 22:25:31 +0000</pubDate>
      <link>https://dev.to/auth0/preview-auth0-changes-safely-with-deploy-cli-dry-run-38hn</link>
      <guid>https://dev.to/auth0/preview-auth0-changes-safely-with-deploy-cli-dry-run-38hn</guid>
      <description>&lt;p&gt;Managing your Auth0 tenant configuration as code shouldn't be a "guess and check" process. In this video, I'll demonstrate how to use the &lt;em&gt;Auth0 Deploy CLI's Dry Run&lt;/em&gt; feature. Learn how to preview exactly which resources will be created, updated, or deleted before you ever touch your production environment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What You'll Learn&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to configure the Auth0 Deploy CLI with a &lt;code&gt;config.json&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;The proper syntax for exporting your current tenant configuration to YAML.&lt;/li&gt;
&lt;li&gt;How to use the &lt;code&gt;--dry-run&lt;/code&gt; flag to validate local changes.&lt;/li&gt;
&lt;li&gt;Best practices for keeping sensitive credentials out of your Git history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Resources&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 &lt;a href="https://github.com/auth0/auth0-deploy-cli/blob/master/docs/using-dry-run.md" rel="noopener noreferrer"&gt;Auth0 Deploy CLI Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;a href="https://github.com/auth0/auth0-deploy-cli/tree/master" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tooling</category>
      <category>ai</category>
      <category>security</category>
      <category>cli</category>
    </item>
    <item>
      <title>How to Decode, Encode, and Validate JWTs inside Claude Code</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Fri, 29 May 2026 17:42:15 +0000</pubDate>
      <link>https://dev.to/auth0/how-to-decode-encode-and-validate-jwts-inside-claude-code-240b</link>
      <guid>https://dev.to/auth0/how-to-decode-encode-and-validate-jwts-inside-claude-code-240b</guid>
      <description>&lt;p&gt;&lt;em&gt;Stop context switching and start debugging.&lt;/em&gt; Let me show you how to supercharge your AI agent with JWT Skills. Learn how to decode, encode, and validate JSON Web Tokens (JWTs) directly within your terminal session using Claude Code. Whether you're troubleshooting an expired token or testing a custom claim, these tools bring security insights right into your development flow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What You'll Learn:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to install the &lt;code&gt;jwt-skills&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Decoding tokens to inspect headers, payloads, and claims.&lt;/li&gt;
&lt;li&gt;Identifying security flags like expired tokens or PII in payloads.&lt;/li&gt;
&lt;li&gt;Generating test tokens with custom claims for edge-case testing.&lt;/li&gt;
&lt;li&gt;Validating tokens against JWKS endpoints for production-level checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Resources:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🛠 &lt;em&gt;&lt;a href="https://github.com/jsonwebtoken/jwt-skills" rel="noopener noreferrer"&gt;Get the Skills&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;em&gt;&lt;a href="https://jwt.io" rel="noopener noreferrer"&gt;JWT Deep Dive&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Manage Your Auth0 Tenants Faster with the Gemini CLI Extension</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Wed, 29 Apr 2026 21:01:35 +0000</pubDate>
      <link>https://dev.to/auth0/manage-your-auth0-tenants-faster-with-the-gemini-cli-extension-2dh8</link>
      <guid>https://dev.to/auth0/manage-your-auth0-tenants-faster-with-the-gemini-cli-extension-2dh8</guid>
      <description>&lt;p&gt;Stop switching between your browser and terminal to manage identity. In this video, I'll show you how to integrate the &lt;em&gt;Auth0 MCP Server&lt;/em&gt; directly into your &lt;em&gt;Gemini CLI&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Learn how to leverage AI to query your applications, initialize tenants, and manage APIs using natural language commands without leaving your development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How to find the Auth0 extension on the official Gemini page.&lt;/li&gt;
&lt;li&gt;The one-command installation process for the Auth0 MCP server.&lt;/li&gt;
&lt;li&gt;Authenticating and initializing your Auth0 environment via CLI.&lt;/li&gt;
&lt;li&gt;Using natural language to list applications and create new API resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/auth0/auth0-mcp-server" rel="noopener noreferrer"&gt;💻 Auth0 MCP Server GitHub Repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/docs/get-started/auth0-mcp-server" rel="noopener noreferrer"&gt;🛠️ Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/blog/auth0-mcp-server-in-gemini-cli-extensions" rel="noopener noreferrer"&gt;📝 Auth0 Blog Post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
