<?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: Emilio Castro</title>
    <description>The latest articles on DEV Community by Emilio Castro (@scrambledbits).</description>
    <link>https://dev.to/scrambledbits</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%2F1347088%2F4dab47b0-2c3b-4d44-8c8a-d279dd3a0922.jpeg</url>
      <title>DEV Community: Emilio Castro</title>
      <link>https://dev.to/scrambledbits</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scrambledbits"/>
    <language>en</language>
    <item>
      <title>This is just amazing, a great tool to actually understand how infrastructure works for different systems.</title>
      <dc:creator>Emilio Castro</dc:creator>
      <pubDate>Mon, 09 Nov 2026 06:49:43 +0000</pubDate>
      <link>https://dev.to/scrambledbits/this-is-just-amazing-a-great-tool-to-actually-understand-how-infrastructure-works-for-different-3e7d</link>
      <guid>https://dev.to/scrambledbits/this-is-just-amazing-a-great-tool-to-actually-understand-how-infrastructure-works-for-different-3e7d</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og" class="crayons-story__hidden-navigation-link"&gt;I Built a Visual System Design Reference — Switch Any Architecture Between AWS, Azure, GCP &amp;amp; Open Source&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Born from frustration with scattered notes&lt;/p&gt;

&lt;/a&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 href="/amananandrai" class="crayons-avatar  crayons-avatar--l  "&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%2F355422%2Fd9bae3e1-e185-4e93-a850-58be1b042695.png" alt="amananandrai profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/amananandrai" class="crayons-story__secondary fw-medium m:hidden"&gt;
              amananandrai
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                amananandrai
                
                
              
              &lt;div id="story-author-preview-content-4964878" 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="/amananandrai" 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%2F355422%2Fd9bae3e1-e185-4e93-a850-58be1b042695.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;amananandrai&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;/div&gt;
          &lt;a href="https://dev.to/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 2&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/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og" id="article-link-4964878"&gt;
          I Built a Visual System Design Reference — Switch Any Architecture Between AWS, Azure, GCP &amp;amp; Open Source
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/systemdesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;systemdesign&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&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/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og" 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/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;63&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/amananandrai/i-built-a-visual-system-design-reference-switch-any-architecture-between-aws-azure-gcp-open-55og#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              10&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&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;
            8 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>architecture</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Mastering CI/CD with GitLab: A Beginner’s Guide — Part 1</title>
      <dc:creator>Emilio Castro</dc:creator>
      <pubDate>Tue, 05 Mar 2024 15:32:08 +0000</pubDate>
      <link>https://dev.to/scrambledbits/mastering-cicd-with-gitlab-a-beginners-guide-part-1-2n4m</link>
      <guid>https://dev.to/scrambledbits/mastering-cicd-with-gitlab-a-beginners-guide-part-1-2n4m</guid>
      <description>&lt;h3&gt;
  
  
  Mastering CI/CD with GitLab: A Beginner’s Guide — Part 1
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C21jRCkm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1024/0%2AO4_HDO8C-igALMtB" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C21jRCkm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1024/0%2AO4_HDO8C-igALMtB" alt="Pipelines" width="800" height="636"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by T K on Unsplash&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Continuous Integration (CI) and Continuous Deployment (CD) are fundamental to modern DevOps practices, enabling teams to automate the testing and deployment of code. GitLab, a popular open-source git repository manager, offers an integrated solution for CI/CD, making it an excellent choice for beginners and seasoned developers alike. In this two-part series, we’ll explore how to set up a basic CI/CD pipeline using GitLab and GitLab CI, starting with core concepts and moving on to a simple yet illustrative example.&lt;/p&gt;
&lt;h3&gt;
  
  
  Understanding CI/CD with GitLab
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Continuous Integration (CI)&lt;/strong&gt; involves automatically testing code changes in a shared repository several times a day. &lt;strong&gt;Continuous Deployment (CD)&lt;/strong&gt; extends this by automatically deploying the code to production after passing the tests. GitLab CI/CD is a tool built into GitLab that allows users to apply these practices through configuration files within their GitLab repositories.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why GitLab CI/CD?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integrated Solution&lt;/strong&gt; : GitLab offers a seamless experience for source code management and CI/CD.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt; : Supports complex workflows and diverse project environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Documentation&lt;/strong&gt; : A strong community and comprehensive &lt;a href="https://docs.gitlab.com/ee/ci/"&gt;documentation&lt;/a&gt; make it easy to get started and troubleshoot issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Setting Up Your First Pipeline
&lt;/h3&gt;

