<?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>Daniel Moretti's Software Engineering Blog</title>
		<link>https://danielmoretti.com/blog</link>
		<description>Writing about software engineering, Rust, TypeScript, AI agents, Linux, and developer tooling.</description>
		<language>en</language>
		<lastBuildDate>Sat, 01 Aug 2026 00:00:00 GMT</lastBuildDate>
		<atom:link href="https://danielmoretti.com/blog/rss.xml" rel="self" type="application/rss+xml" />
		<item>
			<title>You Should Build Your Own AI Coding Agent Harness</title>
			<link>https://danielmoretti.com/blog/you-should-build-your-own-ai-coding-agent-harness</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/you-should-build-your-own-ai-coding-agent-harness</guid>
			<description>The model is not the workflow. Why I built a Pi harness around shared intent, bounded delegation, negative diffs, and verified execution.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Why Offline-First Was the Right Default for Clinical Software</title>
			<link>https://danielmoretti.com/blog/why-offline-first-was-the-right-default-for-clinical-software</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/why-offline-first-was-the-right-default-for-clinical-software</guid>
			<description>Why clinical software needs local durability, explicit authority, recovery, and honest limits—not a cache trick.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Building an Embroidery Engine in the Browser</title>
			<link>https://danielmoretti.com/blog/building-an-embroidery-engine-in-the-browser</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/building-an-embroidery-engine-in-the-browser</guid>
			<description>Why Stitchly moved embroidery digitization into Rust and WebAssembly without making the browser the source of truth.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Why My Godot Agent Feedback System Was Not a Bevy Port</title>
			<link>https://danielmoretti.com/blog/why-my-godot-agent-feedback-system-was-not-a-bevy-port</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/why-my-godot-agent-feedback-system-was-not-a-bevy-port</guid>
			<description>Moving agent feedback from a reusable Bevy plugin to a project-owned Godot skill changed the guarantees, ownership boundary, and evaluation strategy.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Taking Mappa from First Commit to Production</title>
			<link>https://danielmoretti.com/blog/taking-mappa-from-first-commit-to-production</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/taking-mappa-from-first-commit-to-production</guid>
			<description>A firsthand account of turning a voice-analysis model into a durable, evaluated product workflow.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>The Support Ticket Starts in Product Discovery</title>
			<link>https://danielmoretti.com/blog/the-support-ticket-starts-in-product-discovery</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/the-support-ticket-starts-in-product-discovery</guid>
			<description>Owning discovery, interface, deployment, and support made the downstream cost of early product decisions impossible to ignore.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>The Senior Signal Is Proportion</title>
			<link>https://danielmoretti.com/blog/the-senior-signal-is-proportion</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/the-senior-signal-is-proportion</guid>
			<description>Repeatedly reviewing comparable engineering exercises changed what I trust as evidence of senior judgment.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Security Habits I Kept from Bug Bounty Work</title>
			<link>https://danielmoretti.com/blog/security-habits-i-kept-from-bug-bounty-work</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/security-habits-i-kept-from-bug-bounty-work</guid>
			<description>How bug bounty work shaped the way I map attack surfaces, question trust boundaries, limit authority, test failure paths, and demand evidence.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Making Upwork Screen Capture Work on Wayland</title>
			<link>https://danielmoretti.com/blog/making-upwork-screen-capture-work-on-wayland</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/making-upwork-screen-capture-work-on-wayland</guid>
			<description>How I built a small Rust compatibility bridge between Upwork’s GNOME D-Bus calls and wlroots screenshot and idle tools.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>What a Small Rust SDK Should Make Boring</title>
			<link>https://danielmoretti.com/blog/what-a-small-rust-sdk-should-make-boring</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/what-a-small-rust-sdk-should-make-boring</guid>
			<description>qstash-rs as a case study in protocol translation, inbound verification, useful errors, and explicit scope.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Wrapping Callback and Event APIs in Promises Without Losing Failures</title>
			<link>https://danielmoretti.com/blog/javascript-callbacks-and-events-to-promises</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/javascript-callbacks-and-events-to-promises</guid>
			<description>How to adapt Node.js callbacks, EventEmitters, and streams to Promises without losing errors, cleanup, cancellation, or ownership.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate>
		</item>
		<item>
			<title>How to Survive in the Terminal</title>
			<link>https://danielmoretti.com/blog/how-to-survive-in-the-terminal-part-one</link>
			<guid isPermaLink="true">https://danielmoretti.com/blog/how-to-survive-in-the-terminal-part-one</guid>
			<description>A practical field guide to navigating, inspecting, composing, and controlling a Linux shell without surrendering your judgment.</description>
			<dc:creator>Daniel Moretti</dc:creator>
			<pubDate>Sat, 26 Nov 2022 00:00:00 GMT</pubDate>
		</item>
	</channel>
</rss>
