<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Luis Cardoso</title><description>Welcome to my blog! I write about Rust &amp; modern web development.</description><link>https://luiscardoso.dev/</link><language>en-us</language><item><title>Auto-vectorization in Rust: how to see it (and when it fails)</title><link>https://luiscardoso.dev/blog/auto-vectorization/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/auto-vectorization/</guid><description>Compile two Rust loops, inspect the generated asm/LLVM IR, and learn why one vectorizes and the other doesn&apos;t.</description><pubDate>Sat, 25 Mar 2023 00:00:00 GMT</pubDate></item><item><title>DeepSeek-R1: RL-trained reasoning and distillation</title><link>https://luiscardoso.dev/blog/deepsek-r1/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/deepsek-r1/</guid><description>DeepSeek-R1-Zero explores pure RL on verifiable tasks, while DeepSeek-R1 adds cold-start data, multi-stage RL, and distillation. This post breaks down GRPO, the training pipeline, and what transfers to smaller models.</description><pubDate>Sat, 08 Feb 2025 00:00:00 GMT</pubDate></item><item><title>A short introduction to Mixture-of-Experts (MoE)</title><link>https://luiscardoso.dev/blog/mixture-of-experts/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/mixture-of-experts/</guid><description>A practical overview of Mixture-of-Experts (MoE): routing, trade-offs, and why models like Mixtral use it.</description><pubDate>Sun, 10 Dec 2023 00:00:00 GMT</pubDate></item><item><title>Thinking Without Words</title><link>https://luiscardoso.dev/blog/neuralese/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/neuralese/</guid><description>Reasoning through discrete language tokens can be a bottleneck. This post introduces continuous latent reasoning, where models &apos;think&apos; directly in high-dimensional vector spaces, and covers architectures, training methods, and limitations like interpretability and evaluation.</description><pubDate>Fri, 13 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Applying Type-driven Design in Rust and TypeScript</title><link>https://luiscardoso.dev/blog/parsing-data-with-rust-typescript/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/parsing-data-with-rust-typescript/</guid><description>Parse at the boundary using Rust newtypes and Zod schemas so invalid input never reaches business logic.</description><pubDate>Sat, 11 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Rust - The differences between the &amp;str and String types</title><link>https://luiscardoso.dev/blog/rust-difference-str-string/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/rust-difference-str-string/</guid><description>When to use &amp;str vs String in Rust: borrowing, ownership, and allocations.</description><pubDate>Sun, 05 Feb 2023 00:00:00 GMT</pubDate></item><item><title>A field guide to sandboxes for AI</title><link>https://luiscardoso.dev/blog/sandboxes-for-ai/</link><guid isPermaLink="true">https://luiscardoso.dev/blog/sandboxes-for-ai/</guid><description>A practical guide to sandboxing for AI agents and RL environments: containers vs gVisor vs microVMs vs Wasm/isolates, what each boundary actually buys you, and where they fail.</description><pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate></item></channel></rss>