&lt;p&gt;A pipeline defines the steps that are run when you commit code to a repository in GitLab. At its simplest, a pipeline could consist of stages like build, test, and deploy.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Create a GitLab Repository
&lt;/h3&gt;

&lt;p&gt;Before setting up CI/CD, you need a GitLab repository. If you don’t have one, you can create it by following the official &lt;a href="https://docs.gitlab.com/ee/gitlab-basics/create-project.html"&gt;GitLab repository creation guide&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Create a .gitlab-ci.yml File
&lt;/h3&gt;

&lt;p&gt;This file is where you define your CI/CD pipeline. Place it in the root of your repository. Here’s a simple example to start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stages:
  - build
  - test
  - deploy
build_job:
  stage: build
  script:
    - echo "Building the project..."
test_job:
  stage: test
  script:
    - echo "Running tests..."
deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Understanding the Pipeline Configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;stages&lt;/strong&gt; : Defines the order of stages that the pipeline will execute. Each stage contains a group of jobs that run in parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;build_job, test_job, deploy_job&lt;/strong&gt; : These are the names of the jobs associated with each stage. Each job performs specific tasks defined in the script section.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;script&lt;/strong&gt; : Contains the commands that are executed as part of each job. These commands can range from simple shell commands to complex scripts, depending on the requirements of your pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Running Your Pipeline
&lt;/h3&gt;

&lt;p&gt;Once you’ve created your .gitlab-ci.yml file and pushed it to your repository, GitLab automatically detects it and triggers the pipeline based on the configurations defined. You can monitor the progress and outcomes of your pipeline through the GitLab interface by navigating to the CI/CD tab of your repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beyond Basics: Expanding Your CI/CD Pipeline
&lt;/h3&gt;

&lt;p&gt;After setting up a basic pipeline, you may want to explore more advanced features of GitLab CI/CD, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Artifacts&lt;/strong&gt; : Use artifacts to pass data between stages or save output for later use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching&lt;/strong&gt; : Speed up your pipeline runs by caching dependencies or other frequently used files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environments and Deployments&lt;/strong&gt; : Configure deployment jobs to deploy your application to different environments, such as staging or production.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Starter Projects to Explore CI/CD Concepts
&lt;/h3&gt;

&lt;p&gt;Diving into starter projects can significantly help in understanding and applying CI/CD concepts. Here are five types of projects recommended for beginners:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Web Application Deployment&lt;/strong&gt; : Start with a simple web application to learn the deployment process across different environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Container Workflow&lt;/strong&gt; : Understand how to build, test, and push Docker images to a registry as part of your pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Testing Implementation&lt;/strong&gt; : Implement unit and integration tests to automatically verify the quality of your code with every commit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Static Site Deployment&lt;/strong&gt; : Use CI/CD to automate the build and deployment process of a static website using generators like Hugo or Jekyll.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure as Code Deployment&lt;/strong&gt; : Explore deploying infrastructure using code with tools like Terraform or Ansible, allowing you to version control and review infrastructure changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For detailed examples and further exploration, refer to GitLab’s official &lt;a href="https://docs.gitlab.com/ee/ci/examples/"&gt;examples directory&lt;/a&gt; and the &lt;a href="https://docs.gitlab.com/ee/ci/"&gt;CI/CD documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Setting up a CI/CD pipeline in GitLab is a gateway to automating your development and deployment processes, making them more efficient and error-proof. By understanding the basic concepts and exploring various starter projects, you’re well on your way to mastering CI/CD with GitLab.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next installment of this series, where we’ll delve into more advanced GitLab CI/CD configurations and best practices to optimize your development workflow.&lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>automation</category>
      <category>cicdpipeline</category>
      <category>pipeline</category>
    </item>
  </channel>
</rss>
