<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carlos Saltos</title>
    <description>The latest articles on DEV Community by Carlos Saltos (@csaltos).</description>
    <link>https://dev.to/csaltos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F420429%2F459414b0-4a93-4091-9188-8c6cdd67a9c8.jpg</url>
      <title>DEV Community: Carlos Saltos</title>
      <link>https://dev.to/csaltos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/csaltos"/>
    <language>en</language>
    <item>
      <title>How to use Elm extensible records</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Sat, 13 Jan 2024 22:27:17 +0000</pubDate>
      <link>https://dev.to/csaltos/elm-extensible-records-usage-5707</link>
      <guid>https://dev.to/csaltos/elm-extensible-records-usage-5707</guid>
      <description>&lt;h2&gt;
  
  
  WHAT?
&lt;/h2&gt;

&lt;p&gt;Sample code for declaring and using Elm flexible structures to extend records with more fields dynamically and safely.&lt;/p&gt;

&lt;p&gt;The sample goes around the idea of a visual theme at the file &lt;code&gt;Theme.elm&lt;/code&gt; and&lt;br&gt;
different ways to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where?
&lt;/h2&gt;

&lt;p&gt;The sample code is at &lt;a href="https://github.com/csaltos/elm-extensible-records-usage"&gt;https://github.com/csaltos/elm-extensible-records-usage&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Sample 1
&lt;/h3&gt;

&lt;p&gt;The first sample contains just a basic record extension without further parametrizations&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample 2
&lt;/h3&gt;

&lt;p&gt;The second sample is also a basic record extension but inside&lt;br&gt;
and extra field&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample 3
&lt;/h3&gt;

&lt;p&gt;The third sample uses records for two different cases of extensions, this is more usual and this is the reason to consider using Elm record extensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerations
&lt;/h2&gt;

&lt;p&gt;The sample1 and sample2 are just a warming up for reference only, you would not create a record using extensions with you are the only user of that record.&lt;/p&gt;

&lt;p&gt;The sample3 is more realistic and normally it's used from different modules on different files and even on different projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;p&gt;Do not use extensions everywhere, just in the places that makes sense, this samples are using some colors and visual styles on a theme but as a reference only, extension are not the best solution for actual visual themes and certainly not the only one.&lt;/p&gt;

&lt;p&gt;A more realistic use case is the requirement to use a common model shared with different pages on a SPA application and even from several SPA applications, this common model can be defined with Elm record extensions that is what we are starting to use at Talenteca.com and it's working like a charm.&lt;/p&gt;

</description>
      <category>elm</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Elm with flex and color</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Sat, 13 Jan 2024 16:39:28 +0000</pubDate>
      <link>https://dev.to/csaltos/elm-with-flex-and-color-2fh8</link>
      <guid>https://dev.to/csaltos/elm-with-flex-and-color-2fh8</guid>
      <description>&lt;h2&gt;
  
  
  WHAT?
&lt;/h2&gt;

&lt;p&gt;Just a simple Elm sample code project using basic CSS flex and text color&lt;/p&gt;

&lt;h2&gt;
  
  
  WHY?
&lt;/h2&gt;

&lt;p&gt;I was just playing with Elm and wanted to share a piece of code that may be useful to others&lt;/p&gt;

&lt;h2&gt;
  
  
  WHERE?
&lt;/h2&gt;

&lt;p&gt;The sample code is at &lt;a href="https://github.com/csaltos/elm-with-flex-and-color/tree/main"&gt;https://github.com/csaltos/elm-with-flex-and-color/tree/main&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  WHO?
&lt;/h2&gt;

&lt;p&gt;The code is based on the W3Schools, here more info about it -&amp;gt; &lt;a href="https://www.w3schools.com/csS/css3_flexbox.asp"&gt;https://www.w3schools.com/csS/css3_flexbox.asp&lt;/a&gt;&lt;/p&gt;

