<?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>Forem: Felix Mennen</title>
    <description>The latest articles on Forem by Felix Mennen (@xz3dev).</description>
    <link>https://forem.com/xz3dev</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%2F1111956%2F5c29b5ca-eb75-4ecd-addb-4f244cb1e984.jpg</url>
      <title>Forem: Felix Mennen</title>
      <link>https://forem.com/xz3dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/xz3dev"/>
    <language>en</language>
    <item>
      <title>Building a niche flashcard app</title>
      <dc:creator>Felix Mennen</dc:creator>
      <pubDate>Fri, 10 May 2024 11:37:27 +0000</pubDate>
      <link>https://forem.com/xz3dev/building-a-niche-flashcard-app-16d6</link>
      <guid>https://forem.com/xz3dev/building-a-niche-flashcard-app-16d6</guid>
      <description>&lt;h1&gt;
  
  
  Building Rudel Ratgeber: A Journey with Flutter
&lt;/h1&gt;

&lt;p&gt;When I set out to create the Rudel Ratgeber app, my goal was clear: make learning for the Hundeführerschein (Dog License) as accessible and engaging as possible. Choosing Flutter as our development framework was a pivotal decision that shaped the course of our app's journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Flutter?
&lt;/h2&gt;

&lt;p&gt;Flutter's ability to provide a native performance on both Android and iOS with a single codebase was a major draw. This meant we could speed up development and maintain consistency across platforms, crucial for our app which features a robust question bank and an interactive quiz mode to simulate real exam conditions.&lt;br&gt;
In addition to that, I already built a flashcard app using flutter in the past. So I'll be using my past experiences as a basis.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Development Experience
&lt;/h2&gt;

&lt;p&gt;The development process was both challenging and rewarding. Utilizing Flutter’s rich set of material widgets, we crafted a user-friendly interface that allows learners to navigate through over 170 multiple-choice questions smoothly. The app supports an adaptive learning environment using a proven card-box system that helps users track their progress and focus on areas needing improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interactive Learning Made Simple
&lt;/h2&gt;

&lt;p&gt;One of the standout features developed is the quiz mode, which automatically cycles through questions, offering a dynamic learning experience that mimics the actual exam environment. We also integrated reminders for users to achieve their daily learning goals, enhancing regular study habits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community and Feedback
&lt;/h2&gt;

&lt;p&gt;The feedback from users has been overwhelmingly positive. Many appreciate the ability to learn anytime, anywhere, emphasizing the app's impact on their successful exam preparation. This feedback has been instrumental in refining the app’s features and usability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;Developing Rudel Ratgeber has been a fulfilling experience, largely due to Flutter’s versatile development toolkit. As we plan future updates, the focus remains on enhancing interactive features and expanding our question database to cover more scenarios.&lt;/p&gt;

&lt;p&gt;Building this app allowed us to connect with a community of learners and dog lovers and helped us making a difference in their educational journeys.&lt;/p&gt;

&lt;p&gt;If you want to see the final result, check it out (for free) in the App Store and Play Store. No sign in required if you just want to have a look around!&lt;br&gt;
&lt;a href="https://fuehrerschein-hund.de/app"&gt;https://fuehrerschein-hund.de/app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>mobiledev</category>
      <category>ios</category>
      <category>android</category>
    </item>
    <item>
      <title>Feature Parity Comparison: GitLab CI/CD vs. GitHub Actions</title>
      <dc:creator>Felix Mennen</dc:creator>
      <pubDate>Fri, 07 Jul 2023 08:59:05 +0000</pubDate>
      <link>https://forem.com/xz3dev/feature-parity-comparison-gitlab-cicd-vs-github-actions-15h7</link>
      <guid>https://forem.com/xz3dev/feature-parity-comparison-gitlab-cicd-vs-github-actions-15h7</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the dynamic landscape of software development, Continuous Integration and Continuous Deployment (CI/CD) have emerged as vital practices that enhance efficiency, reduce errors, and facilitate rapid delivery. Among the plethora of tools available for implementing CI/CD, GitLab CI/CD and GitHub Actions stand out as popular choices. This article aims to delve into a feature parity comparison of these two powerful tools, providing insights to help you choose the one that best aligns with your project's needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding CI/CD&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Continuous Integration (CI) is a development practice that involves regularly integrating code changes into a central repository. Automated builds and tests are run post-integration to ensure that new changes don't break the existing codebase. Continuous Deployment (CD), on the other hand, automates the release of validated changes to a staging or production environment. Together, CI/CD form a cohesive mechanism that automates the software delivery process, making it more consistent and efficient.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mhjAJHdN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zwpv0tv7lum3licqmeii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mhjAJHdN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zwpv0tv7lum3licqmeii.png" alt="Image description" width="655" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;GitLab CI/CD: An Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;GitLab CI/CD is a powerful, integrated tool that comes as part of the GitLab platform. It allows you to define custom pipeline configurations based on your project's needs. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline Configuration&lt;/strong&gt;: GitLab CI/CD uses a YAML file (.gitlab-ci.yml) for defining pipelines. This file is version-controlled and stored in the same repository as your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Management&lt;/strong&gt;: GitLab CI/CD lets you define and manage environments, enabling you to have different conditions for different stages of your pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Strategies&lt;/strong&gt;: GitLab CI/CD supports various deployment strategies, including canary, incremental rollouts, and blue/green deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;GitHub Actions: An Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;GitHub Actions, a relatively newer entrant in the CI/CD space, is a feature within GitHub that enables you to automate workflows directly from your GitHub repository. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Configuration&lt;/strong&gt;: GitHub Actions uses YAML syntax for workflow configuration. Each workflow is defined in a file in the .github/workflows directory of your repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Actions&lt;/strong&gt;: GitHub Actions allows you to use actions created by the GitHub community, making it easier to build complex workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration with GitHub Features&lt;/strong&gt;: GitHub Actions is tightly integrated with other GitHub features, allowing you to trigger workflows based on GitHub events such as push, pull requests, or issue comments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Feature Comparison&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Both GitLab CI/CD and GitHub Actions utilize YAML for configuration, providing a straightforward, human-readable format. However, GitLab CI/CD takes a step further with its CI Lint tool, which validates your .gitlab-ci.yml file before committing. This preemptive check can save developers from potential headaches caused by incorrect configurations, making the setup process smoother and more efficient.&lt;/p&gt;

