<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jose Castrillo</title>
    <link>https://jose.castrillo.eu/</link>
    <description>Recent content on Jose Castrillo</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sat, 28 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jose.castrillo.eu/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>DevOps Projects</title>
      <link>https://jose.castrillo.eu/page/py/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/py/</guid>
      <description>Senior DevOps Engineer - Projects &amp;amp; Professional Journey</description>
    </item>
    <item>
      <title>My Career Journey</title>
      <link>https://jose.castrillo.eu/page/jose/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/jose/</guid>
      <description>Senior DevOps Engineer - Projects &amp;amp; Professional Journey</description>
    </item>
    <item>
      <title>Linux on Business</title>
      <link>https://jose.castrillo.eu/post/linux-better-solution/</link>
      <pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/linux-better-solution/</guid>
      <description>&lt;p&gt;Why Linux 🐧? the question isn&amp;rsquo;t why Linux ? the real question is why not ? did you try it?&lt;/p&gt;
&lt;p&gt;Linux is widely regarded as the best option for development, DevOps, hybrid cloud solutions, and even as a desktop for home and office environments due to its open-source nature, robust ecosystem, scalability, security, and cost-effectiveness. Its flexibility allows seamless integration across diverse platforms, from small IoT devices to large-scale cloud infrastructures, making it the backbone of modern technology stacks.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://jose.castrillo.eu/page/exp/</link>
      <pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/exp/</guid>
      <description>&lt;h1 id=&#34;1&#34; style=&#34;height: 0; width: 0; position: absolute; visibility: hidden;&#34;&gt;Cloud Development Operations - [currently]&lt;/h1&gt;





&lt;link href=&#34;https://fonts.googleapis.com/css?family=Inconsolata&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
&lt;div style=&#34;font-family:&#39;Inconsolata&#39;;font-size:32px;font-style:normal;font-weight:lighter&#34;&gt;
Jose Castrillo
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; &lt;a href=&#34;https://www.payscale.com/research/US/Job=Senior_Development_Operations_%28DevOps%29_Engineer/Salary&#34;&gt;Cloud Development Operations&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;Public Cloud:&lt;/strong&gt; &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;Started:&lt;/strong&gt; Nov 2024 - &lt;em&gt;Currently&lt;/em&gt; &lt;br&gt;
&lt;strong&gt;Company:&lt;/strong&gt; &lt;a href=&#34;aubay.com&#34;&gt;Aubay&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;Client:&lt;/strong&gt; &lt;a href=&#34;https://www.allianz.com/en.html&#34;&gt;Allianz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As part of the DevOps team, I design, maintain, and automate AWS infrastructure with Terraform and Terragrunt, following Infrastructure as Code (IaC) principles. I drive automation, CI/CD adoption, and cloud cost/security optimization across environments.&lt;/p&gt;
&lt;p&gt;
&lt;svg role=&#34;img&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;title&gt;Docker&lt;/title&gt;&lt;path d=&#34;M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; role=&#34;img&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;title&gt;AWS&lt;/title&gt;&lt;path d=&#34;M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 0 1-.287-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.214c.263 0 .534-.048.822-.144.287-.096.543-.271.758-.51.128-.152.224-.32.272-.512.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 5.55a1.398 1.398 0 0 1-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 0 1 .32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 0 1 .311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 0 1-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 0 1-.303.08h-.687c-.151 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32l-1.238-5.148-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 0 1-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 0 1-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .359.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 0 1 .24.2.43.43 0 0 1 .071.263v.375c0 .168-.064.256-.184.256a.83.83 0 0 1-.303-.096 3.652 3.652 0 0 0-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.159.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926-.144.272-.336.511-.583.703-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167zM21.698 16.207c-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351 3.384 1.963 7.559 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.439-.2.814.287.383.607zM22.792 14.961c-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151.32-.79 1.03-2.57.695-2.994z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;title&gt;Linux❤️&lt;/title&gt;&lt;path d=&#34;M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.577.2.025.134.063.198.114.333l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.2-.811-.714-1.376v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135a.357.357 0 00-.19-.064c.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.56-3.368.026-2.152.236-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.19.135.33.332.438.533.105.259.158.459.166.724 0-.02.006-.04.006-.06v.105a.086.086 0 01-.004-.021l-.004-.024a1.807 1.807 0 01-.15.706.953.953 0 01-.213.335.71.71 0 00-.088-.042c-.104-.045-.198-.064-.284-.133a1.312 1.312 0 00-.22-.066c.05-.06.146-.133.183-.198.053-.128.082-.264.088-.402v-.02a1.21 1.21 0 00-.061-.4c-.045-.134-.101-.2-.183-.333-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132a.8.8 0 00-.205.334 1.18 1.18 0 00-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202a1.635 1.635 0 01-.018-.2v-.02a1.772 1.772 0 01.15-.768c.082-.22.232-.406.43-.533a.985.985 0 01.594-.2zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.14.4.153.667v.004c.007.134.006.2-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.09.013-.18.003-.267v-.015c-.012-.133-.04-.2-.082-.333a.613.613 0 00-.166-.267.248.248 0 00-.183-.064h-.021c-.071.006-.13.04-.186.132a.552.552 0 00-.12.27.944.944 0 00-.023.33v.015c.012.135.037.2.08.334.046.134.098.2.166.268.01.009.02.018.034.024-.07.057-.117.07-.176.136a.304.304 0 01-.131.068 2.62 2.62 0 01-.275-.402 1.772 1.772 0 01-.155-.667 1.759 1.759 0 01.08-.668 1.43 1.43 0 01.283-.535c.128-.133.26-.2.418-.2zm1.37 1.706c.332 0 .733.065 1.216.399.293.2.523.269 1.052.468h.003c.255.136.405.266.478.399v-.131a.571.571 0 01.016.47c-.123.31-.516.643-1.063.842v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267a1.139 1.139 0 01-.448-.067 3.566 3.566 0 01-.322-.198c-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.71-.07-.268-.005-.47.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.47.839-.601.139-.036.294-.065.466-.065zm2.8 2.142c.358 1.417 1.196 3.475 1.735 4.473.286.534.855 1.659 1.102 3.024.156-.005.33.018.513.064.646-1.671-.546-3.467-1.089-3.966-.22-.2-.232-.335-.123-.335.59.534 1.365 1.572 1.646 2.757.13.535.16 1.104.021 1.67.067.028.135.06.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.06-.003-.12 0-.18 0h-.016c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.77.465-.008.043-.013.066-.018.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.02.334-.17.838-.319 1.35-1.5 1.072-3.58 1.538-5.348.334a2.645 2.645 0 00-.402-.533 1.45 1.45 0 00-.275-.333c.182 0 .338-.03.465-.067a.615.615 0 00.314-.334c.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.4-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.14 2.497-.122 3.854a8.123 8.123 0 01.647-2.876c.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.21.201.477.335.876.335.039.003.075.006.11.006.412 0 .73-.134.997-.268.29-.134.52-.334.74-.4h.005c.467-.135.835-.402 1.044-.7zm2.185 8.958c.037.6.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.01c.315-.007.577.01.847.268l.003.003c.208.199.305.53.391.876.085.4.154.78.409 1.066.486.527.645.906.636 1.14l.003-.007v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.37 1.14-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.4-.12-1.025.056-1.69.176-.668.428-1.344.463-1.897.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.814.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.637.434.598.77 1.131.729 1.57v.006c-.057.744-.48 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.61-.2-.723-.4-.11-.2-.113-.602.123-1.23v-.004l.002-.003c.117-.334.03-.752-.027-1.118-.055-.401-.083-.71.043-.94.16-.334.396-.4.69-.533.294-.135.64-.202.915-.47h.002v-.002c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.28-.466-.154-.134-.28-.268-.373-.335-.164-.134-.144-.333-.074-.333.109.016.129.134.199.2.096.066.215.2.36.333.292.2.68.467 1.167.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.136.149-.267.279-.267.128.016.034.134-.147.332a8.097 8.097 0 01-.69.468zm-1.082-1.583V5.64c-.006-.02.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.14.068-.05 0-.13-.02-.136-.068-.01-.066.088-.133.15-.133.08-.031.184-.047.259-.005.019.009.036.03.03.05v.02h.003z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;title&gt;GNU Bash&lt;/title&gt;&lt;path d=&#34;M21.038,4.9l-7.577-4.498C13.009,0.134,12.505,0,12,0c-0.505,0-1.009,0.134-1.462,0.403L2.961,4.9 C2.057,5.437,1.5,6.429,1.5,7.503v8.995c0,1.073,0.557,2.066,1.462,2.603l7.577,4.497C10.991,23.866,11.495,24,12,24 c0.505,0,1.009-0.134,1.461-0.402l7.577-4.497c0.904-0.537,1.462-1.529,1.462-2.603V7.503C22.5,6.429,21.943,5.437,21.038,4.9z M15.17,18.946l0.013,0.646c0.001,0.078-0.05,0.167-0.111,0.198l-0.383,0.22c-0.061,0.031-0.111-0.007-0.112-0.085L14.57,19.29 c-0.328,0.136-0.66,0.169-0.872,0.084c-0.04-0.016-0.057-0.075-0.041-0.142l0.139-0.584c0.011-0.046,0.036-0.092,0.069-0.121 c0.012-0.011,0.024-0.02,0.036-0.026c0.022-0.011,0.043-0.014,0.062-0.006c0.229,0.077,0.521,0.041,0.802-0.101 c0.357-0.181,0.596-0.545,0.592-0.907c-0.003-0.328-0.181-0.465-0.613-0.468c-0.55,0.001-1.064-0.107-1.072-0.917 c-0.007-0.667,0.34-1.361,0.889-1.8l-0.007-0.652c-0.001-0.08,0.048-0.168,0.111-0.2l0.37-0.236 c0.061-0.031,0.111,0.007,0.112,0.087l0.006,0.653c0.273-0.109,0.511-0.138,0.726-0.088c0.047,0.012,0.067,0.076,0.048,0.151 l-0.144,0.578c-0.011,0.044-0.036,0.088-0.065,0.116c-0.012,0.012-0.025,0.021-0.038,0.028c-0.019,0.01-0.038,0.013-0.057,0.009 c-0.098-0.022-0.332-0.073-0.699,0.113c-0.385,0.195-0.52,0.53-0.517,0.778c0.003,0.297,0.155,0.387,0.681,0.396 c0.7,0.012,1.003,0.318,1.01,1.023C16.105,17.747,15.736,18.491,15.17,18.946z M19.143,17.859c0,0.06-0.008,0.116-0.058,0.145 l-1.916,1.164c-0.05,0.029-0.09,0.004-0.09-0.056v-0.494c0-0.06,0.037-0.093,0.087-0.122l1.887-1.129 c0.05-0.029,0.09-0.004,0.09,0.056V17.859z M20.459,6.797l-7.168,4.427c-0.894,0.523-1.553,1.109-1.553,2.187v8.833 c0,0.645,0.26,1.063,0.66,1.184c-0.131,0.023-0.264,0.039-0.398,0.039c-0.42,0-0.833-0.114-1.197-0.33L3.226,18.64 c-0.741-0.44-1.201-1.261-1.201-2.142V7.503c0-0.881,0.46-1.702,1.201-2.142l7.577-4.498c0.363-0.216,0.777-0.33,1.197-0.33 c0.419,0,0.833,0.114,1.197,0.33l7.577,4.498c0.624,0.371,1.046,1.013,1.164,1.732C21.686,6.557,21.12,6.411,20.459,6.797z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;title&gt;Visual Studio Code&lt;/title&gt;&lt;path d=&#34;M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; viewBox=&#34;0 0 24 24&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; &gt;&lt;title&gt;Ansible&lt;/title&gt;&lt;path d=&#34;M10.617 11.473l4.686 3.695-3.102-7.662zM12 0C5.371 0 0 5.371 0 12s5.371 12 12 12 12-5.371 12-12S18.629 0 12 0zm5.797 17.305c-.011.471-.403.842-.875.83-.236 0-.416-.09-.664-.293l-6.19-5-2.079 5.203H6.191L11.438 5.44c.124-.314.427-.52.764-.506.326-.014.63.189.742.506l4.774 11.494c.045.111.08.234.08.348-.001.009-.001.009-.001.023z&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;title&gt;Jenkins&lt;/title&gt;&lt;path d=&#34;M2.872 24h-.975a3.866 3.866 0 01-.07-.197c-.215-.666-.594-1.49-.692-2.154-.146-.984.78-1.039 1.374-1.465.915-.66 1.635-1.025 2.627-1.62.295-.179 1.182-.624 1.281-.829.201-.408-.345-.982-.49-1.3-.225-.507-.345-.937-.376-1.435-.824-.13-1.455-.627-1.844-1.185-.63-.925-1.066-2.635-.525-3.936.045-.103.254-.305.285-.463.06-.308-.105-.72-.12-1.048-.06-1.692.284-3.15 1.425-3.66.463-1.84 2.113-2.453 3.673-3.367.58-.342 1.224-.562 1.89-.807 2.372-.877 6.027-.712 7.994.783.836.633 2.176 1.97 2.656 2.939 1.262 2.555 1.17 6.825.287 9.934-.12.421-.29 1.032-.533 1.533-.168.35-.689 1.05-.625 1.36.064.314 1.19 1.17 1.432 1.395.434.422 1.26.975 1.324 1.5.07.557-.248 1.336-.41 1.875-.217.721-.436 1.441-.654 2.131H2.87zm11.104-3.54c-.545-.3-1.361-.622-2.065-.757-.87-.164-.78 1.188-.75 1.994.03.643.36 1.316.51 1.744.076.197.09.41.256.449.3.068 1.29-.326 1.575-.479.6-.328 1.064-.844 1.574-1.189.016-.17.016-.34.03-.508a2.648 2.648 0 00-1.095-.277c.314-.15.75-.15 1.035-.332l.016-.193c-.496-.03-.69-.254-1.021-.436zm7.454 2.935a17.78 17.78 0 00.465-1.752c.06-.287.215-.918.178-1.176-.059-.459-.684-.799-1.004-1.086-.584-.525-.95-.975-1.56-1.469-.249.375-.78.615-.983.914 1.447-.689 1.71 2.625 1.141 3.69.09.329.391.45.514.735l-.086.166h1.29c.013 0 .03 0 .044.014zm-6.634-.012c-.05-.074-.1-.135-.15-.209l-.301.195h.45zm2.77 0c.008-.209.018-.404.03-.598-.53.029-.825-.48-1.196-.527-.324-.045-.6.361-1.02.195-.095.105-.183.227-.284.316.154.18.295.375.424.584h.815c.014-.164.135-.285.3-.285.165 0 .284.121.284.27h.66zm2.116 0c-.314-.479-.947-.898-1.68-.555l-.03.541h1.71zm-8.51 0l-.104-.344c-.225-.72-.36-1.26-.405-1.68-.914-.436-1.875-.87-2.654-1.426-.15-.105-1.109-1.35-1.23-1.305-1.739.676-3.359 1.86-4.814 2.984.256.557.48 1.141.69 1.74h8.505zm8.265-2.113c-.029-.512-.164-1.56-.48-1.74-.66-.39-1.846.78-2.34.943.045.15.135.271.15.48.285-.074.645-.029.898.092-.299.03-.629.03-.824.164-.074.195.016.48-.029.764.69.197 1.5.303 2.385.332.164-.227.225-.645.211-1.082zm-4.08-.36c-.044.375.046.51.12.943 1.26.391 1.034-1.74-.135-.959zM8.76 19.5c-.45.457 1.27 1.082 1.814 1.115 0-.29.165-.564.135-.77-.65-.118-1.502-.042-1.945-.347zm5.565.215c0 .043-.061.03-.068.064.58.451 1.014.545 1.802.51.354-.262.67-.563 1.043-.807-.855.074-1.931.607-2.774.23zm3.42-17.726c-1.606-.906-4.35-1.591-6.076-.731-1.38.692-3.27 1.84-3.899 3.292.6 1.402-.166 2.686-.226 4.109-.018.757.36 1.42.391 2.242-.2.338-.825.38-1.26.356-.146-.729-.4-1.549-1.155-1.63-1.064-.116-1.845.764-1.89 1.683-.06 1.08.833 2.864 2.085 2.745.488-.046.608-.54 1.139-.54.285.57-.445.75-.523 1.154-.016.105.06.511.104.705.233.944.744 2.16 1.245 2.88.635.9 1.884 1.051 3.229 1.141.24-.525 1.125-.48 1.706-.346-.691-.27-1.336-.945-1.875-1.529-.615-.676-1.23-1.41-1.261-2.28 1.155 1.604 2.1 3 4.2 3.704 1.59.525 3.45-.254 4.664-1.109.51-.359.811-.93 1.17-1.439 1.35-1.936 1.98-4.71 1.846-7.394-.06-1.111-.06-2.221-.436-2.955-.389-.781-1.695-1.471-2.475-.781-.15-.764.63-1.23 1.545-.96-.66-.854-1.336-1.858-2.266-2.384zM13.58 14.896c.615 1.544 2.724 1.363 4.505 1.323-.084.194-.256.435-.465.515-.57.232-2.145.408-2.937-.012-.506-.27-.824-.873-1.102-1.227-.137-.172-.795-.608-.012-.609zm.164-.87c.893.464 2.52.517 3.731.48.066.267.066.593.068.913-1.55.08-3.386-.304-3.794-1.395h-.005zm6.675-.586c-.473.9-1.145 1.897-2.539 1.928-.023-.284-.045-.735 0-.904 1.064-.103 1.727-.646 2.543-1.017zm-.649-.667c-1.02.66-2.154 1.375-3.824 1.21-.351-.31-.485-1-.14-1.458.181.313.06.885.57.97.944.165 2.038-.579 2.73-.84.42-.713-.046-.976-.42-1.433-.782-.93-1.83-2.1-1.802-3.51.314-.224.346.346.391.45.404.96 1.424 2.175 2.174 3 .18.21.48.39.51.524.092.39-.254.854-.209 1.11zm-13.439-.675c-.314-.184-.393-.99-.768-1.01-.535-.03-.438 1.05-.436 1.68-.37-.33-.435-1.365-.164-1.89-.308-.15-.445.164-.618.284.22-1.59 2.34-.734 1.99.96zM4.713 5.995c-.685.756-.54 2.174-.459 3.188 1.244-.785 2.898.06 2.883 1.394.595-.016.223-.744.115-1.215-.353-1.528.592-3.187.041-4.59-1.064.084-1.939.52-2.578 1.215zm9.12 1.113c.307.562.404 1.148.84 1.57.195.19.574.424.387.95-.045.121-.365.391-.551.45-.674.195-2.254.03-1.721-.81.563.015 1.314.36 1.732-.045-.314-.524-.885-1.53-.674-2.13zm6.198-.013h.068c.33.668.6 1.375 1.004 1.965-.27.628-2.053 1.19-2.023.057.39-.17 1.05-.035 1.395-.25-.193-.556-.48-1.006-.434-1.771zm-6.927-1.617c-1.422-.33-2.131.592-2.56 1.553-.384-.094-.231-.615-.135-.883.255-.701 1.28-1.633 2.119-1.506.359.057.848.386.576.834zM9.642 1.593c-1.56.44-3.56 1.574-4.2 2.974.495-.07.84-.321 1.33-.351.186-.016.428.074.641.015.424-.104.78-1.065 1.102-1.41.31-.345.685-.496.94-.81.167-.09.409-.074.42-.33-.073-.075-.15-.135-.232-.105v.017z&#34;/&gt;&lt;/svg&gt;


