<?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: Marco Lamina</title>
    <description>The latest articles on DEV Community by Marco Lamina (@mlamina).</description>
    <link>https://dev.to/mlamina</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%2F1364004%2F7962d848-85ae-43c2-906e-120115d294a4.jpeg</url>
      <title>DEV Community: Marco Lamina</title>
      <link>https://dev.to/mlamina</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mlamina"/>
    <language>en</language>
    <item>
      <title>Why pinning your dependency versions matters</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Tue, 12 Nov 2024 21:29:32 +0000</pubDate>
      <link>https://dev.to/mlamina/why-pinning-your-dependency-versions-matters-n24</link>
      <guid>https://dev.to/mlamina/why-pinning-your-dependency-versions-matters-n24</guid>
      <description>&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%2Frx8v3ba5lbmtpk8rvmsl.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%2Frx8v3ba5lbmtpk8rvmsl.png" alt="500 error after crash" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is what my potential first customers saw when I launched the first email campaign for my &lt;a href="https://arcane.engineer/studio/" rel="noopener noreferrer"&gt;latest project&lt;/a&gt;, all due to a crash that was not only unpredictable, but entirely avoidable. And it could happen to you too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened
&lt;/h2&gt;

&lt;p&gt;I have Postgres running as a Kubernetes deployment. In my &lt;code&gt;values.yaml&lt;/code&gt;, I had set the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;postgresql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tag&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It worked perfectly for months until this morning, when I woke up to my database in a crashloop and my service completely unavailable. Why? It turns out K8s had to restart the PostgreSQL pod, which then loaded the latest &lt;code&gt;15.*&lt;/code&gt; version of the Docker image. Unfortunately for me, that image &lt;a href="https://github.com/bitnami/containers/issues/74788" rel="noopener noreferrer"&gt;was buggy&lt;/a&gt; and sent my database down to into oblivion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The impact
&lt;/h2&gt;

&lt;p&gt;Half of the recipients of my email campaign opened the link and were greeted with a 500 error before I could identify and fix the issue. Apart from the fact that it is embarrassing, I probably lost a few potential customers due to this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why you should care and what you can do
&lt;/h2&gt;

&lt;p&gt;Pin. Your. Dependencies.&lt;/p&gt;

&lt;p&gt;The main thing here is that you don't want any devops or dependency management systems to have control over which versions are pulled into your system. No matter if it's Docker, Python, Maven, Gradle, NPM or whatever system you are using to manage your dependencies - Specify all versions down to the &lt;code&gt;PATCH&lt;/code&gt; version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Semantic versioning
&lt;/h3&gt;

&lt;p&gt;If you don't know what &lt;a href="https://semver.org/" rel="noopener noreferrer"&gt;semantic versioning&lt;/a&gt; is, I suggest you read up on it. In a nutshell, it is a standard/guideline for defining version numbers and how to increase them:&lt;/p&gt;

&lt;p&gt;Given a version number &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;, increment the:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;MAJOR&lt;/code&gt; version when you make incompatible API changes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MINOR&lt;/code&gt; version when you add functionality in a backward compatible manner&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PATCH&lt;/code&gt; version when you make backward compatible bug fixes
Additional labels for pre-release and build metadata are available as extensions to the &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt; format.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  "Pinning" and why it matters
&lt;/h3&gt;

&lt;p&gt;In my case, by setting the Docker image version to &lt;code&gt;15&lt;/code&gt;, I gave Kubernetes the freedom to download any minor or patch version of it - at any time, without warning. By "pinning" the version - in other words specifying &lt;code&gt;MAJOR&lt;/code&gt;, &lt;code&gt;MINOR&lt;/code&gt; and &lt;code&gt;PATCH&lt;/code&gt; version explicitly - I regained control and the ability to update the image version on my own terms and test it thoroughly in my setup.&lt;/p&gt;

