<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Julio Daniel Reyes</title>
    <description>The latest articles on Forem by Julio Daniel Reyes (@nemesiscodex).</description>
    <link>https://forem.com/nemesiscodex</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%2F291938%2Fa18aad0a-8548-4b0f-b389-a81e144546af.png</url>
      <title>Forem: Julio Daniel Reyes</title>
      <link>https://forem.com/nemesiscodex</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nemesiscodex"/>
    <language>en</language>
    <item>
      <title>I made a NES-style 8-bit sequencer app</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Wed, 01 Apr 2026 18:16:11 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/i-made-a-nes-style-8-bit-sequencer-app-2g38</link>
      <guid>https://forem.com/nemesiscodex/i-made-a-nes-style-8-bit-sequencer-app-2g38</guid>
      <description>&lt;p&gt;Just for fun!&lt;/p&gt;

&lt;p&gt;Ever wondered what 8-bit music actually is?&lt;/p&gt;

&lt;p&gt;I started asking myself: why 8-bit? What gives it that distinctive sound?&lt;/p&gt;

&lt;p&gt;I learned that 8-bit music is mostly a nickname for the sound associated with old game hardware. Those systems used 8-bit processors, had very limited memory, and could not store and play full recorded songs the way modern systems do. Instead, they used dedicated audio hardware (an APU) to generate sound in real time through a small number of voices (channels).&lt;/p&gt;

&lt;p&gt;Each voice could only play one note at a time.&lt;/p&gt;

&lt;p&gt;The NES APU had 5 channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 pulse voice (square-like waves): melody / harmony&lt;/li&gt;
&lt;li&gt;1 triangle voice: bass&lt;/li&gt;
&lt;li&gt;1 noise voice: percussion / effects&lt;/li&gt;
&lt;li&gt;1 DPCM voice: short samples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounded simple and fun enough that I wanted to try building something inspired by it.&lt;/p&gt;

&lt;p&gt;So I built my own browser-based NES-style sequencer: &lt;a href="https://ochoit.nemesiscodex.org" rel="noopener noreferrer"&gt;Ocho(8)-it!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open source and MIT licensed.&lt;/p&gt;

</description>
      <category>music</category>
      <category>webapp</category>
      <category>gamedev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Stop Sending "Monster" PRs: Use stacked pull requests</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 26 Jan 2026 18:49:06 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/stop-sending-monster-prs-use-stacked-pull-requests-4kf8</link>
      <guid>https://forem.com/nemesiscodex/stop-sending-monster-prs-use-stacked-pull-requests-4kf8</guid>
      <description>&lt;p&gt;Ever worked on a &lt;em&gt;"quick"&lt;/em&gt; feature only to realize it involves changes across your data model, services, APIs, and frontend?&lt;/p&gt;

&lt;p&gt;You create a single branch, dump 30 commits into it, and open a PR so big your team needs a weekend retreat to review it.&lt;/p&gt;

&lt;p&gt;Or even worse, did you ever have to review one of those monster PRs?&lt;/p&gt;

&lt;p&gt;That's how you end up with developer fatigue.&lt;/p&gt;

&lt;p&gt;Reviewing a large PR takes time if you want quality, yet you're blocking your teammates until it's done.&lt;/p&gt;

&lt;p&gt;The trade-off between speed and review depth is real.&lt;/p&gt;

&lt;p&gt;You may think, "It's just one PR, no big deal." But what if that becomes the norm for everyone on the team?&lt;/p&gt;

