<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>oscarbarrios.tech</title>
    <description>Hello everyone! I&apos;m Oscar Barrios, and I&apos;m thrilled to introduce you to oscarbarrios.tech, my new space for exploring the intersection of Testing and DevOps. As a QE Architect and a big fan of Agile methodologies and DevOps culture , I&apos;ve spent years embracing new technologies and building robust software architectures across companies like SUSE , King Activision Blizzard , and Telefónica Digital. My experience in scaling testing, developing CI/CD pipelines , and driving quality standards  has shown me the power of bringing automation, tools, and processes together. From building AI-powered PR analysis tools and implementing CI-integrated synthetic monitoring , to mentoring the next generation of engineers , I&apos;m passionate about sharing ideas related to DevOps, Automation, and QA. At oscarbarrios.tech, I plan to share insights, articles, and code on topics like Infrastructure as Code (IaC), Continuous Integration/Continuous Deployment (CI/CD), smart test selection, and the latest tools in the TestOps landscape—including those from my current tech stack like Terraform, Prometheus, Grafana, Python, Go, Selenium, and Ollama. Join me as we explore how to achieve Quality on Autopilot!
</description>
    <link>http://127.0.0.1:4000/</link>
    <atom:link href="http://127.0.0.1:4000/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 20 Jan 2026 13:53:29 +0000</pubDate>
    <lastBuildDate>Tue, 20 Jan 2026 13:53:29 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>openSUSE 2025 talk</title>
        <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://events.opensuse.org/conferences/oSC25&quot;&gt;&lt;strong&gt;openSUSE Conference 2025&lt;/strong&gt;&lt;/a&gt; will happen very soon, and although I’m going to participate remotely this year from the coast of Cambrils, I’m incredibly happy to have been able to contribute with my pre-recorded talk: &lt;a href=&quot;https://events.opensuse.org/conferences/oSC25/program/proposals/4975&quot;&gt;&lt;strong&gt;“Quality on Autopilot: Scaling Testing in Uyuni”&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s a fantastic opportunity to share the journey we’ve undertaken at SUSE to scale quality in an open-source project as dynamic and complex as &lt;a href=&quot;https://www.uyuni-project.org/&quot;&gt;Uyuni&lt;/a&gt;. The question I tried to answer is: &lt;em&gt;How do you scale quality in a fast-moving open-source project?&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;what-is-the-talk-about-a-recap-of-our-journey&quot;&gt;What is the Talk About? A Recap of Our Journey&lt;/h3&gt;

&lt;p&gt;For those who can’t attend, the talk is a tour through our adoption of &lt;strong&gt;TestOps&lt;/strong&gt; practices to bring more automation, visibility, and resilience into our Quality Engineering processes. This wasn’t an overnight change, but a story of small, iterative improvements.&lt;/p&gt;

&lt;p&gt;Here are the pillars of our strategy that I discussed in the presentation:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;🏗️ Solid Foundations with IaC:&lt;/strong&gt; We started by automating our infrastructure with &lt;strong&gt;Terraform and Salt&lt;/strong&gt;. This gave us the ability to create consistent, on-demand test environments, eliminating the classic “it works on my machine” problem.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;📊 Visibility with Observability:&lt;/strong&gt; We integrated &lt;strong&gt;Prometheus and Grafana&lt;/strong&gt; to monitor our test trends. This allows us to analyze historical data to detect regressions, identify flaky tests, and understand the behavior of our tests over time.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;🏷️ Managing Flaky Tests and Known Issues:&lt;/strong&gt; We created a custom system that connects our QE workflow in &lt;strong&gt;GitHub&lt;/strong&gt; directly with our test reports. Using a script, we automatically tag Cucumber scenarios, providing immediate visibility into the status of a failed test (if it’s flaky, if a bug has already been reported, etc.).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;⚡ Accelerating Feedback with Smart Test Selection:&lt;/strong&gt; For Pull Requests, we implemented smart test selection based on &lt;strong&gt;code coverage&lt;/strong&gt;. This allows us to run only the relevant end-to-end tests for the affected components, drastically reducing CI times.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;🩺 Continuous Synthetic Monitoring:&lt;/strong&gt; We introduced “Fitness Functions” into our daily pipelines. These are key product metrics (like bootstrap or synchronization times) that give us a continuous view of the system’s overall health and provide early warnings about product-level issues.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;💻 Improving the Developer Experience:&lt;/strong&gt; We designed our own &lt;strong&gt;DevContainers&lt;/strong&gt; to standardize the development environment in IDEs. This has greatly simplified the onboarding process and aligned the entire team.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;🤝 Transparency with the Community:&lt;/strong&gt; We are working on making our AWS test reports public. We believe transparency is key in open-source to build trust and accountability.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;more-updates-coming-soon&quot;&gt;More Updates Coming Soon!&lt;/h3&gt;

&lt;p&gt;This post is just the beginning. In the coming days, I plan to write a bit more detail on some of these topics and, most importantly, share a &lt;strong&gt;summary of what I’ve learned from other incredible talks&lt;/strong&gt; that I’ll be able to follow at the openSUSE Conference 2025.&lt;/p&gt;

&lt;p&gt;Also, as soon as the organizers upload the videos to YouTube, I will embed the full recording of my talk right here for you to watch.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;my-presentation&quot;&gt;My presentation&lt;/h3&gt;