&lt;p&gt;When it comes to integration with the codebase, both tools excel in their own ecosystems. GitHub Actions, being a native feature of GitHub, offers seamless integration with other GitHub features. On the other hand, GitLab CI/CD, as part of the GitLab platform, provides a unified experience, making it an attractive option for teams already using GitLab for version control.&lt;/p&gt;

&lt;p&gt;One of the standout features of GitHub Actions is its marketplace of community actions. This repository of reusable components can significantly reduce the time spent on writing boilerplate code, allowing developers to focus on the unique aspects of their projects. While GitLab CI/CD also supports custom scripts, it currently lacks a similar marketplace, making GitHub Actions a more appealing choice for developers who value community-driven resources.&lt;/p&gt;

&lt;p&gt;In terms of job control and parallel execution, both tools offer robust capabilities. However, GitLab CI/CD's visual interface for pipelines provides a clear view of the job flow, which can be particularly helpful for complex pipelines with multiple stages and dependencies.&lt;/p&gt;

&lt;p&gt;Environment management is another critical aspect of CI/CD. Both tools allow you to define and manage environments, but GitLab CI/CD goes a step further with features like dynamic environments and environment-specific variables. These features provide greater flexibility and control, which can be crucial for projects with complex deployment requirements.&lt;/p&gt;

&lt;p&gt;When it comes to deployment strategies, GitLab CI/CD shines with its support for a variety of strategies, including canary, incremental rollouts, and blue/green deployments. While GitHub Actions is highly flexible and customizable, it doesn't provide built-in support for these strategies, making GitLab CI/CD a more feature-rich choice for complex deployments.&lt;/p&gt;

&lt;p&gt;Security is a top concern in CI/CD, and both tools offer robust features for managing secrets and permissions. However, GitLab CI/CD's protected variables, which are only exposed to protected branches and tags, provide an additional layer of security that can be particularly valuable in sensitive projects.&lt;/p&gt;

&lt;p&gt;Finally, pricing is an important consideration. Both GitLab and GitHub offer free tiers for their CI/CD tools, with certain limitations. GitHub Actions charges based on the number of minutes used, while GitLab provides a certain number of CI/CD minutes per month based on your GitLab plan. This difference in pricing models could make one tool more cost-effective than the other, depending on your usage patterns.&lt;/p&gt;

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

&lt;p&gt;In conclusion, both GitLab CI/CD and GitHub Actions offer powerful features for managing CI/CD pipelines. Your choice between the two will depend on your specific needs and preferences. If you value community-driven resources and tight integration with GitHub, GitHub Actions could be the right choice for you. If you need advanced environment management, deployment strategies, and a visual pipeline interface, GitLab CI/CD might be a better fit. As always, the best way to decide is to try out both tools and see which one works best for you.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>developer</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Importance of CI/CD Pipelines in Modern Development</title>
      <dc:creator>Felix Mennen</dc:creator>
      <pubDate>Mon, 03 Jul 2023 10:12:29 +0000</pubDate>
      <link>https://forem.com/xz3dev/the-importance-of-cicd-pipelines-in-modern-development-4m17</link>
      <guid>https://forem.com/xz3dev/the-importance-of-cicd-pipelines-in-modern-development-4m17</guid>
      <description>&lt;p&gt;In the rapidly evolving world of software development, efficiency and speed are of the essence. As developers, we're constantly seeking ways to improve our workflows, reduce errors, and deliver high-quality software faster. This is where Continuous Integration and Continuous Deployment (CI/CD) pipelines come into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are CI/CD Pipelines?
&lt;/h2&gt;

&lt;p&gt;CI/CD pipelines are a series of steps that automate the process of software delivery, from integrating code changes to deploying the application to production.&lt;/p&gt;

&lt;p&gt;Continuous Integration (CI) involves regularly merging code changes to a central repository, where automated builds and tests are run. This practice helps detect integration issues early and ensures that the codebase remains in a deployable state.&lt;/p&gt;