&lt;h3&gt;
  
  
  So what's the alternative?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Stacked Pull Requests&lt;/strong&gt;: break the work into tiny, reviewable chunks that land in sequence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fmad6h01ecis8gaqukn3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmad6h01ecis8gaqukn3g.png" alt="Every chunk stacked on top of it's dependency" width="800" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this video I show the workflow, the manual pain points, and how tools like the Graphite CLI automate the stacking so you can ship faster without the maintenance headaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  Links:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Graphite CLI: &lt;a href="https://graphite.com/docs/cli-overview" rel="noopener noreferrer"&gt;https://graphite.com/docs/cli-overview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to structure your stacks: &lt;a href="https://graphite.com/docs/how-to-structure-your-stacks" rel="noopener noreferrer"&gt;https://graphite.com/docs/how-to-structure-your-stacks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Best practices for reviewing Stacked PRs: &lt;a href="https://graphite.com/docs/best-practices-for-reviewing-stacks" rel="noopener noreferrer"&gt;https://graphite.com/docs/best-practices-for-reviewing-stacks&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>git</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>A Better Way to Run Git Worktrees Finally!</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Tue, 16 Dec 2025 13:35:04 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/a-better-way-to-run-git-worktrees-finally-1lh9</link>
      <guid>https://forem.com/nemesiscodex/a-better-way-to-run-git-worktrees-finally-1lh9</guid>
      <description>&lt;p&gt;I recently found git-gtr, a small CLI by the CodeRabbit team that wraps native Git worktrees and makes them practical for daily use.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/coderabbitai/git-worktree-runner" rel="noopener noreferrer"&gt;https://github.com/coderabbitai/git-worktree-runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install it, create an alias for it &lt;code&gt;alias gw="git gtr"&lt;/code&gt; (Easier to remember, but up to you!).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to your repository&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gw new &amp;lt;branchName&amp;gt;&lt;/code&gt; will create a new worktree. The first time it will create a new folder in the parent directory &lt;code&gt;&amp;lt;repo&amp;gt;-worktrees&lt;/code&gt;, inside it a folder &lt;code&gt;&amp;lt;branchName&amp;gt;&lt;/code&gt; for your newly created worktree.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gw editor &amp;lt;branchName&amp;gt;&lt;/code&gt; will open the configured code editor.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gw ai &amp;lt;branchName&amp;gt;&lt;/code&gt; will start your cli (claude, codex, opencode)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gw run &amp;lt;branchName&amp;gt; &amp;lt;command&amp;gt;&lt;/code&gt; will run commands on that worktree&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gw rm &amp;lt;branchName&amp;gt;&lt;/code&gt; to remove it once you are done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full demo in my new vid. Would you use this? or do you prefer the original git command?&lt;/p&gt;

</description>
      <category>git</category>
      <category>vibecoding</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>(Video) Authentication Service in Actix - Part 1: Configuration</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 06 Jul 2020 05:13:58 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/video-authentication-service-in-actix-part-1-configuration-45a9</link>
      <guid>https://forem.com/nemesiscodex/video-authentication-service-in-actix-part-1-configuration-45a9</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AH2P7Vc0N9s"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In this video series, I'm going to build an authentication service in Actix.&lt;/p&gt;

&lt;p&gt;There are a couple of new libraries that I want to try, and a few people already asked me to do authentication, so let's see how it goes.&lt;/p&gt;

&lt;p&gt;The idea is to have a service that will allow the user to create an account, log in and have access to other secure resources. I'm going to do something simple using only JSON Web Tokens, but it will give you an idea of how to implement a more complex setup like combining it with Oauth 2. &lt;/p&gt;

&lt;p&gt;In this first part, I will set up the app configuration, the logs, and add a simple health endpoint.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>security</category>
    </item>
    <item>
      <title>Rust Web development | Boilerplate free with Rocket</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Wed, 03 Jun 2020 07:14:23 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/rust-web-development-boilerplate-free-with-rocket-438l</link>
      <guid>https://forem.com/nemesiscodex/rust-web-development-boilerplate-free-with-rocket-438l</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tjH0Mye8U_A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;An overview of the Rocket web framework for rust.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type Safe&lt;/li&gt;