&lt;iframe src=&quot;https://view.officeapps.live.com/op/embed.aspx?src=https://oscarbarrios.tech/static/assets/img/blog/Quality_on_Autopilot_Scaling_Testing_in_Uyuni.pptx&quot; width=&quot;100%&quot; height=&quot;800px&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;800px&quot; src=&quot;https://www.youtube.com/embed/zDV_B4qN0z8?si=-kUMqUi2vMlsbFfB&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Tue, 10 Jun 2025 12:00:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/opensusecon-2025/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/opensusecon-2025/</guid>
        
        <category>Test</category>
        
        <category>Automation</category>
        
        <category>Conference</category>
        
        
        <category>Life</category>
        
      </item>
    
      <item>
        <title>Mentoring for GSoC 2025. AI-Driven Test Selection</title>
        <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;I’m thrilled to announce that I’ll be participating as a mentor for the &lt;strong&gt;openSUSE Project&lt;/strong&gt; in this year’s &lt;strong&gt;Google Summer of Code 2025&lt;/strong&gt;! It’s always a privilege to work with talented contributors and help guide innovative projects within our open-source community.&lt;/p&gt;

&lt;p&gt;This year, I’ll be mentoring an exciting large-scale project titled: &lt;strong&gt;“AI-Driven Test Selection in Uyuni’s Pull Request Acceptance Tests”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’m also very happy to introduce our contributor, &lt;strong&gt;Ahmed Khaled (Akayiz)&lt;/strong&gt;, who will be leading the charge on this project.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-challenge-slow-feedback-in-pull-request-testing&quot;&gt;The Challenge: Slow Feedback in Pull Request Testing&lt;/h3&gt;

&lt;p&gt;To ensure code quality in Uyuni, we run an extensive suite of acceptance tests for every new pull request. While this is crucial for preventing breakages from reaching our master branch, the process has its challenges. Currently, these tests execute most of the suite, leading to an average runtime of about one hour. This long wait delays valuable feedback for our developers and also increases our infrastructure costs.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-project-building-a-smarter-faster-testing-strategy&quot;&gt;The Project: Building a Smarter, Faster Testing Strategy&lt;/h3&gt;

&lt;p&gt;Our goal with this GSoC project is to tackle this challenge head-on by developing a machine learning model.&lt;/p&gt;

&lt;p&gt;Inspired by Facebook’s “Predictive Test Selection” paper, the model will be trained on historical data, including past pull requests, test results, and code coverage data. Its purpose is to predict the smallest possible subset of tests that are most likely to fail for any new pull request.&lt;/p&gt;

&lt;p&gt;By running only this highly relevant, smaller set of tests, we aim to:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Dramatically speed up feedback&lt;/strong&gt; for developers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reduce infrastructure costs&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Maintain our high standard of test coverage&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project will involve a fantastic mix of technologies, including &lt;strong&gt;Python&lt;/strong&gt; for machine learning, &lt;strong&gt;Ruby&lt;/strong&gt; and &lt;strong&gt;Cucumber&lt;/strong&gt; from our test suite, and &lt;strong&gt;GitHub Actions&lt;/strong&gt; and the &lt;strong&gt;GitHub API&lt;/strong&gt; for integration.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-journey-ahead&quot;&gt;The Journey Ahead&lt;/h3&gt;

&lt;p&gt;The project is now active, and we’re looking forward to the journey ahead, with the midterm evaluation coming up in August and the final submission in late October. I’m incredibly excited to see what Ahmed will build and the positive impact it will have on Uyuni’s developer productivity.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates as we progress!&lt;/p&gt;
</description>
        <pubDate>Tue, 10 Jun 2025 12:00:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/gsoc-2025/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/gsoc-2025/</guid>
        
        <category>Test</category>
        
        <category>Automation</category>
        
        <category>Mentoring</category>
        
        
        <category>Life</category>
        
      </item>
    
      <item>
        <title>FailTale</title>
        <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;I’m incredibly thrilled to share some exciting progress on a Proof of Concept I’ve been working on, called &lt;strong&gt;FailTale&lt;/strong&gt;! 🐛 🔍&lt;/p&gt;

&lt;p&gt;For anyone interested in the intersection of AI and test automation, you can check out the project directly on GitHub:
&lt;strong&gt;&lt;a href=&quot;https://github.com/srbarrios/FailTale&quot;&gt;FailTale on GitHub&lt;/a&gt;&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-challenge-making-debugging-less-of-a-chore&quot;&gt;The Challenge: Making Debugging Less of a Chore&lt;/h3&gt;

&lt;p&gt;We’ve all been there—a test fails in a complex CI pipeline, and the long, tedious process of debugging begins. Sifting through logs, trying to reproduce the issue, and identifying the root cause can be a significant drain on time and energy. The core idea behind FailTale is to streamline this process and get to the bottom of issues faster by leveraging the power of AI.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-failtale-works&quot;&gt;How FailTale Works&lt;/h3&gt;

&lt;p&gt;When a test fails, FailTale intelligently collects relevant context to build a complete picture of the failure. This includes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Test steps being executed&lt;/li&gt;
  &lt;li&gt;The error stack trace&lt;/li&gt;
  &lt;li&gt;Logs and outputs from custom console commands&lt;/li&gt;
  &lt;li&gt;Screenshots of the state at the time of failure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once this data is collected, it leverages Large Language Models (LLMs) to analyze everything and offer insights and hints about the potential root cause.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;early-success-and-whats-next&quot;&gt;Early Success and What’s Next&lt;/h3&gt;

&lt;p&gt;I’ve already integrated FailTale in its first attempts into our Uyuni CI pipeline, and it’s incredibly motivating to see that it’s already starting to provide some genuinely interesting root cause hints for our test failures.&lt;/p&gt;

