<?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: James Thompson</title>
    <description>The latest articles on DEV Community by James Thompson (@100stacks).</description>
    <link>https://dev.to/100stacks</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%2F270391%2Feeb3ac4d-1a81-4aba-bb95-a52e8de0bac6.jpg</url>
      <title>DEV Community: James Thompson</title>
      <link>https://dev.to/100stacks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/100stacks"/>
    <language>en</language>
    <item>
      <title>Join Me in UC Berkeley's RDI Advanced LLM Agents MOOC</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Mon, 03 Feb 2025 23:49:35 +0000</pubDate>
      <link>https://dev.to/100stacks/join-me-in-uc-berkeleys-rdi-advanced-llm-agents-mooc-50c3</link>
      <guid>https://dev.to/100stacks/join-me-in-uc-berkeleys-rdi-advanced-llm-agents-mooc-50c3</guid>
      <description>&lt;h2&gt;
  
  
  Learning the Why Behind the How
&lt;/h2&gt;

&lt;p&gt;My previous article talks to &lt;a href="https://dev.to/100stacks/agentic-ai-agents-go-mainstream-in-2025-with-coherent-persistence-g88"&gt;AI Agents going mainstream in 2025&lt;/a&gt;. Part of this series is explaining the &lt;strong&gt;&lt;em&gt;Why Behind the How&lt;/em&gt;&lt;/strong&gt;. As you progress through your AI/ML learning journey, you will need to maintain some level of understanding as to where the larger corpus of Machine Learning and Artificial Intelligence research is progressing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rdi.berkeley.edu" rel="noopener noreferrer"&gt;UC Berkeley’s RDI&lt;/a&gt; is providing such an opportunity for all of us through their &lt;a href="https://llmagents-learning.org/sp25" rel="noopener noreferrer"&gt;Advanced Large Language Model Agents MOOC&lt;/a&gt;.  Their mission:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Berkeley Center for Responsible, Decentralized Intelligence (RDI) is a new multi-disciplinary campus-wide initiative, focusing on advancing the science, technology and education of decentralization and empowering a responsible digital economy. The RDI Center currently includes faculty and students from computer science, finance/economics, and law, and will support 3 pillars: research, education, and community / entrepreneurship.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;From January to April, you'll learn from world-class researchers at the forefront of AI innovation. You will learn inference-time techniques from Xinyun Chen at Google DeepMind, reasoning strategies from Jason Weston at Meta, and agent safety and security from Dawn Song at UC Berkeley.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;By the end of this course, you'll understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Advanced inference and post-training techniques&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agentic workflow and tool use&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functional calling strategies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Techniques for mathematical reasoning and theorem proving&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Methods for code generation and verification&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inference-time techniques for reasoning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Post-training methods for reasoning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search and planning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agentic workflow, tool use, and functional calling&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LLMs for code generation and verification&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LLMs for mathematics: data curation, continual pretraining, and finetuning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LLM agents for theorem proving and autoformalization&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lesson Schedule
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.youtube.com/@BerkeleyRDI" rel="noopener noreferrer"&gt;weekly livestream&lt;/a&gt; meets on Mondays 4pm-6pm PT and 7pm-9pm ET January through April 2025.  It's not too late to join. 😄 &lt;/p&gt;