&lt;p&gt;To summarize, this is bad:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;postgresql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Will potentially crash your application at any point&lt;/span&gt;
    &lt;span class="na"&gt;tag&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stay safe by only allowing the latest &lt;code&gt;PATCH&lt;/code&gt; version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;postgresql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# This will pull the latest 15.7.x patch version&lt;/span&gt;
    &lt;span class="na"&gt;tag&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15.7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Even with 15 years of experience, rookie mistakes creep in. Not pinning your dependencies is an easy mistake to make, but can have dramatic consequences for your product and your company. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ironically&lt;/strong&gt;, the product I was about to launch could have actually helped me catch this issue before merging it into production 🤦‍♂️ Check out &lt;a href="https://arcane.engineer/studio/pull-request-manager/" rel="noopener noreferrer"&gt;PR Manager&lt;/a&gt;, where you can generate reviews for your code changes before merging them. It allows you to catch issues like the one in this post and lets you fix them with the click of a button.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>bestpractices</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Let me automate your Github project to showcase my platform!</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Tue, 10 Sep 2024 00:30:24 +0000</pubDate>
      <link>https://dev.to/mlamina/ill-automate-your-github-project-for-free-to-showcase-my-platform-1mi8</link>
      <guid>https://dev.to/mlamina/ill-automate-your-github-project-for-free-to-showcase-my-platform-1mi8</guid>
      <description>&lt;p&gt;I'm working on a &lt;a href="https://www.pr-pilot.ai" rel="noopener noreferrer"&gt;platform&lt;/a&gt; that enables developers to write powerful AI automations for their Github repositories.&lt;/p&gt;

&lt;p&gt;To spread the word and showcase the platform's features, I'm looking for open-source Github projects to automate. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Send me your project&lt;/strong&gt; and I will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork your repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add &lt;a href="https://docs.pr-pilot.ai/user_guide.html#knowledge-give-hints-for-consistent-high-quality-results" rel="noopener noreferrer"&gt;knowledge&lt;/a&gt;&lt;/strong&gt; for the AI agent&lt;/li&gt;
&lt;li&gt;Write project-specific &lt;strong&gt;&lt;a href="https://docs.pr-pilot.ai/user_guide.html#skills-smart-mini-programs-for-your-project" rel="noopener noreferrer"&gt;skills&lt;/a&gt; for the agent to use&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Open a PR with my changes for you to &lt;strong&gt;review and discuss&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do you have a project that could benefit from AI automation? Let me know in the comments 👇&lt;/p&gt;

</description>
      <category>powerfuldevs</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>github</category>
    </item>
    <item>
      <title>Mastering PR Descriptions: Make Your PRs Stand Out</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Sat, 07 Sep 2024 00:02:21 +0000</pubDate>
      <link>https://dev.to/pr-pilot/mastering-pr-descriptions-make-your-prs-stand-out-efe</link>
      <guid>https://dev.to/pr-pilot/mastering-pr-descriptions-make-your-prs-stand-out-efe</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Learn how to generate &lt;strong&gt;beautiful and comprehensive descriptions&lt;/strong&gt;  effortlessly for even the largest pull requests in minutes using &lt;strong&gt;&lt;a href="https://www.pr-pilot.ai" rel="noopener noreferrer"&gt;PR Pilot&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Good PR descriptions are crucial&lt;/strong&gt; for effective collaboration and project management. But they can be &lt;strong&gt;time-consuming and tedious to write&lt;/strong&gt;. Enter &lt;strong&gt;&lt;a href="https://www.pr-pilot.ai" rel="noopener noreferrer"&gt;PR Pilot&lt;/a&gt;&lt;/strong&gt; – your new best friend for creating consistent, clear, and beautiful PR descriptions effortlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it will look like
&lt;/h2&gt;

