<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://arthurhdrodrigues.github.io//blog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://arthurhdrodrigues.github.io//blog/" rel="alternate" type="text/html" /><updated>2026-04-05T18:13:52-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/feed.xml</id><title type="html">Tropical Hacker Hut</title><subtitle>Blog pessoal onde guardo textos que escrevo.</subtitle><entry><title type="html">My Guix contribution journal - 0x03</title><link href="https://arthurhdrodrigues.github.io//blog/guix/2026/04/05/guix-diary-3.html" rel="alternate" type="text/html" title="My Guix contribution journal - 0x03" /><published>2026-04-05T13:00:00-05:00</published><updated>2026-04-05T13:00:00-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/guix/2026/04/05/guix-diary-3</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/guix/2026/04/05/guix-diary-3.html"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>Well, it’s been a while xD
Since my last entry a lot has changed, so let’s cut to the chase!</p>

<h2 id="docker">Docker</h2>

<p>The majority of my contributions to Guix has been packaging Docker’s dependencies.
We keep the progress in this <a href="https://codeberg.org/guix/guix/milestone/30347">Milestone</a> created by Hellseher.
I submit my contributions in batches of about 20 packages each and, until now, I’ve submitted 7 batches, totalizing
92 commits, the most recent one being the PR <a href="https://codeberg.org/guix/guix/pulls/7580">#7580</a>.</p>

<p>As I commented in <a href="../../../2025/05/17/first-contact-guix.html">my first journal entry</a>, Guix is a source based distribution.
So its package repository is actually a set of package recipes (also called package definitions)
that describes how to compile a given software.
In this way, to “package” a software, I need to write its package recipe and
submit it to the <a href="https://codeberg.org/guix/guix">Guix git repository</a>.
Each recipe is submitted as a commit.</p>

<p>Fortunaly, there is a tool, namely <code class="language-plaintext highlighter-rouge">guix import</code>, to help write this package definitions.
So the first thing I did was to run <code class="language-plaintext highlighter-rouge">guix import go --recursive github.com/moby/moby</code>.
The command <code class="language-plaintext highlighter-rouge">guix import go</code> fetches data from a given package (in this case, <code class="language-plaintext highlighter-rouge">github.com/moby/moby</code>) and
produces its recipe and the flag <code class="language-plaintext highlighter-rouge">--recursive</code> calls <code class="language-plaintext highlighter-rouge">guix import</code> for each unpackaged dependency of the target project recursively.
In this way, after a very long time fetching all the necessary data, <code class="language-plaintext highlighter-rouge">guix import</code> generated a <strong>very huge</strong> file containing all the recipes!</p>

<p>The next step is to find a recipe in this file which has all dependencies already packaged,
test if it actually compiles (remember that some tests from the upstream package may fail) and submit it to guix.</p>

<p>This process is very tiresome and unmotivating:</p>
<ul>
  <li>
    <p>It is tiresome just because the amount of packages in the generated file is overwhelming and the dependency graph
makes it a mess to choose a package to work with.</p>
  </li>
  <li>
    <p>It is <em>specially</em> unmotivating, because this generated file doesn’t explain to you the context of each package.
To better ilustrate this point, let me draw an example: In the third batch,
I package <code class="language-plaintext highlighter-rouge">go-github-com-tonistiigi-go-csvvalue</code>, a Go library to read csv values.
<em>Why in the hell would Docker use it? Even if indirectly? How does this package fit in the dependency graph?</em>
I mean, I know <em>some</em> packages depend on in, I can find them in the generated file, but theses others packages
are also os disconnected from the ideia of Docker that it seems a waste of time to package them.</p>
  </li>
</ul>

<p>It is not enough to aimlessly work on this packages.
I had to organize myself in a way to keep my focus and motivation!</p>

<p>I’ll write a dedicated post about it, because I really think it deserves a post by itself and
because I’m already kind of tired of writing xD</p>

<h2 id="getting-into-the-guixs-go-team">Getting into the Guix’s Go team</h2>

<p>After some batches, I wanted to contribute something other than a package definition.
So I decided to pick the bug <a href="https://codeberg.org/guix/guix/issues/3968">#3968</a> to fix!</p>

<p>Since I wasn’t in a team, Hellseher couldn’t assign the issue to me,
so <a href="https://codeberg.org/guix/guix/issues/3968#issuecomment-10360372">he asked me to join the Go team</a>!</p>

<p>I was very happy with this and commited my named into the <code class="language-plaintext highlighter-rouge">teams.scm</code> file and created a PR.
After that, the Hellseher
merged my <a href="https://codeberg.org/guix/guix/commit/78b685f258505e10f99bb0bb89e73301cd2459d5">commit adding me to the Go team</a>.</p>

<p>I’ll write a post about this bug once I fix it!</p>

<h2 id="conclusion">Conclusion</h2>

<p>I’m very happy with my progress contributions in the Guix community! :D</p>]]></content><author><name></name></author><category term="guix" /><summary type="html"><![CDATA[Introduction]]></summary></entry><entry><title type="html">Proposta de tema para Doutorado em HPC</title><link href="https://arthurhdrodrigues.github.io//blog/2026/01/11/doc-proposal.html" rel="alternate" type="text/html" title="Proposta de tema para Doutorado em HPC" /><published>2026-01-11T04:08:20-06:00</published><updated>2026-01-11T04:08:20-06:00</updated><id>https://arthurhdrodrigues.github.io//blog/2026/01/11/doc-proposal</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/2026/01/11/doc-proposal.html"><![CDATA[<h2 id="introdução">Introdução</h2>