&lt;li&gt;Boilerplate Free&lt;/li&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;Extensible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Including examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Hello World service &lt;/li&gt;
&lt;li&gt;Create a TODO service with a Postgres database using Diesel ORM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⏱️TIMESTAMPS⏱️&lt;br&gt;
0:00 Rust Web development with Rocket&lt;br&gt;
0:07 What is Rocket?&lt;br&gt;
0:49 Rocket overview&lt;br&gt;
3:32 A couple of things to consider before using Rocket&lt;br&gt;
4:22 Building a Hello World service&lt;br&gt;
8:37 Define custom configuration&lt;br&gt;
9:29 Building a TODO service with a Postgres database&lt;br&gt;
9:34 Setup a Database service using Docker and Docker Compose&lt;br&gt;
10:12 Diesel to manage database migrations&lt;br&gt;
12:19 Diesel and Serde dependencies&lt;br&gt;
12:58 Rearrange the endpoints&lt;br&gt;
13:20 Use the Schema file generated by Diesel&lt;br&gt;
13:47 Define the models for the TODO service&lt;br&gt;
15:04 Define handler to create new TODOs&lt;br&gt;
15:52 How to get a DB connection with Rocket?&lt;br&gt;
17:09 Create new TODO&lt;br&gt;
18:00 Define handler to list all TODOs&lt;br&gt;
18:54 Define the database configuration&lt;br&gt;
19:20 Testing the TODO endpoints&lt;br&gt;
20:27 Bonus: Define endpoint to mark a TODO as checked&lt;/p&gt;

&lt;p&gt;📔 Source Code&lt;br&gt;
&lt;a href="https://github.com/nemesiscodex/hello-rocket"&gt;https://github.com/nemesiscodex/hello-rocket&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Rocket Web Framework&lt;br&gt;
&lt;a href="https://rocket.rs/"&gt;https://rocket.rs/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>postgres</category>
    </item>
    <item>
      <title>#3 Building a simple GraphQL API with Actix and Juniper (Rust)</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 11 May 2020 00:48:03 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/3-building-a-simple-graphql-api-with-actix-and-juniper-rust-31pm</link>
      <guid>https://forem.com/nemesiscodex/3-building-a-simple-graphql-api-with-actix-and-juniper-rust-31pm</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7v7ERnrC4fo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;⏱️TIMESTAMPS⏱️&lt;br&gt;
0:00 Simple GraphQL API with Actix and Juniper - part 3&lt;br&gt;
0:07 Start of the video&lt;br&gt;
0:28 Refactoring of User queries into a repository&lt;br&gt;
4:06 Get a single user&lt;br&gt;
6:45 Code to create and list Posts&lt;br&gt;
11:15 Query the posts on GraphiQL&lt;br&gt;
13:10 Posts as a field of User&lt;br&gt;
15:59 N+1 Problem&lt;br&gt;
16:45 Solution? Dataloaders&lt;br&gt;
17:11 Using a Dataloader to get the posts of an user&lt;br&gt;
26:05 Did it work?&lt;br&gt;
27:39 Thank you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nemesiscodex/building-a-simple-graphql-api-with-actix-and-juniper-rust-26f6"&gt;Part 1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/nemesiscodex/2-building-a-simple-graphql-api-with-actix-and-juniper-rust-51h9"&gt;Part 2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>graphql</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>My development environment | From scratch | Ubuntu | 2020</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Thu, 16 Apr 2020 01:38:52 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/my-development-environment-from-scratch-ubuntu-2020-41h9</link>
      <guid>https://forem.com/nemesiscodex/my-development-environment-from-scratch-ubuntu-2020-41h9</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/smwpadzkWRQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Content:&lt;br&gt;