&lt;p&gt;Here is a &lt;a href="https://github.com/PR-Pilot-AI/pr-pilot/pull/210" rel="noopener noreferrer"&gt;real-life example&lt;/a&gt; with &lt;strong&gt;14 commits and 19 changed files&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%2F373ehij9konsrpva6thi.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%2F373ehij9konsrpva6thi.png" alt="Image description" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The title and description were &lt;strong&gt;generated by PR Pilot in seconds&lt;/strong&gt;. The PR description is clear, concise, and informative, making it easy for reviewers to understand the changes made.&lt;/p&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Benefits of Using Generative AI for PR Descriptions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;📝 &lt;strong&gt;Consistency&lt;/strong&gt;: Ensures that all your PR descriptions follow a consistent format by storing the instructions as part of your code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;⏱️ &lt;strong&gt;Time-saving&lt;/strong&gt;: No more spending hours crafting the perfect PR description. PR Pilot does it for you in seconds!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🎨 &lt;strong&gt;Customizable&lt;/strong&gt;: Use our customizable &lt;a href="https://github.com/PR-Pilot-AI/core/blob/main/prompts/generate-pr-description.md.jinja2" rel="noopener noreferrer"&gt;prompt template&lt;/a&gt; to tailor PR descriptions to your project's specific needs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Ft0e3wdq2a64m3sp2c6wq.gif" 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%2Ft0e3wdq2a64m3sp2c6wq.gif" alt="Satisfied Meme" width="164" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it Works
&lt;/h2&gt;

&lt;p&gt;It's dead simple. All you do is run &lt;code&gt;pilot run pr-description&lt;/code&gt; and:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent asks you for the PR number&lt;/li&gt;
&lt;li&gt;It will read the PR description, comments, commits and code changes&lt;/li&gt;
&lt;li&gt;It will generate a new PR description based on your preferences&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  See customizable prompt used for generating the description
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;I've made some changes and opened a new PR: #{{ env('PR_NUMBER') }}.

I need a PR title and a description that summarizes these changes in short, concise bullet points.
The PR description will also be used as merge commit message, so it should be clear and informative.

Use the following guidelines:

&lt;span class="gu"&gt;## PR Title&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Start with a verb in the imperative mood (e.g., "Add", "Fix", "Update").
&lt;span class="p"&gt;-&lt;/span&gt; Put an emoji at the beginning that reflects the nature of the changes

&lt;span class="gu"&gt;## PR Body&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; At the very top, provide short paragraph summarizing the changes and their impact.
&lt;span class="p"&gt;-&lt;/span&gt; Below, list the changes made in bullet points.
&lt;span class="p"&gt;-&lt;/span&gt; Use bold text instead of sections/sub-sections to separate the bullet points into topics
&lt;span class="p"&gt;-&lt;/span&gt; There should be no more than 3-4 topics
&lt;span class="p"&gt;-&lt;/span&gt; Use the present tense and the active voice.
&lt;span class="p"&gt;-&lt;/span&gt; Be specific - Include names, paths, identifiers, names, versions, etc
&lt;span class="p"&gt;-&lt;/span&gt; Where possible, make file names/paths clickable using Markdown links. Use this format for the URL: &lt;span class="sb"&gt;`https://github.com/&amp;lt;github_project&amp;gt;/blob/&amp;lt;pr_branch&amp;gt;/&amp;lt;file_path&amp;gt;`


&lt;/span&gt;&lt;span class="gh"&gt;# Your task&lt;/span&gt;
Edit PR #{{ env('PR_NUMBER') }} title and description to reflect the changes made in this PR.
Respond only with a link to the PR.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;p&gt;Getting started with PR Pilot is a breeze! Follow these simple steps:&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Install the CLI&lt;/strong&gt; via Homebrew&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap pr-pilot-ai/homebrew-tap
brew &lt;span class="nb"&gt;install &lt;/span&gt;pr-pilot-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;2️⃣ &lt;strong&gt;Grab the prompt&lt;/strong&gt;: Download the &lt;a href="https://github.com/PR-Pilot-AI/core/blob/main/prompts/generate-pr-description.md.jinja2" rel="noopener noreferrer"&gt;prompt template&lt;/a&gt; from our core repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pilot grab commands pr-pilot-ai/core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;p&gt;3️⃣ &lt;strong&gt;Customize the template&lt;/strong&gt;: Adjust the downloaded prompt template to suit your project's needs.&lt;/p&gt;