</description>
      <category>elm</category>
      <category>webdev</category>
      <category>css</category>
      <category>flex</category>
    </item>
    <item>
      <title>Erlang Fibonacci</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Wed, 14 Dec 2022 00:54:28 +0000</pubDate>
      <link>https://dev.to/csaltos/erlang-fibonacci-8mk</link>
      <guid>https://dev.to/csaltos/erlang-fibonacci-8mk</guid>
      <description>&lt;p&gt;Implementation of Fibonacci with Erlang including an optimization based on matrices&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Erlang 19+&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Fibonacci is refered to a sequence in mathematics that starts with 0 and 1 increasing with the sum of the previous two elements, produccion a series like:&lt;/p&gt;

&lt;p&gt;0, 1, 1, 2, 3, 5, 8, 13, ...&lt;/p&gt;

&lt;p&gt;This code tries to implement this series using Erlang from a basic and slow solution to an intermediate better solution and a complete optimized solution using matrices.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Erlang standard library can be used for most of this code but the code is kept more explicit to help understand better the internal and power of the language constructs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Basic Fibonacci
&lt;/h2&gt;

&lt;p&gt;This first implementation is coded at the function &lt;code&gt;fib/1&lt;/code&gt; at the file &lt;code&gt;fibonacci.erl&lt;/code&gt; at this basic level the elements of the series are calculated sequentially.&lt;/p&gt;

&lt;p&gt;To run the code, execute the Erlang shell with the command &lt;code&gt;erl&lt;/code&gt; and inside these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c(fibonacci).
fibonacci:fib(10).
fibonacci:fib(20).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results of compiling the code with the first line and then getting the fibonacci of &lt;code&gt;10&lt;/code&gt; which is &lt;code&gt;55&lt;/code&gt; and the fibonacci for &lt;code&gt;20&lt;/code&gt; that is &lt;code&gt;6765&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With this small values the lack of optimization of the code is not evident, but try to get the fibonacci for &lt;code&gt;1000&lt;/code&gt; with the call &lt;code&gt;fibonacci:fib(1000).&lt;/code&gt; and you will hit a wall quickly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If takes too long or if hangs, just press &lt;code&gt;Ctrl-C&lt;/code&gt; twice to try again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tail call Fibonacci
&lt;/h2&gt;

&lt;p&gt;As an intermediate optimization an arguments based calculation is also included at the function &lt;code&gt;fibo/1&lt;/code&gt; that you can call with the Erlang shell &lt;code&gt;erl&lt;/code&gt; and then inside the commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c(fibonacci).
fibonacci:fibo(10).
fibonacci:fibo(20).
fibonacci:fibo(1000).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will notice the same results for the fibonacci values for &lt;code&gt;10&lt;/code&gt; and &lt;code&gt;20&lt;/code&gt; but now you should be able to calculate fibonacci of &lt;code&gt;1000&lt;/code&gt; which is &lt;code&gt;43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875&lt;/code&gt; (yes a very long name, and is just the 1000th on the fibonacci series).&lt;/p&gt;

&lt;p&gt;The computers are very fast and it's difficul to notice the timing difference, but if you try to get the fibonacci or even large numbers you will perciebe a noticeable delay, for example try to calculate the fibonacci for one millon with this call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fibonacci:fibo(1000000).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After a delay should print a very long number !!&lt;/p&gt;

&lt;h2&gt;
  
  
  Matrices Fibonacci
&lt;/h2&gt;

&lt;p&gt;We can optimize fibonacci series even further using matrices, for that, you can run this commands again inside the Erlang shell &lt;code&gt;erl&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c(fibonacci).
fibonacci:fibm(10).
fibonacci:fibm(20).
fibonacci:fibm(1000).
fibonacci:fibm(1000000).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The calculated values are the same but now it's faster, that's the power of mathematics !!&lt;/p&gt;

&lt;h2&gt;
  
  
  Timing
&lt;/h2&gt;

&lt;p&gt;Since the difference in timings are very narrow, you may run this functions with the help of the internal computer clock to have more information about it with calls like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fibonacci:timing(fun(X) -&amp;gt; fibonacci:fibo(X) end, 10000).
fibonacci:timing(fun(X) -&amp;gt; fibonacci:fibm(X) end, 10000).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When calling this functions the output is the time in milliseconds the function takes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you
&lt;/h2&gt;

&lt;p&gt;This code and all this mathematica power is possible thanks to the brillant Eddy Ramirez from Costa Rica.&lt;/p&gt;