&lt;p&gt;The work doesn’t stop here, of course. Here’s what I’m focused on now and what the future holds:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Enriching Context with a RAG System:&lt;/strong&gt; I’m currently working on a Retrieval-Augmented Generation (RAG) system. The goal is to process the extensive Uyuni documentation to further enrich the context provided to the AI, which should lead to even more accurate insights. It’s a bit more complex, which also makes it a bit more fun!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Future Architecture (Decoupling):&lt;/strong&gt; Looking ahead, I’m considering decoupling the execution of commands (which connect to components via SSH) into a new, dedicated MCP Server. This would make the architecture even more robust and modular.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;join-the-journey&quot;&gt;Join the Journey!&lt;/h3&gt;

&lt;p&gt;I’m really excited about where this project could go and hope to share a more detailed demo or perhaps even a talk about it later this year as it evolves.&lt;/p&gt;

&lt;p&gt;For anyone working with test automation, especially within a Cucumber Test Framework, I’d love for you to take a look at the project on GitHub. Feedback, ideas, contributions, or even just a star would be fantastic. Let’s make debugging less of a chore, together!&lt;/p&gt;
</description>
        <pubDate>Tue, 10 Jun 2025 12:00:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/failtale/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/failtale/</guid>
        
        <category>Test</category>
        
        <category>Automation</category>
        
        <category>Tool</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>SeleniumConf 2025 Experience</title>
        <description>&lt;p&gt;Attending &lt;strong&gt;SeleniumConf 2025&lt;/strong&gt; was an incredible experience for me. I arrived on Wednesday around noon, and in the evening, we had a &lt;strong&gt;speakers’ dinner&lt;/strong&gt;. The food was excellent, and I had the opportunity to start meeting some really interesting people.&lt;/p&gt;

&lt;p&gt;Thursday marked the official start of the conference. The &lt;strong&gt;breakfast at the Hotel Las Arenas&lt;/strong&gt; was amazing, and upon arriving at the venue, there was even more breakfast and coffee available. I was quite nervous, unsure if my talk would go well.&lt;/p&gt;

&lt;p&gt;As soon as I arrived, the first thing I did was check if everything was working properly with my laptop, ensuring I could present smoothly while viewing my speaker notes. Everything was set up correctly, allowing me to relax and start enjoying the talks.&lt;/p&gt;

&lt;p&gt;The first session was a keynote explaining that Selenium and Appium are aiming to collaborate on their respective projects as much as possible. This is why the conference was held jointly for both technologies.&lt;/p&gt;

&lt;p&gt;The first talk I attended was &lt;strong&gt;The Ultimate Swiss Army Knife of UI Software Testing, Accelerating Workflow-Based Automation.&lt;/strong&gt; It was a bit difficult to follow since the room was too bright, making it hard to see the code on the screen. The session focused on an implementation to test graphical interfaces.&lt;/p&gt;

&lt;p&gt;Next, I attended &lt;strong&gt;TestOps: A Journey to Story-Based Releases&lt;/strong&gt; The presenter set the bar incredibly high with an amazing presentation and visually engaging slides. The talk followed the journey of a team transitioning from merging everything into a single branch to working with multiple development, testing, and staging environments. This approach, based on microservices, highlighted the challenges of integrating different implementations occurring simultaneously.&lt;/p&gt;

&lt;p&gt;After this, it was time for my talk: &lt;strong&gt;Speed Up PR Tests with Smart Code Coverage-Based Selection&lt;/strong&gt; It went quite well—I was able to explain the design and showcase the code we implemented for &lt;strong&gt;Smart Test Selection&lt;/strong&gt;. There were many questions, and even after the Q&amp;amp;A session, people approached me throughout the two days to discuss implementations and share ideas.&lt;/p&gt;

&lt;p&gt;One key question was &lt;strong&gt;how to measure the effectiveness of recommended tests&lt;/strong&gt; essentially, whether the suggested tests were truly the best ones. This is something we should investigate further to develop relevant metrics. Another idea was whether this approach could be applied to unit tests, though given their fast execution time, I am not sure it would be necessary.&lt;/p&gt;

&lt;p&gt;A Mozilla engineer introduced me to &lt;strong&gt;BugBug&lt;/strong&gt;, an AI-powered tool that selects the best tests for bug coverage based on bug reports. Additionally, I learned about &lt;strong&gt;Cluecumber&lt;/strong&gt;, a project by Trivago for visualizing test reports, which seems worth exploring.&lt;/p&gt;

&lt;p&gt;After lunch, I attended João Proenza’s talk, &lt;strong&gt;Decoding Synthetic Monitoring: A Journey from E2E UI Tests to Service-Level Probes&lt;/strong&gt; This was particularly interesting because it aligns with something we have already started implementing. I call it &lt;strong&gt;“Fitness Metrics,”&lt;/strong&gt; but they refer to it as &lt;strong&gt;“Synthetic Monitoring.”&lt;/strong&gt; The concept involves deriving a metric from end-to-end tests to observe system performance trends. João’s example focused on API calls generated from user actions within the application, decoupling the UI layer and focusing on backend validation.&lt;/p&gt;

&lt;p&gt;Later, I partially attended Lauro Moura’s session, &lt;strong&gt;Advancing WebDriver BiDi support in WebKit&lt;/strong&gt; , which explained the benefits of &lt;strong&gt;BiDi&lt;/strong&gt;, a technology that modern testing frameworks are increasingly adopting.&lt;/p&gt;

&lt;p&gt;Another engaging talk was &lt;strong&gt;Beyond Logs: Achieving Observability with Selenium and Grafana&lt;/strong&gt; by Giannis Papadakis. It covered &lt;strong&gt;test observability using a Prometheus Push Gateway&lt;/strong&gt; to monitor test results in Grafana and send alerts via email or Slack. The talk also introduced &lt;strong&gt;Loki for better test log management&lt;/strong&gt;, reinforcing my plan to explore Loki further. During the Q&amp;amp;A, I shared insights about our &lt;strong&gt;Jenkins-Exporter&lt;/strong&gt; as an alternative approach to processing test reports for Grafana.&lt;/p&gt;

