<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Angel Espinoza</title>
  <link href="https://yinuai.com/"/>
  <link rel="self" href="https://yinuai.com/feed.xml"/>
  <id>https://yinuai.com/</id>
  <updated>2026-09-28T00:00:00+00:00</updated>
  <author><name>Angel Espinoza</name></author>
  <entry>
    <title>The backlog isn't just mine anymore</title>
    <link href="https://yinuai.com/blog/the-backlog-isnt-just-mine-anymore.html"/>
    <id>https://yinuai.com/blog/the-backlog-isnt-just-mine-anymore.html</id>
    <updated>2026-09-28T00:00:00+00:00</updated>
    <summary>There's a new page on the site where you can tell me what to build, and vote on the ideas other people already left.</summary>
  </entry>
  <entry>
    <title>The number I was actually watching</title>
    <link href="https://yinuai.com/blog/the-number-i-was-actually-watching.html"/>
    <id>https://yinuai.com/blog/the-number-i-was-actually-watching.html</id>
    <updated>2026-09-25T00:00:00+00:00</updated>
    <summary>I started tracking visits to find out if I'd keep going, not to hit a number. Somewhere along the way, the number showed up anyway.</summary>
  </entry>
  <entry>
    <title>Knowing when to build it twice</title>
    <link href="https://yinuai.com/blog/knowing-when-to-build-it-twice.html"/>
    <id>https://yinuai.com/blog/knowing-when-to-build-it-twice.html</id>
    <updated>2026-09-24T00:00:00+00:00</updated>
    <summary>Built in May, built again in July. Nothing about the first version was broken. What changed was what the tool was finally capable of fixing.</summary>
  </entry>
  <entry>
    <title>Every drawing as a pin on a map</title>
    <link href="https://yinuai.com/blog/every-drawing-as-a-pin-on-a-map.html"/>
    <id>https://yinuai.com/blog/every-drawing-as-a-pin-on-a-map.html</id>
    <updated>2026-09-23T00:00:00+00:00</updated>
    <summary>A drawing inventory tool placed drawings on a map, until two unrelated projects turned out to share the same location.</summary>
  </entry>
  <entry>
    <title>All means all</title>
    <link href="https://yinuai.com/blog/all-means-all.html"/>
    <id>https://yinuai.com/blog/all-means-all.html</id>
    <updated>2026-09-22T00:00:00+00:00</updated>
    <summary>A filter for one slice of a crowded inbox, and a delete-all action that ignored it completely. What that looked like, and why the fix stayed small on purpose.</summary>
  </entry>
  <entry>
    <title>Getting Started: Python for Forma and ACC</title>
    <link href="https://yinuai.com/blog/getting-started-python-for-forma-and-acc.html"/>
    <id>https://yinuai.com/blog/getting-started-python-for-forma-and-acc.html</id>
    <updated>2026-09-21T00:00:00+00:00</updated>
    <summary>Episode 1's other clause, if the work touches Forma or ACC data management, you'll want Python. This episode is the rest of it.</summary>
  </entry>
  <entry>
    <title>Getting Started: .NET for Civil 3D</title>
    <link href="https://yinuai.com/blog/getting-started-net-for-civil-3d.html"/>
    <id>https://yinuai.com/blog/getting-started-net-for-civil-3d.html</id>
    <updated>2026-09-18T00:00:00+00:00</updated>
    <summary>Episode 1 gave this one clause, if the work is Civil 3D plugins, you will want the .NET SDK, and the version matters. That deserves the rest of an episode.</summary>
  </entry>
  <entry>
    <title>What does orchestration mean?</title>
    <link href="https://yinuai.com/blog/what-does-orchestration-mean.html"/>
    <id>https://yinuai.com/blog/what-does-orchestration-mean.html</id>
    <updated>2026-09-17T00:00:00+00:00</updated>
    <summary>Five projects running at once, in five different windows, is what I call orchestration. Keeping track of which window is which is the part nobody warns you about.</summary>
  </entry>
  <entry>
    <title>Writing a Social Media Post is automatic. Sending is not.</title>
    <link href="https://yinuai.com/blog/drafting-is-automatic-sending-is-not.html"/>
    <id>https://yinuai.com/blog/drafting-is-automatic-sending-is-not.html</id>
    <updated>2026-09-16T00:00:00+00:00</updated>
    <summary>A tool writes social media announcements for every post the moment it's finished. It has never actually posted one.</summary>
  </entry>
  <entry>
    <title>Two shades of the same site</title>
    <link href="https://yinuai.com/blog/two-shades-of-the-same-site.html"/>
    <id>https://yinuai.com/blog/two-shades-of-the-same-site.html</id>
    <updated>2026-09-15T00:00:00+00:00</updated>
    <summary>One question about a light theme, less than 30-minutes of total work I did not do myself, and a page to click through when it came back.</summary>
  </entry>
  <entry>
    <title>Built by an agent, not an agent</title>
    <link href="https://yinuai.com/blog/built-by-an-agent-not-an-agent.html"/>
    <id>https://yinuai.com/blog/built-by-an-agent-not-an-agent.html</id>
    <updated>2026-09-14T00:00:00+00:00</updated>
    <summary>The word agent now covers everything from a chatbot to a button with a prompt behind it. Most of what I build was made with an agent, and that is exactly why the finished tool should not be one.</summary>
  </entry>
  <entry>
    <title>It runs on my machine, and that is the problem</title>
    <link href="https://yinuai.com/blog/it-runs-on-my-machine.html"/>
    <id>https://yinuai.com/blog/it-runs-on-my-machine.html</id>
    <updated>2026-09-11T00:00:00+00:00</updated>
    <summary>Two tools I wrote could not run at the same time, because I had given both of them the same port number. That is a small bug with a large family behind it.</summary>
  </entry>
  <entry>
    <title>Sixteen tools, six sections</title>
    <link href="https://yinuai.com/blog/sixteen-tools-six-sections.html"/>
    <id>https://yinuai.com/blog/sixteen-tools-six-sections.html</id>
    <updated>2026-09-10T00:00:00+00:00</updated>
    <summary>A palette does not save you from memorizing sixteen command names. It saves you from having to remember that sixteen tools exist at all.</summary>
  </entry>
  <entry>
    <title>The stamp is still yours</title>
    <link href="https://yinuai.com/blog/the-stamp-is-still-yours.html"/>
    <id>https://yinuai.com/blog/the-stamp-is-still-yours.html</id>
    <updated>2026-09-09T00:00:00+00:00</updated>
    <summary>AI can take the repetition out of your Tuesdays. It cannot take your stamp off the drawing, and that line has not moved in nineteen years of watching it hold.</summary>
  </entry>
  <entry>
    <title>The Markdown file</title>
    <link href="https://yinuai.com/blog/the-markdown-file.html"/>
    <id>https://yinuai.com/blog/the-markdown-file.html</id>
    <updated>2026-09-08T00:00:00+00:00</updated>
    <summary>The most useful file in most of my projects is not code. It is a plain text file that tells the AI assistant the rules before I say a word.</summary>
  </entry>
  <entry>
    <title>Four tools, one deck</title>
    <link href="https://yinuai.com/blog/four-tools-one-deck.html"/>
    <id>https://yinuai.com/blog/four-tools-one-deck.html</id>
    <updated>2026-09-04T00:00:00+00:00</updated>
    <summary>A PowerPoint deck can need an image, a video, and a cloned voice, plus something to hold it all together. Here is how I actually pick, and why I stopped trying to name a winner.</summary>
  </entry>
  <entry>
    <title>We have been here before</title>
    <link href="https://yinuai.com/blog/we-have-been-here-before.html"/>
    <id>https://yinuai.com/blog/we-have-been-here-before.html</id>
    <updated>2026-09-03T00:00:00+00:00</updated>
    <summary>A man told me in 2006 that my problem was making Civil 3D look too easy. I hear the same complaint about AI now, in almost the same words.</summary>
  </entry>
  <entry>
    <title>Getting Started: Git</title>
    <link href="https://yinuai.com/blog/getting-started-git.html"/>
    <id>https://yinuai.com/blog/getting-started-git.html</id>
    <updated>2026-09-02T00:00:00+00:00</updated>
    <summary>Episode 1 folded three things into one sentence: Git lets you see the diff, undo a bad change, and keep an actual history. Each one earns more than a clause.</summary>
  </entry>
  <entry>
    <title>Getting Started: The Terminal</title>
    <link href="https://yinuai.com/blog/getting-started-the-terminal.html"/>
    <id>https://yinuai.com/blog/getting-started-the-terminal.html</id>
    <updated>2026-09-01T00:00:00+00:00</updated>
    <summary>Episode 1 promised this one its own post. What a terminal actually is, why Claude Code does not give you a choice about using one, and the two ideas that cover almost all of it.</summary>
  </entry>
  <entry>
    <title>Getting Started: Claude Code</title>
    <link href="https://yinuai.com/blog/getting-started-claude-code.html"/>
    <id>https://yinuai.com/blog/getting-started-claude-code.html</id>
    <updated>2026-08-31T00:00:00+00:00</updated>
    <summary>A coworker asked what to install before trying Claude Code on something real. My answer, three tools and at least one language.</summary>
  </entry>
  <entry>
    <title>The library I couldn't model myself</title>
    <link href="https://yinuai.com/blog/the-library-i-couldnt-model-myself.html"/>
    <id>https://yinuai.com/blog/the-library-i-couldnt-model-myself.html</id>
    <updated>2026-08-29T00:00:00+00:00</updated>
    <summary>I am not a 3D modeler, and MUTCD signs are not something you get right by eyeballing them. Here is the pipeline that builds them for me, headless Blender and a validation report, from a spec file instead of a mouse.</summary>
  </entry>
  <entry>
    <title>The Infinite Backlog</title>
    <link href="https://yinuai.com/blog/the-infinite-backlog.html"/>
    <id>https://yinuai.com/blog/the-infinite-backlog.html</id>
    <updated>2026-08-28T00:00:00+00:00</updated>
    <summary>I keep a running list of things to build or fix, and I add to it several times a day now. Not because more is broken than a year ago, but because I finally notice it.</summary>
  </entry>
  <entry>
    <title>The Headstart</title>
    <link href="https://yinuai.com/blog/the-headstart.html"/>
    <id>https://yinuai.com/blog/the-headstart.html</id>
    <updated>2026-08-27T00:00:00+00:00</updated>
    <summary>I sit across dozens of infrastructure and civil engineering accounts in a given year, and I can now point at which ones are already ahead. Two studies this year put a number on the gap I have been watching.</summary>
  </entry>
  <entry>
    <title>Two kinds of AI work</title>
    <link href="https://yinuai.com/blog/two-kinds-of-ai-work.html"/>
    <id>https://yinuai.com/blog/two-kinds-of-ai-work.html</id>
    <updated>2026-08-26T00:00:00+00:00</updated>
    <summary>There is AI work that makes an existing task faster, and AI work that makes something exist that did not before. The second kind is harder to see, and worth learning to.</summary>
  </entry>
  <entry>
    <title>The Genie</title>
    <link href="https://yinuai.com/blog/the-genie.html"/>
    <id>https://yinuai.com/blog/the-genie.html</id>
    <updated>2026-08-25T00:00:00+00:00</updated>
    <summary>A rhyming fable about wishing for a car, and what happened when the wishes got specific enough to matter.</summary>
  </entry>
  <entry>
    <title>The learning snowball</title>
    <link href="https://yinuai.com/blog/the-learning-snowball.html"/>
    <id>https://yinuai.com/blog/the-learning-snowball.html</id>
    <updated>2026-08-24T00:00:00+00:00</updated>
    <summary>I grouped my projects by the application they run inside. That was filing, not strategy. It turned out to be the reason each new tool costs less than the one before it.</summary>
  </entry>
  <entry>
    <title>We built this, but is it secure?</title>
    <link href="https://yinuai.com/blog/we-built-this-but-is-it-secure.html"/>
    <id>https://yinuai.com/blog/we-built-this-but-is-it-secure.html</id>
    <updated>2026-08-21T00:00:00+00:00</updated>
    <summary>The right instinct, and the wrong question to type. Here is what to ask a coding agent instead, and why the ranked list it hands back is not the same thing as a list of decisions.</summary>
  </entry>
  <entry>
    <title>Ask me questions</title>
    <link href="https://yinuai.com/blog/ask-me-questions.html"/>
    <id>https://yinuai.com/blog/ask-me-questions.html</id>
    <updated>2026-08-20T00:00:00+00:00</updated>
    <summary>Three conversations happen before any code gets written, and the most useful three words in the whole process are the ones I type last. Here is how an idea actually becomes a tool.</summary>
  </entry>
  <entry>
    <title>They asked if it could be done</title>
    <link href="https://yinuai.com/blog/they-asked-if-it-could-be-done.html"/>
    <id>https://yinuai.com/blog/they-asked-if-it-could-be-done.html</id>
    <updated>2026-08-19T00:00:00+00:00</updated>
    <summary>A customer wanted to know whether field photos could place themselves on a drawing in what was at the time, the Autodesk Construction Cloud (ACC). That environment is now called Forma. The fastest honest answer was to build it and show them. The hard part turned out not to be the photos, it was knowing which coordinate zone the drawing was in.</summary>
  </entry>
  <entry>
    <title>The pauses are the hard part</title>
    <link href="https://yinuai.com/blog/the-pauses-are-the-hard-part.html"/>
    <id>https://yinuai.com/blog/the-pauses-are-the-hard-part.html</id>
    <updated>2026-08-18T00:00:00+00:00</updated>
    <summary>Four days after giving this blog a voice I took it apart and retuned it. One setting was quietly adding noise to every post, and a fix I made produced nothing at all while looking like it had worked.</summary>
  </entry>
  <entry>
    <title>Find the scan, then open it</title>
    <link href="https://yinuai.com/blog/find-the-scan-then-open-it.html"/>
    <id>https://yinuai.com/blog/find-the-scan-then-open-it.html</id>
    <updated>2026-08-17T00:00:00+00:00</updated>
    <summary>Point cloud files hide well. Meaningless names, no preview, and they are on local drives and in the cloud at the same time. Here is the tool that finds one by nine different handles and opens it in ReCap from the same row.</summary>
  </entry>
  <entry>
    <title>Pick a point, get a number</title>
    <link href="https://yinuai.com/blog/pick-a-point-get-a-number.html"/>
    <id>https://yinuai.com/blog/pick-a-point-get-a-number.html</id>
    <updated>2026-08-16T00:00:00+00:00</updated>
    <summary>A Forma Site Design extension with two switches on one terrain. The marker reads slope or elevation at the point you pick, and the surface paints as a slope heat map or an elevation banding map. Here is how it works, and why the map and the marker are not the same job.</summary>
  </entry>
  <entry>
    <title>Redraw it before you commit</title>
    <link href="https://yinuai.com/blog/redraw-it-before-you-commit.html"/>
    <id>https://yinuai.com/blog/redraw-it-before-you-commit.html</id>
    <updated>2026-08-15T00:00:00+00:00</updated>
    <summary>More stalls or a wider drive aisle. You cannot see that tradeoff from a static layout. Here is a Civil 3D tool that redraws it live while you decide.</summary>
  </entry>
  <entry>
    <title>I gave this blog a voice</title>
    <link href="https://yinuai.com/blog/i-gave-this-blog-a-voice.html"/>
    <id>https://yinuai.com/blog/i-gave-this-blog-a-voice.html</id>
    <updated>2026-08-14T00:00:00+00:00</updated>
    <summary>I hooked ElevenLabs up to the blog so you can listen instead of read. Here is what I have learned so far about doing that well.</summary>
  </entry>
  <entry>
    <title>A class for the thing with no class</title>
    <link href="https://yinuai.com/blog/a-class-for-the-thing-with-no-class.html"/>
    <id>https://yinuai.com/blog/a-class-for-the-thing-with-no-class.html</id>
    <updated>2026-08-13T00:00:00+00:00</updated>
    <summary>Point clouds ship with a fixed list of classifications, and &quot;car&quot; is not on it. Here is the tool I built to fix that, and why it has to stream the file instead of loading it.</summary>
  </entry>
  <entry>
    <title>Why I am showing you this</title>
    <link href="https://yinuai.com/blog/why-i-am-showing-you-this.html"/>
    <id>https://yinuai.com/blog/why-i-am-showing-you-this.html</id>
    <updated>2026-08-12T00:00:00+00:00</updated>
    <summary>This site is not a highlight reel. Here is what actually convinced me to make an internal tool catalog public.</summary>
  </entry>
  <entry>
    <title>How I know it is right</title>
    <link href="https://yinuai.com/blog/how-i-know-it-is-right.html"/>
    <id>https://yinuai.com/blog/how-i-know-it-is-right.html</id>
    <updated>2026-08-11T00:00:00+00:00</updated>
    <summary>If a tool can be confidently wrong, how do you trust anything it produces? Four things I actually do, none of which are &quot;be careful&quot;.</summary>
  </entry>
  <entry>
    <title>What it got wrong</title>
    <link href="https://yinuai.com/blog/what-it-got-wrong.html"/>
    <id>https://yinuai.com/blog/what-it-got-wrong.html</id>
    <updated>2026-08-10T00:00:00+00:00</updated>
    <summary>This site broke in public last week. Here is exactly how, because the interesting part is that nothing looked wrong.</summary>
  </entry>
  <entry>
    <title>How I got started</title>
    <link href="https://yinuai.com/blog/how-i-got-started.html"/>
    <id>https://yinuai.com/blog/how-i-got-started.html</id>
    <updated>2026-08-07T00:00:00+00:00</updated>
    <summary>The first thing I built was a to-do list app. Not a Civil 3D plugin. Here is what the first six months actually looked like.</summary>
  </entry>
  <entry>
    <title>Start with the thing you do forty times</title>
    <link href="https://yinuai.com/blog/start-with-the-thing-you-do-forty-times.html"/>
    <id>https://yinuai.com/blog/start-with-the-thing-you-do-forty-times.html</id>
    <updated>2026-08-06T00:00:00+00:00</updated>
    <summary>The boring task on your desk is the right place to begin. Here is why the boredom is the point.</summary>
  </entry>
</feed>