&lt;p&gt;For the mathematic background and more information about coding using Erlang, please refer to the videos at &lt;a href="https://www.youtube.com/watch?v=cs3TOyAQJXQ&amp;amp;list=PLZ26hi4ZVN-DHGIb8JacmadXFkVEQvpvb" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=cs3TOyAQJXQ&amp;amp;list=PLZ26hi4ZVN-DHGIb8JacmadXFkVEQvpvb&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The videos are in Spanish (the second most spoken language in the world, yes, more than Erlang, aunque usted no lo crea)&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>devrel</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Fix Chicony camera on Linux</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Thu, 08 Dec 2022 23:15:21 +0000</pubDate>
      <link>https://dev.to/csaltos/fix-chicony-camera-on-linux-3cj9</link>
      <guid>https://dev.to/csaltos/fix-chicony-camera-on-linux-3cj9</guid>
      <description>&lt;h2&gt;
  
  
  Almost there
&lt;/h2&gt;

&lt;p&gt;A couple of days ago I installed a brand new Debian bullseye 11 and everything works smoothly, the video GPU, the sound, the microphone, everything but ... the embedded camera :(&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug
&lt;/h2&gt;

&lt;p&gt;At the system logs I discovered somehow that the camera was discovered as a keyboard ... that's crazy ... what the udev system did that ?!?&lt;/p&gt;

&lt;h2&gt;
  
  
  The first fix attempt
&lt;/h2&gt;

&lt;p&gt;I've tried to set some ignore rules at the udev configuration, it was really crazy, when I isolate the camera as a keyboard then the whole camera has isolated and if not the keyboard part wrongly appeared again.&lt;/p&gt;

&lt;p&gt;These are all the udev rules I tried and failed miserably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SUBSYSTEM=="input", ENV{PRODUCT}=="3/4f2/b685/5404", ATTR{authorized}="0"
ACTION=="add", SUBSYSTEM=="input", ATTR{idVendor}=="04f2", RUN="/bin/sh -c 'echo 1 &amp;gt;/sys/\$devpath/remove'"
SUBSYSTEM=="input", ATTRS{idVendor}=="04f2", ATTR{authorized}="0"
ATTRS{idVendor}=="04f2", ATTR{authorized}="0"
SUBSYSTEM="input", ATTRS{idVendor}=="04f2", ATTR{authorized}="0"
ATTRS{idVendor}=="04f2", ATTRS{idProduct}=="b685", ATTR{authorized}="0"
ATTRS{idVendor}=="04f2", ATTRS{idBustype}=="003", ATTR{authorized}="0"
ATTRS{idVendor}=="04f2", ATTR{authorized}="0"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some of them did not even do nothing ... and other did too much&lt;/p&gt;

&lt;h2&gt;
  
  
  Second fix attempt
&lt;/h2&gt;

&lt;p&gt;I tried to ignored at the X11 configuration (the place the logs were actually picking up the error)&lt;/p&gt;

&lt;p&gt;This is the configuration I've added to X11:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Section "InputClass"
    Identifier "catchall"
    MatchProduct "Chicony USB2.0 Camera: Chicony "
    Option "Ignore" "true"
EndSection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And I also add a more specific configuration for the actual system keyboard to X11 like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
    MatchProduct "AT Translated Set 2 keyboard"
        Option "XkbLayout" "de"
        Option "XkbVariant" "deadtilde"
EndSection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I've have to use input, libinput, none, keyboard, system-keyboard and some variations from the vendor and product names until this trick works, the camera was not recognized as a keyboard anymore but the camera was still not working&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual fix
&lt;/h2&gt;

&lt;p&gt;After hours and hours of trying and trying and errors and errors, I've just upgraded to Debian bookworm 12 and everything magically works :) ... thank God for the great Debian community, you are the best !!&lt;/p&gt;

&lt;h2&gt;
  
  
  Corolary
&lt;/h2&gt;

&lt;p&gt;Even after the failed attempts, I learn a lot ... I learned about udev, udevadm, hwinfo, xinput, the Linux kernels, cameras, Debian, Chinese hardware and a lot of things more ... it's a lot of fun ... but overall ... my laptop has everything working and very fast and beautiful with the new Debian bookworm 12 Linux and Gnome 3 ... thank you all always !!&lt;/p&gt;

</description>
      <category>career</category>
      <category>azure</category>
      <category>certification</category>
    </item>
    <item>
      <title>Install Elm for OpenBSD x86_64</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Tue, 29 Mar 2022 13:31:37 +0000</pubDate>
      <link>https://dev.to/csaltos/install-elm-for-openbsd-x8664-4fpe</link>
      <guid>https://dev.to/csaltos/install-elm-for-openbsd-x8664-4fpe</guid>
      <description>&lt;h2&gt;
  
  
  What?
&lt;/h2&gt;

&lt;p&gt;Just some quick steps to compile Elm for OpenBSD on amd64 based chips since the official distribution does not support OpenBSD yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;p&gt;Get OpenBSD installed and run these commands as root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkg_add git
pkg_add cabal-install

git clone https://github.com/elm/compiler.git
&lt;span class="nb"&gt;cd &lt;/span&gt;compiler
git checkout 0.19.1

&lt;span class="nb"&gt;rm &lt;/span&gt;worker/elm.cabal
cabal new-update
cabal new-configure
cabal new-build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait for a while and the binary should be hopefully at &lt;code&gt;compiler/dist-newstyle/build/x86_64-openbsd/ghc-*/elm-0.19.1/x/elm/build/elm/elm&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Please ensure you have at least 4 gigas RAM memory available for the compilation to work&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Who?
&lt;/h2&gt;

&lt;p&gt;As always a big thank you to Evan Czaplicki and the wonderful people creating and maintaining Elm.&lt;/p&gt;

&lt;p&gt;Some references compilation optimizations may be found at &lt;a href="https://github.com/elm/compiler/blob/0.19.1/installers/linux/Dockerfile"&gt;https://github.com/elm/compiler/blob/0.19.1/installers/linux/Dockerfile&lt;/a&gt; and &lt;a href="https://gist.github.com/rlefevre/1523f47e75310e28eee243c9c5651ac9"&gt;https://gist.github.com/rlefevre/1523f47e75310e28eee243c9c5651ac9&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For learning more about Elm please go to &lt;a href="https://www.udemy.com/course/elm-the-complete-guide/?referralCode=C7120849E19E4866E9C3"&gt;Elm The Complete Guide&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>elm</category>
      <category>openbsd</category>
      <category>cabal</category>
      <category>haskell</category>
    </item>
    <item>
      <title>Elm at Talenteca</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Fri, 18 Mar 2022 16:52:39 +0000</pubDate>
      <link>https://dev.to/csaltos/elm-at-talenteca-289a</link>
      <guid>https://dev.to/csaltos/elm-at-talenteca-289a</guid>
      <description>&lt;p&gt;This is a brief post for sharing what it means to create web apps nowadays and our experience at Talenteca.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ancient times
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7byl9hqvex5bk7937jt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7byl9hqvex5bk7937jt.jpg" alt="The Valley of Temples"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More than 8 years ago with a group of close dear friends we started a company called Talenteca. We decided to create a website for helping people find good jobs.&lt;/p&gt;

&lt;p&gt;When we started we create the site using Bootstrap and JQuery, something rather normal by those "ancient" times and focus more on our business, clients and users than "play" with the web apps or the look and feel.&lt;/p&gt;




&lt;h2&gt;
  
  
  Svelte times
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikvsjfahu7mn5ng762ve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikvsjfahu7mn5ng762ve.png" alt="Svelte Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fast forward 5 years we discovered that the web community has created crazy things using JavaScript, like Angular and even React but we still remained stubbornly in our ancient past using the classic old web sites until the day we discovered Svelte.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honeymoon
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvr7pp7x2srk3gr6o2a0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvr7pp7x2srk3gr6o2a0.jpg" alt="A couple in the beach"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Svelte was, in our humble opinion, one of the first new generation web tools that we considered viable to create valid modern websites.&lt;/p&gt;

&lt;p&gt;We decided to explore new ground and migrate some parts of our website to Svelte and with that, we improved our traffic and our users satisfaction by a big margin, we are always thankful to Svelte for that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Broken honeymoon
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj37svuyrrhekt9selgw5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj37svuyrrhekt9selgw5.jpg" alt="Wave washing out heart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this initial honeymoon was soon broken, the chaos and the challenge to try to maintain our new web apps was overwhelming.&lt;/p&gt;

&lt;p&gt;We decided to move from JavaScript to TypeScript, this transition was rather easy for us since we are a Functional Programming shop since the beginning, years ago, using Scala and always learning more things about FP.&lt;/p&gt;




&lt;h2&gt;
  
  
  The TypeScript safety ilussion
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvxlbspiv4fpl20nuql0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvxlbspiv4fpl20nuql0.png" alt="TypeScript logo blured"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The TypeScript upgraded web apps were better than using only JavaScript but the upgrade was providing only a weak illusion of safety, our web apps maintenance was still a chaos with nasty bugs on production.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter the Elm
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbiek0lyy8o02jnkchlul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbiek0lyy8o02jnkchlul.png" alt="Elm logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the mist of accepting the limitations of JavaScript, TypeScript and the modern web, we found Elm, a very weird language but with big promises.&lt;/p&gt;

&lt;p&gt;We decided to give Elm a try and it exceeded our expectations by a lot, we immediately decided to go all in with Elm.&lt;/p&gt;




&lt;h2&gt;
  
  
  Elm first exploration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv84oe41jt26qoayr7g0c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv84oe41jt26qoayr7g0c.jpg" alt="Explorer on top of a mountain"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first Elm exploration stared two years ago, we tried to mix some old parts like Tailwind CSS and the build system into the new Elm web apps but soon we learn that Elm is solid enough to do the visual part too using Elm UI and in a leap of faith we decided to remove the old TypeScript and also Tailwind CSS and use only Elm and Elm UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Total dominance
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhqoie6nirutzl447o6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhqoie6nirutzl447o6j.png" alt="Man showing a map on the wall"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After our first explorations we realized we've just found the best most solid solution for creating modern web apps using Elm and decided to migrate all our front web apps from the old TypeScript to Elm and Elm UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Training
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvm7tcbsla8jnaflgo4h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvm7tcbsla8jnaflgo4h.jpg" alt="Teacher"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the migration process we've designed an Elm video tutorial that we made it publicly available so others can enjoy this frontend developers paradise using Elm too, here you can find it and start learning -&amp;gt; &lt;a href="https://www.udemy.com/course/elm-the-complete-guide/?referralCode=C7120849E19E4866E9C3" rel="noopener noreferrer"&gt;Elm The Complete Guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>elm</category>
    </item>
    <item>
      <title>Install Elm for Linux arm64</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Mon, 31 Jan 2022 07:30:34 +0000</pubDate>
      <link>https://dev.to/csaltos/elm-for-linux-arm64-32bc</link>
      <guid>https://dev.to/csaltos/elm-for-linux-arm64-32bc</guid>
      <description>&lt;h2&gt;
  
  
  What?
&lt;/h2&gt;

&lt;p&gt;Just some quick steps to compile Elm for Linux arm64 since the official distribution does not support ARM yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;p&gt;Get Debian GNU/Linux Bullseye 11 arm64 ready and run these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; build-essential &lt;span class="se"&gt;\&lt;/span&gt;
    automake &lt;span class="se"&gt;\&lt;/span&gt;
    autotools-dev &lt;span class="se"&gt;\&lt;/span&gt;
    make &lt;span class="se"&gt;\&lt;/span&gt;
    g++ &lt;span class="se"&gt;\&lt;/span&gt;
    ca-certificates &lt;span class="se"&gt;\&lt;/span&gt;
    software-properties-common &lt;span class="se"&gt;\&lt;/span&gt;
    apt-transport-https &lt;span class="se"&gt;\&lt;/span&gt;
    lsb-base &lt;span class="se"&gt;\&lt;/span&gt;
    lsb-release &lt;span class="se"&gt;\&lt;/span&gt;
    zlib1g-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libpcre3-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libcurl4-openssl-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libc-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libxml2-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libsnmp-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libssh2-1-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libevent-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libopenipmi-dev &lt;span class="se"&gt;\&lt;/span&gt;
    libpng-dev &lt;span class="se"&gt;\&lt;/span&gt;
    pkg-config &lt;span class="se"&gt;\&lt;/span&gt;
    libfontconfig1 &lt;span class="se"&gt;\&lt;/span&gt;
    git &lt;span class="se"&gt;\&lt;/span&gt;
    bzip2 &lt;span class="se"&gt;\&lt;/span&gt;
    zip &lt;span class="se"&gt;\&lt;/span&gt;
    unzip &lt;span class="se"&gt;\&lt;/span&gt;
    musl-dev &lt;span class="se"&gt;\&lt;/span&gt;
    ghc &lt;span class="se"&gt;\&lt;/span&gt;
    cabal-install &lt;span class="se"&gt;\&lt;/span&gt;
    libmpfr-dev

git clone https://github.com/elm/compiler.git
&lt;span class="nb"&gt;cd &lt;/span&gt;compiler
git checkout 0.19.1

&lt;span class="nb"&gt;rm &lt;/span&gt;worker/elm.cabal
cabal new-update
cabal new-configure
cabal new-build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait for a while and the binary should be hopefully at &lt;code&gt;compiler/dist-newstyle/build/aarch64-linux/ghc-*/elm-0.19.1/x/elm/build/elm/elm&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Please ensure you have at least 4 gigas RAM memory available for the compilation to work&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Who?
&lt;/h2&gt;

&lt;p&gt;As always a big thank you to Evan Czaplicki and the wonderful people creating and maintaining Elm.&lt;/p&gt;

&lt;p&gt;Some references for other Linux distributions and compilation optimizations may be found at &lt;a href="https://github.com/elm/compiler/blob/0.19.1/installers/linux/Dockerfile"&gt;https://github.com/elm/compiler/blob/0.19.1/installers/linux/Dockerfile&lt;/a&gt; and &lt;a href="https://gist.github.com/rlefevre/1523f47e75310e28eee243c9c5651ac9"&gt;https://gist.github.com/rlefevre/1523f47e75310e28eee243c9c5651ac9&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For learning more about Elm please go to &lt;a href="https://www.udemy.com/course/elm-the-complete-guide/?referralCode=C7120849E19E4866E9C3"&gt;Elm The Complete Guide&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>linux</category>
      <category>elm</category>
      <category>arm64</category>
      <category>compile</category>
    </item>
    <item>
      <title>Install Jenkins on Debian 11 Bullseye</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Sat, 29 Jan 2022 07:24:59 +0000</pubDate>
      <link>https://dev.to/csaltos/install-jenkins-on-debian-11-bullseye-1gjh</link>
      <guid>https://dev.to/csaltos/install-jenkins-on-debian-11-bullseye-1gjh</guid>
      <description>&lt;h2&gt;
  
  
  What?
&lt;/h2&gt;

&lt;p&gt;A quick tip for using Jenkins LTS 2.319.2 and up on Debian GNU/Linux 11 Bullseye (it may work for other Linux systems too like CentOS, RedHat, Fedora, ArchLinux and Gentoo).&lt;/p&gt;

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

&lt;p&gt;Because you can have your own TravisCI, Vercel or Netlify and Jenkins is a good start.&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a file at /etc/jenkins/jenkins.conf with the content
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JENKINS_WAR=/opt/jenkins/jenkins.war

JENKINS_HOME=/opt/jenkins/home

JAVA_ARGS="-Djava.awt.headless=true \
  -Djava.net.preferIPv4Stack=true \
  -XX:+AlwaysPreTouch \
  -XX:+UseG1GC \
  -Xms1024m \
  -Xmx1024m \
  -Xss16m \
  -Xlog:gc*=debug:file=gclog.log:utctime,level,tags:filecount=9,filesize=1M"

JENKINS_ARGS="--httpPort=8080 \
  --logfile=/var/log/jenkins/jenkins.log \
  --useJmx"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then a file at /lib/systemd/system/jenkins.service with the content:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Unit]