&lt;p&gt;4️⃣ &lt;strong&gt;Run the prompt&lt;/strong&gt;: Generate a PR description with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pilot run pr-description
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.pr-pilot.ai/user_guide.html" rel="noopener noreferrer"&gt;User Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PR-Pilot-AI/demo" rel="noopener noreferrer"&gt;Demo Repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ready to transform your PR descriptions? 🚀 Give PR Pilot a try today and experience the difference! Share your experiences and tips in the comments below. Let's make PR descriptions beautiful together! 💬✨&lt;/p&gt;




</description>
      <category>github</category>
      <category>ai</category>
      <category>productivity</category>
      <category>cli</category>
    </item>
    <item>
      <title>How I ended up building my own AI Dev Assistant from scratch</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Fri, 06 Sep 2024 04:31:47 +0000</pubDate>
      <link>https://dev.to/mlamina/how-i-ended-up-building-my-own-ai-dev-assistant-from-scratch-3018</link>
      <guid>https://dev.to/mlamina/how-i-ended-up-building-my-own-ai-dev-assistant-from-scratch-3018</guid>
      <description>&lt;h3&gt;
  
  
  Remember the first time you saw an LLM write code?
&lt;/h3&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%2Fotrr6z0y669hq7uq9s5z.gif" 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%2Fotrr6z0y669hq7uq9s5z.gif" alt="Whoa" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Yeah, me too 😲
&lt;/h3&gt;

&lt;p&gt;When I learned &lt;strong&gt;I could use this technology to build things&lt;/strong&gt;, I got pulled into an endless stream of ideas and side projects - The kind of excitement I hadn’t felt in years. I started experimenting with small scripts and had tasted blood. &lt;strong&gt;I wanted more&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  TLDR;
&lt;/h2&gt;

&lt;p&gt;This is the story of how I built &lt;a href="https://www.pr-pilot.ai" rel="noopener noreferrer"&gt;PR Pilot&lt;/a&gt;, a virtual agent designed to assist development teams in their daily work by interacting with code repositories, wikis, chat platforms, and ticketing systems. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9ddxwwGtmfk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Gap&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The LLM-based tools at the time (mid 2023?) were powerful, but not tailored to my workflow. Sure, ChatGPT could answer questions, and GitHub CoPilot could generate code. But &lt;strong&gt;I needed something that was more integrated&lt;/strong&gt;, something that understood not just my code but also my tools and daily routines. Something I could control from the CLI and with config files. &lt;strong&gt;Something that speaks my language&lt;/strong&gt;. 🖥️&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Turning Point&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In my day job, I am the technical lead for a team with 8 engineers and my little side project started to change how I viewed our workflows at the company. &lt;strong&gt;I saw inefficiencies everywhere&lt;/strong&gt; — especially in large teams. Big orgs (we are but one of many teams) are &lt;strong&gt;a maze of systems and isolated knowledge pools&lt;/strong&gt; that we all have to navigate to get our jobs done.&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%2F7j89typdjgcgu0chtfhm.gif" 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%2F7j89typdjgcgu0chtfhm.gif" alt="This is fine" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have source control in one place, ticketing systems in another, CI/CD pipelines elsewhere, and internal knowledge &lt;strong&gt;scattered across multiple platforms&lt;/strong&gt;. On top of that, &lt;strong&gt;each team member has unique needs&lt;/strong&gt;. QA engineers, DevOps, junior devs, senior devs — everyone has their own way of working and different environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Shaping PR Pilot for Real-World Teams&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To be useful for the average team in my organization, &lt;strong&gt;the ideal assistant would have to navigate these complexities seamlessly&lt;/strong&gt;. It couldn’t just generate code or assist with a single task — it had to connect the dots across different roles and workflows. It needed to act as &lt;strong&gt;a bridge between siloed information and team-specific processes&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%2F18576byfhddvo8po73zf.gif" 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%2F18576byfhddvo8po73zf.gif" alt="Math Meme" width="498" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This realization shaped PR Pilot into what it is today: &lt;strong&gt;a tool for developers, QA engineers, DevOps, and everyone in between&lt;/strong&gt;. It’s designed to integrate with your specific workflows and help you get work done faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Showcase: Agent-Driven Bug Reporting &amp;amp; Analysis
&lt;/h2&gt;