&lt;p&gt;The first day’s closing keynote was delivered by Angie Jones, focusing on &lt;strong&gt;AI and MCPs&lt;/strong&gt;. She demonstrated an MCP executing Selenium commands and shared various &lt;strong&gt;AI-driven automation techniques&lt;/strong&gt;. It was amusing when she &lt;strong&gt;mentioned my talk&lt;/strong&gt;, but to give an example of how AI can help to enhance the test selection.&lt;/p&gt;

&lt;p&gt;On the second day, the opening keynote was delivered by my former colleague, Almudena Vivanco, a Performance Engineer at Lidl. She emphasized the importance of &lt;strong&gt;performance testing as a team-wide responsibility&lt;/strong&gt; rather than just a task for a specialized group of engineers.&lt;/p&gt;

&lt;p&gt;The first session I attended was &lt;strong&gt;Flakiness in Your Tests Isn’t Down to the Test Framework&lt;/strong&gt; by David Burns, which provided &lt;strong&gt;strategies for better managing waits in test automation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Next, I attended &lt;strong&gt;Reviving Windows App Automation: NovaWindows Driver for Appium 2&lt;/strong&gt; by Teodor Nikolov. He introduced a new Appium driver for Windows, which primarily relies on command-line executions but also integrates UI automation at times. His demonstration showed that this new implementation &lt;strong&gt;significantly improves test execution speed&lt;/strong&gt;. Hopefully, it gains more contributions and visibility.&lt;/p&gt;

&lt;p&gt;After enjoying a &lt;strong&gt;fantastic paella for lunch&lt;/strong&gt;, I attended &lt;strong&gt;Unleash Synthetic Monitoring with Supercharged Test Automations&lt;/strong&gt; by Leandro Meléndez, also known as &lt;strong&gt;Señor Performo&lt;/strong&gt;. This talk reiterated concepts similar to our Fitness Metrics, confirming that we are on the right track with our implementation.&lt;/p&gt;

&lt;p&gt;Following this, I had the chance to &lt;strong&gt;record a short podcast episode with Leandro&lt;/strong&gt;, where we discussed my &lt;strong&gt;professional journey and my talk&lt;/strong&gt;. He was a great host.&lt;/p&gt;

&lt;p&gt;The last session I attended was the Lightning Talks, but nothing particularly stood out.&lt;/p&gt;

&lt;p&gt;In summary, I left the conference &lt;strong&gt;highly motivated about test observability&lt;/strong&gt;, although AI seemed to be the main theme of the event.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;information&quot;&gt;Information:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@seleniumconf&quot;&gt;SeleniumConf Youtube channel&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/live/PDq2ulUlVO8?si=0JldEQoXxjWbLMAV&quot;&gt;Podcast interview&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/uyuni-project/jenkins-exporter&quot;&gt;Jenkins-exporter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mozilla/bugbug&quot;&gt;BugBug&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/trivago/cluecumber&quot;&gt;Cluecumber&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/block/goose&quot;&gt;Open-source AI Agent to connect with MCPs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/angiejones/mcp-selenium&quot;&gt;MCP Selenium&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/AutomateThePlanet/appium-novawindows-driver&quot;&gt;Windows driver for Appium&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://seleniumconf.com/recordings-and-slides/&quot;&gt;Recording and slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;my-presentation&quot;&gt;My presentation&lt;/h3&gt;

&lt;iframe src=&quot;https://view.officeapps.live.com/op/embed.aspx?src=https://oscarbarrios.tech/static/assets/img/blog/SeleniumConf2025.pptx&quot; width=&quot;100%&quot; height=&quot;800px&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

</description>
        <pubDate>Mon, 31 Mar 2025 12:00:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/seleniumconf-2025-experience/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/seleniumconf-2025-experience/</guid>
        
        <category>Test</category>
        
        <category>Automation</category>
        
        <category>Conference</category>
        
        
        <category>Life</category>
        
      </item>
    
      <item>
        <title>Test Frameworks Workshop</title>
        <description>&lt;p&gt;The slides contains a list of Test frameworks, organized by these categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Unit Testing&lt;/li&gt;
  &lt;li&gt;Mock Testing&lt;/li&gt;
  &lt;li&gt;API Testing&lt;/li&gt;
  &lt;li&gt;GUI Testing&lt;/li&gt;
  &lt;li&gt;BDD Testing&lt;/li&gt;
  &lt;li&gt;End-to-End Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, it propose a playground to test a website using CucumberJVM + Selenium.&lt;/p&gt;

&lt;div id=&quot;pdf_test_frameworks&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/test_frameworks.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/test_frameworks.pdf&quot;, &quot;#pdf_test_frameworks&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Mon, 25 Oct 2021 18:40:26 +0000</pubDate>
        <link>http://127.0.0.1:4000/test-frameworks-workshop/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/test-frameworks-workshop/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Code Coverage Workshop</title>
        <description>&lt;p&gt;These slides contain a basic workshop to understand the tools offered by IntelliJ to check the code coverage and cyclomatic complexity.&lt;/p&gt;

&lt;p&gt;The course code is available from here &lt;a href=&quot;https://github.com/srbarrios/codecoverage-workshop&quot;&gt;https://github.com/srbarrios/codecoverage-workshop&lt;/a&gt;&lt;/p&gt;