Description=Jenkins
After=network.target

[Service]
Type=simple
User=jenkins
Group=jenkins
EnvironmentFile=/etc/jenkins/jenkins.conf
ExecStart=/usr/bin/java $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS
WorkingDirectory=/opt/jenkins/home
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create the jenkins user with the jenkins group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create the /opt/jenkins/home and /var/log/jenkins directories with jenkins user as the owner&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download Jenkins war from &lt;a href="https://www.jenkins.io/download/"&gt;https://www.jenkins.io/download/&lt;/a&gt; to /opt/jenkins/jenkins.war (it's the Generic Java Package .war link)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure you have Java installed and start Jenkins with the command &lt;code&gt;systemctl start jenkins&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;a href="http://localhost:8080/"&gt;http://localhost:8080/&lt;/a&gt; and start building !!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where?
&lt;/h2&gt;

&lt;p&gt;Tested on Debian 11 Bullseye arm64 and OpenJDK 11 in and AWS m6g.large (it may work also locally and with amd64 chips using newer version of Java like Java 17)&lt;/p&gt;

&lt;p&gt;Based on:&lt;br&gt;
&lt;a href="https://www.jenkins.io/doc/book/managing/system-properties/"&gt;https://www.jenkins.io/doc/book/managing/system-properties/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.jenkins.io/doc/book/installing/initial-settings/"&gt;https://www.jenkins.io/doc/book/installing/initial-settings/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/jenkinsci/winstone#command-line-options"&gt;https://github.com/jenkinsci/winstone#command-line-options&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gist.github.com/karnauskas/aca138bb8338689a178e"&gt;https://gist.github.com/karnauskas/aca138bb8338689a178e&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>debian</category>
      <category>linux</category>
    </item>
    <item>
      <title>How do you get free amount of RAM memory Mac has using Scala</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Tue, 04 Jan 2022 13:37:09 +0000</pubDate>
      <link>https://dev.to/csaltos/how-do-you-get-free-amount-of-ram-memory-mac-has-using-scala-42bn</link>
      <guid>https://dev.to/csaltos/how-do-you-get-free-amount-of-ram-memory-mac-has-using-scala-42bn</guid>
      <description>&lt;h2&gt;
  
  
  What ?