&lt;svg role=&#34;img&#34; viewBox=&#34;0 0 24 24&#34; height=&#34;32&#34; width=&#34;32&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;title&gt;Terraform&lt;/title&gt;&lt;path d=&#34;M8.283 4.265l7.433 3.776v7.551l-7.433-3.776V4.265zm8.248 3.776v7.551l7.436-3.776V4.265l-7.436 3.776zM.035.051v7.551l7.433 3.776V3.827L.035.051zm8.248 20.141l7.433 3.776V16.42l-7.433-3.776v7.548z&#34;/&gt;&lt;/svg&gt;


&lt;svg role=&#34;img&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;title&gt;python&lt;/title&gt;&lt;path d=&#34;M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z&#34;/&gt;&lt;/svg&gt;


&lt;svg role=&#34;img&#34; viewBox=&#34;0 0 24 24&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;32&#34; width=&#34;32&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; &gt;&lt;title&gt;Java&lt;/title&gt;&lt;path d=&#34;M8.851 18.56s-.917.534.653.714c1.902.218 2.874.187 4.969-.211 0 0 .552.346 1.321.646-4.699 2.013-10.633-.118-6.943-1.149M8.276 15.933s-1.028.761.542.924c2.032.209 3.636.227 6.413-.308 0 0 .384.389.987.602-5.679 1.661-12.007.13-7.942-1.218M13.116 11.475c1.158 1.333-.304 2.533-.304 2.533s2.939-1.518 1.589-3.418c-1.261-1.772-2.228-2.652 3.007-5.688 0-.001-8.216 2.051-4.292 6.573M19.33 20.504s.679.559-.747.991c-2.712.822-11.288 1.069-13.669.033-.856-.373.75-.89 1.254-.998.527-.114.828-.093.828-.093-.953-.671-6.156 1.317-2.643 1.887 9.58 1.553 17.462-.7 14.977-1.82M9.292 13.21s-4.362 1.036-1.544 1.412c1.189.159 3.561.123 5.77-.062 1.806-.152 3.618-.477 3.618-.477s-.637.272-1.098.587c-4.429 1.165-12.986.623-10.522-.568 2.082-1.006 3.776-.892 3.776-.892M17.116 17.584c4.503-2.34 2.421-4.589.968-4.285-.355.074-.515.138-.515.138s.132-.207.385-.297c2.875-1.011 5.086 2.981-.928 4.562 0-.001.07-.062.09-.118M14.401 0s2.494 2.494-2.365 6.33c-3.896 3.077-.888 4.832-.001 6.836-2.274-2.053-3.943-3.858-2.824-5.539 1.644-2.469 6.197-3.665 5.19-7.627M9.734 23.924c4.322.277 10.959-.153 11.116-2.198 0 0-.302.775-3.572 1.391-3.688.694-8.239.613-10.937.168 0-.001.553.457 3.393.639&#34;/&gt;&lt;/svg&gt;