<p>O que se segue é uma lista de propostas de temas para meu doutorado em HPC.
Após conversar com meu futuro orientador, focamos no tema de reprodutibilidade. O que me levou a participar do <a href="./2025-08-05-acm-rep-25.md">ACM REP 2025</a>.</p>

<p>Originalmente esse texto foi disponibilizado como uma pagina própria nesse blog.
Decidi transformá-lo em um <em>post</em>, como qualquer outro.</p>

<h2 id="metodologia-para-análise-experimental-de-algoritmos-em-grafos">Metodologia para análise experimental de algoritmos em grafos</h2>

<p>Para minha <a href="https://www.teses.usp.br/teses/disponiveis/45/45134/tde-14052025-111528/en.php">dissertação de mestrado</a> implementei o algoritmo HDT para resolver o problema de conexidade em grafos dinâmicos.</p>

<p>Fizemos um experimento comparando com outros algoritmos seguindo <a href="https://www.vldb.org/pvldb/vol15/p3263-chen.pdf">esse framework de 2022</a>.
No entanto, devido a problemas de metodologia, não escrevemos um capítulo sobre isso na dissertação.</p>

<p>Lemos o artigo <a href="https://web.cs.dal.ca/~eem/gradResources/A-theoreticians-guide-to-experimental-analysis-of-algorithms-2001.pdf">A Theoretician’s Guide to the Experimental Analysis of Algorithms</a> de David S. Johnson. Boa introdução sobre o autor: <a href="https://www.cos.ufrj.br/seminarios/2016/slides/slides_eduardo.pdf">slides</a></p>

<ol>
  <li>Faça experimentos dignos de nota
Isto é; investigue questões de real interesse da comunidade.</li>
  <li>Relacione seu artigo com a literatura</li>
  <li>Faça testes em um conjunto de instâncias que permita se chegar a conclusões gerais</li>
  <li>Projete os experimentos de forma eficiente e efetiva</li>
  <li>Use implementações suficientemente eficientes</li>
  <li>Garanta a reprodutibilidade</li>
  <li>Garanta a comparabilidade</li>
  <li>Reporte a história completa</li>
  <li>Chegue a conclusões bem-justificadas</li>
  <li>Apresente os dados de modo informativo</li>
</ol>

<p>Em 2017, um <a href="https://epubs.siam.org/doi/10.1137/1.9781611974782.32">novo algoritmo</a> para o problema de conexidade dinâmica foi publicado.
Ele adiciona mais estruturas de dados sobre HDT, obtendo menor consumo assintótico, mas com constantes maiores.
Uma ideia de artigo é implementar esse algoritmo e fazer um experimento comparativo.
Os autores desse artigo publicaram <a href="https://arxiv.org/abs/1609.05867">uma versão mais longa (56 paginas)</a> explicando em detalhes como as estruturas de dados funcionam.</p>

<p>Em HPC, essa metodologia ainda se preocupa com mais fatores, <a href="https://dl.acm.org/doi/10.1007/s10586-015-0472-6">Large scale graph processing systems: survey and an experimental evaluation</a>.</p>

<h2 id="criar-distro-gnulinux-focada-em-hpc">Criar distro GNU/Linux focada em HPC</h2>

<p>Livro <a href="https://link.springer.com/book/10.1007/978-981-13-6624-6">Operating Systems for Supercomputers and High Performance Computing</a></p>

<p>Artigos:</p>
<ul>
  <li><a href="https://barrelfish.org/publications/barrelfish_sosp09.pdf">The Multikernel: A new OS architecture for scalable multicore systems</a></li>
  <li><a href="https://dl.acm.org/doi/10.1145/2931088.2931092">A Multi-Kernel Survey for High-Performance Computing</a></li>
</ul>

<h3 id="user-space">User space</h3>
<ul>
  <li>Lembrei da apresentação: <strong>“Ambientes computacionais para a reprodutibilidade de softwares (de pesquisa) com GNU Guix e Software Heritage”</strong>
de maio/2024 com o Prof. Alexandre Abdo</li>
</ul>

<p>Guix System tem uma <a href="https://hpc.guix.info/">equipe focada em HPC</a> e muitos princípios importantes para HPC:</p>
<ul>
  <li>reprodutibilidade</li>
  <li>implantação de uma frota de maquinas</li>
</ul>

<p>Tenho dois patches aceitos no Guix:</p>
<ul>
  <li>Update httpd: <a href="https://issues.guix.gnu.org/78570">78570</a> as <a href="https://codeberg.org/guix/guix/commit/9f33cb88252f628899c1e11f8b72b9f0022804e1">9f33cb8825</a></li>
  <li>Update dropbear: <a href="https://issues.guix.gnu.org/78600">78600</a> as <a href="https://codeberg.org/guix/guix/commit/ac88ea15c74e918d3a5ad9c5e45f3ef2af2c2d20">ac88ea15c7</a></li>
</ul>

<p>E atualmente estou trabalhando para atualizar o pacote Docker: <a href="https://issues.guix.gnu.org/74746">issue 74746</a>.</p>