&lt;/h2&gt;

&lt;p&gt;A simple Scala program to get the RAM available on a Mac&lt;/p&gt;

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

&lt;p&gt;Because I want to check from SBT if there is enough available RAM memory to run certain compilation options and I would like to share with others&lt;/p&gt;

&lt;h2&gt;
  
  
  How ?
&lt;/h2&gt;

&lt;p&gt;Just go to &lt;a href="https://github.com/csaltos/mem-on-mac-scala/blob/main/MemOnMac.scala"&gt;https://github.com/csaltos/mem-on-mac-scala/blob/main/MemOnMac.scala&lt;/a&gt; and copy paste the code, you can use it as bytes or gigabytes.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>mem</category>
      <category>sbt</category>
      <category>scala</category>
    </item>
    <item>
      <title>How do you get total amount of RAM memory Linux has using Scala</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Tue, 04 Jan 2022 13:24:41 +0000</pubDate>
      <link>https://dev.to/csaltos/how-do-you-get-total-amount-of-ram-memory-linux-has-using-scala-148e</link>
      <guid>https://dev.to/csaltos/how-do-you-get-total-amount-of-ram-memory-linux-has-using-scala-148e</guid>
      <description>&lt;h2&gt;
  
  
  What ?
&lt;/h2&gt;