&lt;svg role=&#34;img&#34; viewBox=&#34;0 0 6800 6800&#34; height=&#34;32&#34; width=&#34;32&#34; fill=&#34;currentColor&#34; stroke=&#34;none&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;title&gt;Terragrunt&lt;/title&gt;
&lt;g transform=&#34;rotate(180, 3700, 3700)&#34;&gt;
&lt;path d=&#34;M3770 7309 c-1109 -77 -2105 -706 -2659 -1679 -307 -540 -461 -1202
-422 -1815 7 -101 21 -239 31 -307 109 -710 434 -1353 937 -1854 1119 -1116
2857 -1289 4176 -417 780 515 1304 1338 1447 2271 125 811 -70 1668 -534 2352
-663 977 -1801 1531 -2976 1449z m404 -715 c75 -6 93 -10 113 -30 13 -13 23
-34 23 -47 0 -19 15 -31 85 -67 225 -113 382 -355 412 -632 5 -49 9 -57 29
-62 31 -8 58 -50 52 -81 -4 -20 5 -34 53 -75 33 -28 59 -56 59 -61 0 -5 -16
-9 -36 -9 l-36 0 70 -74 c85 -92 183 -233 228 -330 45 -98 80 -237 105 -420
l22 -151 67 -125 c169 -314 260 -557 260 -694 -1 -144 -71 -305 -181 -415 -65
-65 -69 -71 -69 -115 0 -122 -67 -624 -89 -664 -5 -8 -19 5 -44 40 l-37 53 0
-65 c0 -139 -44 -494 -69 -561 -6 -18 -8 -18 -41 6 -32 24 -35 24 -42 8 -4
-10 -21 -107 -38 -217 -18 -109 -40 -218 -51 -242 -28 -66 -104 -137 -175
-164 -144 -54 -315 10 -387 145 -11 22 -44 130 -73 240 -44 173 -54 200 -70
199 -10 -1 -59 -9 -108 -18 -112 -20 -190 -20 -302 0 -49 9 -98 17 -108 18
-17 1 -26 -23 -67 -184 -63 -241 -73 -265 -134 -326 -119 -119 -302 -125 -428
-13 -73 64 -93 116 -127 344 -17 110 -34 208 -38 218 -7 16 -10 16 -42 -8 -25
-19 -36 -22 -41 -13 -23 42 -68 404 -69 552 l0 80 -39 -53 c-22 -29 -41 -48
-44 -44 -15 25 -64 363 -83 573 l-7 75 -79 59 c-234 173 -330 434 -249 676 48
142 164 350 323 577 54 78 58 88 73 180 42 264 128 462 299 688 33 44 78 99
100 123 l39 42 -42 0 c-22 0 -41 2 -41 5 0 8 65 65 115 100 39 28 41 33 29 50
-18 24 -19 135 -1 158 6 10 24 21 40 25 24 6 31 19 65 118 51 149 107 241 206
340 88 87 191 147 306 180 43 12 60 21 60 34 0 17 34 53 60 63 8 3 35 4 60 2
25 -3 85 -7 134 -11z&#34;/&gt;
&lt;path d=&#34;M4250 5986 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
13z&#34;/&gt;
&lt;path d=&#34;M3759 5893 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z&#34;/&gt;
&lt;path d=&#34;M3705 5605 c18 -126 73 -217 164 -272 181 -108 405 -39 492 153 36
79 38 105 3 44 -14 -25 -44 -64 -67 -87 -23 -24 -37 -43 -33 -43 5 0 3 -7 -4
-15 -7 -8 -17 -15 -23 -15 -6 0 -2 7 9 15 28 21 13 18 -50 -11 -76 -35 -156
-41 -231 -19 -33 9 -68 23 -79 31 -28 19 -41 18 -25 -3 13 -16 12 -17 -3 -4
-10 7 -16 17 -13 21 2 3 -14 24 -36 46 -43 41 -73 92 -96 159 l-13 40 5 -40z
m85 -160 c42 -48 42 -48 6 -15 -21 19 -42 44 -48 55 -6 11 -9 18 -6 15 2 -3
24 -27 48 -55z m550 12 c0 -2 -15 -16 -32 -33 l-33 -29 29 33 c28 30 36 37 36
29z m-410 -107 c8 -5 11 -10 5 -10 -5 0 -17 5 -25 10 -8 5 -10 10 -5 10 6 0
17 -5 25 -10z m270 0 c-8 -5 -19 -10 -25 -10 -5 0 -3 5 5 10 8 5 20 10 25 10
6 0 3 -5 -5 -10z&#34;/&gt;
&lt;path d=&#34;M3310 5586 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
13z&#34;/&gt;
&lt;path d=&#34;M4715 5430 c-66 -66 -117 -120 -115 -120 3 0 59 54 125 120 66 66
117 120 115 120 -3 0 -59 -54 -125 -120z&#34;/&gt;
&lt;path d=&#34;M3430 5425 c13 -14 26 -25 28 -25 3 0 -5 11 -18 25 -13 14 -26 25
-28 25 -3 0 5 -11 18 -25z&#34;/&gt;
&lt;path d=&#34;M3510 5345 c13 -14 26 -25 28 -25 3 0 -5 11 -18 25 -13 14 -26 25
-28 25 -3 0 5 -11 18 -25z&#34;/&gt;
&lt;path d=&#34;M4569 5293 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17
-17z&#34;/&gt;
&lt;path d=&#34;M3404 4985 c-12 -8 -27 -28 -34 -45 -16 -39 1 -85 41 -105 40 -21 63
-19 98 11 83 70 -17 201 -105 139z&#34;/&gt;
&lt;path d=&#34;M4607 4989 c-11 -6 -25 -27 -33 -45 -13 -31 -13 -39 1 -68 28 -59 85
-71 134 -30 62 52 28 154 -51 154 -18 0 -41 -5 -51 -11z&#34;/&gt;
&lt;path d=&#34;M3348 4629 c-32 -18 -22 -56 25 -90 63 -46 222 -123 313 -152 268
-85 564 -81 816 9 91 33 230 102 286 143 47 35 56 73 22 91 -17 9 -36 2 -117
-44 -278 -159 -545 -207 -839 -151 -138 26 -322 102 -431 176 -46 32 -50 33
-75 18z&#34;/&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>Curriculum for Allianz Technology</title>
      <link>https://jose.castrillo.eu/allianztech/devops/</link>
      <pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/allianztech/devops/</guid>
      <description>&lt;link href=&#34;https://fonts.googleapis.com/css?family=Inconsolata&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
&lt;div style=&#34;font-family:&#39;Inconsolata&#39;;font-size:32px;font-style:normal;font-weight:lighter&#34;&gt;
Jose Castrillo
&lt;/div&gt;






&lt;link href=&#34;https://fonts.googleapis.com/css?family=Arial&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
&lt;div style=&#34;font-family:&#39;Arial&#39;;font-size:14px;font-style:normal;font-weight:normal&#34;&gt;
📱 Phone: +xxxxxxxx
&lt;/div&gt;






&lt;link href=&#34;https://fonts.googleapis.com/css?family=Arial&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
&lt;div style=&#34;font-family:&#39;Arial&#39;;font-size:14px;font-style:normal;font-weight:normal&#34;&gt;
✉️ Email: &lt;a href=&#34;mailto:jose@castrillo.addy.io&#34;&gt;jose@castrillo.addy.io&lt;/a&gt;
&lt;/div&gt;






&lt;link href=&#34;https://fonts.googleapis.com/css?family=Arial&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
&lt;div style=&#34;font-family:&#39;Arial&#39;;font-size:14px;font-style:normal;font-weight:normal&#34;&gt;
🌍 Location: Barcelona, Spain.
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; &lt;a href=&#34;https://www.payscale.com/research/US/Job=Senior_Development_Operations_%28DevOps%29_Engineer/Salary&#34;&gt;Cloud Development Operations&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;Public Cloud:&lt;/strong&gt; &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;Started:&lt;/strong&gt; Nov 2024 - &lt;em&gt;Currently&lt;/em&gt; &lt;br&gt;
&lt;strong&gt;Company:&lt;/strong&gt; &lt;a href=&#34;aubay.com&#34;&gt;Aubay&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As part of the DevOps team, I specialize in designing, maintaining, and automating AWS infrastructure using Terraform and Terragrunt, following Infrastructure as Code (IaC) principles. I support project teams by implementing infrastructure changes, deploying new environments, and ensuring stability, security, cost-efficiency, and compliance. Additionally, I contribute to the design and implementation of GitLab CI/CD pipelines tailored to project requirements, fostering collaboration and continuous improvement across cloud deployments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>🎨 Customize Your Terminal Shell with Oh My Bash</title>
      <link>https://jose.castrillo.eu/post/ohmybash-git/</link>
      <pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ohmybash-git/</guid>
      <description>Learn how to dynamically switch themes in Oh My Bash based on your environment and directory.</description>
    </item>
    <item>
      <title>👨‍💻 Tunning your Devbox shell</title>
      <link>https://jose.castrillo.eu/post/bash-terminal-devbox/</link>
      <pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bash-terminal-devbox/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/sw-sandbox.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;h1 id=&#34;using-oh-my-bash-with-jetify-devbox-a-step-by-step-guide&#34;&gt;Using Oh-My-Bash with Jetify Devbox: A Step-by-Step Guide&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;re a developer working with Jetify Devbox, you might have noticed that its shell environment doesn&amp;rsquo;t always play nicely with Oh-My-Bash. By following these steps, you can customize and personalize your themes and PS1 prompt to create a more enjoyable and productive shell experience.&lt;/p&gt;
&lt;h2 id=&#34;step-1-install-oh-my-bash&#34;&gt;Step 1: Install Oh-My-Bash&lt;/h2&gt;
&lt;p&gt;First, you need to install Oh-My-Bash. You can do this by running the following command in your terminal:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automation a Nextcloud as a Podman Container</title>
      <link>https://jose.castrillo.eu/post/nextcloud-buildah/</link>
      <pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/nextcloud-buildah/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/nextcloud-buildah.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking to upgrade my Nextcloud service also switching to another alternative rather than docker, hence I used podman and buildah in my solution.&lt;/p&gt;
&lt;p&gt;From the rockylinux.org I found a nice &lt;a href=&#34;https://docs.rockylinux.org/guides/containers/podman-nextcloud/&#34;&gt;post&lt;/a&gt; where it describes how to build and provisioning by using buildah and podman, it works pretty good and I added a tool in order to run it faster, called &lt;a href=&#34;https://taskfile.dev/installation/&#34;&gt;taskfile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Podman&lt;/li&gt;
&lt;li&gt;Buildah&lt;/li&gt;
&lt;li&gt;Taskfile&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&#34;https://taskfile.dev/installation/&#34;&gt;taskfile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clone my &lt;a href=&#34;https://gitlab.com/castrillo/jupiter&#34;&gt;project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;From the project you can see the task defined:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;up-db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/mariadb&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f db-init.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash db-init.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;create-app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;app&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f run.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mkdir nc nc/nextcloud nc/apps nc/config nc/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;up-db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash run.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_base&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/base&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_tools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/db-tools&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_maria&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/mariadb&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_base&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_tools&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_maria&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;up-app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;podman container start nextcloud&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Main task to build and run nextcloud:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goland CORS, logs and healtcheck</title>
      <link>https://jose.castrillo.eu/post/go-cors-chi/</link>
      <pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/go-cors-chi/</guid>
      <description>&lt;p&gt;In this guide, we&amp;rsquo;ll walk through how to create CORS (Cross-Origin Resource Sharing) and a health check endpoint in a Golang application using the Chi router.&lt;/p&gt;