<p>Outros gerenciadores de pacotes podem ser encontrados no repositório <a href="https://github.com/trevor-vincent/awesome-high-performance-computing">awesome HPC</a>.</p>

<h3 id="kernel">Kernel</h3>

<ul>
  <li><a href="https://github.com/HobbesOSR/kitten">Kitten</a>
    <ul>
      <li>Feito pela <a href="https://sandialabs.github.io/">Sandia labs</a></li>
      <li><a href="https://www.sandia.gov/app/uploads/sites/210/2022/11/pedretti_lanl11.pdf">slides</a> sobre o kernel</li>
    </ul>
  </li>
  <li><a href="https://github.com/RIKEN-SysSoft/mckernel">McKernel</a></li>
  <li><a href="https://github.com/intel/mOS">mOS</a>
    <ul>
      <li>Um fork do Linux feito pela intel para HPC.</li>
      <li>Multi-kernel</li>
      <li>Alguns artigos sobre:</li>
      <li><a href="https://dl.acm.org/doi/10.1145/2612262.2612263">Sua arquitetura</a></li>
      <li><a href="https://ieeexplore.ieee.org/document/8425166">Avaliação de desempenho</a></li>
      <li><a href="https://dl.acm.org/doi/10.1145/3095770.3095777">Integrando containers ao mOS</a></li>
      <li><a href="https://www.researchgate.net/publication/338659991_Multi-OS_for_HPC_Fact_Sheet">Poster</a></li>
    </ul>
  </li>
  <li><a href="https://barrelfish.org/">Barrelfish</a>:
    <ul>
      <li>Feito pela ETH Zurich e Microsoft R&amp;D</li>
    </ul>
  </li>
</ul>

<h2 id="devops-e-engenharia-de-plataforma-para-hpc">DevOps e engenharia de plataforma para HPC</h2>

<p>A ideia é propor as práticas de DevOps e engenharia de plataforma para o ambiente acadêmico.</p>

<ul>
  <li>Artigo: <a href="https://dl.acm.org/doi/10.1145/3219104.3219147">Continuous Integration and Delivery for HPC: Using Singularity and Jenkins</a></li>
  <li>Artigo: <a href="https://dl.acm.org/doi/10.1145/3491418.3535124">Continuous Integration for HPC with Github Actions and Tapis</a></li>
  <li>Artigo: <a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0177459">Singularity: Scientific containers for mobility of compute</a></li>
  <li>Artigo: <a href="https://dl.acm.org/doi/10.1007/s11227-022-04848-y">Containers in HPC: a survey</a></li>
  <li>Artigo: <a href="https://dl.acm.org/doi/10.1109/TSE.2022.3229221">Containerization for High Performance Computing Systems: Survey and Prospects</a></li>
  <li>Artigo <a href="https://cug.org/proceedings/cug2016_proceedings/includes/files/pap103s2-file1.pdf">Shifter: Containers for HPC</a></li>
  <li>Artigo: <a href="https://iaeme.com/Home/article_id/IJDO_01_01_004">A COMPARATIVE STUDY OF PLATFORM ENGINEERING TOOLS: IMPLICATIONS FOR SYSTEM DESIGN AND SCALABILITY</a></li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[Introdução]]></summary></entry><entry><title type="html">My Guix contribution journal - 0x02</title><link href="https://arthurhdrodrigues.github.io//blog/guix/2025/08/15/guix-diary-02.html" rel="alternate" type="text/html" title="My Guix contribution journal - 0x02" /><published>2025-08-15T16:08:20-05:00</published><updated>2025-08-15T16:08:20-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/guix/2025/08/15/guix-diary-02</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/guix/2025/08/15/guix-diary-02.html"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>It is been a while since I got time to contribute.
In this entry, I will report about some progress that I got about two months ago.</p>

<h2 id="docker">Docker</h2>

<p>I succeeded to skip the failing test that I commented in <a href="../../05/29/guix-diary-01-2025.html">my last journal entry</a>.
The problem was in the parameter <code class="language-plaintext highlighter-rouge">BUILDFLAGS</code> in the unit test file that referenced libsystemd.
A simple substitution, as shown below, fixes the problem.</p>

<pre><code class="language-{scheme}">(substitute* "hack/test/unit"
                (("BUILDFLAGS=.*")
                 (string-append "BUILDFLAGS=(-tags 'netgo')\n")))
</code></pre>

<p>I then reported my progress to the <a href="https://issues.guix.gnu.org/74746">related issue</a>.
After some days, <a href="https://issues.guix.gnu.org/74746#20">Hellseher replied to me</a> and
suggested that I collaborate on <a href="https://codeberg.org/guix">codesberg</a>, the new git web instance used by Guix’s community.</p>

<p>Hellseher also suggested to ‘devendor’ Docker.
Some Golang projects, such as Docker, store all dependencies in a folder called <code class="language-plaintext highlighter-rouge">vendor</code>.
This folder “hides” the dependencies from the Guix package system, so it is a good practice to remove this
folder and declare all dependencies as inputs in the packages’s recipe.</p>