&lt;p&gt;Continuous Deployment (CD), on the other hand, automates the release of validated changes to a staging or production environment. This means that as soon as a change passes all stages of your pipeline, it gets deployed to production automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of CI/CD in Modern Development
&lt;/h2&gt;

&lt;p&gt;CI/CD pipelines play a crucial role in modern development for several reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Faster Release Rate:&lt;/strong&gt; By automating the software delivery process, CI/CD pipelines enable teams to release updates more frequently. This allows for quicker feedback and ensures that new features and fixes reach the users promptly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced Integration Issues:&lt;/strong&gt; Regular integration and automated testing help detect and fix integration issues early, reducing the time and effort spent on debugging.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Code Quality:&lt;/strong&gt; With automated testing in place, the quality of the software improves as errors are detected and fixed quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased Efficiency:&lt;/strong&gt; Automation reduces manual effort, freeing up the team to focus on tasks that add value, like feature development or user experience improvement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;**Enhanced Collaboration: **CI/CD encourages developers to share their code and integrate their changes with the rest of the team regularly, promoting a culture of transparency and collaboration.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Challenges of Managing CI/CD Pipelines&lt;br&gt;
While CI/CD pipelines offer numerous benefits, managing them can be a challenge, especially when dealing with multiple pipelines across different platforms. This is where tools like Build Companion come in.&lt;/p&gt;

&lt;p&gt;Build Companion is a mobile app that provides a unified view of your CI/CD pipelines from Github Actions, Gitlab Pipelines, and other providers. It allows you to view historical and running builds, check build logs, and even get AI-powered summaries of your builds.&lt;/p&gt;

&lt;p&gt;In the era of remote work and on-the-go productivity, having the ability to access and manage your CI/CD pipelines from anywhere is a game-changer.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Not to Set Up CI/CD Pipelines
&lt;/h2&gt;

&lt;p&gt;While CI/CD pipelines offer numerous benefits and are generally considered a best practice in modern software development, there are situations where setting up a CI/CD pipeline may not be the best course of action. Here are a few scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Small, Short-Term Projects:&lt;/strong&gt; If you're working on a small project with a short lifespan, the time and effort required to set up a CI/CD pipeline may outweigh the benefits. In such cases, manual deployment might be more efficient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solo Development:&lt;/strong&gt; If you're a solo developer working on a project, the benefits of continuous integration, such as early detection of integration issues, may not be as relevant. However, automating the deployment process can still be beneficial, especially for frequent releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of Testing Culture:&lt;/strong&gt; CI/CD relies heavily on automated testing. If your team doesn't have a strong culture of writing tests, or if the project lacks sufficient test coverage, a CI/CD pipeline may not be as effective. It's crucial to invest in building a robust testing framework before moving to a CI/CD model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regulatory Constraints:&lt;/strong&gt; Some industries or projects may have regulatory constraints that require manual intervention in the deployment process. In such cases, a full CD pipeline may not be feasible, though you can still benefit from CI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Constraints:&lt;/strong&gt; Setting up and maintaining a CI/CD pipeline requires resources - both in terms of infrastructure and personnel. If you're working with limited resources, you'll need to weigh the benefits of a CI/CD pipeline against its costs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's important to note that these are not hard and fast rules. The decision to set up a CI/CD pipeline should be based on a thorough understanding of your project's needs and constraints. Even in scenarios where a full CI/CD pipeline may not be suitable, you can still adopt aspects of the CI/CD philosophy, such as regular integration or automated testing, to improve your development process.&lt;/p&gt;

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

&lt;p&gt;CI/CD pipelines are an integral part of modern development, enabling teams to deliver high-quality software quickly and efficiently. As the complexity of these pipelines grows, tools like Build Companion can help manage them effectively, ensuring that you can focus on what you do best: building great software.&lt;/p&gt;

&lt;p&gt;Join the waitlist for Build Companion &lt;a href="https://build-companion.com"&gt;here&lt;/a&gt; and revolutionize the way you manage your CI/CD pipelines.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ever felt the need to check your cloud builds from the toilet?</title>
      <dc:creator>Felix Mennen</dc:creator>
      <pubDate>Sun, 02 Jul 2023 12:18:04 +0000</pubDate>
      <link>https://forem.com/xz3dev/ever-felt-the-need-to-check-your-cloud-builds-from-the-toilet-d7f</link>
      <guid>https://forem.com/xz3dev/ever-felt-the-need-to-check-your-cloud-builds-from-the-toilet-d7f</guid>
      <description>&lt;p&gt;Hi 🙋‍♂️ &lt;br&gt;
I’m Felix and I recently started working on an app to stay informed about ci pipelines on Github and Gitlab. You can read logs and get notified about failures and more. Wherever, whenever. &lt;/p&gt;

&lt;p&gt;Let me know if this is something you would use and what features you wish for.&lt;/p&gt;

&lt;p&gt;You can find more information on &lt;a href="https://build-companion.com"&gt;https://build-companion.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>cicd</category>
    </item>
  </channel>
</rss>