&lt;div id=&quot;pdf_code_coverage&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/code_coverage.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/code_coverage.pdf&quot;, &quot;#pdf_code_coverage&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Thu, 30 Sep 2021 08:40:26 +0000</pubDate>
        <link>http://127.0.0.1:4000/code-coverage-workshop/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/code-coverage-workshop/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>JUnit 5 Workshop</title>
        <description>&lt;p&gt;These slides contain a basic workshop to understand the features offered by the JUnit5 Test Framework to develop unit tests.&lt;/p&gt;

&lt;p&gt;The course code is available from here &lt;a href=&quot;https://github.com/srbarrios/junit5-tutorial&quot;&gt;https://github.com/srbarrios/junit5-tutorial&lt;/a&gt;&lt;/p&gt;

&lt;div id=&quot;pdf_junit5&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/junit5.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/junit5.pdf&quot;, &quot;#pdf_junit5&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Thu, 30 Sep 2021 08:40:26 +0000</pubDate>
        <link>http://127.0.0.1:4000/junit-5-workshop/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/junit-5-workshop/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Software bugs</title>
        <description>&lt;p&gt;This year I am going to give classes on software testing at the Autonomous University of Barcelona, one of the new lessons that I would like to include in this course is the concept of Defect or Bug, since it is a term that we talk about daily in any work of the sector.&lt;/p&gt;

&lt;p&gt;In these slides I want to share the most basic concepts to understand what a bug is and to be able to work in a development team.&lt;/p&gt;

&lt;p&gt;I hope it is useful for you!&lt;/p&gt;

&lt;div id=&quot;pdf_software_bugs&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/Bugs.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/Bugs.pdf&quot;, &quot;#pdf_software_bugs&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Mon, 30 Aug 2021 18:30:36 +0000</pubDate>
        <link>http://127.0.0.1:4000/software-bugs/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/software-bugs/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>How to develop End to End tests for Uyuni</title>
        <description>&lt;p&gt;Having new joiners in our QA Squad, I decided to record a video that explains how to set up a local sandbox for Uyuni and how to configure a RubyMine or IntelliJ IDE to develop and debug our Cucumber End to End tests.&lt;/p&gt;

&lt;p&gt;In order to deploy our test environment, we use Sumaform, which is a tool that make use of Terraform and Salt to deploy our Virtual Machines in local. By the way, it also supports deployment in AWS.
To debug our tests, we use ChromeDriver poping up a browser where we can follow all the actions made by our test framework, thanks to the breakpoints in our IDE.&lt;/p&gt;

&lt;div class=&quot;video-container&quot;&gt;
	&lt;center&gt;
		&lt;iframe width=&quot;800&quot; height=&quot;500&quot; src=&quot;https://www.youtube.com/embed/4U_68ddRAHg&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;
		&lt;/iframe&gt;
	&lt;/center&gt;
&lt;/div&gt;

</description>
        <pubDate>Mon, 21 Dec 2020 20:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/uyuni-test-development/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/uyuni-test-development/</guid>
        
        <category>Cucumber</category>
        
        <category>Terraform</category>
        
        <category>ChromeDriver</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Smart integration tests</title>
        <description>&lt;p&gt;When you start automating testing for a new project, everything is very simple.
When you have several years and hundreds of tests to launch, things get complicated.&lt;/p&gt;

&lt;p&gt;It is important to have a good organization of the tests, a good prioritization of them and, when possible, use some technique that allows to intelligently select which tests best cover the changes made in the product code.&lt;/p&gt;

&lt;p&gt;In this presentation I explain a bit the changes that I led in my project to speed up our tests.&lt;/p&gt;

&lt;p&gt;The main contribution made in my project has been to introduce a new Jenkins pipeline to validate a Pull Request before merging it. This pipeline runs the acceptance tests, so we can better cover a end to end usage.
Also it includes the build process uisng Open Build Service, where we build only those packages changed by the Pull Request speeding up this process. In addition, you can manually select the functional areas that you want to test.
Our next steps on that goal, it will be filter the resources we need to deploy through Terraform depending on the functional areas to be tested and finally integrate this with our GitHub repository.&lt;/p&gt;

&lt;div id=&quot;pdf_smart_integration_tests&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/smart_integration_tests.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/smart_integration_tests.pdf&quot;, &quot;#pdf_smart_integration_tests&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Sun, 20 Dec 2020 10:00:56 +0000</pubDate>
        <link>http://127.0.0.1:4000/smart-integration-tests/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/smart-integration-tests/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>From Quality Control to Quality Engineering</title>
        <description>&lt;p&gt;As I explained in a previous post, my team at SUSE uses BDD methodology, adapted to our needs.&lt;/p&gt;

&lt;p&gt;I would like to introduce the different models of Quality, each of them complementing the other. From Quality Control where it focuses in defect detection, through Quality Assurance that works on defect prevention to Quality Engineering that make more focus in tools and processes to facilitate the whole team to build a product with quality in all the stages of the development, from design to delivery.&lt;/p&gt;

&lt;p&gt;I think this is a very interesting talk for the teams, including the QA team itself, as some teams still have the idea that a QA Engineer is in charge of testing the product so that it is delivered without defects, but it is a lot more than that!&lt;/p&gt;

&lt;div id=&quot;pdf_quality_models&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/quality_models.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/quality_models.pdf&quot;, &quot;#pdf_quality_models&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Thu, 12 Nov 2020 10:00:56 +0000</pubDate>
        <link>http://127.0.0.1:4000/quality-engineering/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/quality-engineering/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>SUSECon 2020 Talk: Automated QA for Maintenance Updates</title>
        <description>&lt;p&gt;Hello from SUSECon Digital 2020!&lt;/p&gt;