<p>The problem is that Docker contains a lot of dependencies, so it is a lot of work to devendor it.
I intend to start adding these dependecies in the next week.</p>]]></content><author><name></name></author><category term="guix" /><summary type="html"><![CDATA[Introduction]]></summary></entry><entry><title type="html">Insights sobre ACM REP ‘25</title><link href="https://arthurhdrodrigues.github.io//blog/events/2025/08/04/acm-rep-25.html" rel="alternate" type="text/html" title="Insights sobre ACM REP ‘25" /><published>2025-08-04T19:00:00-05:00</published><updated>2025-08-04T19:00:00-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/events/2025/08/04/acm-rep-25</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/events/2025/08/04/acm-rep-25.html"><![CDATA[<h2 id="workflows">Workflows</h2>
<ul>
  <li><a href="https://en.wikipedia.org/wiki/Scientific_workflow_system">Workflow</a> é uma serie de passos computacionais e de manipulação de dados.</li>
  <li>“Workflows are becoming the paradigm of choice for HPC applications.”
<img src="/blog/images/workflow.png" alt="workflow" />
<img src="/blog/images/diagram-workflow.png" alt="workflow" /></li>
</ul>

<h3 id="como-reproduzir-workflows">Como reproduzir workflows?</h3>
<ul>
  <li><a href="https://arxiv.org/abs/2403.18073">Mini-Apps</a>: são proxies que replicam com fidelidade o comportamento de workflows. O apresentador mostrou esse <a href="https://arxiv.org/html/2506.11100v1">estudo de caso</a>.</li>
  <li><a href="https://www.nextflow.io/">Nexflow</a> é um <a href="https://en.wikipedia.org/wiki/Workflow_management_system">sistem de gerenciamento de Workflow</a>. Houve uma palestra apresentando a plataforma um <a href="https://youtu.be/Edqgp35QG80?t=624">uma live</a> no canal do youtube do LNCC.</li>
</ul>

<h2 id="hpc">HPC</h2>

<h3 id="benchmark">Benchmark</h3>
<p>Fazem benchmark para:</p>
<ul>
  <li>Comunicar cargas de trabalho para <em>vendors</em>.</li>
  <li>Projetar sistemas e monitorar progresso.</li>
  <li>Validar ferramentas:
    <ul>
      <li>Compiladores.</li>
      <li>Debugadores.</li>
      <li>Ferramentas de corretude e desempenho.</li>
    </ul>
  </li>
</ul>

<p>Os 3 R’s em benchmark em HPC:</p>
<ul>
  <li><strong>Repeat</strong> (mesmo hardware, ambiente e aplicação):
    <ul>
      <li>Verificar se o benchmark ainda compila e roda no sistema.</li>
      <li>Repassar as tarefas de benchmark para outro usuário.</li>
      <li>Avaliar desempenho ao longo do envelhecimento do sistema.</li>
      <li>Coletar ruído de variabilidade.</li>
    </ul>
  </li>
  <li><strong>Replicate</strong> (mesmo hardware e aplicação, ambiente de software muda)
    <ul>
      <li>Verificar se o benchmark ainda compila e roda no sistema atualizado.</li>
      <li>Validar desempenho do sistema atualizado.</li>
      <li>Avalizar diferenças de desempenho entre diferentes opções de software (ex: gcc, clang, tcc)</li>
    </ul>
  </li>
  <li><strong>Reproduce</strong> (hardware e ambiente diferem)
    <ul>
      <li>Verificar se o benchmark compila e roda no sistema diversos.</li>
      <li>Avalizar desempenho em diversos sistemas.</li>
      <li>Explorar possíveis benefícios de fazer upgrade de hardware.</li>
    </ul>
  </li>
</ul>

<p><img src="/blog/images/tabela-3R.png" alt="workflow" /></p>

<p>No artigo <a href="https://dl.acm.org/doi/10.1145/3624062.3624135">Towards Collaborative Continuous Benchmarking for HPC</a>, os autores apresentam benchpark, um framework que benchmark de clusters HPC.
O framework possibilita formalizar os 3 R’s descritos acima.</p>

<h3 id="reproducibility-initiative-in-sc24">Reproducibility initiative in SC’24</h3>

<p>Artigo <a href="https://hal.science/hal-05148685/document">Implementing a Reproducibility Initiative in HPC: Experiences from SC24</a></p>

<p>SC24:</p>
<ul>
  <li>Artifact Description e Artifact Evaluation appendix são obrigatórios.</li>
  <li>Reproducibility Challenge no <a href="https://sc25.supercomputing.org/students/student-cluster-competition/">Student Cluster Competition</a>: Estudantes tentam reproduzir papers publicados na SC do ano anterior. Começou na SC16.</li>
  <li>Reproducers: 101 para 102 papers</li>
  <li><strong>NEW</strong>: Reproducibility Report:
    <ul>
      <li>pequeno paper publicado pelo reprodutor descrevendo o que foi reproduzido.</li>
      <li>é publicado como “company report” ao paper original.</li>
      <li>possui um template.</li>
      <li>limite de tempo de 8h (excluindo computação).</li>
      <li><a href="https://github.com/hunsa/sc24-repro">repo github</a>.</li>
    </ul>
  </li>
  <li>Badges:
    <ul>
      <li>Artifact available: significa que está permanentemente arquivado, verificado que não é bem verdade nesse <a href="https://dl.acm.org/doi/10.1145/3641525.3663631">artigo</a>.</li>
      <li>Artifact Functional: artefato consegue ser executado.</li>
      <li>Results Reproduced: resultados chaves podem ser reproduzidos por outros.</li>
    </ul>
  </li>
  <li>Recomendações:
    <ul>
      <li>Focar em availability e functionality no momento da publicação.</li>
      <li>Focar em replicability e reproducibility em journals e tracks específicos.