&lt;h3 id=&#34;setting-up-chi-and-cors-middleware&#34;&gt;Setting Up Chi and CORS Middleware&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ll use the &lt;code&gt;go-chi/chi&lt;/code&gt; and &lt;code&gt;go-chi/cors&lt;/code&gt; packages to handle routing and CORS in our application.&lt;/p&gt;
&lt;h4 id=&#34;step-1-import-required-packages&#34;&gt;Step 1: Import Required Packages&lt;/h4&gt;
&lt;p&gt;First, make sure to import the necessary packages:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;net/http&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;log&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/chi&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/chi/middleware&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/cors&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;AdminMiddleware&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/project/api/middleware&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/project/api/services&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;gorm.io/gorm&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;step-2-define-the-cors-alloworiginfunc&#34;&gt;Step 2: Define the CORS AllowOriginFunc&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ll define a function to specify the allowed origins for CORS. This function also logs disallowed origins:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Faster and simple maintenance page</title>
      <link>https://jose.castrillo.eu/post/maintenance-page/</link>
      <pubDate>Sun, 04 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/maintenance-page/</guid>
      <description>&lt;p&gt;Working on different platform either to update, patch, etc need to be notificate for those people that consume that services, it shouldn&amp;rsquo;t change if that service it&amp;rsquo;s internal, you must notificate your teams about it.&lt;/p&gt;
&lt;p&gt;When you&amp;rsquo;re into your maintenance window you can use a faster way to broadcast everyone you&amp;rsquo;re working on it; I use this simple solution when I was working into a Jenkins migration, hence I stop the jenkins service and instead of 500 html error I developed a simple html text exposing it by a nginx container by the root path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Como configurar un router neutro</title>
      <link>https://jose.castrillo.eu/post/router-spain-vlan/</link>
      <pubDate>Sun, 19 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/router-spain-vlan/</guid>
      <description>&lt;h3 id=&#34;-actualizado-022024&#34;&gt;📣 Actualizado 02/2024&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/router1.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Continuando con mi post &lt;a href=&#34;https://www.linkedin.com/pulse/neutralidad-de-la-red-y-tu-derecho-usar-router-en-espa%2525C3%2525B1a-castrillo-q1yyf%3FtrackingId=MoVK%252FVSBS6i9hYlPBP0ptg%253D%253D/?trackingId=MoVK%2FVSBS6i9hYlPBP0ptg%3D%3D&#34;&gt;anterior&lt;/a&gt; explico como realizar una conexion directa con tu propio router, en mi caso tengo un router &lt;a href=&#34;https://www.gl-inet.com&#34;&gt;gl.inet&lt;/a&gt;; puedes usar otro router que disponga la configuración de VLAN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Dependiendo de tu proveedor de servicio, necesitamos ir a la siguiente &lt;a href=&#34;https://wiki.bandaancha.st/Identificadores_VLAN_operadores_FTTH&#34;&gt;pagina&lt;/a&gt; y busca tu VLAN, &lt;em&gt;Leer con atencion las notas dejadas en la pagina&lt;/em&gt;!. En mi caso tengo Orange aunque a en mi zona llega por &lt;a href=&#34;https://wiki.bandaancha.st/Nuevo_servicio_Ethernet_de_Banda_Ancha&#34;&gt;NEBA&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trigger pipelines by using the API</title>
      <link>https://jose.castrillo.eu/post/pipeline-part1/</link>
      <pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/pipeline-part1/</guid>
      <description>&lt;p&gt;When you join a new project, company, customer, etc. (you&amp;rsquo;re still in the onboarding phase 😅), meanwhile you may find that you need to make a few changes to get your team&amp;rsquo;s production pipelines up and running. In this case, you can call an API trigger from one project to another (this is just a example).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been in the situation described above before, and it was how I discovered this amazing feature in GitLab.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastering GitLab CI/CD, Unleashing the Power of Pipelines</title>
      <link>https://jose.castrillo.eu/post/pipeline-gitlab-guide/</link>
      <pubDate>Fri, 16 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/pipeline-gitlab-guide/</guid>
      <description>&lt;p&gt;Hey everyone! 👋 I hope you&amp;rsquo;re all having a fantastic summer time! 🌞&lt;/p&gt;
&lt;p&gt;I wanted to drop a quick note to let you know that I&amp;rsquo;m currently working on something special for all my fellow developers/operations and GitLab enthusiasts out there. 🤓✨&lt;/p&gt;
&lt;p&gt;In the upcoming posts, I&amp;rsquo;ll be sharing a treasure trove of valuable tips and tricks related to GitLab pipelines! based in my experiences 🏗️ Whether you&amp;rsquo;re a seasoned pro or just getting started with GitLab CI/CD, there&amp;rsquo;s bound to be something for everyone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading major version Nextcloud</title>
      <link>https://jose.castrillo.eu/post/nextcloud-upgrade/</link>
      <pubDate>Sat, 20 May 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/nextcloud-upgrade/</guid>
      <description>&lt;p&gt;For those who have been facing the &amp;ldquo;Maintenance mode active&amp;rdquo; after applied a nextcloud upgrade by switching container image version, due a &lt;em&gt;major versioning issue&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Even when you issue the occ upgrade into continer you gets hit by something like below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;www-data@87401bdd2fa8:~/html$ php /var/www/html/occ upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Nextcloud or one of the apps require upgrade - only a limited number of commands are available
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You may use your browser or the occ upgrade &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; to &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; the upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Setting log level to debug
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Exception: Updates between multiple major versions and downgrades are unsupported.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Update failed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Maintenance mode is kept active
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resetting log level
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Keep a eye on this part: &lt;em&gt;Updates between multiple major versions and downgrades are unsupported.&lt;/em&gt; as I was running 25 version I can no jump for above 27, if that&amp;rsquo;s our case, we can edit the file &lt;strong&gt;app/config/config.php&lt;/strong&gt; edit the version of your nextcloud like below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python &amp; Virtual Environments</title>
      <link>https://jose.castrillo.eu/post/python3-environment/</link>
      <pubDate>Wed, 15 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/python3-environment/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/python-env.jpg&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;When starting a Python 3 project in Linux, it&amp;rsquo;s essential to follow best practices to ensure a clean and isolated development environment. One of the recommended approaches is to utilize virtual environments. Virtual environments allow you to create an isolated environment for each project, preventing conflicts between different packages and dependencies. In this guide, we&amp;rsquo;ll walk you through the steps to set up and activate a virtual environment for your Python 3 project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing tags on Azure invoices</title>
      <link>https://jose.castrillo.eu/post/python-panda-invoices/</link>
      <pubDate>Tue, 21 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/python-panda-invoices/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/pandas.gif&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Merging two CSV files using Pandas in Python 3 on Linux is a quick and easy process that can save you a lot of time and effort, however in my case I used other script to extract specific tag values from a CSV file, converts them into a JSON object, and writes them to a new CSV file, in that way I provided a workaround for those tags wanted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java Native Memory Tracking in GNU/linux</title>
      <link>https://jose.castrillo.eu/post/java-mem-linux/</link>
      <pubDate>Tue, 10 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/java-mem-linux/</guid>
      <description>&lt;p&gt;Java provides a &lt;em&gt;Native Memory Tracking&lt;/em&gt; feature that enables you to monitor the memory usage of your Java application. This feature is particularly useful for identifying memory leaks and optimizing the memory usage of your application. In this post, we will discuss how to activate Native Memory Tracking for a Java jar application in Linux.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Check Java Version&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First, you need to check the version of Java installed on your system using the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloining a repo and setting up as artifact</title>
      <link>https://jose.castrillo.eu/post/clone-pipeline-gitlab/</link>
      <pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/clone-pipeline-gitlab/</guid>
      <description>&lt;p&gt;On this post I will give you an example of how to clone a repo into your pipeline and use it for other jobs.&lt;/p&gt;
&lt;p&gt;As you can read from Gitlab official &lt;a href=&#34;https://docs.gitlab.com/ee/ci/pipelines/job_artifacts.html&#34;&gt;documentation&lt;/a&gt; artifact can output an archive of files/directories. I set the following example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  artifacts:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    paths:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;lt;project_name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    exclude:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;lt;project_name&amp;gt;/.git/**/*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    expire_in: &lt;span class=&#34;m&#34;&gt;60&lt;/span&gt; seconds
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We need to call the &lt;em&gt;artifacts&lt;/em&gt; by using &amp;ldquo;artifacts&amp;rdquo; keyboard in the pipeline, in this example &lt;em&gt;paths&lt;/em&gt; keyboard which files/directories add into artifacts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trigger pipelines in Gitlab</title>
      <link>https://jose.castrillo.eu/post/trigger-pipeline-gitlab/</link>
      <pubDate>Thu, 10 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/trigger-pipeline-gitlab/</guid>
      <description>&lt;p&gt;The following post is example of how to activate and use Trigger pipeline by API the official documentation over &lt;a href=&#34;https://docs.gitlab.com/ee/ci/triggers/&#34;&gt;here&lt;/a&gt; as it mentioned is can be use &lt;em&gt;&amp;ldquo;to trigger a pipeline for a specific branch or tag&amp;rdquo;&lt;/em&gt;; for our example I use it to activate a pipeline into specific branch.&lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;repoA will be the main one where the pipeline trigger it will be activate&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From &lt;strong&gt;repoA&lt;/strong&gt; go to Settings-CI/CD-Pipeline triggers&lt;/li&gt;
&lt;li&gt;Click on &lt;em&gt;&amp;ldquo;add trigger&amp;rdquo;&lt;/em&gt; copy your token&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;repoB&lt;/strong&gt; that will be our caller of the &lt;strong&gt;repoA&lt;/strong&gt; pipeline create a variable where you can paste the token.&lt;/li&gt;
&lt;li&gt;Finally into your pipeline on &lt;strong&gt;repoB&lt;/strong&gt; you can add something like below:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The best part is that you can reference to specific branch &lt;strong&gt;ref=&amp;quot;&amp;lt;branch_name&amp;gt;&amp;quot;&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating snapshot image in Hetzner with packer</title>
      <link>https://jose.castrillo.eu/post/hetzner-image-snapshot/</link>
      <pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/hetzner-image-snapshot/</guid>
      <description>&lt;p&gt;On this entry we will cover how to create an new image in Hetzner Public Cloud by using Packer, as result we willl get a snapshot and then we can generate this new instance by using the snapshot created.&lt;/p&gt;
&lt;p&gt;Tools used so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ansible&lt;/li&gt;
&lt;li&gt;Packer&lt;/li&gt;
&lt;li&gt;hcl2_upgrade&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I did not create a repo yet because it will be the first part of a personal project I&amp;rsquo;m  working on, hence I will provide a couple of templates below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>S3 by using random provider on Terraform</title>
      <link>https://jose.castrillo.eu/post/random-provider-tf/</link>
      <pubDate>Sun, 24 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/random-provider-tf/</guid>
      <description>&lt;p&gt;This is a piece of cake for most of you that are working on tf, I will drop this snippet code where you can create a S3 bucket with an unique name; as you know those &lt;a href=&#34;https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html&#34;&gt;requirements&lt;/a&gt; should fit in order to create the S3, hence we can use &lt;a href=&#34;https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string&#34;&gt;random_string&lt;/a&gt;, also we can use random_id, on this case I used random_string.&lt;/p&gt;