&lt;p&gt;This has been an amazing conference, and I was thrilled to have the opportunity to present my session, “Automated QA Maintenance Updates in SUSE Manager”. For anyone who couldn’t make it, I wanted to share the story of how we tackled a major challenge for our team: the long and tedious process of validating maintenance updates.&lt;/p&gt;

&lt;p&gt;The journey began by confronting a significant bottleneck. In the past, our team spent an average of two weeks and 3-4 QA Engineers to perform a single manual validation for our monthly maintenance updates. It felt like Groundhog Day; the steps were always the same, methodical but highly repetitive.&lt;/p&gt;

&lt;p&gt;Our key strategic shift was to stop treating maintenance QA as a separate phase and instead automate it. We achieved this by defining the QAM workflow  and then applying our existing technologies to it. During the talk, I demonstrated how we now have a fast and unassisted deployment using &lt;strong&gt;Terraform&lt;/strong&gt; for provisioning virtual machines and &lt;strong&gt;Salt&lt;/strong&gt; for configuration.&lt;/p&gt;

&lt;p&gt;On top of that, we use &lt;strong&gt;Jenkins Pipelines&lt;/strong&gt; to orchestrate the entire workflow as code. This pipeline runs a suite of &lt;strong&gt;Cucumber&lt;/strong&gt; tests in parallel, which are written in natural language to reproduce customer steps. These automated tests perform complex actions like synchronizing products, bootstrapping clients, running various client tests, and more.&lt;/p&gt;

&lt;p&gt;One of the best outcomes of this automation is a much happier and more efficient team. We reduced the validation time to just one or two days, allowing us to focus on more complex cases and contribute more to the development cycle. Furthermore, the architecture is scalable and can be adapted by other projects facing similar challenges. Our tech stack for this solution includes Jenkins, Terraform, Salt (as part of Sumaform), and a testing framework based on Ruby, Capybara, Cucumber, and parallel_tests.&lt;/p&gt;

&lt;h3 id=&quot;watch-the-full-talk-here&quot;&gt;Watch the Full Talk Here!&lt;/h3&gt;

&lt;p&gt;The official recording of the session is available, and I’ve embedded it below so you can watch the full presentation and see all the details.&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;center&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/U1osyy6Lk00&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;/div&gt;
</description>
        <pubDate>Sun, 20 Sep 2020 19:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/automated-mu-validation/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/automated-mu-validation/</guid>
        
        <category>QA</category>
        
        <category>Maintenance</category>
        
        <category>Automation</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>DevOps Introduction</title>
        <description>&lt;p&gt;Within SUSE I have launched a new initiative, energizing a new monthly meetup dedicated to DevOps topics.&lt;/p&gt;

&lt;p&gt;To break the ice, I did the first presentation. I can’t show you the recording but I leave you the presentation, I hope you like it! :)&lt;/p&gt;

&lt;div id=&quot;pdf_devops_introduction&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/devops_introduction.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/devops_introduction.pdf&quot;, &quot;#pdf_devops_introduction&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Sun, 05 Jul 2020 16:00:56 +0000</pubDate>
        <link>http://127.0.0.1:4000/devops-introduction/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/devops-introduction/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Starter skeleton of a Cucumber Test Framework</title>
        <description>&lt;p&gt;During the lockdown, here in Spain, I deciced to to start a skeleton of a Cucumber Test Framework, so I can use it in future projects. It is based in the TechStack we are currently using in the &lt;a href=&quot;https://www.uyuni-project.org/&quot;&gt;Uyuni project&lt;/a&gt;, where I contribute.&lt;/p&gt;

&lt;p&gt;This is a &lt;a href=&quot;https://github.com/srbarrios/cucumber-ruby-skeleton&quot;&gt;Cucumber project skeleton&lt;/a&gt; written in Ruby, using Capybara framework to interact with a website. It also include CI powered by GitHub Actions.&lt;/p&gt;
</description>
        <pubDate>Mon, 18 May 2020 09:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/cucumber-test-framework/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/cucumber-test-framework/</guid>
        
        <category>Test Framework</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Starter skeleton of a Java Backend</title>
        <description>&lt;p&gt;This is a &lt;a href=&quot;https://github.com/srbarrios/springboot-redis-skeleton&quot;&gt;Java backend example&lt;/a&gt;, with easy API endpoints that can connect to a Redis NoSQL Database. 
Also, this backend has the bases to be deployed in Google Cloud.&lt;/p&gt;
</description>
        <pubDate>Mon, 18 May 2020 09:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/java-backend-skeleton/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/java-backend-skeleton/</guid>
        
        <category>Java</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>SUSE Quiz</title>
        <description>&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/srbarrios/susequiz/master/quiz.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;This hackweek project is an Unity3D app, available in Android, IOS and HTML5 platforms.&lt;/p&gt;

&lt;p&gt;The idea is to welcome new joiners inviting them to play this game. The game will have questions about SUSE, the new joiners will need to ask other SUSE employees for the correct answer, socializing and learning SUSE culture at the same time.
When they win the game an e-mail will be sent to a concrete e-mail address (it might be someone from facilities) and they will receive a small gift as Welcome Pack. For instance, they could receive the small chameleon or a t-shirt.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1Nd-UQr3juwj9_pLxkw4BUIDoNJJESUaPM5bTsUXbZ30&quot;&gt;Architecture draft&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://app.moqups.com/FzcvWkj9bb/view/page/ad64222d5?ui=0&quot;&gt;Mockup&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://srbarrios.github.io/susequiz/&quot;&gt;HTML5 version&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://susequiz-backend.tf1-c4-lb.cap.suse.de/users/&quot;&gt;Backend (Internal SUSE network)&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 10 Mar 2020 09:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/suse-quiz/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/suse-quiz/</guid>
        
        <category>game</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Jenkins Pipeline &amp;#038; Parallel Cucumber</title>
        <description>&lt;p&gt;During a hack week, I put in place a &lt;a href=&quot;https://jenkins.io/doc/book/pipeline/&quot;&gt;Jenkins Pipeline&lt;/a&gt; which has different stages, for our &lt;a href=&quot;https://github.com/uyuni-project/uyuni/tree/master/testsuite&quot;&gt;testsuite project&lt;/a&gt;, so in case a stage fails further stages will be skipped. In addition, as the testsuite is written using &lt;a href=&quot;https://cucumber.io/&quot;&gt;Cucumber&lt;/a&gt; in Ruby, I make a profit of parallel_tests framework and gain almost 50% of total execution time.&lt;/p&gt;