<img src="/blog/images/table-badges.png" alt="badges" /></li>
    </ul>
  </li>
</ul>

<p>Reprodutibilidade é difícil:</p>
<ul>
  <li>Consome muito tempo dos  reproducers</li>
  <li>Em HPC:
    <ul>
      <li>Escala dos computadores</li>
      <li>Objetos avaliadors (como desempenho)</li>
    </ul>
  </li>
</ul>

<h3 id="próximas-leituras">Próximas leituras</h3>
<ul>
  <li><a href="https://hal.science/hal-05148685/document">Implementing a Reproducibility Initiative in HPC: Experiences from SC24</a></li>
  <li><a href="https://www.sciencedirect.com/science/article/abs/pii/S157401372400039X?via%3Dihub">Reproducibility, Replicability and Repeatability: A survey of reproducible research with a focus on high performance computing</a></li>
  <li><a href="https://dl.acm.org/doi/10.1145/3641525.3663631">Longevity of Artifacts in Leading Parallel and Distributed Systems Conferences: a Review of the State of the Practice in 2023</a></li>
</ul>

<h2 id="the-purely-functional-software-deployment-model-in-clusters">The Purely Functional Software Deployment Model in Clusters</h2>
<p>O <a href="https://edolstra.github.io/pubs/phd-thesis.pdf">modelo de implantação puramente funcional</a> foi introduzido</p>

<p>Para HPC a implementação GNU Guix é mais madura, eles tem uma <a href="https://hpc.guix.info/">equipe de HPC dedicada</a>.
<a href="https://hpc.guix.info/blog/2025/02/guix-hpc-activity-report-2024/">Activity Report</a></p>

<ul>
  <li><a href="https://ieeexplore.ieee.org/document/9912715">Painless Transposition of Reproducible Distributed Environments with NixOS Compose</a></li>
  <li><a href="https://inria.hal.science/hal-01161771/file/reproducible-hpc.pdf">Reproducible and User-Controlled Software
Environments in HPC with Guix</a></li>
</ul>]]></content><author><name></name></author><category term="events" /><summary type="html"><![CDATA[Workflows Workflow é uma serie de passos computacionais e de manipulação de dados. “Workflows are becoming the paradigm of choice for HPC applications.”]]></summary></entry><entry><title type="html">Como acelerar a sua pesquisa com AWS</title><link href="https://arthurhdrodrigues.github.io//blog/events/2025/06/18/aws-agile.html" rel="alternate" type="text/html" title="Como acelerar a sua pesquisa com AWS" /><published>2025-06-18T19:00:00-05:00</published><updated>2025-06-18T19:00:00-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/events/2025/06/18/aws-agile</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/events/2025/06/18/aws-agile.html"><![CDATA[<h2 id="introdução">Introdução</h2>

<p>No dia 5 desse mês participei de um evento promovido pela AWS sobre como usar nuvem (especialmente a deles) para acelerar pesquisa.
Além de adesivos, levei algumas coisas comigo desse evento e gostaria de compartilhar.</p>

<p>Esse evento foi dividido em duas partes.
De manhã houve palestras sobre diferentes usos de AWS para pesquisa e estudos de casos com pesquisadores
e de tarde houve um workshop.</p>

<h2 id="simcloud">sim@cloud</h2>

<p>Para mim, o destaque das palestras foi a apresentação da professora Lucia Drummond sobre o <a href="https://hal.science/hal-04839966v1/document">SIM@CLOUD</a>,
que é um framework que otimiza custo de simulações feitos na nuvem usando <a href="https://aws.amazon.com/pt/ec2/spot/">instâncias spot</a> da AWS.</p>

<p>Essas instâncias possuem um desconto consideravel em seu custo, as vezes de até 90%, pois usam uma capacidade ociosa dos datacenters.
No entanto, quando a AWS precisar dessa capacidade, ela vai deletar sua máquina após um aviso prévio de 2 minutos.
Por tanto sua aplicação deve ser tolerante a falhas e estar preparada para tratar esse aviso de desligamento.
SIM@CLOUD automatiza a migração de simulações entre instâncias spot, assim mitigando o problema de desligamento prématuro.</p>

<p>O time dela já usou essa ferramenta com a Petrobras para rodar <a href="https://aws.amazon.com/blogs/hpc/petrobras-optimizes-cost-and-capacity-of-hpc-applications-with-amazon-ec2-spot-instances/">algumas simulações de forma mais econômica</a>.
Em tese a ferramenta é open-source, mas estou com dificuldade para encontrar o código fonte da mesma.
Se eu encontrar o código, vou editar esse texto e adicionar um link para ele.</p>

<p>Pesquisando sobre o tema encontrei os seguintes artigos que parecem interessantes:</p>
<ul>
  <li><a href="https://dl.acm.org/doi/10.1145/2904111.2904114">Smart spot instances for the supercloud</a>;</li>
  <li><a href="https://kodu.ut.ee/~dumas/pubs/hpcc2011spot.pdf">Achieving Performance and Availability Guarantees with Spot Instances</a>;</li>
  <li><a href="https://www.amazon.com/High-Performance-Computing-Clouds-Cost-Effective/dp/3031297687">High Performance Computing in Clouds: Moving HPC Applications to a Scalable and Cost-Effective Environment</a>: Livro do time da autora.</li>