&lt;p&gt;main.tf&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-hcl&#34; data-lang=&#34;hcl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;resource&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;random_string&amp;#34; &amp;#34;randomz&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;  length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;  lower&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;  special&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;  upper&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Above is a &lt;strong&gt;resource block&lt;/strong&gt; where its block label is &lt;strong&gt;random_string&lt;/strong&gt; I defined the block body in that way in order to fit the S3&amp;rsquo;s &lt;a href=&#34;https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html&#34;&gt;requirements&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to switch 3053 to 53 on Gl.inet</title>
      <link>https://jose.castrillo.eu/post/router-glinet-adguard/</link>
      <pubDate>Mon, 06 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/router-glinet-adguard/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/adguard.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;For those who has a Gl.inet router featured with Adguard on it, you should being facing a issue at Adguard when it activated at first time, from clients list the only client listed is &amp;ldquo;localhost&amp;rdquo;, the reason it&amp;rsquo;s due &lt;a href=&#34;https://linux.die.net/man/8/dnsmasq&#34;&gt;dnsmasq&lt;/a&gt; is runing on port 53 in the other hand adguard by default on port 3053, in order to solve it you have to switch them. This entry is a forward post by the workaround explained by &lt;strong&gt;chao-chao&lt;/strong&gt; from &lt;a href=&#34;https://forum.gl-inet.com/t/gl-mv1000-with-adguard-all-clients-show-as-localhost/13664/13&#34;&gt;gl-inet-forum&lt;/a&gt; I did it and it&amp;rsquo;s working from my side, below is a little summary of the steps I did:&lt;/p&gt;</description>
    </item>
    <item>
      <title>setup auto mount smb v1.0</title>
      <link>https://jose.castrillo.eu/post/smb-fedora-v1/</link>
      <pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/smb-fedora-v1/</guid>
      <description>&lt;p&gt;In any case you still having a device that works with smb v1.0 you can use the following way in order to mount it on your Fedora host:&lt;/p&gt;
&lt;p&gt;Path: /etc/NetworkManager/dispatcher.d/smb-setup.sh&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/sh -e
# Script to dispatch NetworkManager events
# more over: https://stackoverflow.com/questions/16848021/linux-networkmanagers-etc-networkmanager-dispatcher-d-test-script-does-not
# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
# See NetworkManager(8) for further documentation of the dispatcher events.

INF=&amp;#34;$1&amp;#34; # your current interface name such as eth0, wlp4s0 and so on
STA=&amp;#34;$2&amp;#34; # status such as UP or DOWN

# Send message to /var/log/messages
logger -s &amp;#34;$0 called for interface named $INF with $STA ...&amp;#34;

if [ &amp;#34;$INF&amp;#34; == &amp;#34;eno1&amp;#34; ]
then
mount -t cifs -o vers=1.0,username=admin,password=Tr3x_1986,uid=1000,gid=1000,forceuid,forcegid //10.34.1.1/1fea-6abb /home/jose/homedisk
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;more info:&lt;/p&gt;</description>
    </item>
    <item>
      <title>csi interface for eks by terraform</title>
      <link>https://jose.castrillo.eu/post/efs-csi-eks-tf/</link>
      <pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/efs-csi-eks-tf/</guid>
      <description>&lt;p&gt;It has been a while since my last post, I was busy these last couples of weeks; meanwhile I&amp;rsquo;ve learned how to implement a csi interface on eks (aws k8s) and it&amp;rsquo;s pretty interesting on AWS by EKS service, thus I though it can be useful this content into a post.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You will need your eks already running.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ll point each tools, techs, etc I used on this procedure:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible missing sudo</title>
      <link>https://jose.castrillo.eu/post/ansible-missing-sudo/</link>
      <pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ansible-missing-sudo/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Ansible FAILED! =&amp;gt; {&amp;#34;msg&amp;#34;: &amp;#34;Missing sudo password&amp;#34;}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I have a couple of ansible-playbook, from one of my endpoint device started to prompt &lt;em&gt;missing sudo password&lt;/em&gt; due there is needed a sudoers access, thus this is one of the solutions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;login by ssh to the device, where ansible can&amp;rsquo;t login.&lt;/li&gt;
&lt;li&gt;go to /etc/sudoers.d/&lt;/li&gt;
&lt;li&gt;create a new entry eg: &amp;ldquo;023_user-nopass&amp;rdquo;&lt;/li&gt;
&lt;li&gt;add the following line &amp;ldquo;user ALL=(ALL) NOPASSWD: ALL&amp;rdquo; into the file &amp;ldquo;023_user-nopass&amp;rdquo;&lt;/li&gt;
&lt;li&gt;change the permission by using:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo chmod 440 023_user-nopass
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;NOTE: please change &lt;user&gt; value for your normal user access -not the root one-&lt;/p&gt;</description>
    </item>
    <item>
      <title>HelloWorld Solidity</title>
      <link>https://jose.castrillo.eu/post/blockchaing-solidity-hello/</link>
      <pubDate>Fri, 14 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/blockchaing-solidity-hello/</guid>
      <description>&lt;p&gt;This&amp;rsquo;s my Hello World on Solidity:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-solidity&#34; data-lang=&#34;solidity&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// SPDX-License-Identifier: GPL-3.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pragma solidity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;contract&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;TaskContract&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nextId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Task&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;createTask&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nextId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;nextId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;findIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;internal&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;view&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;returns&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;revert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Task not found&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;readTask&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;view&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;returns&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// _id ---&amp;gt; variable local
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;findIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;updateTask&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;findIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;description&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;deleteTask&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;uint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;findIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;delete&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tutorial followed: &lt;a href=&#34;https://youtube.076.ne.jp/watch?v=JP-dzoDmJFw&#34;&gt;Solidity SCRUD&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How setup a Gitlab Runner (CI)</title>
      <link>https://jose.castrillo.eu/post/gitlab-runner1/</link>
      <pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/gitlab-runner1/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/runner_logo.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;h2 id=&#34;part-i--&#34;&gt;Part I -&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m learning Gitlab Runner and how them works on CI implementation.&lt;/p&gt;
&lt;p&gt;GitLab Runner is an application that works with GitLab CI to run jobs in a pipeline, they are written in &lt;a href=&#34;https://golang.org/&#34;&gt;GO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Summary the task I will do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Gitlab-runner as container(podman).&lt;/li&gt;
&lt;li&gt;Runner registration.
&lt;ul&gt;
&lt;li&gt;Enter the GitLab instance URL&lt;/li&gt;
&lt;li&gt;registration token.&lt;/li&gt;
&lt;li&gt;runner description.&lt;/li&gt;
&lt;li&gt;tags.&lt;/li&gt;
&lt;li&gt;Select an &lt;a href=&#34;https://docs.gitlab.com/runner/executors/&#34;&gt;executor&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a gitlab-ci.yml&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Install runner:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the Volume:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;podman volume create gitlab-runner-config
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pull and start the container by &lt;strong&gt;register&lt;/strong&gt; command, then we will prompt the data need for register the runner into the project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Hetzner-CLi on Fedora by Toolbox</title>
      <link>https://jose.castrillo.eu/post/hetzner-cli-toolbox/</link>
      <pubDate>Sun, 04 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/hetzner-cli-toolbox/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/hetzner-blog.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this new entry I will share a briefly installation step by step by using Toolbox at Fedora 34 to use the hcloud-cli. Due we do not have an official package on fedora &lt;a href=&#34;https://github.com/hetznercloud/cli&#34;&gt;git-repo&lt;/a&gt; yet, hence we can create this container.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre-requirement:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visit Hetzner Cloud Console at &lt;a href=&#34;https://console.hetzner.cloud&#34;&gt;https://console.hetzner.cloud&lt;/a&gt;, select your project, and create a new API Token.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start:&lt;/p&gt;
&lt;p&gt;1- Create a file named &lt;em&gt;Dockerfile.debian&lt;/em&gt; with the following contents(the following image is made to use a script to named and set a token_key):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redundant Array of Inexpensive Disks</title>
      <link>https://jose.castrillo.eu/post/raid-disk/</link>
      <pubDate>Sun, 06 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raid-disk/</guid>
      <description>&lt;h1 id=&#34;raid&#34;&gt;RAID&lt;/h1&gt;
&lt;p&gt;RAID is a technology that is used to increase the performance and/or reliability of data storage. The abbreviation stands for Redundant Array of Inexpensive Disks. A RAID system consists of two or more drives working in parallel. These disks can be hard discs, but there is a trend to also use the technology for SSD (solid state drives). There are different RAID levels, each optimized for a specific situation. These are not standardized by an industry group or standardization committee.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install /e/OS in Gigaset GS290 from GNU/Linux</title>
      <link>https://jose.castrillo.eu/post/gigaset-e-fastboot/</link>
      <pubDate>Sun, 21 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/gigaset-e-fastboot/</guid>
      <description>&lt;p&gt;I created this post as aim to collaborate with the project and help those how are bought a &lt;a href=&#34;https://doc.e.foundation/devices/GS290/&#34;&gt;Gigaset GS290&lt;/a&gt; to test this great /e/ OS degoogle fork, and have been failed by using &lt;a href=&#34;https://doc.e.foundation/easy-installer&#34;&gt;easy installer&lt;/a&gt;, but first I will let clearly that these steps are the steps I followed in order to set up the /e/ OS in my Gigaset.&lt;/p&gt;
&lt;p&gt;Requirement-system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNU/Linux OS (in my case Fedora).**&lt;/li&gt;
&lt;li&gt;ADB &amp;amp; Fastboot library &lt;strong&gt;latest&lt;/strong&gt;.**&lt;/li&gt;
&lt;li&gt;/e/OS build**&lt;/li&gt;
&lt;li&gt;boot.img**&lt;/li&gt;
&lt;li&gt;recovery.img**&lt;/li&gt;
&lt;li&gt;Basic knowledge in terminal &amp;amp; command line.&lt;/li&gt;
&lt;li&gt;Sudo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Requirement-smartphone:&lt;/p&gt;</description>
    </item>
    <item>
      <title>/prometheus/data/chunks_head/ troubleshoot</title>
      <link>https://jose.castrillo.eu/post/prometheus-troubleshooting/</link>
      <pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/prometheus-troubleshooting/</guid>
      <description>&lt;p&gt;I will share a little workaround in order to re-establish Prometheus service back in the game.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Origin of issue:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve had an issue with my local network at home by the ISP provider, I had have shut down my RaspberryPi and other devices.&lt;/p&gt;
&lt;p&gt;Then when I could solved the issue and all my devices were up and running I checked up my services and I found that Prometheus got stuck by a &lt;em&gt;&amp;ldquo;mmap: invalid argument&amp;rdquo;&lt;/em&gt; message.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup monitoring system [Grafana&#43;Prometheus] in RaspberryPi (Part1)</title>
      <link>https://jose.castrillo.eu/post/raspberrypi-monitoring-system/</link>
      <pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raspberrypi-monitoring-system/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/grafa_prome_rasp.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this post I will explain how I set up a Grafana + Prometheus into a RaspberryPi with &lt;a href=&#34;https://www.raspberrypi.org/downloads/raspbian/&#34;&gt;Raspbian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here it&amp;rsquo;s a little design where explains how it is the implementation I did:&lt;/p&gt;
&lt;h2&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/design_monitoring.png&#34; alt=&#34;&#34;  /&gt;
&lt;/h2&gt;
&lt;p&gt;🔵 Server:
RaspberryPi 3B+&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Services to install(server side):
&lt;ol&gt;
&lt;li&gt;Grafana&lt;/li&gt;
&lt;li&gt;Prometheus (Metric collector and database)&lt;/li&gt;
&lt;li&gt;Node Exporter (collector worker)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🟢 Clients:
Raspberrypi Zero
Fedora Workstation
Debian VPS&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Services to install(client side):
&lt;ol&gt;
&lt;li&gt;Node Exporter (collector worker).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;🔵 Lets start from the &lt;strong&gt;server&lt;/strong&gt; side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Format &amp; Mount an usb drive in GNU/Linux [terminal]</title>
      <link>https://jose.castrillo.eu/post/mount-usb-gnulinux/</link>
      <pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/mount-usb-gnulinux/</guid>
      <description>&lt;p&gt;Format and Mount usb drive in GNU/Linux&lt;/p&gt;
&lt;p&gt;Tools/commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lsblk&lt;/li&gt;
&lt;li&gt;parted&lt;/li&gt;
&lt;li&gt;df&lt;/li&gt;
&lt;li&gt;fdisk&lt;/li&gt;
&lt;li&gt;mkfs&lt;/li&gt;
&lt;li&gt;wipefs&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;check if which blcok devices used by usb (sd) [df -h, lsblk] eg:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;a)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo fdisk -l
Disk /dev/sda: 7.2 GiB, 7736072192 bytes, 15109516 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;b)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring with Cockpit</title>
      <link>https://jose.castrillo.eu/post/cockpit-monitoring/</link>
      <pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/cockpit-monitoring/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cockpit.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this post we are going to talk about &lt;strong&gt;cockpit&lt;/strong&gt; how to monitoring and manage your GNU/Linux infrastructure. Based on the official description, &lt;a href=&#34;https://cockpit-project.org/&#34;&gt;Cockpit&lt;/a&gt; project is pretty easy to use, install and integrate, you can manage and add servers by ssh credentials to your dashboard, showing logs, monitoring containers(podman/docker), services running, disk usage, etc.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve using it around 1 year, the only thing I cannot see it&amp;rsquo;s an alert tool or event trigger, maybe for the next release; is developed by RH team and &lt;a href=&#34;https://github.com/cockpit-project/cockpit/blob/master/COPYING&#34;&gt;open source&lt;/a&gt;, it&amp;rsquo;s already integrated in some of the GNU/Linux distribution ( RH, debian, ubuntu, fedora, etc).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Display Android devices from Linux workstation</title>
      <link>https://jose.castrillo.eu/post/display-android-fedora/</link>
      <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/display-android-fedora/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/mirror.jpg&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m sure you&amp;rsquo;ve heard about &lt;a href=&#34;https://github.com/Genymobile/scrcpy&#34;&gt;Scrcpy&lt;/a&gt;! it&amp;rsquo;s a pretty nice tool that allows you to display and control an Android devices from your PC either usb or TCP/IP, hence on this post I will explained how to set up Scrcpy in Fedora 33 by using &lt;a href=&#34;https://pagure.io/copr/copr&#34;&gt;copr&lt;/a&gt; repo. It&amp;rsquo;s really useful, and believe me if I told you that; from one of my last job, one of my colleagues got the idea to install it, and thanks to that the dev team saved a lot of time testing a app integration remotely.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Serial communication Arduino</title>
      <link>https://jose.castrillo.eu/post/arduino-serial-oled/</link>
      <pubDate>Fri, 27 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/arduino-serial-oled/</guid>
      <description>&lt;p&gt;From my last post (Arduino-oled-display) I added a new function that allows me to send notification/messages from my terminal (linux) to my Arduino and it shows it through the little Oled screen. Here I will share the commands and code lines to get done the serial communication on your project.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;loop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;available&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Process message when new line character is received
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Arduino Received: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;//digitalWrite(ledPin, HIGH);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;//
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;HELLO&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// DON&amp;#39;T forget to add &amp;#34;\n&amp;#34; at the end of the string.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;HELLO&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;c1&#34;&gt;//digitalWrite(ledPin, LOW);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clearDisplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setCursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setTextSize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Hi jose!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nf&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Clear received buffer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Open a Nextcloud&#39;s DB through a ssh connection</title>
      <link>https://jose.castrillo.eu/post/dbeaver-nextcloud-mariadb/</link>
      <pubDate>Mon, 23 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/dbeaver-nextcloud-mariadb/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/nextcloud-dbeaver.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;The following post explains how to open and connect your Nextcloud&amp;rsquo;s DB (MariaDB) by a ssh tunnel.&lt;/p&gt;
&lt;p&gt;Field description:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Server side(GNULinux):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nextcloud: running on Docker-compose engine.&lt;/li&gt;
&lt;li&gt;OS: Debian with Docker compose installed.&lt;/li&gt;
&lt;li&gt;Database: MariaDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Localhost side(GNULinux):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS: Fedora.&lt;/li&gt;
&lt;li&gt;CLient: Dbeader 7.2.5&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Further information you can go to my docker compose Statement &lt;a href=&#34;https://help.nextcloud.com/t/nexcloud-deployment-by-docker-compose/90660&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit your docker-compose.yml and add the &amp;ldquo;ports&amp;rdquo; key into the statement.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ nano docker-compose.yml
  ports:
    - 5555:3306
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;port: 5555 &amp;ndash;&amp;gt; Host.&lt;/li&gt;
&lt;li&gt;port: 3306 &amp;ndash;&amp;gt; Container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From the above the port &amp;ldquo;5555&amp;rdquo; it was used as example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nextcloud bot as Notification System</title>
      <link>https://jose.castrillo.eu/post/bot-nextcloud-api/</link>
      <pubDate>Fri, 09 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bot-nextcloud-api/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/donatello.png#center&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Following the last post, where I shared how to use Telegram&amp;rsquo;s bot; on this post I&amp;rsquo;m going to explain how implement it by Chat &lt;em&gt;Nextcloud API&lt;/em&gt;. This post is useful for those have a &lt;em&gt;Nexctcloud&lt;/em&gt; deployment running at home/cloud.&lt;/p&gt;
&lt;p&gt;Assuming you have already Nextcloud up and running, we can create the new user, that we are gonna use it as &amp;ldquo;BOT&amp;rdquo; we will need the chat room token and the &amp;ldquo;BOT&amp;rdquo; credentials.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Telegram Bot as Notification System</title>
      <link>https://jose.castrillo.eu/post/bot-telegram-linux/</link>
      <pubDate>Thu, 24 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bot-telegram-linux/</guid>
      <description>&lt;p&gt;From one older post &amp;ldquo;Create a job using crontab&amp;rdquo; I used into my script the service exim4/ssmtp as mail server using gmail, but as we&amp;rsquo;re trying to walk away of Google&amp;rsquo;s jaw, I switched my notification engine to Telegram by an API service(bot)&amp;hellip; almost it&amp;rsquo;s a step forward ! :)&lt;/p&gt;
