<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>eval ( code )</title><link>https://evalcode.com/</link><description>Recent content on eval ( code )</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copy, _right?_ :thinking_face:. All thoughts and opinions are my own. They do not represent my employer.</copyright><lastBuildDate>Sun, 26 Apr 2026 08:15:00 -0600</lastBuildDate><atom:link href="https://evalcode.com/index.xml" rel="self" type="application/rss+xml"/><item><title>🐛 Bug Reports: Make It Reproducible</title><link>https://evalcode.com/handbook/templates/bug-report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/templates/bug-report/</guid><description>A bug report has one job: give someone enough info to reproduce the problem without asking follow-up questions.</description></item><item><title>📖 The Mechanic Parable: A Story About Expectations</title><link>https://evalcode.com/handbook/story/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/story/</guid><description>A relatable analogy that frames the rest of the handbook: expectations, estimation, negotiation, and what &amp;lsquo;done&amp;rsquo; really means.</description></item><item><title>🧍 Standups: Daily Alignment, Not Status Reports</title><link>https://evalcode.com/handbook/rituals/standups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/rituals/standups/</guid><description>A short daily check-in to surface blockers and keep the team focused on the same goal. Not a status report.</description></item><item><title>🌐 Going Remote: Replacing What the Office Gave You for Free</title><link>https://evalcode.com/handbook/going-remote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/going-remote/</guid><description>Office habits break when you go remote. Here&amp;rsquo;s what to replace them with and why every other practice in this handbook depends on it.</description></item><item><title>🔀 Pull Requests: Tell Reviewers What to Look For</title><link>https://evalcode.com/handbook/templates/pull-requests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/templates/pull-requests/</guid><description>A PR description isn&amp;rsquo;t for you. It&amp;rsquo;s for the person reviewing your code. Make their job easy.</description></item><item><title>🔭 From Problem to Feature: Scoping Work</title><link>https://evalcode.com/handbook/scoping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/scoping/</guid><description>How to break a problem into features that are small enough to deliver, clear enough to estimate, and valuable enough to justify the work.</description></item><item><title>🗺️ Planning: Deciding What to Build Next</title><link>https://evalcode.com/handbook/rituals/planning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/rituals/planning/</guid><description>How to run a planning session that produces a clear, committed backlog with known decision makers.</description></item><item><title>☀️ The Daily Routine: Keeping It All Running</title><link>https://evalcode.com/handbook/daily-routine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/daily-routine/</guid><description>The project lead&amp;rsquo;s daily checklist for making sure the board reflects reality and nothing is quietly falling apart.</description></item><item><title>💡 Feature Proposals: Start With the Problem</title><link>https://evalcode.com/handbook/templates/feature-proposal/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/templates/feature-proposal/</guid><description>Force yourself to articulate the problem before jumping to a solution. The proposal starts with the problem.</description></item><item><title>🪞 Retrospectives: How the Team Gets Better</title><link>https://evalcode.com/handbook/rituals/retrospectives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/rituals/retrospectives/</guid><description>The team&amp;rsquo;s primary self-improvement mechanism. Useless without action items; powerful with them.</description></item><item><title>⚖️ Estimating: Measuring Risk, Not Time</title><link>https://evalcode.com/handbook/rituals/estimating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/rituals/estimating/</guid><description>A simple 0-3 pointing scale, how to run a session, and why you&amp;rsquo;re measuring confidence not hours.</description></item><item><title>📋 Stories: The Building Block of Delivery</title><link>https://evalcode.com/handbook/templates/story/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/templates/story/</guid><description>The fundamental unit of work on the board. What the team is building, why it matters, and how to verify it&amp;rsquo;s done.</description></item><item><title>📜 Your Project Board is a Mirror</title><link>https://evalcode.com/handbook/project-board/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/handbook/project-board/</guid><description>The board should answer &amp;lsquo;what are you working on?&amp;rsquo; in 30 seconds. Here&amp;rsquo;s how to set it up and keep it honest.</description></item><item><title>If You Stop Hiring Juniors, Your Senior Engineers Own You</title><link>https://evalcode.com/posts/if-you-stop-hiring-juniors-your-seniors-own-you/</link><pubDate>Sun, 26 Apr 2026 08:15:00 -0600</pubDate><guid>https://evalcode.com/posts/if-you-stop-hiring-juniors-your-seniors-own-you/</guid><description>The &amp;lsquo;AI replaces junior engineers&amp;rsquo; argument ignores basic economics. Junior employees aren&amp;rsquo;t just cheap labor. They&amp;rsquo;re salary insurance, pipeline protection, and the only hedge companies have against a senior workforce that increasingly doesn&amp;rsquo;t need the job.</description></item><item><title>The Best Engineers Read the Room</title><link>https://evalcode.com/posts/the-best-engineers-read-the-room/</link><pubDate>Sun, 05 Apr 2026 12:13:00 -0600</pubDate><guid>https://evalcode.com/posts/the-best-engineers-read-the-room/</guid><description>The best engineers know how to read the room. This is not really an engineering problem, it&amp;rsquo;s a people problem. The engineers people trust most are the ones who know when to reassure, when to stay quiet, and how to make others feel understood.</description></item><item><title>Moore's Law Won't Set Your Career Timeline</title><link>https://evalcode.com/posts/moores-law-wont-set-your-career-timeline/</link><pubDate>Mon, 30 Mar 2026 09:00:00 -0600</pubDate><guid>https://evalcode.com/posts/moores-law-wont-set-your-career-timeline/</guid><description>Everyone assumes AI will replace most jobs within a year. The technology might be ready, but the economics aren&amp;rsquo;t. Data centers, power grids, and component costs don&amp;rsquo;t follow Moore&amp;rsquo;s Law. When demand outstrips infrastructure, token prices go up, and companies start doing the math on AI versus people.</description></item><item><title>The Hardest Skill in AI-Assisted Development is Knowing When to Stop</title><link>https://evalcode.com/posts/the-hardest-skill-in-ai-assisted-development-is-knowing-when-to-stop/</link><pubDate>Tue, 24 Mar 2026 21:00:00 +0000</pubDate><guid>https://evalcode.com/posts/the-hardest-skill-in-ai-assisted-development-is-knowing-when-to-stop/</guid><description>AI makes &amp;lsquo;one more prompt&amp;rsquo; irresistible. The next feature is always ten minutes away. The hardest engineering skill in the age of AI isn&amp;rsquo;t building. It&amp;rsquo;s deciding when to ship.</description></item><item><title>Agile is Bending, Not Breaking, in the Age of AI</title><link>https://evalcode.com/posts/agile-is-bending-not-breaking-in-the-age-of-ai/</link><pubDate>Mon, 16 Mar 2026 10:00:00 +0000</pubDate><guid>https://evalcode.com/posts/agile-is-bending-not-breaking-in-the-age-of-ai/</guid><description>AI makes writing code so cheap that iterative enhancement stops making sense. Instead of refining small slices, teams are regenerating entire features and iterating on the whole thing. Agile isn&amp;rsquo;t dead, but its assumptions are bending hard.</description></item><item><title>The Real Cost of Rolling Your Own Auth</title><link>https://evalcode.com/posts/auth-lessons-from-building-warden/</link><pubDate>Mon, 09 Mar 2026 10:00:00 +0000</pubDate><guid>https://evalcode.com/posts/auth-lessons-from-building-warden/</guid><description>After maintaining an authentication library with 125 million downloads for over a decade, here&amp;rsquo;s what I learned about the real cost of auth: it&amp;rsquo;s not the build, it&amp;rsquo;s the maintenance nobody plans for. And no, an AI agent monitoring your dependencies isn&amp;rsquo;t the answer.</description></item><item><title>AI Exposed the Process Debt You've Been Ignoring</title><link>https://evalcode.com/posts/ai-exposed-your-process-debt/</link><pubDate>Tue, 03 Mar 2026 15:00:00 +0000</pubDate><guid>https://evalcode.com/posts/ai-exposed-your-process-debt/</guid><description>AI made code cheap. The bottleneck was never the code. It was scoping, estimation, and communication, the skills teams treated as optional for years. That bet no longer pays off.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://evalcode.com/posts/ai-exposed-your-process-debt/featured.jpg"/></item><item><title>Ruby Constants vs Class Methods: Why Methods are the Better Default</title><link>https://evalcode.com/posts/ruby-class-methods-are-better-than-constants/</link><pubDate>Thu, 19 Nov 2020 00:50:11 +0000</pubDate><guid>https://evalcode.com/posts/ruby-class-methods-are-better-than-constants/</guid><description>Constants feel clean until six files break when you rename a hash key. Class methods give you the same performance with an API boundary that survives refactoring.</description></item><item><title>Serving iOS Universal Links and Android App Links from Phoenix</title><link>https://evalcode.com/posts/serving-universal-links-app-links-from-phoenix/</link><pubDate>Tue, 18 Jun 2019 15:24:51 +0000</pubDate><guid>https://evalcode.com/posts/serving-universal-links-app-links-from-phoenix/</guid><description>Deep linking looks simple until it breaks in production because three teams own different pieces of it. Here&amp;rsquo;s the Phoenix server-side setup, including the content-type gotcha that will cost you an afternoon.</description></item><item><title>Expose Your Phoenix App via ngrok (and Why Dev Friction Compounds)</title><link>https://evalcode.com/posts/expose-phoenix-app-via-free-ngrok/</link><pubDate>Thu, 13 Jun 2019 15:34:19 +0000</pubDate><guid>https://evalcode.com/posts/expose-phoenix-app-via-free-ngrok/</guid><description>A Makefile trick that auto-populates the ngrok hostname into your Phoenix dev server. Small dev-environment friction compounds across a team faster than you&amp;rsquo;d expect.</description></item><item><title>Going Remote</title><link>https://evalcode.com/posts/going-remote/</link><pubDate>Fri, 01 Mar 2019 22:14:31 +0000</pubDate><guid>https://evalcode.com/posts/going-remote/</guid><description>The habits that made you successful in an office will hurt you when you go remote. Here&amp;rsquo;s how to replace observational communication with written communication.</description></item><item><title>Extending Rails Partials with local_assigns (and Avoiding the Nil-Guard Trap)</title><link>https://evalcode.com/posts/extending-rails-partials-using-local_assigns/</link><pubDate>Fri, 14 Jul 2017 00:29:27 +0000</pubDate><guid>https://evalcode.com/posts/extending-rails-partials-using-local_assigns/</guid><description>Rails partials rot fast once multiple views depend on them. local_assigns is a forgotten built-in that handles optional variables without the nil-guard sprawl.</description></item><item><title>Server side Elm with Phoenix</title><link>https://evalcode.com/posts/server-side-elm-with-phoenix/</link><pubDate>Mon, 04 Jan 2016 03:34:04 +0000</pubDate><guid>https://evalcode.com/posts/server-side-elm-with-phoenix/</guid><description>Server-side render Elm applications with Phoenix using a STDIO-based IO server, similar to the React approach.</description></item><item><title>Render React with Phoenix</title><link>https://evalcode.com/posts/render-react-with-phoenix/</link><pubDate>Sat, 02 Jan 2016 14:17:05 +0000</pubDate><guid>https://evalcode.com/posts/render-react-with-phoenix/</guid><description>Server-side render React components with Phoenix using react-stdio and OTP for isomorphic Elixir applications.</description></item><item><title>Simple Guardian - Multiple Sessions</title><link>https://evalcode.com/posts/simple-guardian-multiple-sessions/</link><pubDate>Wed, 30 Dec 2015 02:49:00 +0000</pubDate><guid>https://evalcode.com/posts/simple-guardian-multiple-sessions/</guid><description>Use Guardian to manage multiple browser sessions in your Phoenix app, such as separate user and admin logins.</description></item><item><title>Simple Guardian - Permissions</title><link>https://evalcode.com/posts/simple-guardian-permissions/</link><pubDate>Tue, 29 Dec 2015 13:25:39 +0000</pubDate><guid>https://evalcode.com/posts/simple-guardian-permissions/</guid><description>Embed permissions into JWT tokens using Guardian for fine-grained authorization in your Phoenix application.</description></item><item><title>Simple Guardian - API authentication</title><link>https://evalcode.com/posts/simple-guardian-api-authentication/</link><pubDate>Tue, 22 Dec 2015 03:54:02 +0000</pubDate><guid>https://evalcode.com/posts/simple-guardian-api-authentication/</guid><description>Set up API authentication with Guardian in your Phoenix application using JWT tokens.</description></item><item><title>Simple Guardian - Browser login</title><link>https://evalcode.com/posts/simple-guardian/</link><pubDate>Tue, 22 Dec 2015 03:20:57 +0000</pubDate><guid>https://evalcode.com/posts/simple-guardian/</guid><description>A straightforward guide to setting up browser authentication in your Phoenix application using Guardian.</description></item><item><title/><link>https://evalcode.com/ideas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/ideas/</guid><description/></item><item><title>About Justin Smestad</title><link>https://evalcode.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://evalcode.com/about/</guid><description>Serial founding engineer who has built teams from zero to exit at multiple companies. Senior Staff Engineer at Shopify. More than a decade of remote engineering leadership.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://evalcode.com/about/featured.png"/></item></channel></rss>