</ul>

<h1 id="workshop">Workshop</h1>

<p>No workshop, usamos o jupiter notebook integrado a AWS.
O material utilizado está disponivel nesse <a href="https://github.com/aws-samples/aws-research-workshops">repositório</a>.
Em particular, utilizamos <a href="https://github.com/aws-samples/aws-research-workshops/tree/mainline/notebooks/container">esse notebook</a>.</p>

<p>Percorremos o básico de containers e subimos uma aplicação de comparação de DNA na infra da AWS.
Ainda não tive tempo para revisitar o material após o workshop, se fizer isso, atualizo esse tempo com mais comentários sobre.</p>]]></content><author><name></name></author><category term="events" /><summary type="html"><![CDATA[Introdução]]></summary></entry><entry><title type="html">My Guix contribution journal - 0x01</title><link href="https://arthurhdrodrigues.github.io//blog/guix/2025/05/29/guix-diary-01-2025.html" rel="alternate" type="text/html" title="My Guix contribution journal - 0x01" /><published>2025-05-29T16:08:20-05:00</published><updated>2025-05-29T16:08:20-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/guix/2025/05/29/guix-diary-01-2025</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/guix/2025/05/29/guix-diary-01-2025.html"><![CDATA[<h2 id="tldr">TL;DR</h2>

<p>I got my first two accepted patches:</p>
<ul>
  <li>Update httpd: <a href="https://issues.guix.gnu.org/78570">78570</a> as <a href="https://codeberg.org/guix/guix/commit/9f33cb88252f628899c1e11f8b72b9f0022804e1">9f33cb8825</a></li>
  <li>Update dropbear: <a href="https://issues.guix.gnu.org/78600">78600</a> as <a href="https://codeberg.org/guix/guix/commit/ac88ea15c74e918d3a5ad9c5e45f3ef2af2c2d20">ac88ea15c7</a></li>
</ul>

<p>Total accepted patches: 2</p>

<h2 id="docker">Docker</h2>

<p>In my <a href="../05/17/first-contact-guix.html">last post</a> I commented that I was working on updating Guix’s Docker package to version v28.
I got the build phase to succeed, but failed in the check phase due to a new unit test that was introduced.</p>

<p>I got tired trying to make this test succeed or to avoid this test a all.
So I decided to share my work on the <a href="https://issues.guix.gnu.org/74746">related issue</a>
and focus my energy on lower hanging fruits to clear my mind.</p>

<h2 id="patches">Patches</h2>

<p>As a low hanging fruit, I decided to update an existing package, it is a very simple thing to do, you just need to:</p>
<ol>
  <li>Update the <code class="language-plaintext highlighter-rouge">version</code>field in the recipe;</li>
  <li>Update the tarball sha256 hash;</li>
  <li>Check if the recipe still build the package;</li>
  <li>Fix any problem that arises.</li>
</ol>

<p>In Docker’s case, the last packaged version is two years old.
So there are a lot more tests to patch in the recipe.
So step 4 needs a lot of work.</p>

<p>We can find packages that need to be updated using the <code class="language-plaintext highlighter-rouge">guix refresh</code> command.
Just be aware that it takes some time, because it fetches a lot of metadata from the internet.</p>

<pre><code class="language-{bash}">$ guix refresh
nongnu/packages/wine.scm:25:13: winetricks would be upgraded from 20230212 to 20250102
nongnu/packages/wine.scm:145:13: dxvk would be upgraded from 2.0 to 2.6.1
nongnu/packages/wasm.scm:109:4: wasm32-wasi-clang would be upgraded from 15.0.7 to 20.1.6
nongnu/packages/wasm.scm:129:13: wasm32-wasi-libcxx would be upgraded from 15.0.7 to 20.1.6
nongnu/packages/vpn.scm:15:13: zerotier would be upgraded from 1.12.2 to 1.14.2
nongnu/packages/video.scm:84:13: intel-media-driver would be upgraded from 25.1.4 to 2018Q2.1
nongnu/packages/video.scm:119:2: intel-media-driver-nonfree would be upgraded from 25.1.4 to 2018Q2.1
nongnu/packages/video.scm:211:2: obs-with-cef would be upgraded from 30.1.2 to 31.0.3
nongnu/packages/video.scm:26:13: ffmpeg-nvenc would be upgraded from 6.1.2 to 7.1.1
</code></pre>

<p>After looking at my options, I choosed to update httpd (Apache), because the last packaged version was reasonably recent, 
so I guessed that step 4 wouldn’t need any work and I was right, I just updated the version and sha256 and the build recipe was successful.
The patch is simple and was submited as issue <a href="https://issues.guix.gnu.org/78570">78570</a>.
<strong>A commiter reviewed and accepted my patch!</strong> and commited as commit <a href="https://codeberg.org/guix/guix/commit/9f33cb88252f628899c1e11f8b72b9f0022804e1">9f33cb8825</a>, this is <strong>my first accepted patch</strong>. 
But there was a problem, I was credited as <em>“arthurhdrodrigues— via Guix-patches via”</em> instead of Arthur Rodrigues or just arthurhdrodrigues.</p>

