<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Jose Fernandez</title><link>https://jrfernandez.com/</link><description>Recent content in Home on Jose Fernandez</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 07 Feb 2026 12:00:00 -0700</lastBuildDate><atom:link href="https://jrfernandez.com/index.xml" rel="self" type="application/rss+xml"/><item><title>mdserve 1.0: Markdown Preview for Coding Agents</title><link>https://jrfernandez.com/mdserve-1.0/</link><pubDate>Sat, 07 Feb 2026 12:00:00 -0700</pubDate><guid>https://jrfernandez.com/mdserve-1.0/</guid><description>&lt;p&gt;When I &lt;a href="https://jrfernandez.com/mdserve-fast-markdown-preview-terminal-workflows/"&gt;introduced mdserve&lt;/a&gt; last year, I blogged about it as a tool for AI coding agent workflows, but the project itself never said that. The README called it a &amp;ldquo;fast markdown preview server with live reload and theme support.&amp;rdquo; Generic on purpose. People started using it for things I never intended: replacing MkDocs, hosting documentation.&lt;/p&gt;
&lt;p&gt;With &lt;a href="https://github.com/jfernandez/mdserve/releases/tag/v1.0.0"&gt;v1.0&lt;/a&gt;, I&amp;rsquo;m dropping the ambiguity. &lt;strong&gt;mdserve is a companion tool for AI coding agents.&lt;/strong&gt; That&amp;rsquo;s what it was built for, that&amp;rsquo;s how I use it, and that&amp;rsquo;s the only direction it&amp;rsquo;s going.&lt;/p&gt;</description></item><item><title>Whiteboarding with AI</title><link>https://jrfernandez.com/whiteboarding-with-ai/</link><pubDate>Sat, 04 Oct 2025 21:00:00 -0600</pubDate><guid>https://jrfernandez.com/whiteboarding-with-ai/</guid><description>&lt;p&gt;Coding agents often produce better results when you don&amp;rsquo;t ask them to write code immediately. If you jump straight to execution without thinking through the design, the code quality suffers. I&amp;rsquo;ve found it better to whiteboard the problem first. It&amp;rsquo;s like pairing with a senior engineer. You enter a room, map out the problem space, explore solutions, and sketch architectural diagrams. Instead of a whiteboard, it&amp;rsquo;s Markdown. And instead of losing the work when you erase it, the session persists as a design document.&lt;/p&gt;</description></item><item><title>Introducing mdserve: Fast Markdown Preview for Terminal Workflows</title><link>https://jrfernandez.com/mdserve-fast-markdown-preview-terminal-workflows/</link><pubDate>Mon, 22 Sep 2025 21:00:00 -0600</pubDate><guid>https://jrfernandez.com/mdserve-fast-markdown-preview-terminal-workflows/</guid><description>&lt;p&gt;As coding LLM agents get better, I find myself using IDEs less and less. These days, my workflow is mostly &lt;a href="https://claude.ai/code"&gt;Claude Code&lt;/a&gt; and Neovim. I don&amp;rsquo;t think I need a full IDE anymore for most work.&lt;/p&gt;
&lt;p&gt;But there was one thing I missed from IDEs: built-in markdown preview. AI-assisted coding involves a lot of markdown work, and instant visual feedback is valuable.&lt;/p&gt;
&lt;h2 id="the-problem"&gt;The Problem&lt;/h2&gt;
&lt;p&gt;Most markdown preview tools are designed as IDE plugins or require dependencies like Node.js. I wanted something that is just a binary - no installation, no dependencies, no complex setup. Just a single executable that works anywhere and I can run from a terminal.&lt;/p&gt;</description></item><item><title>Noisy Neighbor Detection with eBPF</title><link>https://jrfernandez.com/noisy-neighbor-detection-with-ebpf/</link><pubDate>Wed, 11 Sep 2024 00:49:31 -0600</pubDate><guid>https://jrfernandez.com/noisy-neighbor-detection-with-ebpf/</guid><description>&lt;p&gt;I recently co-authored a post on the &lt;a href="https://netflixtechblog.com/noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd"&gt;Netflix Tech Blog&lt;/a&gt; where we detailed how we&amp;rsquo;re continuously monitoring the Linux scheduler using eBPF to enhance system observability. By instrumenting the scheduler, we gain real-time insights into CPU resource contention and noisy neighbor issues, all with minimal overhead. This method allows for deeper visibility into Linux performance, improving stability across our multi-tenant infrastructure. For more on how we implemented this, check out the full post &lt;a href="https://netflixtechblog.com/noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd"&gt;here&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Packaging a Rust Program for Fedora</title><link>https://jrfernandez.com/packaging-rust-program-for-fedora/</link><pubDate>Sun, 25 Aug 2024 00:49:31 -0600</pubDate><guid>https://jrfernandez.com/packaging-rust-program-for-fedora/</guid><description>&lt;p&gt;Packaging a Rust program for Fedora may seem daunting initially, but it&amp;rsquo;s more straightforward than expected, thanks to excellent documentation, Rust-specific tooling, and a helpful community. Over the past two months, I packaged &lt;a href="https://jrfernandez.com/bpftop/"&gt;bpftop&lt;/a&gt;, a process monitor for eBPF programs. While there were some specific considerations with Rust, the process was manageable. In this post, I&amp;rsquo;ll share the steps I took, the insights I gained, and how to streamline the experience.&lt;/p&gt;</description></item><item><title>About</title><link>https://jrfernandez.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jrfernandez.com/about/</guid><description>&lt;p&gt;I&amp;rsquo;m a systems engineer building compute infrastructure and container runtimes at &lt;a href="https://www.linkedin.com/in/josefernandezmn/"&gt;Netflix&lt;/a&gt;. I contribute to the &lt;a href="https://jrfernandez.com/linux-kernel/"&gt;Linux kernel&lt;/a&gt;, created &lt;a href="https://jrfernandez.com/bpftop/"&gt;bpftop&lt;/a&gt;, and work deep in the stack with eBPF and Rust.&lt;/p&gt;
&lt;h2 id="contact"&gt;Contact&lt;/h2&gt;
&lt;p&gt;You can reach me at: &lt;a href="mailto:me@jrfernandez.com"&gt;me@jrfernandez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Connect with me on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jfernandez"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitter.com/jrfernandez"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>bpftop</title><link>https://jrfernandez.com/bpftop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jrfernandez.com/bpftop/</guid><description>&lt;p&gt;&lt;a href="https://github.com/Netflix/bpftop"&gt;bpftop&lt;/a&gt; is a monitoring tool I created to provide real-time insights into the performance of eBPF programs.&lt;/p&gt;
&lt;p&gt;Read more about it in the &lt;a href="https://netflixtechblog.com/announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5"&gt;blog post&lt;/a&gt; on the Netflix Tech Blog.&lt;/p&gt;
&lt;h2 id="media-coverage"&gt;Media coverage&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;InfoQ - &lt;a href="https://www.infoq.com/news/2024/03/netflix-launches-bpftop/"&gt;https://www.infoq.com/news/2024/03/netflix-launches-bpftop/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LWN.net - &lt;a href="https://lwn.net/Articles/963767/"&gt;https://lwn.net/Articles/963767/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The New Stack - &lt;a href="https://thenewstack.io/netflix-releases-bpftop-an-ebpf-based-application-monitor/"&gt;https://thenewstack.io/netflix-releases-bpftop-an-ebpf-based-application-monitor/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;console.dev - &lt;a href="https://console.dev/tools/bpftop/"&gt;https://console.dev/tools/bpftop/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Linux kernel</title><link>https://jrfernandez.com/linux-kernel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jrfernandez.com/linux-kernel/</guid><description>&lt;p&gt;I started contributing to the Linux kernel in 2024. My primary focus is in the
eBPF subsystem. I have submitted to the following patches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ce09cbdd988887662546a1175bcfdfc6c8fdd150"&gt;bpf: Improve program stats run-time calculation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Released in v6.10&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=130afc8a886183a94cf6eab7d24f300014ff87ba"&gt;drm/amd/display: Fix division by zero in setup_dsc_config&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Released in v6.10&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lore.kernel.org/all/20240319050302.1085006-1-josef@netflix.com/"&gt;bpf: add bpf_task_get_cgroup kfunc&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Rejected&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e6b65ee10588a552d04d488ebeac24bba20747a8"&gt;kbuild: control extra pacman packages with PACMAN_EXTRAPACKAGES&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Released in v6.12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4929f5b95f6b20ae10f2c409fb2ca58253e73706"&gt;kbuild: add debug package to pacman PKGBUILD&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Released in v6.12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>mdserve</title><link>https://jrfernandez.com/mdserve/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jrfernandez.com/mdserve/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jfernandez/mdserve"&gt;mdserve&lt;/a&gt; is a fast, lightweight markdown preview server I created for terminal-based workflows.&lt;/p&gt;
&lt;p&gt;Read more about it in my &lt;a href="https://jrfernandez.com/mdserve-fast-markdown-preview-terminal-workflows/"&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="key-features"&gt;Key Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Zero dependencies: Just a single binary&lt;/li&gt;
&lt;li&gt;Lightning fast: Built in Rust&lt;/li&gt;
&lt;li&gt;Live reload: Auto-refreshes when files change&lt;/li&gt;
&lt;li&gt;Beautiful themes: Built-in Catppuccin support (Latte, Macchiato, Mocha) plus additional themes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install mdserve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sSfL https://raw.githubusercontent.com/jfernandez/mdserve/main/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Cargo:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cargo install mdserve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mdserve README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The server starts up and provides a local URL to view your rendered markdown. Use the 🎨 button to switch between themes.&lt;/p&gt;</description></item></channel></rss>