0:07 Start of the video&lt;br&gt;
0:51 Terminals&lt;br&gt;
0:51    - Terminator&lt;br&gt;
2:16    - Alacritty&lt;br&gt;
3:12 Fundamental tools installation - with brief explanation&lt;br&gt;
3:19    - curl&lt;br&gt;
3:28    - git&lt;br&gt;
3:33    - htop&lt;br&gt;
3:39    - vim&lt;br&gt;
3:45    - jq&lt;br&gt;
3:50    - zsh&lt;br&gt;
4:03    - tmux&lt;br&gt;
4:27 Tmux basic usage&lt;br&gt;
5:56 jq overview&lt;br&gt;
6:29 htop overview&lt;br&gt;
6:39 vim basic usage&lt;br&gt;
7:24 zsh overview&lt;br&gt;
7:50 oh my zsh installation&lt;br&gt;
8:58 powerlevel 10k installation (zsh theme)&lt;br&gt;
12:42 powerlevel 10k overview&lt;br&gt;
13:34 fzf installation (fuzzy finder)&lt;br&gt;
14:11 fzf basic usage&lt;br&gt;
15:24 IDEs&lt;br&gt;
15:24    - Intellij Idea (mention)&lt;br&gt;
15:42    - VS Code (mention and installation)&lt;br&gt;
15:59 Nord color theme &lt;br&gt;
16:13 Nord for alacritty&lt;br&gt;
16:53 Jetbrain's Mono Font&lt;br&gt;
17:37 Rust installation&lt;br&gt;
18:00 Customize status bar configuration, add crab emoji (very important)&lt;br&gt;
18:38 Docker installation&lt;br&gt;
20:52 docker-compose installation&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>#2 Building a simple GraphQL API with Actix and Juniper (Rust)</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 06 Apr 2020 23:09:53 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/2-building-a-simple-graphql-api-with-actix-and-juniper-rust-51h9</link>
      <guid>https://forem.com/nemesiscodex/2-building-a-simple-graphql-api-with-actix-and-juniper-rust-51h9</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/aEAz5DHhpLo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nemesiscodex/building-a-simple-graphql-api-with-actix-and-juniper-rust-26f6"&gt;Part 1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>graphql</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building a simple GraphQL API with Actix and Juniper (Rust)</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Fri, 20 Mar 2020 05:16:02 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/building-a-simple-graphql-api-with-actix-and-juniper-rust-26f6</link>
      <guid>https://forem.com/nemesiscodex/building-a-simple-graphql-api-with-actix-and-juniper-rust-26f6</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9q4GcWbAIEM"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

</description>
      <category>rust</category>
      <category>graphql</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Running Actix integration tests with Github actions (Rust) </title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Sat, 07 Mar 2020 11:59:19 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/running-actix-integration-tests-with-github-actions-rust-np7</link>
      <guid>https://forem.com/nemesiscodex/running-actix-integration-tests-with-github-actions-rust-np7</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/TKCJl6YgsH8"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

</description>
      <category>rust</category>
      <category>devops</category>
      <category>webdev</category>
      <category>testing</category>
    </item>
    <item>
      <title>Error handling and Logging with Actix (Rust)</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 24 Feb 2020 21:05:27 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/error-handling-and-logging-with-actix-rust-3eni</link>
      <guid>https://forem.com/nemesiscodex/error-handling-and-logging-with-actix-rust-3eni</guid>
      <description>&lt;p&gt;&lt;a href="https://youtu.be/NHaWAWLgtAw"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AsdB_mnF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.youtube.com/vi/NHaWAWLgtAw/maxresdefault.jpg" alt="Error handling and Logging with Actix (Rust)"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>microservices</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>(Rust-lang) Creating a simple TODO service with Actix [Video] - Part 3</title>
      <dc:creator>Julio Daniel Reyes</dc:creator>
      <pubDate>Mon, 17 Feb 2020 21:55:17 +0000</pubDate>
      <link>https://forem.com/nemesiscodex/rust-lang-creating-a-simple-todo-service-with-actix-video-part-3-2h9i</link>
      <guid>https://forem.com/nemesiscodex/rust-lang-creating-a-simple-todo-service-with-actix-video-part-3-2h9i</guid>
      <description>&lt;p&gt;&lt;a href="https://youtu.be/3vMxuM7ezEk"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xjpMr2Dq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.youtube.com/vi/3vMxuM7ezEk/0.jpg" alt="Creating a simple TODO service with Actix - Part 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch previous parts&lt;br&gt;
&lt;a href="https://youtu.be/gQwA0g0NNSI"&gt;Part 1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/e37NbhSm56o"&gt;Part 2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>tutorials</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