<p>I have some theories about this:</p>
<ul>
  <li>I didn’t configured a name in my email; and</li>
  <li>I didn’t use <code class="language-plaintext highlighter-rouge">git send-email</code> to submit the patches, I just copy-and-pasted the patch as in a plain text email.
So some meta-data differed, to be precise the <code class="language-plaintext highlighter-rouge">Cc:</code> field in the email header using <code class="language-plaintext highlighter-rouge">git send-email</code> was set to my email, as shown below.</li>
</ul>

<pre><code class="language-{text}">From 8f5469ee21374ac5712ac9d2e0c5e46d59e8bd9c Mon Sep 17 00:00:00 2001                                                                                                   
Message-ID: &lt;8f5469ee21374ac5712ac9d2e0c5e46d59e8bd9c.1749085808.git.arthurhdrodrigues@proton.me&gt;
From: Arthur Rodrigues &lt;arthurhdrodrigues@proton.me&gt;
Date: Wed, 4 Jun 2025 22:07:40 -0300
Subject: [PATCH] docker
 
Change-Id: I6f1ee9bfa263f9ebb9b75c6d8c2b1110d36b040c
---
 gnu/packages/docker.scm | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)
 
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index b03019de08..bd341ded42 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
</code></pre>

<p>After fixing these problems, I submited <a href="https://issues.guix.gnu.org/78600">another patch</a> that updates dropbear, a lightweight ssh server.
This second patch was also accepted and commited as <a href="https://codeberg.org/guix/guix/commit/ac88ea15c74e918d3a5ad9c5e45f3ef2af2c2d20">ac88ea15c7</a> and this time I was credited correctly!</p>

<p>Now I’m ready to update more packages and go back to work with Docker v28 :D</p>]]></content><author><name></name></author><category term="guix" /><summary type="html"><![CDATA[TL;DR]]></summary></entry><entry><title type="html">Cryptorave 2025</title><link href="https://arthurhdrodrigues.github.io//blog/events/2025/05/19/CR-2025.html" rel="alternate" type="text/html" title="Cryptorave 2025" /><published>2025-05-19T16:08:20-05:00</published><updated>2025-05-19T16:08:20-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/events/2025/05/19/CR-2025</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/events/2025/05/19/CR-2025.html"><![CDATA[<p>No geral a CR2025 teve uma temática de infraestrutura independente e redes sociais</p>

<p>Por exemplo, a primeira apresentação com nome <em>Experiências práticas e inspiradoras de Infraestruturas Digitais Autônomas</em>,
apresentou o projeto <a href="https://canudos.itcouldbewor.se/">Nova CanudOS</a>, que visa divultar técnicas de infraestruturas autônomas.
Concomitante a essa apresentação,  houve outra sobre homelab que não pude comparecer, mas pesquisei sobre o palestrantes e achei
<a href="https://douglasesteves.eng.br/">seu blog pessoal</a>.</p>

<p>Já sobre fediverso, o que se destacou para mim foi a <em>onde.social</em>.
Uma iniciativa de um rede social descentralizada brasileira, você pode ver o <a href="https://cpa.cryptorave.org/cryptorave-2025/talk/9ZQYKF/">resumo da apresentação</a>
ou a <a href="https://plantaformas.org/assemblies/soberaniadigital/f/30/proposals/366">pagina no plantaformas</a>.</p>]]></content><author><name></name></author><category term="events" /><summary type="html"><![CDATA[No geral a CR2025 teve uma temática de infraestrutura independente e redes sociais]]></summary></entry><entry><title type="html">My first contributions to Guix System</title><link href="https://arthurhdrodrigues.github.io//blog/guix/2025/05/17/first-contact-guix.html" rel="alternate" type="text/html" title="My first contributions to Guix System" /><published>2025-05-17T09:08:20-05:00</published><updated>2025-05-17T09:08:20-05:00</updated><id>https://arthurhdrodrigues.github.io//blog/guix/2025/05/17/first-contact-guix</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/guix/2025/05/17/first-contact-guix.html"><![CDATA[<h2 id="my-first-contributions-to-guix-system">My first contributions to Guix System</h2>

<p>Guix System is a fairly new GNU System or GNU/Linux distribution,
the pure GNU version ships with the <a href="https://en.wikipedia.org/wiki/GNU_Hurd">Hurd kernel</a>,
while the Linux version ships with <a href="https://en.wikipedia.org/wiki/Linux-libre">linux-libre</a>
a linux fork with all of the binary blobs, obfuscated code and portions of code under proprietary licenses removed.</p>

<p>It is the GNU implementation of <a href="https://edolstra.github.io/pubs/phd-thesis.pdf">the pure functional deployment model</a>,
inaugurated by Nix and NixOS.</p>

<p>As I can see, Guix cares much more about reprodutibility than NixOS and it has a dedicated HPC team.
But since it is less mature, it is kind of rough around the edges, so I decided to contribute to it!</p>

<h2 id="first-bug-report">First bug report</h2>

<p>My first contact with the community was <a href="https://issues.guix.gnu.org/78274">this bug report</a>, 
which was quickly closed, because it was not considered a bug.</p>

<h2 id="first-patch">First patch</h2>

<p>Guix is, by default, a source based distribution, thus a package is actually a recipe to build a given software.
This recipes are stored in the folder <code class="language-plaintext highlighter-rouge">gnu/packages</code>.</p>

