<?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: Jorge Castillo</title>
    <description>The latest articles on DEV Community by Jorge Castillo (@schorts99).</description>
    <link>https://dev.to/schorts99</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3974455%2Fa7509b58-e941-4fdc-8868-a97d094cee28.jpeg</url>
      <title>DEV Community: Jorge Castillo</title>
      <link>https://dev.to/schorts99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/schorts99"/>
    <language>en</language>
    <item>
      <title>Reviving Budget Hardware with Omarchy: Lightweight Elegance on an Intel Celeron</title>
      <dc:creator>Jorge Castillo</dc:creator>
      <pubDate>Thu, 27 Aug 2026 20:50:00 +0000</pubDate>
      <link>https://dev.to/schorts99/reviving-budget-hardware-with-omarchy-lightweight-elegance-on-an-intel-celeron-1j6</link>
      <guid>https://dev.to/schorts99/reviving-budget-hardware-with-omarchy-lightweight-elegance-on-an-intel-celeron-1j6</guid>
      <description>&lt;p&gt;When testing opinionated Linux distributions, the ultimate benchmark isn't how smoothly they run on a workstation with 16 cores and a high-end GPU—it's how gracefully they perform on budget, resource-constrained hardware. Enter &lt;strong&gt;&lt;a href="https://omarchy.org" rel="noopener noreferrer"&gt;Omarchy&lt;/a&gt;&lt;/strong&gt;, the "omakase" Arch-based distribution created by &lt;a href="https://dhh.dk" rel="noopener noreferrer"&gt;David Heinemeier Hansson (DHH)&lt;/a&gt;. Built around the Hyprland tiling window manager and explicitly tailored for modern developer productivity, Omarchy proves that a curated desktop environment doesn't require a heavy computing footprint.&lt;/p&gt;

&lt;p&gt;Running &lt;strong&gt;Omarchy 4.0.0&lt;/strong&gt; on an entry-level laptop built around an &lt;strong&gt;Intel Celeron N4020 CPU&lt;/strong&gt; demonstrates how deliberate software curation turns modest hardware into a fast, highly capable development machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Hardware &amp;amp; System Overview
&lt;/h2&gt;