&lt;p&gt;Requirement:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bot (Telegram)&lt;/li&gt;
&lt;li&gt;Web Browser&lt;/li&gt;
&lt;li&gt;Terminal(script)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will assume you have already set up your Bot on Telegram with &lt;a href=&#34;https://core.telegram.org/bots&#34;&gt;BotFather&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you have already created your Bot you can check by the API through a web browser&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to deploy Wordpress &#43; Mariadb using Docker</title>
      <link>https://jose.castrillo.eu/post/wordpress-mariadb-docker/</link>
      <pubDate>Sat, 08 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/wordpress-mariadb-docker/</guid>
      <description>&lt;p&gt;Below you will see the statement I used to deploy a &lt;a href=&#34;https://hub.docker.com/_/wordpress&#34;&gt;Wordpress&lt;/a&gt; as db &lt;a href=&#34;https://hub.docker.com/_/mariadb&#34;&gt;mariadb&lt;/a&gt; (mysql); I shared it to you, cos I&amp;rsquo;ve been looking out for a good .yml statement piece, but some of them are older or put other set frontend as nginx, etc. I did a simple and easier deployment statement, so here we have:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;3.3&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wordpress&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wordpress:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./html:/var/www/html&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;8080:80&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;WORDPRESS_DB_HOST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;db:3306&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;WORDPRESS_DB_USER&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wordpress&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;WORDPRESS_DB_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;links&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mariadb:10.5.4-focal&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./db_data:/var/lib/mysql&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;SECRET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wordpress&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MYSQL_USER&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wordpress&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MYSQL_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;3306:3306&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can switch the local mount to volume mount it will depend of you design.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenVPN usando Raspberry Pi3 &#43; Noip</title>
      <link>https://jose.castrillo.eu/post/openvpn-raspberrypi/</link>
      <pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/openvpn-raspberrypi/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/openvpn-raspberry.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Requisitos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RaspberryPi &amp;ndash;&amp;gt; &lt;a href=&#34;https://www.raspberrypi.org/downloads/raspberry-pi-os/&#34;&gt;https://www.raspberrypi.org/downloads/raspberry-pi-os/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenVPN &amp;ndash;&amp;gt; &lt;a href=&#34;https://pivpn.io/&#34;&gt;https://pivpn.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cuenta abierta &amp;ndash;&amp;gt; &lt;a href=&#34;https://www.noip.com/&#34;&gt;https://www.noip.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Una IP Estatica en tu Raspberry &amp;ndash;&amp;gt; Router manual&lt;/li&gt;
&lt;li&gt;Router con capacidad de tunel VPN &amp;mdash;&amp;gt; IPsec, PPTP, L2TP.&lt;/li&gt;
&lt;li&gt;Public IP &amp;mdash;&amp;gt; &lt;a href=&#34;https://www.whatismyip.net/&#34;&gt;https://www.whatismyip.net/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pasos:&lt;/p&gt;
&lt;h3 id=&#34;1-crear-dns-record-a-en-noip&#34;&gt;1. Crear DNS Record A en Noip&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Apunta tu &lt;a href=&#34;https://www.whatismyip.net/&#34;&gt;IP publica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Abre tu sesion con tus credenciales en &lt;a href=&#34;https://www.noip.com/&#34;&gt;Noip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dentro del Dashboard ve al apartado &lt;strong&gt;&amp;ldquo;Dynamic DNS &amp;gt; Create Hostname&amp;rdquo;&lt;/strong&gt; rellena:
&lt;ul&gt;
&lt;li&gt;hostname, ejemplo: &lt;em&gt;test&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Domain, ejemplo: &lt;em&gt;ddns.net&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;IPv4 address: &lt;strong&gt;Tu IP publica&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click en &lt;strong&gt;Crear&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/openvpn-noip.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Podman service in Silverblue by Systemd</title>
      <link>https://jose.castrillo.eu/post/podman-monitoring-systemd/</link>
      <pubDate>Tue, 07 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/podman-monitoring-systemd/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cockpit-fedora.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Into my Devops learning path 👨‍💻 I decided to deploy a monitoring centre into my workstation where I could be able to watch my containers, resources, logs, etc and continue improving my knowledge, in my case I&amp;rsquo;m using &lt;a href=&#34;https://silverblue.fedoraproject.org/&#34;&gt;Silverblue&lt;/a&gt; developed by Fedora so in here it&amp;rsquo;s a little bit different the setup; as monitoring tool I choose &lt;a href=&#34;https://cockpit-project.org&#34;&gt;Cockpit&lt;/a&gt; for its great integration and support.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Workstation: Silverblue 🖥️&lt;/li&gt;