&lt;p&gt;Let's look at a simple scenario from may daily work: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We &lt;strong&gt;collect&lt;/strong&gt; errors / stack traces in &lt;a href="https://sentry.io" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;To get them fixed, bug &lt;strong&gt;report&lt;/strong&gt; tickets need to be created&lt;/li&gt;
&lt;li&gt;The tickets need to have a specific &lt;strong&gt;format&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;The QA team wants to be &lt;strong&gt;notified on Slack&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;This would involve &lt;strong&gt;me juggling 3 different systems&lt;/strong&gt;, switching between apps and browser tabs, etc... Lots of context switching, remembering, copy/pasting information. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;With the &lt;strong&gt;&lt;a href="https://docs.pr-pilot.ai/user_guide.html#the-basics" rel="noopener noreferrer"&gt;CLI&lt;/a&gt;&lt;/strong&gt;, I can run this scenario in a few minutes without leaving my terminal:&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%2F1790riipanze9wsbjzol.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%2F1790riipanze9wsbjzol.png" alt="Screen capture of terminal" width="773" height="885"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤩 How amazing is that! Here is a breakdown:&lt;/p&gt;

&lt;h4&gt;
  
  
  Integrations
&lt;/h4&gt;

&lt;p&gt;You can see that the agent interacted with Sentry, Github and Slack intuitively. PR Pilot &lt;a href="https://docs.pr-pilot.ai/integrations.html" rel="noopener noreferrer"&gt;makes it super easy&lt;/a&gt; to connect the services and tools you use every day.&lt;/p&gt;

&lt;h4&gt;
  
  
  Knowledge
&lt;/h4&gt;

&lt;p&gt;This part almost seems like magic:&lt;br&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%2Frg6nrqpk5srt1gug6hqz.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%2Frg6nrqpk5srt1gug6hqz.png" alt="Knowledge retrieval" width="613" height="169"&gt;&lt;/a&gt;&lt;br&gt;
However, it knows where to look because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I've &lt;a href="https://docs.pr-pilot.ai/integrations.html#sentry" rel="noopener noreferrer"&gt;connected&lt;/a&gt; my Sentry account to PR Pilot&lt;/li&gt;
&lt;li&gt;I &lt;a href="https://github.com/PR-Pilot-AI/pr-pilot/blob/b0eafe8b2e198b40216ce31062be682488dc98aa/.pilot-hints.md?plain=1#L7" rel="noopener noreferrer"&gt;taught it&lt;/a&gt; which project that particular Github repo belongs to&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's as simple as dropping a Markdown file into your project and the agent will use that knowledge to run your tasks (&lt;a href="https://docs.pr-pilot.ai/user_guide.html#give-hints-for-consistent-high-quality-results" rel="noopener noreferrer"&gt;Learn More&lt;/a&gt;). &lt;/p&gt;

&lt;h4&gt;
  
  
  Skills
&lt;/h4&gt;

&lt;p&gt;You may have noticed the "Bug report skill":&lt;br&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%2Ff3fkc9sk03xt9fs9e1bl.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%2Ff3fkc9sk03xt9fs9e1bl.png" alt="Invoking a skill" width="545" height="145"&gt;&lt;/a&gt;&lt;br&gt;
PR Pilot also &lt;strong&gt;makes it easy to codify repetitive workflows&lt;/strong&gt; by dropping a &lt;a href="https://github.com/PR-Pilot-AI/pr-pilot/blob/b0eafe8b2e198b40216ce31062be682488dc98aa/.pilot-skills.yaml#L16" rel="noopener noreferrer"&gt;YAML file&lt;/a&gt; into your project. These skills are automatically picked up and used by the agent, so when I say &lt;code&gt;Report this as a bug&lt;/code&gt;, it will automatically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the relevant code&lt;/li&gt;
&lt;li&gt;Create a new Github issue and write a report according to &lt;a href="https://github.com/PR-Pilot-AI/pr-pilot/blob/b0eafe8b2e198b40216ce31062be682488dc98aa/.pilot-skills.yaml#L26" rel="noopener noreferrer"&gt;my preferences for structure and formatting&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Post a message with a link to the issue into &lt;code&gt;#qa-team&lt;/code&gt; on Slack&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Knowledge + Skills + Integrations = Magic
&lt;/h4&gt;