<p>My first <a href="https://issues.guix.gnu.org/78393">submitted patch</a> proposed the addition of the Golang library <a href="https://github.com/golang-jwt/jwt">jwt</a>.
The recipe for Golang libraries are very simple, because no compilation is required, to install a Golang library, you just need to download its source files.</p>

<p>Before sending the patch to the mailing list I checked the file <code class="language-plaintext highlighter-rouge">golang-xyz.scm</code>, that constains a lot of Golang libraries and didn’t find jwt.
But after submitting it, a contributer pointed out that this project is already present using guix’s <a href="https://packages.guix.gnu.org/packages/go-github-com-golang-jwt-jwt/3.2.2/">packages search tool webpage</a>.
This web page shows the location of the library as being <code class="language-plaintext highlighter-rouge">golang-crypto.scm</code>, a simple grep in guix’s source code confirms that.
So my patch was not accepted.</p>

<h2 id="current-contribution">Current Contribution</h2>

<p>Now I’m updating the Docker package to version 28.1.1, the current package is version <a href="https://packages.guix.gnu.org/packages/docker/20.10.27/">20.10.27</a>, which is two years old.
This update is tracked in the <a href="https://issues.guix.gnu.org/74746">issue 74746</a>.</p>

<h2 id="future-contributions">Future Contributions</h2>

<p>In the futere I also plan to add the package <a href="https://github.com/nektos/act">act</a> and ghidra.
Also configure a default wallpaper for Gnome, currently there is no default wallpaper and a blank dark blue backgroud is the default behavior.</p>]]></content><author><name></name></author><category term="guix" /><summary type="html"><![CDATA[My first contributions to Guix System]]></summary></entry><entry><title type="html">A compatibility layer from linux to redox</title><link href="https://arthurhdrodrigues.github.io//blog/2025/03/02/linux-to-redox-layer.html" rel="alternate" type="text/html" title="A compatibility layer from linux to redox" /><published>2025-03-02T06:02:35-06:00</published><updated>2025-03-02T06:02:35-06:00</updated><id>https://arthurhdrodrigues.github.io//blog/2025/03/02/linux-to-redox-layer</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/2025/03/02/linux-to-redox-layer.html"><![CDATA[<h2 id="long-story-short">Long story short</h2>

<p>The basic idea is to develop a compatibility layer to run linux modules on redox-os.
It’d be something similar to <a href="https://www.winehq.org/">Wine</a>, but to be a layer between linux and redox-os.</p>

<p>The objective is to “port” all linux’s device drivers to redox at once.</p>

<h2 id="the-idea">The idea</h2>

<p>I had this interesting idea some weeks ago and
I don’t know if it is possible, so I’ll write about it here and maybe some day work toward a proof of concept.</p>

<p><a href="https://en.wikipedia.org/wiki/Linux">Linux</a> is the most used kernel in the world and <a href="https://www.fosslinux.com/45797/linux-lands-on-mars-a-victory-for-open-source.htm">Mars</a>.
This popularity implies in (and is possible by) a large range of supported machines and thus in drivers implemented for linux.
Actually the majority of kernel code is device drivers.</p>

<p>But it is not the only open source OS out there.
<a href="https://www.redox-os.org/">Redox-os</a> is a fairly new kernel/OS written in Rust that uses the microkernel architecture.
It’d be nice if redox-os supported as much hardware as linux, but it lacks the necessary drivers and of course
rewrite all linux’s drivers is a massive task to implement and maintain.</p>

<p>Then I came up with an idea that I must point out again that I don’t know if it is possible.
The idea is to develop a compatibility layer to run linux modules on redox-os.</p>

<p>This compability layer would provide a virtualized enviroment for linux modules to run in redox-os just as another userspace process.
It wouldn’t be a virtual machine, because we are not virtualizing hardware.
It’d be something similar to <a href="https://www.winehq.org/">Wine</a>, but this layer would virtualize not only the linux’s syscalls (as Wine implements the Windows syscalls), but also all other resources a module needs (such as global .</p>

<p>The problem is that I don’t know which resources a linux module needs.
I presume that there should be some global variables and internal API that this layer needs to virtualize.</p>

<p>If this layer succeeds, it will port all linux’s device drivers to redox-os at once with reduced maintenance cost, that is, instead of maintaining all drivers, we just maintain the compatibility layer.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Long story short]]></summary></entry><entry><title type="html">Revistas Antigas</title><link href="https://arthurhdrodrigues.github.io//blog/2024/01/26/revistas.html" rel="alternate" type="text/html" title="Revistas Antigas" /><published>2024-01-26T09:51:00-06:00</published><updated>2024-01-26T09:51:00-06:00</updated><id>https://arthurhdrodrigues.github.io//blog/2024/01/26/revistas</id><content type="html" xml:base="https://arthurhdrodrigues.github.io//blog/2024/01/26/revistas.html"><![CDATA[<h2 id="repositório-de-revistas-digitalizadas">Repositório de revistas digitalizadas</h2>

<p>Digitalizei algumas revistas antigas, da época que que se vendia CDs que permitiam acesso a internet.</p>

<p>Você pode acessá-las <a href="https://www.ime.usp.br/~arthur/pdfs/">nesse link</a></p>

<p>Como hobby eu escrevo alguns comentários sobre elas nesse página do blog.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Repositório de revistas digitalizadas]]></summary></entry></feed>