&lt;p&gt;A simple Scala program to get the total RAM on a Linux machine&lt;/p&gt;

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

&lt;p&gt;Because I want to check from SBT if there is enough total RAM memory to run certain compilation options and I would like to share with others&lt;/p&gt;

&lt;h2&gt;
  
  
  How ?
&lt;/h2&gt;

&lt;p&gt;Just go to &lt;a href="https://github.com/csaltos/mem-on-linux-scala/blob/main/MemOnLinux.scala"&gt;https://github.com/csaltos/mem-on-linux-scala/blob/main/MemOnLinux.scala&lt;/a&gt; and copy paste the code, you can use it as bytes or gigabytes or filter for other memory options like memory free or available memory.&lt;/p&gt;

</description>
      <category>scala</category>
      <category>runtime</category>
      <category>mem</category>
      <category>memory</category>
    </item>
    <item>
      <title>When your favorite opensource project is dying</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Sat, 27 Nov 2021 08:32:35 +0000</pubDate>
      <link>https://dev.to/csaltos/when-your-favorite-opensource-project-is-dying-2mnb</link>
      <guid>https://dev.to/csaltos/when-your-favorite-opensource-project-is-dying-2mnb</guid>
      <description>&lt;p&gt;You cannot find new versions for using your favorite opensource projects, what to do?&lt;/p&gt;