&lt;p&gt;Put it all together and what you get is an assistant that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has &lt;strong&gt;intuitive&lt;/strong&gt;, developer-friendly interfaces&lt;/li&gt;
&lt;li&gt;Is controlled &lt;strong&gt;with config files&lt;/strong&gt; in my repositories&lt;/li&gt;
&lt;li&gt;Can autonomously navigate the services I use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Has domain knowledge&lt;/strong&gt; of my project(s) and organization(s)&lt;/li&gt;
&lt;li&gt;Can automate some of my daily work &lt;strong&gt;efficiently and with confidence&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, it is an assistant that I can trust to produce &lt;strong&gt;predictable results and behavior&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why I Built PR Pilot&lt;/strong&gt;
&lt;/h2&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%2Fz79wce1p6fje25x66m8u.gif" 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%2Fz79wce1p6fje25x66m8u.gif" alt="Hacker Meme" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PR Pilot is now an AI-powered assistant that integrates with GitHub, ticketing systems, and chat platforms to &lt;strong&gt;streamline workflows&lt;/strong&gt; and &lt;strong&gt;reduce context switching&lt;/strong&gt;. My mission? To help developers &lt;strong&gt;stay in the flow&lt;/strong&gt; by providing the right assistance at the right time with minimal friction. 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn More
&lt;/h3&gt;

&lt;p&gt;Of course there's a lot more to discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out our &lt;a href="https://github.com/PR-Pilot-AI/demo?tab=readme-ov-file" rel="noopener noreferrer"&gt;demo repository&lt;/a&gt; with more show cases&lt;/li&gt;
&lt;li&gt;There's also a &lt;a href="https://docs.pr-pilot.ai/user_guide.html#using-the-rest-api" rel="noopener noreferrer"&gt;REST API&lt;/a&gt; and a &lt;a href="https://docs.pr-pilot.ai/user_guide.html#python-sdk" rel="noopener noreferrer"&gt;Python SDK&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;You can build powerful, &lt;a href="https://github.com/PR-Pilot-AI/pr-pilot-cli/tree/main/prompts" rel="noopener noreferrer"&gt;dynamic prompts with Jinja templates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;We have a comprehensive &lt;a href="https://docs.pr-pilot.ai/user_guide.html" rel="noopener noreferrer"&gt;User Guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.pr-pilot.ai" rel="noopener noreferrer"&gt;Automate your own project!&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It’s been a wild ride from hacking together scripts to launching a full-fledged product. If you’ve ever felt bogged down by &lt;strong&gt;manual tasks&lt;/strong&gt; or that &lt;strong&gt;context switching&lt;/strong&gt; is killing your productivity, I’d love to hear your thoughts or ideas. Maybe PR Pilot can help make your dev life smoother too. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>lowcode</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🎧 Code Noise: The Ultimate Background Noise Generator for Programmers</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Fri, 30 Aug 2024 00:31:55 +0000</pubDate>
      <link>https://dev.to/mlamina/code-noise-the-ultimate-background-noise-generator-for-programmers-3l0n</link>
      <guid>https://dev.to/mlamina/code-noise-the-ultimate-background-noise-generator-for-programmers-3l0n</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I'm super excited to share a project I've been working on: &lt;a href="https://code-noise.vercel.app" rel="noopener noreferrer"&gt;&lt;strong&gt;Code Noise&lt;/strong&gt;&lt;/a&gt;! 🌟&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;I'm very &lt;strong&gt;sound sensitive&lt;/strong&gt; and often find music too distracting while coding. I wanted a tool where I could create the &lt;strong&gt;perfect background noise&lt;/strong&gt; to help me focus. That's how &lt;strong&gt;Code Noise&lt;/strong&gt; was born! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Code Noise?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Code Noise&lt;/strong&gt; is a web app that allows you to generate and play various types of background noise, customizable with sliders and knobs. Whether you prefer &lt;strong&gt;pink, white, or brown noise&lt;/strong&gt;, or even a select number of &lt;strong&gt;YouTube videos for ambience&lt;/strong&gt;, Code Noise has got you covered! 🎶&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free, in browser&lt;/strong&gt;: No need to download anything!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Noise Types&lt;/strong&gt;: Choose from pink, white, and brown noise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add Ambience&lt;/strong&gt;: Add sounds of nature from a select number of YouTube videos for that perfect background vibe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Tune&lt;/strong&gt;: Mix all sounds together using intuitive sliders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share&lt;/strong&gt;: Easily share your perfect noise settings with others.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;The app is built using &lt;strong&gt;Python &amp;amp; FastAPI&lt;/strong&gt; for the backend, with &lt;strong&gt;Jinja2 templates&lt;/strong&gt; for rendering. We use &lt;strong&gt;BulmaCSS&lt;/strong&gt; for styling and &lt;strong&gt;jQuery&lt;/strong&gt; for JavaScript functionality. &lt;/p&gt;