&lt;p&gt;The current schedule is provided below (clickable screenshot, I'll update with a markdown table soon):&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.amazonaws.com%2Fuploads%2Farticles%2Fnumskslek9iyltf50d8o.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fnumskslek9iyltf50d8o.png" alt="Advanced LLM Agents Schedule" width="800" height="1394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Complete Coursework for a Certificate
&lt;/h2&gt;

&lt;p&gt;You can participate through the &lt;a href="https://llmagents-learning.org/slides/llm-agents-berkeley-intro-sp25.pdf" rel="noopener noreferrer"&gt;Application Track or Research Track&lt;/a&gt;, which also requires weekly quizzes to apply for a course certificate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Applications Track:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;3-4 students per group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Focus on applied use cases of LLMs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does not necessarily need to contribute novel research&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Research Track:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;2-3 students per group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conduct novel research under the supervision of postdocs and graduate students&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Goal of publishing in a workshop or conference&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Students must apply to participate via a forthcoming Google Form&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Audit to Learn
&lt;/h2&gt;

&lt;p&gt;You can also simply follow along at your own pace with the weekly lectures and supplemental readings. You will not receive a certificate for this option.&lt;/p&gt;

&lt;p&gt;Whatever your choice, &lt;a href="https://www.linkedin.com/in/james-thompson-ai-engineer/" rel="noopener noreferrer"&gt;please let me know&lt;/a&gt; if you want to work together on the Application Track or if I can help in any way. Good luck!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
      <category>agentic</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Agentic AI Agents Go Mainstream in 2025 with Coherent Persistence</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Fri, 31 Jan 2025 22:45:38 +0000</pubDate>
      <link>https://dev.to/100stacks/agentic-ai-agents-go-mainstream-in-2025-with-coherent-persistence-g88</link>
      <guid>https://dev.to/100stacks/agentic-ai-agents-go-mainstream-in-2025-with-coherent-persistence-g88</guid>
      <description>&lt;h2&gt;
  
  
  AI Agents in 2025: The Technical Reality Behind the Hype
&lt;/h2&gt;

&lt;p&gt;AI Agents are &lt;strong&gt;&lt;em&gt;really&lt;/em&gt;&lt;/strong&gt; going mainstream in 2025, where 2023 was about chatbots and 2024 was about RAG.&lt;/p&gt;

&lt;p&gt;The most interesting thing about AI Agents in 2025 isn't what they can do - it's how they're doing it.  I've been digging into the technical architecture of modern AI Agents, and there are some fascinating patterns emerging that deserve more attention.&lt;/p&gt;

&lt;p&gt;First, let's clarify what we mean by AI Agents.  These aren't just LLMs responding to prompts anymore.  Modern agents are stateful systems that maintain context across interactions, manage their own memory, and make autonomous decisions within defined boundaries.  The key breakthrough has been in what I'm calling &lt;code&gt;coherent persistence&lt;/code&gt; - the ability to maintain consistent behavior patterns across extended interactions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Modern AI Agent Technical Stack
&lt;/h2&gt;

&lt;p&gt;Here's what's actually running under the hood of a typical modern agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ModernAIAgent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;working_memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CircularBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;long_term_memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;VectorStore&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;action_space&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConstrainedActionSpace&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;context_manager&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;HierarchicalContext&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting part is the &lt;code&gt;HierarchicalContext&lt;/code&gt;.  Unlike earlier agents that treated each interaction as a flat sequence, modern agents maintain &lt;em&gt;multiple layers of context simultaneously&lt;/em&gt;.  They're basically running a distributed state machine where different aspects of their behavior can evolve independently, where they are able to offload synchronous and asynchronous actions through AI tools or functions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Agent Architectures
&lt;/h2&gt;

&lt;p&gt;The real power comes from how these agents interact.  I've been experimenting with networks of specialized agents, each handling different aspects of complex tasks.  The breakthrough isn't in individual agent capabilities - it's in the protocols they use to coordinate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a typical agentic interaction flow:&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Feiz4vy5yozm718dvccyw.png" 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.amazonaws.com%2Fuploads%2Farticles%2Feiz4vy5yozm718dvccyw.png" alt="Agentic AI Agents" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The key insight&lt;/em&gt;: agents don't need to be general-purpose.  They're most effective when they're specialized and coordinated through &lt;strong&gt;&lt;em&gt;well-defined protocols&lt;/em&gt;&lt;/strong&gt;.  Different AI Agent frameworks vary in their implementation of the above diagram, and the results of their agents and predefined workflows may vary.&lt;/p&gt;

&lt;h2&gt;
  
  
  SQLite for AI?…Heck Yeah!
&lt;/h2&gt;

&lt;p&gt;One pattern I'm particularly excited about is using SQLite as a persistent memory store for AI agents. It's lightweight, reliable, and - most importantly - human-readable.  Here's a schema I've been using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;agent_memory&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;context_hash&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;memory_type&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;embedding&lt;/span&gt; &lt;span class="nb"&gt;BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;metadata&lt;/span&gt; &lt;span class="n"&gt;JSON&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes agent behavior debuggable and allows for interesting queries across their memory space.  Want to know how an agent's decision patterns have evolved?  Just query the database!  Of course, SQLite is not the only option for persistent memory storage.  Based on your path from experimenting to prototype to production you may make other Agentic architectural design decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;Observable Pattern&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The most successful agent implementations I've seen follow what I'm calling the &lt;code&gt;observable pattern&lt;/code&gt; - every action and decision is logged, queryable, and traceable. This isn't just about debugging; it's about understanding how agents actually operate in production.  Imagine having 100s if not 1000s of agents in production; you will need a way to measure their performance and determine their predicability.  That’s where evals are critical.&lt;/p&gt;

&lt;p&gt;Below, is a simplified class for implementing agent decision trees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@dataclass&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AgentDecision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;
    &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;
    &lt;span class="n"&gt;options_considered&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;
    &lt;span class="n"&gt;chosen_action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's Next for AI Agents in 2025?
&lt;/h2&gt;

&lt;p&gt;The most exciting developments aren't in making agents more powerful - they're in making them more predictable and maintainable.  We're seeing the emergence of design patterns that make AI agents behave more like traditional software systems: testable, debuggable, and maintainable.&lt;/p&gt;

&lt;p&gt;The future isn't in building bigger models or more complex architectures.  It's in developing better patterns for composing and coordinating specialized agents.  Think microservices, but for AI.&lt;/p&gt;

&lt;p&gt;I’ll be publishing a series of articles presenting different implementations of AI Agents, along with other articles, over the next many months.  Subscribe, keep an eye out and please let me know what you think!&lt;/p&gt;




&lt;p&gt;Article cover image courtesy of &lt;a href="https://unsplash.com/@growtika?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Growtika&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/an-abstract-image-of-a-sphere-with-dots-and-lines-nGoCBxiaRO0?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agenticagents</category>
      <category>genai</category>
    </item>
    <item>
      <title>AITX AI Hackathon - Spark Creativity</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Sat, 27 Jul 2024 04:59:22 +0000</pubDate>
      <link>https://dev.to/100stacks/aitx-ai-hackathon-spark-creativity-3b15</link>
      <guid>https://dev.to/100stacks/aitx-ai-hackathon-spark-creativity-3b15</guid>
      <description>&lt;h2&gt;
  
  
  AITX AI Hackathon Recap
&lt;/h2&gt;

&lt;p&gt;Hello and hope you’re doing well. The &lt;a href="https://dev.to/100stacks/in-austin-this-weekend-join-the-ai-community-hackathon-49h2"&gt;AITX AI Hackathon last weekend&lt;/a&gt; was an amazing event bringing together over 50 devs, aspiring ML Engineers, and enthusiasts with &lt;a href="https://austin.aitinkerers.org/p/ai-tinkerers-summer-hackathon-2024-austin-tx" rel="noopener noreferrer"&gt;Austin AI Tinkerers&lt;/a&gt; for a full day of hacking and collaborating.&lt;/p&gt;

&lt;p&gt;If you’ve never attended a hackathon, it definitely should be added to your bucket-list. It’s an energetic environment where all are welcome. Last weekend, there were over 16 teams that participated in the event.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spark Creativity
&lt;/h2&gt;

&lt;p&gt;One of the greatest benefits of the focused collaborative effort, is that it sparks creativity when working under the pressure to have something to demo by the afternoon. For me, I built a multi-modal app with speech(voice) to text (STT) and text to speech (TTS). I drew inspiration from a number of talks at last month’s &lt;a href="https://www.ai.engineer/worldsfair" rel="noopener noreferrer"&gt;AI Engineer World’s Fair&lt;/a&gt; in San Francisco, which was a follow up and much larger &lt;a href="https://www.ai.engineer/summit/2023" rel="noopener noreferrer"&gt;AI Engineer Summit&lt;/a&gt;. Both events have helped me gain a deeper understanding of the current state of affairs for AI research, startups, and established companies leading the way of Generative AI and Machine Learning, which lead me to a more productive hackathon experience.&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@anniespratt?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Annie Spratt&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/group-of-people-using-laptop-computer-QckxruozjRg?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hackathon</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>In Austin this weekend? Join the AI Community Hackathon!</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Fri, 19 Jul 2024 09:26:22 +0000</pubDate>
      <link>https://dev.to/100stacks/in-austin-this-weekend-join-the-ai-community-hackathon-49h2</link>
      <guid>https://dev.to/100stacks/in-austin-this-weekend-join-the-ai-community-hackathon-49h2</guid>
      <description>&lt;p&gt;It has been some time since I’ve dropped digital ink to canvas. I’ve been very busy over the last year diving deeper into Artificial Intelligence (AI) and Machine Learning (ML). This short update is to let you know about the &lt;a href="https://lu.ma/atx-hackathon" rel="noopener noreferrer"&gt;AI Community Hackathon in Austin, Texas&lt;/a&gt; happening this Saturday, July 20th.&lt;/p&gt;

&lt;p&gt;This will be an opportunity to explore the AI landscape in Austin Texas (aka, ATX) while also meeting other like-minded Generative AI/ML tinkerers. I’ll provide a post next week with a write-up about the event and the project I worked on.&lt;/p&gt;

&lt;p&gt;If you decide to join the fun, please let me know!&lt;/p&gt;

</description>
      <category>genai</category>
      <category>machinelearning</category>
      <category>hackathon</category>
      <category>ai</category>
    </item>
    <item>
      <title>Happy Leap Year Day, Time for a Reboot</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Fri, 01 Mar 2024 04:58:56 +0000</pubDate>
      <link>https://dev.to/100stacks/happy-leap-year-day-time-for-a-reboot-4bgd</link>
      <guid>https://dev.to/100stacks/happy-leap-year-day-time-for-a-reboot-4bgd</guid>
      <description>&lt;h2&gt;
  
  
  How have you been doing?! 🤔🤗
&lt;/h2&gt;

&lt;p&gt;It’s been awhile since I’ve posted so I figured February 29, 2024…Leap Year Day (or is it Leap Day of the Leap Year??) is a good time to reboot. I’ve taken a few months off from writing so as to mainly focus on learning more about Artificial Intelligence and Machine Learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Buzzy Hype or Reality
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openai.com/blog/chatgpt" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; was released to the world on November 30, 2022. Probably like many of us, I started to wonder if this was buzzy hype or something worth checking out. &lt;a href="https://github.blog/2022-06-21-github-copilot-is-generally-available-to-all-developers/" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt; release sparked additional interest in the &lt;a href="https://github.blog/2023-03-22-github-copilot-x-the-ai-powered-developer-experience/" rel="noopener noreferrer"&gt;AI technology&lt;/a&gt; behind how it works.&lt;/p&gt;

&lt;p&gt;Stubbing through my research, my interest was really galvanized by a podcast. 📻🤖&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.amazonaws.com%2Fuploads%2Farticles%2Fyv24yo9yvw7tdc8q4z65.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fyv24yo9yvw7tdc8q4z65.jpg" alt="Latent Space Podcast" width="383" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/swyx" rel="noopener noreferrer"&gt;Swyx&lt;/a&gt; and &lt;a href="https://twitter.com/FanaHOVA" rel="noopener noreferrer"&gt;Alessio's&lt;/a&gt; podcast &lt;a href="https://www.latent.space/podcast" rel="noopener noreferrer"&gt;Latent Space&lt;/a&gt; provides technical deep dives into AI/ML that is also newbie friendly. I highly recommend tuning in for high signal no noise as they have AI/ML researchers and entrepreneurs leading the &lt;a href="https://paperswithcode.com/sota" rel="noopener noreferrer"&gt;SOTA (state-of-the-art) research&lt;/a&gt; and burgeoning industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to next?
&lt;/h2&gt;

&lt;p&gt;I plan to write more about my journey through Artificial Intelligence and Machine Learning. In the meantime, I hope you enjoy your Happy Leap (Year) Day!&lt;/p&gt;




&lt;p&gt;Thank you to the photographer &lt;a href="https://unsplash.com/@cristofer?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Cristofer Maximilian&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/shallow-focus-photo-of-black-slr-camera-on-white-wooden-shelf-NSKP7Gwa_I0?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt; for the article cover image.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>podcast</category>
      <category>ai</category>
    </item>
    <item>
      <title>Quick Tip: Make Sure Your Work Follows You</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Fri, 01 Sep 2023 04:58:00 +0000</pubDate>
      <link>https://dev.to/100stacks/quick-tip-make-sure-your-commits-follow-you-2ja8</link>
      <guid>https://dev.to/100stacks/quick-tip-make-sure-your-commits-follow-you-2ja8</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@freewalkingtoursalzburg" rel="noopener noreferrer"&gt;Free Walking Tour Salzburg&lt;/a&gt; on &lt;a href="https://unsplash.com" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Matters
&lt;/h2&gt;

&lt;p&gt;This is a quick tip to make sure your work follows you on GitHub. You can do this by making sure the email associated with your commits is a universal GitHub email address.&lt;/p&gt;

&lt;p&gt;Why does this matter? If you ever push your company’s production code to GitHub using your company’s email address, those commits associated with that email go away when you leave the company. Rather, they go away if you ever delete the email address from your GitHub account. You would want to do this since commit messages will continue to be routed to this email address, or until your company deactivates your account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don’t Reply
&lt;/h2&gt;

&lt;p&gt;GitHub has a built-in feature to associate a no-reply email address for your commits with your GitHub account. It describes it as a way to keep your &lt;a href="https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#about-commit-email-addresses" rel="noopener noreferrer"&gt;email address private&lt;/a&gt;, &lt;a href="https://github.blog/2017-04-11-private-emails-now-more-private/" rel="noopener noreferrer"&gt;which it does&lt;/a&gt;. An additional bonus is that you can use it as a universal email address for all of your personal and professional work.&lt;/p&gt;

&lt;p&gt;This is how it will look:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;YOUR_GITHUB_USER_ACCOUNT@users.noreply.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So in &lt;a href="https://github.com/100stacks" rel="noopener noreferrer"&gt;my case&lt;/a&gt;, it looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;100stacks@users.noreply.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You would configure this from your terminal command line (the quotes are required):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"GITHUB_ACCOUNT@users.noreply.github.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify it is changed by entering the following command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it! You’ve made the change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ok, one more thing…
&lt;/h2&gt;

&lt;p&gt;If you use &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh" rel="noopener noreferrer"&gt;SSH&lt;/a&gt; to access your GitHub account, and &lt;strong&gt;YOU SHOULD&lt;/strong&gt; in any production environment 🫣, you will need to complete a few more steps which &lt;a href="https://dev.to/builditdeploy/configure-ssh-keys-for-your-github-account-3ll1"&gt;I covered in another article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lastly, Trust But Verify
&lt;/h2&gt;

&lt;p&gt;Having SSH configured is a great step towards a secure, distributed, CI/CD production environment. If you want to take additional steps for a more secure development environment, I will cover an advanced configuration that most developers do not use in a future article.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Configure SSH Keys for Your GitHub Account</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Mon, 24 Jul 2023 04:49:24 +0000</pubDate>
      <link>https://dev.to/100stacks/configure-ssh-keys-for-your-github-account-3ll1</link>
      <guid>https://dev.to/100stacks/configure-ssh-keys-for-your-github-account-3ll1</guid>
      <description>&lt;h2&gt;
  
  
  Do it before you need it
&lt;/h2&gt;

&lt;p&gt;In my previous article, I wrote about &lt;a href="https://dev.to/builditdeploy/warning-post-221o"&gt;GitHub's RSA SSH Host Key update&lt;/a&gt;. This shows that even enterprise companies that we depend on can have &lt;a href="https://www.techradar.com/news/live/aws-is-down-again-heres-all-we-know" rel="noopener noreferrer"&gt;issues that may affect our daily lives&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mistakes will happen in our profession and throughout the industry. Adapting a &lt;code&gt;security-first&lt;/code&gt; mindset for production environments is important to help minimize potential issues in the future. SSH keys provide a secure way to authenticate and establish a secure connection between your local development machine and GitHub.&lt;/p&gt;

&lt;p&gt;In this article, I will discuss how to install an SSH key on GitHub for your local developer environment. I will also explore the pros and cons of using SSH keys for your development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install SSH Key for GitHub
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before we begin, make sure you have the following prerequisites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A GitHub account&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git installed on your local machine&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Generate SSH Key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open your terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following command to generate a new SSH key:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"your_email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Return&lt;/code&gt; to accept the default file location and name for your SSH key.&lt;/p&gt;


❗
NOTE: DO NOT skip the next step of generating a passphrase.
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter a &lt;a href="https://www.ssh.com/academy/ssh/passphrase" rel="noopener noreferrer"&gt;&lt;code&gt;passphrase for your SSH key&lt;/code&gt;&lt;/a&gt;. This step is important for adding another layer of security.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Add SSH Key to SSH Agent
&lt;/h3&gt;

&lt;p&gt;Start the SSH agent by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;ssh-agent &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your SSH private key to the SSH agent by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-add ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Add SSH Key to GitHub
&lt;/h3&gt;

&lt;p&gt;Copy your SSH public key to the clipboard by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pbcopy &amp;lt; ~/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to your GitHub account settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on "SSH and GPG keys" in the left sidebar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on "New SSH key" or "Add SSH key".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give your SSH key a title and paste the copied public key into the "Key" field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on "Add SSH key" to save.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 4: Test SSH Connection
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test your SSH connection to GitHub by running the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;You should see a success message indicating that you've successfully authenticated.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  SSH Keys: Pros and Cons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Security&lt;/strong&gt;: SSH keys provide a more secure way of authentication compared to passwords. They use public-key cryptography, making it difficult for attackers to intercept and decrypt your credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Convenience&lt;/strong&gt;: Once set up, SSH keys allow for seamless authentication without the need to enter passwords repeatedly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;: SSH keys can be used in automated scripts and workflows, enabling seamless integration with various tools and services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple Accounts&lt;/strong&gt;: SSH keys allow you to manage multiple GitHub accounts easily by associating different keys with different accounts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Initial Setup&lt;/strong&gt;: Setting up SSH keys requires generating and managing key pairs, which can be a bit complex for beginners.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Key Management&lt;/strong&gt;: If your private key gets compromised, it can lead to unauthorized access. Therefore, it is crucial to protect your private key with a strong passphrase and follow best practices for key management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited Accessibility&lt;/strong&gt;: SSH keys are tied to specific machines. If you need to access your GitHub account from a different machine, you'll need to generate and add a new SSH key.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Installing an SSH key for GitHub on your local developer environment provides a secure and convenient way to authenticate and interact with your repositories. While there are some complexities involved in the initial setup and key management, the enhanced security and automation benefits make SSH keys a necessary addition to any production development workflow.&lt;/p&gt;




&lt;p&gt;Photo credit to &lt;a href="https://unsplash.com/@disruptxn?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Desola Lanre-Ologun&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/IgUR1iX0mqM?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>github</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Github Warning: Remote Host Identification Has Changed! 😳</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Mon, 17 Jul 2023 05:00:33 +0000</pubDate>
      <link>https://dev.to/100stacks/warning-post-221o</link>
      <guid>https://dev.to/100stacks/warning-post-221o</guid>
      <description>&lt;h2&gt;
  
  
  I started seeing this warning
&lt;/h2&gt;

&lt;p&gt;A few months back after coming back from the weekend, I started seeing the below warning below in the terminal. I was working on a &lt;a href="https://github.com/100stacks" rel="noopener noreferrer"&gt;GitHub project&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Host key for github.com has changed and you have requested strict checking.
Host key verification failed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was an odd change, as I was working on the project a few days prior without issue. This error occurred whenever I tried to push updates to the remote repository on GitHub.&lt;/p&gt;

&lt;p&gt;This was the somewhat cryptic warning that stood out.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🛑 The fingerprint for the RSA key sent by the remote host is
SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s.

Please contact your system administrator.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It took a few minutes of troubleshooting to finally realize the phrases &lt;code&gt;remote host&lt;/code&gt; and &lt;code&gt;please contact your system administrator&lt;/code&gt; where important here. After a bit of &lt;a href="https://duckduckgo.com/spread" rel="noopener noreferrer"&gt;searching&lt;/a&gt;, I came across this article for the potentially comprised GitHub RSA SSH Key - &lt;a href="https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/" rel="noopener noreferrer"&gt;https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/&lt;/a&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2F8r5qtmtoiu93rfj6kov5.png" 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.amazonaws.com%2Fuploads%2Farticles%2F8r5qtmtoiu93rfj6kov5.png" alt="github article" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was surprised by the unexpected non-warning, though after reading the article I could see why this happened. Next week, I'll get into why this was such a big deal, especially for automated CI/CD pipelines and distributed teams.&lt;/p&gt;




&lt;p&gt;Photo credit to &lt;a href="https://unsplash.com/@vidi_drone?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Vidi Drone&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/4hIauLthNws?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>security</category>
      <category>cicd</category>
      <category>devops</category>
    </item>
    <item>
      <title>Enable 2FA MFA For Your Build Process</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Mon, 10 Jul 2023 04:56:16 +0000</pubDate>
      <link>https://dev.to/100stacks/enable-2fa-mfa-in-your-build-process-4eio</link>
      <guid>https://dev.to/100stacks/enable-2fa-mfa-in-your-build-process-4eio</guid>
      <description>&lt;h2&gt;
  
  
  What is 2FA/MFA?
&lt;/h2&gt;

&lt;p&gt;For modern digital life, it’s hard to avoid &lt;a href="https://www.investopedia.com/terms/t/twofactor-authentication-2fa.asp" rel="noopener noreferrer"&gt;Two-Factor Authentication (2FA)&lt;/a&gt;/&lt;a href="https://en.wikipedia.org/wiki/Multi-factor_authentication" rel="noopener noreferrer"&gt;Multi-Factor Authentication (MFA)&lt;/a&gt;. You may see the term 2FA and/or MFA though both apply to authentication, which is the act of verifying a user can access a website, application, or service.&lt;/p&gt;

&lt;p&gt;At minimum you need a username or email as sign in credentials, and you need something else:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;you (biometrics)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;thing (hard or soft token)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and, something you know (password).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most common MFA is when a user logs into an app they are prompted to check their email or SMS for a code. This code should be a &lt;a href="https://www.twilio.com/blog/what-does-otp-mean" rel="noopener noreferrer"&gt;OTP - one-time password/passcode&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use 2FA/MFA in your build process
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First are you using GitHub, GitLab, BitBucket to host your code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable 2FA/MFA on your account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable &lt;strong&gt;&lt;em&gt;verified commits&lt;/em&gt;&lt;/strong&gt; for your developer laptop/environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Verified Commits
&lt;/h2&gt;

&lt;p&gt;Next week, I’ll show you how to enable verified commits for your developer environment…because even &lt;a href="https://www.bleepingcomputer.com/news/security/github-notifies-owners-of-private-repos-stolen-using-oauth-tokens/" rel="noopener noreferrer"&gt;Big Tech&lt;/a&gt; makes mistakes. 😳&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@impelling?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Ed Hardie&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/RMIsZlv8qv4?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cicd</category>
      <category>github</category>
      <category>developers</category>
    </item>
    <item>
      <title>Next Steps</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Sun, 02 Jul 2023 20:39:26 +0000</pubDate>
      <link>https://dev.to/100stacks/next-steps-1cm7</link>
      <guid>https://dev.to/100stacks/next-steps-1cm7</guid>
      <description>&lt;h2&gt;
  
  
  How I got here
&lt;/h2&gt;

&lt;p&gt;I recently completed the &lt;a href="https://dev.to/builditdeploy/1password-hashnode-hackathon-2023-published-on-github-deployed-to-netlify-4pjl"&gt;hackathon&lt;/a&gt;, and tracked my progress over a &lt;a href="https://dev.to/builditdeploy/series/23538"&gt;series of articles&lt;/a&gt;. This also marked the start of my journey on DEV, as I am evaluating different writing platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to next
&lt;/h2&gt;

&lt;p&gt;In a previous article, I talked about my typical &lt;a href="https://dev.to/builditdeploy/my-default-environment-netlify-vite-react-3pga"&gt;go-to default environment&lt;/a&gt;. In reality, there are multiple considerations that you and your team would need to address in a production environment. In subsequent articles, I will dive more into the technical aspects, with step-by-step tutorials, of building and deploying an application.&lt;/p&gt;




&lt;p&gt;Photo courtesy of &lt;a href="https://unsplash.com/@createandbloom?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Photo Boards&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/CpyfJrr-_ZA?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Checking In: Writing for a Week</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Sat, 01 Jul 2023 19:04:20 +0000</pubDate>
      <link>https://dev.to/100stacks/checking-in-writing-for-a-week-2358</link>
      <guid>https://dev.to/100stacks/checking-in-writing-for-a-week-2358</guid>
      <description>&lt;h2&gt;
  
  
  What's been happening?
&lt;/h2&gt;

&lt;p&gt;I've been writing for about a week, since submitting a project to the &lt;a href="https://dev.to/builditdeploy/1password-hashnode-hackathon-2023-published-on-github-deployed-to-netlify-4pjl"&gt;1Password + Hashnode Hackthon&lt;/a&gt;. I was able to write a series of articles that has helped me to synthesize different developer experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping it going
&lt;/h2&gt;

&lt;p&gt;TBH, it's been enjoyable to start taking thoughts and putting them down on paper...well digital paper. I'm working through a few ideas to keep the topics flowing.&lt;/p&gt;




&lt;p&gt;Photo courtesy of &lt;a href="https://unsplash.com/@nickmorrison?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Nick Morrison&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/FHnnjk1Yj7Y?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netlify</category>
      <category>writing</category>
      <category>softwareengineering</category>
      <category>javascript</category>
    </item>
    <item>
      <title>1Password + Hashnode Hackathon 2023: Published on GitHub Deployed to Netlify</title>
      <dc:creator>James Thompson</dc:creator>
      <pubDate>Sat, 01 Jul 2023 01:07:25 +0000</pubDate>
      <link>https://dev.to/100stacks/1password-hashnode-hackathon-2023-published-on-github-deployed-to-netlify-4pjl</link>
      <guid>https://dev.to/100stacks/1password-hashnode-hackathon-2023-published-on-github-deployed-to-netlify-4pjl</guid>
      <description>&lt;h2&gt;
  
  
  Finishing up
&lt;/h2&gt;

&lt;p&gt;This has been a great week of learning for me @builditdeploy. &lt;br&gt;
 I started writing on &lt;a href="https://dev.to/builditdeploy"&gt;Dev&lt;/a&gt;, and worked through deploying a basic app for the &lt;a href="https://hashnode.com/hackathons/1password?source=hackathon-feed-widget" rel="noopener noreferrer"&gt;1Password + Passage + Hashnode Hackathon 2023&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I published my work on &lt;a href="https://github.com/100stacks/1password-passage-hashnode-hackathon" rel="noopener noreferrer"&gt;Github at 100stacks&lt;/a&gt; and deployed the app to &lt;a href="https://1password-passage-hashnode.netlify.app/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;I'll take what I learned from this week and expand it into other projects. Thank you for watching! 💻👀&lt;/p&gt;




&lt;p&gt;Photo courtesy of &lt;a href="https://unsplash.com/@lg17?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Lance Grandahl&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/OxXmASDLFjY?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netlify</category>
      <category>vite</category>
      <category>react</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