&lt;p&gt;Below is the environment breakdown from our test run:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Specification / Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hardware / PC Model&lt;/td&gt;
&lt;td&gt;ASUS C204M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Processor&lt;/td&gt;
&lt;td&gt;Intel® Celeron® N4020 (2 cores / 2 threads) @ 2.80 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graphics&lt;/td&gt;
&lt;td&gt;Integrated Intel UHD Graphics 600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Display&lt;/td&gt;
&lt;td&gt;11" Built-in Display (1366x768 @ 60 Hz)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM Utilization&lt;/td&gt;
&lt;td&gt;2.69 GiB / 3.68 GiB (~73% load)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage / Root&lt;/td&gt;
&lt;td&gt;15.66 GiB / 27.10 GiB (~58% used) on Btrfs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS &amp;amp; Kernel&lt;/td&gt;
&lt;td&gt;Omarchy 4.0.0-1 (Linux Kernel 7.1.8-arch1-3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compositor&lt;/td&gt;
&lt;td&gt;Hyprland 0.56.2 (Wayland)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🚀 The Developer Experience: What Makes Omarchy Special
&lt;/h2&gt;

&lt;p&gt;Omarchy isn't just an Arch installer with custom dots; it's an opinionated operating system designed to eliminate setup friction and let you write code immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Zero-Friction Language Setup via Menus
&lt;/h3&gt;

&lt;p&gt;Setting up language runtimes on a fresh Linux install often involves hunting down version managers (like &lt;code&gt;asdf&lt;/code&gt;, &lt;code&gt;nvm&lt;/code&gt;, or &lt;code&gt;pyenv&lt;/code&gt;), configuring shell initialization scripts, and managing system paths. Omarchy streamlines this entirely.&lt;/p&gt;

&lt;p&gt;Through its integrated menu system, installing a programming language or developer stack is as simple as launching the system menu, picking a language (Node.js, Ruby, Python, Go, Rust), and hitting Enter. The system automatically installs the necessary version managers, configures environment variables, and makes runtime binaries globally available in your PATH. On low-spec hardware, avoiding manual shell configuration bugs saves precious time and friction.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Pre-Configured, Production-Ready NeoVim
&lt;/h3&gt;

&lt;p&gt;Rather than leaving you with a blank slate or forcing you to build a custom &lt;code&gt;init.lua&lt;/code&gt; setup from scratch, Omarchy comes with an out-of-the-box &lt;strong&gt;NeoVim&lt;/strong&gt; configuration tuned for modern development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-baked LSP &amp;amp; Treesitter&lt;/strong&gt;: Syntax highlighting, auto-formatting, and Language Server Protocol integration work out of the box for major languages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cohesive Theme Integration&lt;/strong&gt;: NeoVim automatically respects the system-wide aesthetic (Tokyo Night in this setup), ensuring seamless visual transitions between your terminal windows and editor panes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized Performance&lt;/strong&gt;: Keybindings, fuzzy finders (like &lt;code&gt;telescope&lt;/code&gt; or &lt;code&gt;fzf&lt;/code&gt;), and file trees launch instantly without heavy startup latency, even on a dual-core CPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Tiling Window Efficiency on Small Screens
&lt;/h3&gt;

&lt;p&gt;On an 11-inch display running at &lt;em&gt;1366 x 768&lt;/em&gt;, traditional desktop window managers waste massive amounts of visual real estate with window borders, title bars, and heavy panel docks. &lt;strong&gt;Hyprland&lt;/strong&gt; maximizes every pixel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications auto-tile side-by-side or stack neatly into workspaces.&lt;/li&gt;
&lt;li&gt;Navigation happens entirely via keyboard shortcuts, eliminating mouse travel.&lt;/li&gt;
&lt;li&gt;Animations remain smooth without dropping frames, thanks to Wayland hardware acceleration on Intel UHD Graphics 600.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚡ Performance Deep Dive: Living with Low Specs
&lt;/h2&gt;

&lt;p&gt;Operating on a machine with &lt;strong&gt;3.68 GiB of usable RAM&lt;/strong&gt; and an &lt;strong&gt;Intel Celeron N4020&lt;/strong&gt; usually means constant stuttering and high swap usage. Omarchy subverts this expectation through careful architectural choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wayland Compositing without Bloat&lt;/strong&gt;: Hyprland handles window composition directly on the GPU, leaving the dual-core Celeron free to handle background tasks and code compilation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight Terminal Choice&lt;/strong&gt;: Running &lt;code&gt;foot&lt;/code&gt; (a fast, lightweight Wayland terminal emulator) keeps system memory usage remarkably low while delivering sub-millisecond rendering times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Btrfs Storage Optimizations&lt;/strong&gt;: The root partition runs on Btrfs, enabling transparent file compression and fast subvolume snapshots. This maximizes usable disk space on tight 32 GB or 64 GB internal drives while maintaining fast read/write speeds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💡 Developer Evaluation: Should You Try Omarchy?
&lt;/h2&gt;

&lt;p&gt;Before jumping in, it helps to understand who Omarchy is built for—and where it might not fit your workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 You Should Try Omarchy If:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You want a keyboard-driven workflow without spending days rice-ing dotfiles&lt;/strong&gt;: Configuring Hyprland, Waybar, and NeoVim from scratch takes hours of tweaking. Omarchy provides DHH's polished, cohesive setup instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You are reviving budget or older hardware&lt;/strong&gt;: It turns low-power CPUs and limited-RAM devices into fast, responsive coding terminals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You appreciate "Omakase" sensible defaults&lt;/strong&gt;: If you prefer curated tooling (standardized themes, opinionated keybindings, terminal-first workflows) over configuring every micro-setting yourself, you will feel right at home.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want the benefits of Arch Linux without manual maintenance&lt;/strong&gt;: You get access to the Arch User Repository (AUR) and rolling updates wrapped in an accessible, pre-configured distribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔴 You Might Want to Skip Omarchy If:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You rely heavily on floating windows or traditional GUIs&lt;/strong&gt;: Hyprland is a tiling window manager at heart. If your workflow relies on drag-and-drop window management and mouse-heavy navigation, the learning curve will feel steep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You require deep custom desktop layout changes&lt;/strong&gt;: While you can modify configurations, Omarchy is intentionally opinionated. Customizing away from its core defaults defeats much of its plug-and-play value.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📋 Verdict
&lt;/h2&gt;

&lt;p&gt;Omarchy delivers on DHH's "omakase" philosophy: sensible defaults, curated developer tooling, and zero visual clutter. By eliminating background daemon overhead and pre-configuring essential tools—from one-click language installations to a fully prepped NeoVim environment—it transforms an inexpensive Celeron laptop into a nimble, surprisingly productive development machine.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>archlinux</category>
      <category>development</category>
    </item>
    <item>
      <title>Presenting: The Blueprint for Scalable Frontend Systems — Clean Architecture &amp; DDD in React</title>
      <dc:creator>Jorge Castillo</dc:creator>
      <pubDate>Tue, 18 Aug 2026 19:13:12 +0000</pubDate>
      <link>https://dev.to/schorts99/presenting-the-blueprint-for-scalable-frontend-systems-clean-architecture-ddd-in-react-4o4l</link>
      <guid>https://dev.to/schorts99/presenting-the-blueprint-for-scalable-frontend-systems-clean-architecture-ddd-in-react-4o4l</guid>
      <description>&lt;p&gt;As React applications grow from simple prototypes into complex, mission-critical systems, they almost universally hit a wall. Components swell into “Fat Components” that manage UI rendering, coordinate network requests, execute business rules, handle local caching, and interface directly with database schemas — all at once.&lt;/p&gt;

&lt;p&gt;When technical boundaries blur, &lt;strong&gt;software becomes fragile and change becomes expensive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To build frontend systems that scale alongside business needs without collapsing under technical debt, we need to apply the same architectural rigor long practiced in backend engineering: &lt;strong&gt;strict separation of concerns, explicit domain modeling, and inversion of control&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We are launching a comprehensive 4-part series: &lt;strong&gt;The Blueprint for Scalable Frontend Systems&lt;/strong&gt;, driven by our open-source reference implementation, &lt;a href="https://github.com/schorts99/React-Clean-Architecture" rel="noopener noreferrer"&gt;React-Clean-Architecture&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🗺️ What to Expect in This Series
&lt;/h2&gt;

&lt;p&gt;Throughout this series, we will break down how to design, structure, and implement a production-grade React application in strict TypeScript where business logic, application orchestration, infrastructure adapters, and UI components remain completely decoupled.&lt;/p&gt;

&lt;p&gt;Here is the roadmap of what we will cover across the 4 parts:&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Part 1: The Why — Why Architecture Matters on the Frontend
&lt;/h3&gt;

&lt;p&gt;We start with the core problem: accidental coupling in modern SPA development. We will explore how unmanaged dependencies leak business logic into view components, lock applications into specific third-party drivers, and make testing slow and brittle. We will introduce the Dependency Rule as the foundational principle for keeping inner layers completely independent of frameworks like React, browser APIs, or network protocols.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏗️ Part 2: The How — Architectural Layers &amp;amp; Domain-Driven Design
&lt;/h3&gt;

&lt;p&gt;Next, we dive deep into the codebase layout. Moving away from technical-role folders (&lt;code&gt;/components&lt;/code&gt;, &lt;code&gt;/services&lt;/code&gt;), we explore a module-oriented structure where each business context encapsulates its own domain, application, and infrastructure layers. We will look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Domain Layer&lt;/strong&gt;: Modeling business invariants using pure &lt;strong&gt;Entities&lt;/strong&gt; and &lt;strong&gt;Value Objects&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Layer&lt;/strong&gt;: Defining workflows through &lt;strong&gt;CQRS&lt;/strong&gt; (Commands &amp;amp; Queries) and application-owned &lt;strong&gt;Ports&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure Layer&lt;/strong&gt;: Implementing persistent adapters (such as IndexedDB or REST clients) behind application ports without leaking driver details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ Part 3: Advanced Frontend Engineering Patterns
&lt;/h3&gt;

&lt;p&gt;In the third installment, we tackle real-world production challenges. We will examine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tag-Based Cache Invalidation&lt;/strong&gt;: Automatically clearing cached query results when commands execute state mutations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composition Root &amp;amp; Inversion of Control&lt;/strong&gt;: Using &lt;strong&gt;InversifyJS&lt;/strong&gt; to wire dependencies dynamically based on the runtime environment (browser vs. SSR/server).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolated Testing Strategies&lt;/strong&gt;: Unit testing domain rules in pure TypeScript and testing use-case handlers using lightning-fast in-memory fakes instead of real databases or network mocks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ Part 4: Practical Guide — Adding Features &amp;amp; Architectural Rules
&lt;/h3&gt;

&lt;p&gt;In the final part, we turn theory into a repeatable development process. We will walk step-by-step through adding a brand-new feature to an existing Clean Architecture codebase — from defining the initial domain entity down to registering handlers and connecting UI components. We will also outline the fundamental architectural guardrails every team should enforce to prevent accidental dependency violations as the team expands.&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 The Reference Repository
&lt;/h2&gt;

&lt;p&gt;This series isn’t just theoretical — it is built entirely around a fully working, production-ready codebase featuring React, React Router, TypeScript, InversifyJS, IndexedDB, Vite, and Docker.&lt;/p&gt;

&lt;p&gt;You can explore the source code, inspect the module layout, or clone the repository to follow along:&lt;/p&gt;

&lt;p&gt;👉 GitHub Repository: github.com/schorts99/React-Clean-Architecture&lt;/p&gt;

&lt;h2&gt;
  
  
  📢 Up Next…
&lt;/h2&gt;

&lt;p&gt;Get ready to re-examine how frontend applications should be built!&lt;/p&gt;

&lt;p&gt;Coming up next: Part 1 — The Why: Why Architecture Matters on the Frontend. We will break down the mechanics of technical coupling, explain why framework-centric codebases fail over time, and introduce the core rule that keeps your core domain independent of external technologies. Stay tuned!&lt;/p&gt;

</description>
      <category>cleancode</category>
      <category>softwareengineering</category>
      <category>react</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