&lt;p&gt;I presented an informal demo to my team, I hope it can be useful to have an idea of Jenkins Pipelines.&lt;/p&gt;

&lt;video controls=&quot;&quot; preload=&quot;auto&quot; src=&quot;/static/assets/img/blog/jenkins-pipelines.mp4&quot;&gt;&lt;/video&gt;

</description>
        <pubDate>Sat, 06 Jul 2019 09:07:00 +0000</pubDate>
        <link>http://127.0.0.1:4000/jenkins-pipeline-parallel-cucumber/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/jenkins-pipeline-parallel-cucumber/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>BDD in a development team</title>
        <description>&lt;p&gt;Today I would like to give you an overview about how we automated tests in my project and to explain a bit what Cucumber Framework is. Writing these slides, I realised that we can’t explain Cucumber without first have some context about the reasons to create that framework.&lt;/p&gt;

&lt;p&gt;So first of all, you’ll see a bit of theory about Behavior-Driver development process, then I’m going to introduce you to the Gherkin syntax and Cucumber framework.&lt;/p&gt;

&lt;p&gt;New slides:&lt;/p&gt;
&lt;div id=&quot;pdf_BDD&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
	fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/BDD.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/BDD.pdf&quot;, &quot;#pdf_BDD&quot;, options);
&lt;/script&gt;