&lt;li&gt;Container engine: Podman ⚙️&lt;/li&gt;
&lt;li&gt;Monitoring tool(app/service):Cockpit 📦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I splinted out the instructions in 4 simple parts:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to set your Domain name in Linux</title>
      <link>https://jose.castrillo.eu/post/domain-name-linux/</link>
      <pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/domain-name-linux/</guid>
      <description>&lt;p&gt;Resume to set a domain name in Linux&lt;/p&gt;
&lt;p&gt;concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FQDN&lt;/strong&gt; (Fully Qualified Domain Name)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;eg:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;hostname&lt;/strong&gt; = server1 //
&lt;strong&gt;FQDN&lt;/strong&gt; = server1.example.com&lt;/p&gt;
&lt;h3 id=&#34;1-first-add-fqdn-to-your-hostname-in-etchosts-file&#34;&gt;1. First add FQDN to your hostname in /etc/hosts file.&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/hosts
10.120.68.23 server1.example.com server1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;confirm the FQDN issue the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# hostname -f
server1.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;21-configure-domain-name-red-hat-rhel-fedora-and-centos&#34;&gt;2.1. Configure domain name (Red Hat RHEL, Fedora and CentOS)&lt;/h3&gt;
&lt;p&gt;From these path add the parameters needs&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vi /etc/sysconfig/network
DOMAINNAME=&amp;lt;domainname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vi /etc/sysctl.conf
kernel.domainname = &amp;lt;domainname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;22-figure-domain-name--ubuntu-debian&#34;&gt;2.2. figure domain name ( Ubuntu, Debian)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#vi /etc/hostname
server1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then restart the service:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Display OLED Arduino</title>
      <link>https://jose.castrillo.eu/post/arduino-oled-display/</link>
      <pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/arduino-oled-display/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/i2c-oled.jpg&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this post I&amp;rsquo;ll explaining how to setup a little OLED screen 128X64 on Arduino Leonardo&lt;/p&gt;
&lt;p&gt;Tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chit: &lt;a href=&#34;https://www.arduino.cc/en/Main/Arduino_BoardLeonardo&#34;&gt;Arduino Leonardo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Screen: Led OLED display 128x64 bought &lt;a href=&#34;https://www.amazon.es/gp/product/B078J78R45/&#34;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Workstation: &lt;a href=&#34;https://silverblue.fedoraproject.org/&#34;&gt;Silverblue&lt;/a&gt; Fedora 33&lt;/li&gt;
&lt;li&gt;Compiler: &lt;a href=&#34;https://flathub.org/apps/details/cc.arduino.arduinoide&#34;&gt;Arduino IDE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Over &lt;a href=&#34;https://cdn.shopify.com/s/files/1/1509/1638/files/1.3_Zoll_OLED_Connection_Diagrams.pdf?v=1606158613&#34;&gt;here&lt;/a&gt; you can see the connection diagram.&lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the &lt;a href=&#34;https://flathub.org/apps/details/cc.arduino.arduinoide&#34;&gt;Arduino IDE&lt;/a&gt; from Flathub repo.&lt;/li&gt;
&lt;li&gt;Now you have the flatpak Arduino app, below you will see older information related to a bug of the last Arduino Flatpak version, &lt;em&gt;but now it fixed&lt;/em&gt;. &lt;strong&gt;Please continue with the 3th step.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;del&gt;2. Launch the Arduino IDE:&lt;/del&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>LineageOS 17.1 in Xiaomi A2 Lite (Daisy)</title>
      <link>https://jose.castrillo.eu/post/lineageos17-xiaomi/</link>
      <pubDate>Fri, 03 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/lineageos17-xiaomi/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/LineageOS-17.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;LineageOS17.1 in Xiaomi A2 Lite (Daisy)&lt;/p&gt;
&lt;p&gt;The follow instructions are done by adb and twrp commands line.&lt;/p&gt;
&lt;p&gt;OS used: Windows 10&lt;/p&gt;
&lt;p&gt;Requirement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;adb fastboot tool&lt;/li&gt;
&lt;li&gt;USB drivers&lt;/li&gt;
&lt;li&gt;Xiaomi driver&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Set into your android device:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USB debugging option enable.&lt;/li&gt;
&lt;li&gt;Disable Encryption on the phone (DisableForceEncryption.zip)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Packages(download and leave the installation packages into your mobile SD):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LineageOS 17.1 for Xiaomi &amp;ldquo;Daisy&amp;rdquo;&lt;/li&gt;
&lt;li&gt;TWRP&lt;/li&gt;
&lt;li&gt;GApps&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Press the dlower button + power button to boot in&lt;/li&gt;
&lt;li&gt;Plug the mobile on your pc.&lt;/li&gt;
&lt;li&gt;Open adb terminal tool (C:\Program Files (x86)\Minimal ADB and Fastboot\cmd-here.exe) and test it by: adb devices&lt;/li&gt;
&lt;li&gt;Fastboot boot twrp.img &amp;ndash;&amp;gt; in my case I use: &lt;strong&gt;twrp-daisy-3.3.1-0-offain.img&lt;/strong&gt; it worked for my device :)&lt;/li&gt;
&lt;li&gt;Make sure to create a backup (System, Data and Boot).&lt;/li&gt;
&lt;li&gt;Then wipe the data partition, cache partition and the system partition (on this step you will lose all your data).&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;adb shell

twrp wipe data
twrp wipe cache
twrp wipe system
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;Install LineageOS17 image by TWRP commands and restart to TWRP mode again.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;twrp install /external_sd/LineageOS17/lineage-17.1-20200413-UNOFFICIAL-daisy.zip
exit
adb reboot bootloader
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;Install Gapps (google play market)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;adb shell
twrp install /external_sd/LineageOS17/BiTGApps-arm64-10.0.0-v0.6_signed.zip
exit
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;9&#34;&gt;
&lt;li&gt;switch to slot if you are been in the A slot now switch boot onto B&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;fastboot getvar current-slot  --to know which slot you are
fastboot set_active b  -- If you were at A slot so switch to B
adb reboot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Below I left a couple of links were useful for me; I strong recommended to backup all your data before to start, as well as count with other phone in case you get in trouble with the installation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add your app into the Gnome Desktop Menu</title>
      <link>https://jose.castrillo.eu/post/desktop-gnome-app/</link>
      <pubDate>Mon, 30 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/desktop-gnome-app/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cryptomator.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been looking for a encryptation app open source, to encrypt my files into Cloud with a touch of off-online control, and I found this nice app called &lt;a href=&#34;https://cryptomator.org/&#34;&gt;Cryptomator&lt;/a&gt;. I downloaded the extension &lt;a href=&#34;https://appimage.org/&#34;&gt;.Appimage&lt;/a&gt;, so the following instruction I will explain is how to set the .appimage into the app menu in Gnome.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the Cryptomator by the link above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the permission below:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#chmod a+x cryptomator-1.4.15-x86_64.AppImage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The try to execute the file by a shell terminal or just double click on it ( to confirm it was downloaded fined)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Repo-list</title>
      <link>https://jose.castrillo.eu/post/repo-list/</link>
      <pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/repo-list/</guid>
      <description>&lt;p&gt;This is a documentation I&amp;rsquo;ve made time ago searching some open source tools and platforms(&amp;amp; freeware), I hope It can be useful to you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ticketing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.graylog.org/&#34;&gt;https://www.graylog.org/&lt;/a&gt;    Monitoring / Open source&lt;/p&gt;
&lt;p&gt;Discover and resolve issues faster. Keep end users happy with less downtime and better performance by proactively monitoring key indicators and exceptions across the entire stack.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.happyfox.com/&#34;&gt;https://www.happyfox.com/&lt;/a&gt;   Ticketing / private&lt;/p&gt;
&lt;p&gt;Meet HappyFox, a practical help desk and customer support software solution. Reduce chaos and bring order to your support process with a robust support ticket system, self-service knowledge base and community forums.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL some concepts &amp; notes</title>
      <link>https://jose.castrillo.eu/post/sql/</link>
      <pubDate>Mon, 24 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/sql/</guid>
      <description>&lt;p&gt;SQL Structured Query Language, is a language designed to allow both technical and non-technical users query, manipulate, and transform data from a relational database.&lt;/p&gt;
&lt;p&gt;Some popular SQL databases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Postgres&lt;/li&gt;
&lt;li&gt;Oracle&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Relational database:&lt;/p&gt;
&lt;p&gt;Represents a collection of related ( two-dimensional) tables.Each of the tables are similar to an Excel spreadsheet, with a fixed number of named columns and any number of rows of data.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DDL&lt;/strong&gt; (Data Definition Language) refers to the CREATE, ALTER and DROP statements DDL allows to add / modify / delete the logical structures which contain the data or which allow users to access / maintain the data (databases, tables, keys, views&amp;hellip;). DDL is about &amp;ldquo;metadata&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DML&lt;/strong&gt; (Data Manipulation Language) refers to the INSERT, UPDATE and DELETE statements DML allows to add / modify / delete data itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DQL&lt;/strong&gt; (Data Query Language) refers to the SELECT, SHOW and HELP statements (queries) SELECT is the main DQL instruction. It retrieves data you need. SHOW retrieves infos about the metadata. HELP&amp;hellip; is for people who need help.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DCL&lt;/strong&gt; (Data Control Language) refers to the GRANT and REVOKE statements DCL is used to grant / revoke permissions on databases and their contents. DCL is simple, but MySQL&amp;rsquo;s permissions are rather complex. DCL is about security.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DTL&lt;/strong&gt; (Data Transaction Language) refers to the START TRANSACTION, SAVEPOINT, COMMIT and ROLLBACK [TO SAVEPOINT] statements DTL is used to manage transactions (operations which include more instructions none of which can be executed if one of them fails).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some SQL queries:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker Container &#34;before start&#34;</title>
      <link>https://jose.castrillo.eu/post/docker-containers/</link>
      <pubDate>Sun, 26 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/docker-containers/</guid>
      <description>&lt;h2 id=&#34;part-i&#34;&gt;Part I&lt;/h2&gt;