&lt;h2&gt;
  
  
  Built in one day
&lt;/h2&gt;

&lt;p&gt;I built this in less than a day using the &lt;a href="https://github.com/PR-Pilot-AI/rapid-prototyper" rel="noopener noreferrer"&gt;Rapid Prototyping Template&lt;/a&gt; I've been working on. &lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out!
&lt;/h2&gt;

&lt;p&gt;Ready to create your perfect coding environment? Check out &lt;a href="https://code-noise.vercel.app" rel="noopener noreferrer"&gt;&lt;strong&gt;Code Noise&lt;/strong&gt;&lt;/a&gt; and let me know what you think! Your feedback is invaluable and will help make the app even better. 💬&lt;/p&gt;

&lt;p&gt;Feel free to reach out to me if you have any questions or suggestions. Let's make coding a more pleasant experience together! 🌈&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>mentalhealth</category>
      <category>powerfuldevs</category>
      <category>programming</category>
    </item>
    <item>
      <title>My first post - Hi, dev.to</title>
      <dc:creator>Marco Lamina</dc:creator>
      <pubDate>Fri, 30 Aug 2024 00:09:01 +0000</pubDate>
      <link>https://dev.to/mlamina/my-first-post-hi-devto-1b3i</link>
      <guid>https://dev.to/mlamina/my-first-post-hi-devto-1b3i</guid>
      <description>&lt;p&gt;👋 Hi dev.to,&lt;/p&gt;

&lt;p&gt;After many years, I've grown tired of working for other people and started a new journey towards financial independence last year. This community has been recommended to me, so I thought I'd say hi 🙂&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌍 Born in Berlin, moved to San Francisco in 2016&lt;/li&gt;
&lt;li&gt;💻 &lt;a href="https://www.marcolamina.me/software-development" rel="noopener noreferrer"&gt;Coder&lt;/a&gt;, 🎵 &lt;a href="https://www.marcolamina.me/music" rel="noopener noreferrer"&gt;musician&lt;/a&gt;, 🥋 &lt;a href="https://www.marcolamina.me/martial-arts" rel="noopener noreferrer"&gt;martial artist&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🏢 Currently working for a very large software company&lt;/li&gt;
&lt;li&gt;🚀 Working on my own &lt;a href="https://www.pr-pilot.ai/" rel="noopener noreferrer"&gt;AI software&lt;/a&gt; to gain financial independence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to get in touch with other like-minded folks in this community!&lt;br&gt;&lt;br&gt;
📚 Which blogs do you recommend?&lt;br&gt;&lt;br&gt;
📝 What would you like me to write about?&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>opensource</category>
      <category>powerfuldevs</category>
      <category>devto</category>
    </item>
  </channel>
</rss>