&lt;p&gt;SUSE Manager slides:&lt;/p&gt;
&lt;div id=&quot;pdf_BDD_SUSE_Manager&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.2.5/pdfobject.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
var options = {
  fallbackLink: &quot;&lt;iframe src=&apos;https://docs.google.com/viewer?url=https://oscarbarrios.tech/static/assets/img/blog/BDD_SUSE_Manager.pdf&amp;embedded=true&apos; style=&apos;width:100%; height:800px;&apos; frameborder=&apos;0&apos;&gt;&lt;/iframe&gt;&lt;br&gt;&lt;p&gt;&lt;a href=&apos;[url]&apos;&gt;Download PDF&lt;/a&gt;&lt;/p&gt;&quot;,
    height: &quot;800px&quot;,
    pdfOpenParams: { view: &apos;FitH&apos;, page: &apos;1&apos; }
};
PDFObject.embed(&quot;/static/assets/img/blog/BDD_SUSE_Manager.pdf&quot;, &quot;#pdf_BDD_SUSE_Manager&quot;, options);
&lt;/script&gt;

</description>
        <pubDate>Wed, 27 Feb 2019 15:27:56 +0000</pubDate>
        <link>http://127.0.0.1:4000/a-good-methodology-for-a-development-team/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/a-good-methodology-for-a-development-team/</guid>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>Home Hosting</title>
        <description>&lt;p&gt;When I started this blog, designed in WordPress, my first thought was to start on my machine and when I would had been the design ready, then buy a domain to publish it. In the middle of that process, I was so excited about the project that I wanted to show it to my friends, in both platforms on my phone and their laptops. And I thought … why not deploy a hosting at home?&lt;/p&gt;

&lt;p&gt;Is that possible? Can I do it with any cost? Ow yes! You can build a home hosting absolutely free! The first thing you need to know is what kind of Internet connection you have hired, that it going to tell you how you can connect with other users. In my case the ISP assigns me a &lt;a href=&quot;https://en.wikipedia.org/wiki/IP_address#Sticky_dynamic_IP_address&quot;&gt;Dynamic IP&lt;/a&gt; , that would be my “identification number”, so other users can connect with me using this IP.  BUT, my IP is dynamic, that means it will change often, so you can not pass the IP to any friend to connect your machine :/&lt;/p&gt;

&lt;p&gt;If your provider uses  &lt;a href=&quot;https://en.wikipedia.org/wiki/Carrier-grade_NAT&quot;&gt;CG-NAT&lt;/a&gt;  ask them if you can switch to Dynamic IP, in my case they changed it for free 🙂  But… What I really want is share with my friends a domain name like oubiti.com! Not an ugly IP like this 123.45.26.118!&lt;/p&gt;

&lt;p&gt;Well, for that they invented Dynamic DNS. A DNS is a telephone directory but storing IPs, where you look for a domain name and you receive an IP. A dynamic DNS gives you the ability to change your IP as often as you want, which in our case it going to be the router whenever you receive a new IP from our ISP, whom will update that information on our Dynamic DNS service.&lt;/p&gt;

&lt;p&gt;There are many companies that offer this free service, in my case I used  &lt;a href=&quot;https://www.noip.com/&quot;&gt;https://www.noip.com/&lt;/a&gt;  , you can create an account easily, type the domain you want and create a free account, obtaining a Dynamic DNS.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/home-hosting-1.png&quot; alt=&quot;Home hosting 1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once created, we must setup the router to be responsible for sending the new IP Dynamic DNS, every time it changes. To do this, follow the steps in the &lt;a href=&quot;https://my.noip.com/#!/dynamic-dns/device-configuration-assistant&quot;&gt;wizard to set up your router&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/home-hosting-2.png&quot; alt=&quot;Home hosting 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;See an example of my config:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/home-hosting-3.png&quot; alt=&quot;Home hosting 3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;AH! An important step! Doesn’t matter if you use a Dynamic DNS or just the IP, but if you want that your public IP redirects the traffic of a web page to your web server, you will need to do a “&lt;a href=&quot;https://en.wikipedia.org/wiki/Port_forwarding&quot;&gt;Port Forwarding&lt;/a&gt;” , see here an example using port 8080 and 80.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/home-hosting-4.png&quot; alt=&quot;Home hosting 4&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So far so good! You just need to make sure you have your web server running, you can try &lt;a href=&quot;http://localhost/&quot;&gt;http: // localhost&lt;/a&gt;  and if that works properly, wait a few minutes for DNS information to propagate and you can connect to your machine using the domain name you’ve chosen.&lt;/p&gt;

&lt;p&gt;As last step, I had an issue, a kind of loop in the name resolution. If something goes wrong when you try to see your website using the new domain name (in my case “oubiti.ddns.net”), try to add that line to your local name resolution file.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Mac &amp;amp; Linux&lt;/strong&gt;: /etc/hosts&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: C:\Windows\System32\drivers\etc\hosts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/home-hosting-5.png&quot; alt=&quot;Home hosting 5&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In another post, I will explain how to set up a web server with WordPress and MySQL database, &lt;a href=&quot;https://docs.docker.com/compose/wordpress/&quot;&gt;using Docker containers&lt;/a&gt;!&lt;/p&gt;
</description>
        <pubDate>Tue, 30 Oct 2018 19:38:44 +0000</pubDate>
        <link>http://127.0.0.1:4000/home-hosting/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/home-hosting/</guid>
        
        <category>hosting</category>
        
        
        <category>Life</category>
        
      </item>
    
      <item>
        <title>MiPintura.com</title>
        <description>&lt;p&gt;Are you looking for an original painting? Do you need to frame yours? &lt;/p&gt;

&lt;p&gt;We recommend &lt;a href=&quot;http://mipintura.com&quot;&gt;MiPintura.com&lt;/a&gt; are experts in the sector!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/assets/img/blog/mipintura.jpg&quot; alt=&quot;Mi Pintura&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;tailored-paintings&quot;&gt;Tailored paintings&lt;/h2&gt;

&lt;p&gt;Our passion is art and decoration&lt;/p&gt;

&lt;p&gt;You can order any of the works exhibited in our catalog, as well as request any change of color or size in them. All our works are entirely hand painted by ourselves! No cheating or cardboard! there is nothing printed and retouched, they are painted from a blank canvas. They are delivered assembled in their frame, since they can not be rolled due to the thickness and texture of the paint. If you wish, we will include photos of the process.&lt;/p&gt;
</description>
        <pubDate>Thu, 25 Oct 2018 13:10:55 +0000</pubDate>
        <link>http://127.0.0.1:4000/mipintura-com/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/mipintura-com/</guid>
        
        <category>art</category>
        
        
        <category>Life</category>
        
      </item>
    
      <item>
        <title>DecoSnapp</title>
        <description>&lt;p&gt;You ‘re thinking of redecorating your living room , you’ve seen a beautiful painting and you love to take home? But… you don’t get the idea of how it will looks in the room?&lt;br /&gt;
DecoSnapp will show you it at home , through your mobile phone!&lt;/p&gt;

&lt;p&gt;This app is designed to help everyone that needs to decorate a space, and wants to compare some possibilities before buy a new painting or poster.&lt;br /&gt;
Is developed with the aim to be a powerful tool for decoration and painting companies.&lt;/p&gt;

&lt;div class=&quot;video-container&quot;&gt;
	&lt;video controls=&quot;&quot; preload=&quot;auto&quot; src=&quot;/static/assets/img/blog/decosnapp.mp4&quot;&gt;&lt;/video&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 25 Oct 2018 12:57:37 +0000</pubDate>
        <link>http://127.0.0.1:4000/decosnapp/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/decosnapp/</guid>
        
        <category>Augmented Reality</category>
        
        
        <category>Development</category>
        
      </item>
    
      <item>
        <title>HurryMind!</title>
        <description>&lt;p align=&quot;center&quot;&gt;
&lt;img src=&quot;/static/assets/img/blog/hurrymind_screenshot.png&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Mental skill game, where you will have to solve word games and mathematical operations before the time runs out!&lt;/p&gt;

&lt;p&gt;It’s my first game prototype using Unity 3D, it’s developed to be reusable or extended. You can checkout the project from &lt;a href=&quot;https://gitlab.com/oscar.barrios/words-and-maths&quot;&gt;here&lt;/a&gt; , if you have a GitLab account.
&lt;br /&gt;&lt;br /&gt;
Also please give a try, downloading it for those platforms:&lt;br /&gt;
&lt;br /&gt;Android:&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.oscarbarrios.hurrymind﻿&quot;&gt;&lt;img src=&quot;https://img.icons8.com/ultraviolet/80/000000/android.png&quot; /&gt;&lt;/a&gt; iOS:&lt;a href=&quot;https://itunes.apple.com/app/id1425491845&quot;&gt;&lt;img src=&quot;https://img.icons8.com/ultraviolet/80/000000/iphone-x.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Thu, 25 Oct 2018 11:46:43 +0000</pubDate>
        <link>http://127.0.0.1:4000/hurrymind-game/</link>
        <guid isPermaLink="true">http://127.0.0.1:4000/hurrymind-game/</guid>
        
        <category>game</category>
        
        
        <category>Development</category>
        
      </item>
    
  </channel>
</rss>