&lt;p&gt;Containers are environments that host individual applications using a framework like &lt;strong&gt;Docker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Docker Editions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker CE ( community edition ) free version&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Docker EE ( enterprise edition) Paid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stable, released every 4 months.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Edge (beta) released every month. For testing&lt;/li&gt;
&lt;li&gt;EE, support for one year.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example how to create a container:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$docker container run --publish 80:80 --detach --name webhost nginx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;detach: subcommand is to let run the container and keep use the command prompt
name: create a container’s name.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to set you SSH key into Gitlab</title>
      <link>https://jose.castrillo.eu/post/ssh-gitlab-git/</link>
      <pubDate>Thu, 26 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ssh-gitlab-git/</guid>
      <description>&lt;p&gt;How to set you SSH key into Gitlab [&lt;em&gt;First you need to had installed Git onto your distro&lt;/em&gt;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to your terminal and issue the follow command to generate your key: &lt;code&gt;$ssh-keygen&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy your public key from the route: &lt;strong&gt;/home/user/.ssh/id_rsa.pub&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then go at your gitlab profile &lt;a href=&#34;https://gitlab.com/profile/keys/&#34;&gt;https://gitlab.com/profile/keys/&lt;/a&gt; a paste and save.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the terminal test the conection by typing: &lt;code&gt;$ssh -T git@gitlab.com&lt;/code&gt; and if everything was fine it has to promt &amp;ndash;&amp;gt; Welcome to GitLab, @user_account!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create a docker-compose.service</title>
      <link>https://jose.castrillo.eu/post/service-systemd-docker/</link>
      <pubDate>Sun, 08 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/service-systemd-docker/</guid>
      <description>&lt;p&gt;Here are the steps I made to set a service into my Fedora server to start/stop my Docker-compose (Wikijs)&lt;/p&gt;
&lt;p&gt;Why I decided to use a docker-compose into a Linux VM machine? &amp;mdash;&amp;gt; for make it more stable, faster,portable, isolated, etc.&lt;/p&gt;
&lt;p&gt;First I stared using Docker for Windows and it was a little bit unstable and not quite easy to handled, so when I switched to Docker compose into a Fedora VM and in that point it was a huge different(I do not recommend to use Docker in Windows); I use a Vmware hypervisor ( in the office we use it ).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backup your Wikijs DB</title>
      <link>https://jose.castrillo.eu/post/postgres-wikijs-backup/</link>
      <pubDate>Mon, 15 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/postgres-wikijs-backup/</guid>
      <description>&lt;p&gt;This is a little resume of how I&amp;rsquo;m doing a backup procedure of my wikijs database based in Docker-compose.&lt;/p&gt;
&lt;p&gt;Below are the systems used in my enviroment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project: &lt;a href=&#34;https://docs.requarks.io/&#34;&gt;Wikijs&lt;/a&gt; 2.0 Beta&lt;/li&gt;
&lt;li&gt;Platform: Docker-Compose&lt;/li&gt;
&lt;li&gt;DB: Postgres (9.6.14)&lt;/li&gt;
&lt;li&gt;Server: Fedora Server 30.x86_64&lt;/li&gt;
&lt;li&gt;Workstation: Windows 10 (provided by work) &amp;#x1f62c;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;psql-basic-commands&#34;&gt;PSQL basic commands:&lt;/h5&gt;
&lt;p&gt;Here are 4 basic commands I use to connect into my Postgre DB and check out DB list and quite.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;$psql -h localhost -p 5416 -U &amp;lt;my-user&amp;gt; -d &amp;lt;my-database&amp;gt;&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a .zip using 7z by cmd in Windows</title>
      <link>https://jose.castrillo.eu/post/zip-cmd-windows/</link>
      <pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/zip-cmd-windows/</guid>
      <description>&lt;p&gt;After to install the 7z in our windows workstation/server then we need to create our &lt;strong&gt;evironment variables&lt;/strong&gt; to call the function from the cmd [1].&lt;/p&gt;
&lt;p&gt;Then the command below will guide you to zip a simple file:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;7z a -r [myzip] [example.txt]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;[myzip] - the zip name file&lt;/li&gt;
&lt;li&gt;[example.txt] file used for the example&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To zip a folder&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;7z a [myzip] [folder]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Docu based thx to the information seen from: [1] &lt;a href=&#34;https://help.goodsync.com/hc/en-us/articles/360007773451-Automated-Backup-with-Compression-and-Encryption&#34;&gt;GlobalEnviroment&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Closing opened ports on Linux (Fedora 29)</title>
      <link>https://jose.castrillo.eu/post/ports-networking-linux/</link>
      <pubDate>Sun, 05 May 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ports-networking-linux/</guid>
      <description>&lt;p&gt;Using the &lt;strong&gt;Nmap&lt;/strong&gt; to list our opened port in our machine, how described the &lt;a href=&#34;https://nmap.org/&#34;&gt;official website&lt;/a&gt;: Nmap &amp;ldquo;..is an utility for network discovery and security auditing..&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Regarding &lt;strong&gt;CUPS&lt;/strong&gt; from the &lt;a href=&#34;https://www.cups.org/&#34;&gt;official website&lt;/a&gt;: &amp;ldquo;is an open source printing system developed by Apple Inc. for macOSÂ® and other UNIXÂ®-like operating systems. CUPS uses the Internet Printing Protocol (IPP) to support printing to local and network printers.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;By default we have the cups service running in the system&amp;rsquo;s startup we could check out issue the following commands:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Output IPCONFIG report to HTML by PowerShell</title>
      <link>https://jose.castrillo.eu/post/report_script_powershell/</link>
      <pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/report_script_powershell/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$file = &amp;#34;C:\Users\jcr\a.html&amp;#34;
$ipconfig=ipconfig /all |%{&amp;#34;$_&amp;lt;br/&amp;gt;&amp;#34;}

$body=@&amp;#34;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Network Report&amp;lt;/title&amp;gt;
    &amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;IPConfig /All&amp;lt;/h1&amp;gt;
    &amp;lt;pre&amp;gt;$ipconfig&amp;lt;/pre&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&amp;#34;@
$body | Out-File $file
. $file
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Setup Grafana in Raspbian (Raspberrypi)</title>
      <link>https://jose.castrillo.eu/post/raspberrypi-grafana-post/</link>
      <pubDate>Tue, 09 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raspberrypi-grafana-post/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/grafana.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;The below post is a simple explanation I did time ago, if you want further info and better explanation about how to setup a monitoring system into your Raspberripy please go to here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.raspberrypi.org/downloads/raspbian/&#34;&gt;Raspbian&lt;/a&gt; version:9.8&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ uname -r
4.14.98-v7+
$ uname -m
armv7l
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Version installed on my RasPi: &lt;strong&gt;Grafana v6.0.2 (3f4c2e7)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;a href=&#34;https://grafana.com/grafana/download?platform=arm&#34;&gt;Grafana&lt;/a&gt; package for your correct Raspi ARM&lt;/li&gt;
&lt;li&gt;$sudo dpkg -i grafana_6.1.3_armhf.deb&lt;/li&gt;
&lt;li&gt;$systemctl start grafana-server&lt;/li&gt;
&lt;li&gt;$systemctl status grafana-server&lt;/li&gt;
&lt;li&gt;then you will see from the status propmt the address=0.0.0.0:3000&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;msg=&amp;#34;HTTP Server Listen&amp;#34; logger=http.server address=0.0.0.0:3000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To check the site is working go through localhost:3000&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a job using crontab</title>
      <link>https://jose.castrillo.eu/post/cron-script-linux/</link>
      <pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/cron-script-linux/</guid>
      <description>&lt;p&gt;To automate tasks or create some monitoring job we can use the older and efficient tool the &amp;ldquo;CronJob&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;For our example, I&amp;rsquo;ve created a simple script to detect the cache memory and clean it if raise to a condition then send a notification by mail.&lt;/p&gt;
&lt;p&gt;Library used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exim4 (mail server) or ssmtp (mail server). Both uses the same &amp;ldquo;mail&amp;rdquo; command.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Script:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# grab the buff/cache memory
mem=&amp;#34;$(free -m | grep &amp;#39;Mem:&amp;#39; | awk &amp;#39;{print $6}&amp;#39;)&amp;#34;

if  (( $mem &amp;gt; 350 ))
then
echo &amp;#39;wooo is more than 250M&amp;#39;
echo 3 | sudo tee /proc/sys/vm/drop_caches
echo &amp;#39;cache dropped&amp;#39;
echo &amp;#34;Memory buff/cache cleaned last value:&amp;#34; $mem | mail -s &amp;#34;cache_memory&amp;#34; target_mail@local.com
else
echo &amp;#39;be cool man, memory lower&amp;#39;
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;script path: /user/Documents/script/memory&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing date format from .xlsx to R</title>
      <link>https://jose.castrillo.eu/post/r-parse-post/</link>
      <pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/r-parse-post/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Version:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;platform x86_64-redhat-linux-gnu&lt;br&gt;
arch x86_64&lt;br&gt;
os linux-gnu&lt;br&gt;
system x86_64, linux-gnu
version.string R version 3.5.3 (2019-03-11)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Library&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;lubridate&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Parse method&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; &lt;em&gt;as.factor&lt;/em&gt; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mydata$FECHA_NACIMIENTO&amp;lt;-as.factor(mydata$FECHA_NACIMIENTO)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; &lt;em&gt;variable for strptime&lt;/em&gt; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;tempo&amp;lt;-strptime(mydata$FECHA_NACIMIENTO,&amp;#34;%d/%m/%Y&amp;#34;)
mydata$FECHA_NACIMIENTO&amp;lt;-as.Date(tempo,&amp;#34;%d/%m/%Y&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; &lt;em&gt;clean variable&lt;/em&gt; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rm (tempo)
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mydata$FECHA_NACIMIENTO &amp;lt;- format(as.Date(mydata$FECHA_NACIMIENTO), &amp;#34;%d/%m/%Y&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; &lt;em&gt;parsing data&lt;/em&gt; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;library(lubridate)
mydata$FECHA_NACIMIENTO &amp;lt;-dmy(mydata$FECHA_NACIMIENTO)
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Disable live-restore to run Docker Swarm</title>
      <link>https://jose.castrillo.eu/post/docker-local-post/</link>
      <pubDate>Thu, 28 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/docker-local-post/</guid>
      <description>&lt;p&gt;The following instruction is a solution when you got an error response with &lt;a href=&#34;https://docs.docker.com/v17.09/engine/admin/live-restore/&#34;&gt;live-restore&lt;/a&gt; using Docker Swarm in Fedora 28 or highter&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ docker swarm init
Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s not possible to enable Live-restore and Swarm-mode together.&lt;/p&gt;
&lt;p&gt;First make sure that the &lt;strong&gt;SElinux&lt;/strong&gt; is Permissive or Disabled.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then remove the &amp;ndash;live-restore line from the &lt;strong&gt;/etc/sysconfig/docker&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pulling Mysql using Docker Hub into Linux workstation</title>
      <link>https://jose.castrillo.eu/post/docker-mysql-local/</link>
      <pubDate>Thu, 28 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/docker-mysql-local/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ systemctl start docker
$ systemctl status docker
$ docker pull mysql
$ docker image ls
$ docker run --name db -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use the docker exec -it command to start a mysql client inside the Docker container you have started, like the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ docker exec -it db mysql -uroot -p
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Enable &#34;Kubectl&#34; auto-completion in the Shell (Linux)</title>
      <link>https://jose.castrillo.eu/post/k8s-gcp-post/</link>
      <pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/k8s-gcp-post/</guid>
      <description>&lt;p&gt;When you&amp;rsquo;ve done the &lt;a href=&#34;https://cloud.google.com/sdk/docs/&#34;&gt;SDK&lt;/a&gt; installation in your Linux workstation. list the components you have installed, then you will see the full list additional components from gcp SDK:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gcloud components list
gcloud components install &amp;lt;COMPONENT_ID&amp;gt;
gcloud components install kubectl
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then follow the instruction from the kubernetes official &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;documentation&lt;/a&gt;, check the &amp;ldquo;bash-completion&amp;rdquo; and finally issue the command below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo &amp;#34;source &amp;lt;(kubectl completion bash)&amp;#34; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Even you can go directly through your .bashrc (sudo) to add manually, it should look like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://jose.castrillo.eu/page/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/about/</guid>
      <description>&lt;p&gt;Hello there! I&amp;rsquo;m a big fan of GNU/Linux 🐧 and all things open-source. By day, I work as a DevOps 👨‍💻, wrangling various projects to ensure they run like well-oiled platform. But let me take you back to where my journey began - coding in Assembly language and tinkering with MicroChip, Atmega and embedded devices. That was my playground before I took the leap into the cloud, focusing on CI/CD, GitOps, SRE, and HA zones, my main focus it&amp;rsquo;s to delivers reliable &lt;a href=&#34;https://internaldeveloperplatform.org/&#34;&gt;IDP&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