&lt;h2&gt;
  
  
  First step:
&lt;/h2&gt;

&lt;p&gt;Stop complaining and act ... opensource is free, so you can take the source code and make it work for you ... and on top of that you can share the solution with others ... that's the beauty of the opensource freedom.&lt;/p&gt;

&lt;h2&gt;
  
  
  Second step:
&lt;/h2&gt;

&lt;p&gt;Research about your favorite project, who create it, why they create the project?&lt;/p&gt;

&lt;p&gt;Research also about the language and the tooling your project is using (you do not need to become an expert but it's a good start)&lt;/p&gt;

&lt;h2&gt;
  
  
  Third step:
&lt;/h2&gt;

&lt;p&gt;Make your first build, this is the hardest step but it's the most valuable tool, if you have problems, look for support with the original owners, maybe they are willing to give you a hand or some tips.&lt;/p&gt;

&lt;p&gt;Additionally give it a check to the CI/CD tooling the original authors or contributes where using, normally you may recycle a lot of that for new versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four step:
&lt;/h2&gt;

&lt;p&gt;Fix some bugs and create new versions&lt;/p&gt;

&lt;h2&gt;
  
  
  Fifth step:
&lt;/h2&gt;

&lt;p&gt;Share the love !! ... when everything is ready, share with others, for sure you are not the only one using your favorite opensource project !!&lt;/p&gt;

&lt;h2&gt;
  
  
  Eating our own dog food
&lt;/h2&gt;

&lt;p&gt;At my company we need new builds for Apache Mesos for Linux and sadly the project was lagging behind, so we stop complaining and we are trying to act -&amp;gt; &lt;a href="https://github.com/csaltos/mesos-builds"&gt;https://github.com/csaltos/mesos-builds&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>mesos</category>
      <category>builds</category>
      <category>debian</category>
    </item>
    <item>
      <title>MongoDB for arm64 at Alibaba Cloud</title>
      <dc:creator>Carlos Saltos</dc:creator>
      <pubDate>Sat, 23 Oct 2021 17:09:25 +0000</pubDate>
      <link>https://dev.to/csaltos/mongodb-for-arm64-at-alibaba-cloud-o2f</link>
      <guid>https://dev.to/csaltos/mongodb-for-arm64-at-alibaba-cloud-o2f</guid>
      <description>&lt;p&gt;&lt;strong&gt;WHAT?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A brief article explaining how to install MongoDB at an Anolis Linux instance and the cool new arm64 CPU from Ampere Computing at Alibaba Cloud&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because AWS is not the only cloud out there and also because ARM64 instances are cheaper than the old buddy Intel chips.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HOW?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just download the MongoDB server version 5 from &lt;a href="https://www.mongodb.com/try/download/community"&gt;https://www.mongodb.com/try/download/community&lt;/a&gt; choosing Amazon Linux 2 ARM64 (Amazon Linux and Anolis Linux are very similar, both based on CentOS Linux).&lt;/p&gt;

&lt;p&gt;Once you download the RPM package file for MongoDB server run these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;compat-openssl10.aarch64
rpm &lt;span class="nt"&gt;-hiv&lt;/span&gt; &lt;span class="nt"&gt;--nodeps&lt;/span&gt; mongodb-org-server-5.0.3-1.amzn2.aarch64.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOTE: the option &lt;code&gt;nodeps&lt;/code&gt; is required to use the openssl library compat at Anolis Linux&lt;/p&gt;

</description>
      <category>alibaba</category>
      <category>aliyun</category>
      <category>mongodb</category>
      <category>arm64</category>
    </item>
  </channel>
</rss>
