<?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>DEV Community: Jessica Doering</title>
    <description>The latest articles on DEV Community by Jessica Doering (@sizzlebop).</description>
    <link>https://dev.to/sizzlebop</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2676985%2F4c9cfe58-bba7-454c-9e48-5a4d21dcd9b7.png</url>
      <title>DEV Community: Jessica Doering</title>
      <link>https://dev.to/sizzlebop</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sizzlebop"/>
    <language>en</language>
    <item>
      <title>Claude Code Skills Worth Trying: From Vague Idea to Finished Feature</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Mon, 14 Sep 2026 22:36:57 +0000</pubDate>
      <link>https://dev.to/sizzlebop/claude-code-skills-worth-trying-from-vague-idea-to-finished-feature-1nhe</link>
      <guid>https://dev.to/sizzlebop/claude-code-skills-worth-trying-from-vague-idea-to-finished-feature-1nhe</guid>
      <description>&lt;p&gt;I’ve tried out a lot of Claude Code skills, and a few of them are especially useful when you combine them into a workflow.&lt;/p&gt;

&lt;p&gt;Not because they magically make the model better at coding, but because they help with the annoying parts around coding: figuring out what you actually want, avoiding unnecessary complexity, keeping a design consistent, and remembering where you left off.&lt;/p&gt;

&lt;p&gt;So instead of just listing the skills, I wanted to put together a practical example.&lt;/p&gt;

&lt;p&gt;Imagine we’re adding AI-generated collections to a bookmark manager. The user pastes a link, the app figures out where it belongs, and maybe creates a collection if there isn’t a good one already.&lt;/p&gt;

&lt;p&gt;Simple idea. Plenty of decisions hiding underneath it.&lt;/p&gt;

&lt;p&gt;We’ll use a few skills to work through those decisions, build the feature, and make it easier to come back to later.&lt;/p&gt;

&lt;p&gt;You’ll need Claude Code and the skills you want to use installed. Each repository has its own installation instructions, so follow those rather than assuming they all use the same setup.&lt;/p&gt;

&lt;p&gt;The skills covered here are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;Matt Pocock’s skills&lt;/a&gt; for grilling, domain modeling, and handoffs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/DietrichGebert/ponytail" rel="noopener noreferrer"&gt;Ponytail&lt;/a&gt; for keeping implementations simple.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill" rel="noopener noreferrer"&gt;UI/UX Pro Max&lt;/a&gt; for design guidance and a persistent design system.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Nutlope/hallmark" rel="noopener noreferrer"&gt;Hallmark&lt;/a&gt; for more distinctive interface structure.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ayghri/i-have-adhd" rel="noopener noreferrer"&gt;i-have-adhd&lt;/a&gt; for making the current task and next action easier to follow.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/JuliusBrussee/caveman" rel="noopener noreferrer"&gt;Caveman&lt;/a&gt; for more concise working conversations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need all of them. The point is to give each one a specific job.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Figure out what you actually want with &lt;code&gt;grill-me&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The first thing I’d do is &lt;strong&gt;not ask Claude to implement the feature&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;“Add AI-generated collections” sounds specific enough until you start thinking about what should happen when the AI isn’t sure, when a collection already exists, or when the user has manually organized something.&lt;/p&gt;

&lt;p&gt;That’s where &lt;code&gt;grill-me&lt;/code&gt; comes in.&lt;/p&gt;

&lt;p&gt;It uses the underlying &lt;code&gt;grilling&lt;/code&gt; skill to turn the discussion into a decision tree. Instead of asking a giant list of unrelated questions, it asks the questions that can be answered now, then uses those answers to determine what needs to be asked next.&lt;/p&gt;

&lt;p&gt;Start with something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/grill-me

I want to add AI-generated collections to my bookmark manager.

The user should be able to paste a URL and have the app suggest
or choose an appropriate collection.

Help me work out the behavior before we implement anything.
Inspect the existing codebase for facts you can determine yourself.
Ask me about product decisions, not things you can find in the code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that Claude should inspect the project rather than making you explain every existing function.&lt;/p&gt;

&lt;p&gt;It might discover that collections already have a creation function, that bookmarks can belong to multiple collections, or that there’s an existing metadata-fetching pipeline.&lt;/p&gt;

&lt;p&gt;Those are &lt;strong&gt;facts about the codebase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The questions for you are things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should the AI apply suggestions automatically or ask first?&lt;/li&gt;
&lt;li&gt;Should it prefer existing collections?&lt;/li&gt;
&lt;li&gt;Is it allowed to create new collections?&lt;/li&gt;
&lt;li&gt;Should it ever reorganize bookmarks the user already sorted?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are &lt;strong&gt;product decisions&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let the questions happen in rounds
&lt;/h3&gt;

&lt;p&gt;Suppose you decide that the AI should prefer existing collections and only create a new one when there isn’t a reasonable match.&lt;/p&gt;

&lt;p&gt;Now there’s a new question: what counts as a reasonable match?&lt;/p&gt;

&lt;p&gt;Maybe you want a confidence threshold. Maybe you’d rather have the AI suggest a new collection and let you approve it. Maybe the user should be able to turn automatic creation off entirely.&lt;/p&gt;

&lt;p&gt;The grilling workflow is useful because those questions depend on the earlier decision. There’s no reason to spend ten minutes discussing deletion behavior for automatically created collections before deciding whether automatic creation is even allowed.&lt;/p&gt;

&lt;p&gt;Keep going until the important branches are resolved.&lt;/p&gt;

&lt;p&gt;For a tiny utility, this may be more process than you need. For a feature with several possible behaviors, it can save a lot of “well, that’s not what I meant” halfway through implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Preserve the important decisions with &lt;code&gt;grill-with-docs&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;If the feature is going to be more than a quick experiment, I’d use &lt;code&gt;grill-with-docs&lt;/code&gt; instead of a plain grilling session.&lt;/p&gt;

&lt;p&gt;This combines the structured interview with &lt;code&gt;domain-modeling&lt;/code&gt;, so the important terminology and decisions don’t just disappear into chat history.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/grill-with-docs

Help me define the AI collection feature for this bookmark manager.

Inspect the existing code and documentation first.
Clarify the important domain concepts and behavior.
Keep the documentation focused on decisions and terminology
that will matter when I return to this project later.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One thing I like about the domain-modeling approach is that it challenges vague terminology.&lt;/p&gt;

&lt;p&gt;For example, what does “collection” actually mean in this app?&lt;/p&gt;

&lt;p&gt;Is it a folder for bookmarks? A tag-like grouping? Can a bookmark belong to more than one? Is an AI-generated collection different from a manually created one, or is the only difference how it was created?&lt;/p&gt;

&lt;p&gt;Those distinctions matter because they affect the data model and the behavior.&lt;/p&gt;

&lt;p&gt;The skill can maintain a &lt;code&gt;CONTEXT.md&lt;/code&gt; glossary for domain terminology. That file is meant to explain &lt;strong&gt;what things mean&lt;/strong&gt;, not become a giant implementation spec.&lt;/p&gt;

&lt;p&gt;It can also create ADRs, or architecture decision records, for decisions that are genuinely worth preserving.&lt;/p&gt;

&lt;p&gt;For example, if you decide:&lt;/p&gt;

&lt;p&gt;AI suggestions never modify manually organized bookmarks without approval.&lt;/p&gt;

&lt;p&gt;That might be worth documenting if it affects several parts of the system and would be surprising to someone reading the code later.&lt;/p&gt;

&lt;p&gt;The distinction is useful:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glossary:&lt;/strong&gt; What does “collection” mean?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ADR:&lt;/strong&gt; Why did we decide AI should not reorganize manually sorted bookmarks automatically?&lt;/p&gt;

&lt;p&gt;Not every little choice needs an ADR. The idea is to preserve the reasoning that would otherwise be easy to lose.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Ask Ponytail to find the smallest implementation
&lt;/h2&gt;

&lt;p&gt;Now that the behavior is clearer, it’s tempting to tell Claude to build the whole thing.&lt;/p&gt;

&lt;p&gt;Before doing that, I’d bring in &lt;a href="https://github.com/DietrichGebert/ponytail" rel="noopener noreferrer"&gt;Ponytail&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Its general philosophy is to think like the laziest competent senior developer.&lt;/p&gt;

&lt;p&gt;Not lazy as in “do a shitty job.” Lazy as in:&lt;/p&gt;

&lt;p&gt;Why are we creating six abstractions and a new service when the project already has most of what we need?&lt;/p&gt;

&lt;p&gt;Ask it to review the plan first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Ponytail to review the implementation plan for this feature.

Look for existing code, platform features, or dependencies we can reuse.
Identify unnecessary abstractions or infrastructure.
Recommend the smallest implementation that satisfies the requirements.

Do not simplify away validation, security, error handling, or
the behavior we agreed on.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For our bookmark manager, maybe the app already has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A URL metadata fetcher.&lt;/li&gt;
&lt;li&gt;A collection creation function.&lt;/li&gt;
&lt;li&gt;A bookmark-to-collection relationship.&lt;/li&gt;
&lt;li&gt;An existing AI provider abstraction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If so, we probably don’t need a separate “AI Collection Orchestration Service” with its own plugin architecture and twelve interfaces.&lt;/p&gt;

&lt;p&gt;Maybe we just need to add a classification step to the existing save flow.&lt;/p&gt;

&lt;p&gt;That’s the kind of simplification I want.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use the review skills after implementation
&lt;/h3&gt;

&lt;p&gt;Ponytail also includes related skills such as &lt;code&gt;ponytail-review&lt;/code&gt;, &lt;code&gt;ponytail-audit&lt;/code&gt;, and &lt;code&gt;ponytail-debt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After implementing the feature, I’d use the review to look for unnecessary complexity in the diff:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use ponytail-review on the changes for the AI collection feature.

Look for unnecessary abstractions, duplicated logic, and code
that could be replaced with existing project functionality.

Preserve the agreed behavior and correctness requirements.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The debt skill is interesting for deliberate shortcuts.&lt;/p&gt;

&lt;p&gt;Maybe we decide that a simple classification call is enough for now, but we know we might need a more sophisticated system if the library grows to tens of thousands of bookmarks.&lt;/p&gt;

&lt;p&gt;That doesn’t mean we need to build the sophisticated system today. It means we can record why the simple approach was chosen and what would make us revisit it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Establish the design direction with UI/UX Pro Max
&lt;/h2&gt;

&lt;p&gt;Once the behavior is settled, I’d work on the interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill" rel="noopener noreferrer"&gt;UI/UX Pro Max&lt;/a&gt; gives Claude a searchable design knowledge base covering styles, palettes, typography, UX guidance, chart choices, and stack-specific implementation recommendations.&lt;/p&gt;

&lt;p&gt;For our example, I’d ask it to establish the design direction before touching the UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use ui-ux-pro-max to establish a design direction for
the AI collection feature in this bookmark manager.

The app uses React and Tailwind and supports dark mode.

I want the feature to feel like a natural part of the existing app,
not a separate AI dashboard.

Recommend the interaction pattern, typography, colors, spacing,
and component guidance. Do not implement anything yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The part I find especially useful is the ability to persist a design system.&lt;/p&gt;

&lt;p&gt;UI/UX Pro Max can generate a project-level &lt;code&gt;MASTER.md&lt;/code&gt; containing the overall design direction, with page-specific overrides where needed.&lt;/p&gt;

&lt;p&gt;That gives Claude something to refer back to instead of reinventing the visual style every time you work on another page.&lt;/p&gt;

&lt;p&gt;For example, the bookmark manager’s main page, settings page, and collection editor should all feel like the same product.&lt;/p&gt;

&lt;p&gt;The goal is to avoid the classic AI frontend situation where one page looks great and the next looks like it came from a completely different app.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Use Hallmark for the page structure
&lt;/h2&gt;

&lt;p&gt;This is where I’d bring in &lt;a href="https://github.com/Nutlope/hallmark" rel="noopener noreferrer"&gt;Hallmark&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hallmark focuses on structural variety, not just changing colors and fonts. Its goal is to avoid the same generic AI-generated page composition being reused for everything.&lt;/p&gt;

&lt;p&gt;It has workflows for building, auditing, redesigning, and studying designs.&lt;/p&gt;

&lt;p&gt;For our bookmark manager, I’d give it a different job from UI/UX Pro Max:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Hallmark to design the AI collection interaction using
the design direction we just established.

Keep the agreed palette and typography.

Focus on a clear, distinctive layout and interaction flow
that fits the existing bookmark manager.

Do not replace the design system with a different theme.
Do not redesign unrelated parts of the app.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;UI/UX Pro Max&lt;/strong&gt; establishes the practical design foundation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hallmark&lt;/strong&gt; works on the actual composition and structure.&lt;/p&gt;

&lt;p&gt;We don't want both skills independently deciding what the app should look like and fighting over the design system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use &lt;code&gt;study&lt;/code&gt; when you have a reference
&lt;/h3&gt;

&lt;p&gt;Hallmark’s &lt;code&gt;study&lt;/code&gt; mode is also interesting if you have a screenshot or URL of an interface you like.&lt;/p&gt;

&lt;p&gt;You can ask it to analyze the design “DNA”: the layout structure, typography, color direction, and visual hierarchy.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Hallmark study mode on this screenshot.

Explain the layout structure, spacing, typography, and visual hierarchy
that make it work.

I want to use those principles for my bookmark manager,
not copy the original design.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a useful way to learn from a reference without just asking Claude to recreate it.&lt;/p&gt;

&lt;p&gt;Hallmark also has a component-specific workflow, so you can ask it to improve a modal or button without turning the request into a full-page redesign.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Keep the working conversation manageable
&lt;/h2&gt;

&lt;p&gt;At this point, the feature is being implemented, and this is where a couple of smaller skills could make the day-to-day experience nicer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use &lt;code&gt;i-have-adhd&lt;/code&gt; to keep the next action obvious
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/ayghri/i-have-adhd" rel="noopener noreferrer"&gt;i-have-adhd&lt;/a&gt; is an output-style skill that changes how Claude presents work.&lt;/p&gt;

&lt;p&gt;It tries to lead with the next action, break multi-step work into smaller tasks, keep the current state visible, and suppress unrelated tangents.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/i-have-adhd

Help me finish this feature.

Show the current task, what is already complete, and the
single next action. Keep unrelated ideas in a later section.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of getting a giant explanation about everything that could possibly happen next, you get something closer to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 of 5 complete:&lt;/strong&gt; Collection classification is implemented. Next: test what happens when the AI returns an invalid collection ID. Dependency cleanup can wait.&lt;/p&gt;

&lt;p&gt;That’s the kind of thing I find useful when I’m bouncing between projects and need to know what to do right now.&lt;/p&gt;

&lt;p&gt;It still allows fuller explanations when you ask for them, so it isn’t supposed to make every answer tiny at the expense of being useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Caveman when Claude gets too wordy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/JuliusBrussee/caveman" rel="noopener noreferrer"&gt;Caveman&lt;/a&gt; is for a slightly different problem: reducing unnecessary prose.&lt;/p&gt;

&lt;p&gt;Its basic skill compresses Claude’s explanations while preserving important technical details like code, commands, error messages, exact names, numbers, and words that change the meaning of instructions.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Caveman lite for this implementation session.

Keep explanations concise, but preserve exact commands,
error messages, and important technical details.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So instead of an essay explaining a small React issue, you might get:&lt;/p&gt;

&lt;p&gt;New object ref each render. Prop identity changes. Memoize stable value.&lt;/p&gt;

&lt;p&gt;The project has different modes, including lite, full, and ultra, and can switch back to clearer prose when something is ambiguous, safety-critical, or needs a proper explanation.&lt;/p&gt;

&lt;p&gt;It also has related skills for concise commits, reviews, memory-file compression, and token statistics.&lt;/p&gt;

&lt;p&gt;One thing worth keeping in mind: &lt;strong&gt;fewer output tokens doesn’t automatically mean the same percentage reduction in total session cost&lt;/strong&gt;. The instructions have overhead, and input and reasoning tokens still count.&lt;/p&gt;

&lt;p&gt;The basic concise-output skill is also separate from the repo’s larger optional proxy/engine and Cloud-related tooling. I’d distinguish those before installing the whole stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Create a handoff before ending the session
&lt;/h2&gt;

&lt;p&gt;Now imagine the feature is mostly done, but the integration tests are failing and you’re done for the day.&lt;/p&gt;

&lt;p&gt;This is where Matt Pocock’s &lt;code&gt;handoff&lt;/code&gt; skill comes in.&lt;/p&gt;

&lt;p&gt;It creates a Markdown handoff document in the OS temporary directory so another session or agent can pick up the important context.&lt;/p&gt;

&lt;p&gt;I’d use something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/handoff

The AI collection feature is mostly implemented.

Preserve:
- The current task and completed work.
- The decisions we made about collection behavior.
- The data model and why we chose it.
- The failing integration tests.
- The single next action.

Reference existing plans, specs, ADRs, or commits where useful
instead of copying everything into the handoff.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The idea is to preserve the important state without dumping the entire chat into the next session.&lt;/p&gt;

&lt;p&gt;It’s &lt;strong&gt;context portability&lt;/strong&gt;, not magic context-window compression.&lt;/p&gt;

&lt;p&gt;A handoff can still lose details, so if the reasoning behind a rejected approach matters, I’d explicitly ask it to preserve that. I’d also check the file before sharing it elsewhere if the conversation contained anything sensitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Resume with &lt;code&gt;handoff&lt;/code&gt; + &lt;code&gt;i-have-adhd&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;handoff&lt;/code&gt; preserves the important context.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;i-have-adhd&lt;/code&gt; makes that context easier to act on when you come back.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the next session, I’d point Claude at the generated handoff file and say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/i-have-adhd

Read the handoff file and help me resume.

Show the current state, then give me the first concrete action.
Keep unrelated ideas in a later section.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That should make it easier to reopen a project and avoid spending the first part of the session reconstructing what happened yesterday.&lt;/p&gt;

&lt;p&gt;For someone who has several projects going at once, that sounds pretty damn useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow, all together
&lt;/h2&gt;

&lt;p&gt;Here’s the order I’d try:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Clarify the idea&lt;/td&gt;
&lt;td&gt;&lt;code&gt;grill-me&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Work out the behavior before coding.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Preserve decisions&lt;/td&gt;
&lt;td&gt;&lt;code&gt;grill-with-docs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Document terminology and important trade-offs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simplify the plan&lt;/td&gt;
&lt;td&gt;Ponytail&lt;/td&gt;
&lt;td&gt;Find the smallest implementation that satisfies the requirements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Establish design&lt;/td&gt;
&lt;td&gt;UI/UX Pro Max&lt;/td&gt;
&lt;td&gt;Create a consistent visual and UX foundation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design the interface&lt;/td&gt;
&lt;td&gt;Hallmark&lt;/td&gt;
&lt;td&gt;Improve structure and composition without replacing the design system.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implement&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;i-have-adhd&lt;/code&gt; / Caveman&lt;/td&gt;
&lt;td&gt;Keep the current task clear and the conversation manageable.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ponytail-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Look for unnecessary complexity in the changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End the session&lt;/td&gt;
&lt;td&gt;&lt;code&gt;handoff&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Preserve the important context for next time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resume&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;handoff&lt;/code&gt; + &lt;code&gt;i-have-adhd&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Reconstruct the state and identify the next action.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You don’t have to use every stage every time.&lt;/p&gt;

&lt;p&gt;If I’m making a tiny utility, I might just use Ponytail and a concise output style.&lt;/p&gt;

&lt;p&gt;If I’m building a feature with complicated behavior, I’d spend more time grilling and documenting the decisions.&lt;/p&gt;

&lt;p&gt;If I’m working on a frontend, I’d use the design skills, but I wouldn’t ask both of them to independently invent the entire visual direction.&lt;/p&gt;

&lt;p&gt;The useful part is giving each skill a clear responsibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few things to keep in mind
&lt;/h2&gt;

&lt;p&gt;Avoid treating the workflow as a mandatory process. The whole point is to make building things easier, not turn a small feature into a ceremony involving six agents and a stack of documents.&lt;/p&gt;

&lt;p&gt;The combination: &lt;strong&gt;grilling → documentation → simple implementation → handoff&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The result is that you're getting from “I have an idea” to “I know what I’m building,” without losing the decisions or accidentally turning a small project into a giant architecture exercise.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agentskills</category>
      <category>productivity</category>
    </item>
    <item>
      <title>When Do You Decide a Project Is Done?</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Sun, 13 Sep 2026 20:28:24 +0000</pubDate>
      <link>https://dev.to/sizzlebop/when-do-you-decide-a-project-is-done-343o</link>
      <guid>https://dev.to/sizzlebop/when-do-you-decide-a-project-is-done-343o</guid>
      <description>&lt;p&gt;I make A LOT of things.&lt;/p&gt;

&lt;p&gt;Some turn into bigger projects than I expected. Some are experiments. Some are tiny utilities I made because I wanted one very specific thing and didn't feel like using whatever already existed.&lt;/p&gt;

&lt;p&gt;And lately I've been thinking about when a project is actually &lt;em&gt;done&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Not abandoned. Not sitting in a folder waiting for the mythical day when I suddenly decide to work on it again.&lt;/p&gt;

&lt;p&gt;Just... done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not everything needs a roadmap
&lt;/h2&gt;

&lt;p&gt;There's this weird tendency in software development where the second you build something, your brain starts trying to turn it into more.&lt;/p&gt;

&lt;p&gt;Okay, it works. Cool.&lt;/p&gt;

&lt;p&gt;But what if it had accounts?&lt;/p&gt;

&lt;p&gt;What if it synced across devices?&lt;/p&gt;

&lt;p&gt;What if there was an API?&lt;/p&gt;

&lt;p&gt;What if I turned it into a SaaS?&lt;/p&gt;

&lt;p&gt;What if I added seventeen things I never actually wanted in the first place?&lt;/p&gt;

&lt;p&gt;Sometimes that makes sense. Plenty of good projects start small and grow because you realize there's a lot more you want to do with them.&lt;/p&gt;

&lt;p&gt;But sometimes I wanted a tool that does one thing, and now I have a tool that does that thing.&lt;/p&gt;

&lt;p&gt;Mission accomplished.&lt;/p&gt;

&lt;p&gt;I don't think every project needs twelve integrations, a pricing page, and a five-year roadmap just because technically it &lt;em&gt;could&lt;/em&gt; have them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes the point was just making it
&lt;/h2&gt;

&lt;p&gt;A lot of my projects start with some version of:&lt;/p&gt;

&lt;p&gt;"I wonder if I could make this."&lt;/p&gt;

&lt;p&gt;That's honestly enough motivation for me most of the time.&lt;/p&gt;

&lt;p&gt;Maybe I'm trying a new library. Maybe I want to figure out how something works. Maybe I need some tiny utility. Maybe I just had a dumb idea at 1 AM and now apparently we're doing this.&lt;/p&gt;

&lt;p&gt;If I build it, learn whatever I wanted to learn, and end up with something that does what I wanted, I don't really see that as an unfinished project.&lt;/p&gt;

&lt;p&gt;It means I got what I wanted out of it.&lt;/p&gt;

&lt;p&gt;And I think that's especially important if you're somebody who likes starting new things.&lt;/p&gt;

&lt;p&gt;Because otherwise every experiment slowly turns into another responsibility.&lt;/p&gt;

&lt;p&gt;Now you've got an endless list of things you're supposed to maintain, improve, and maybe eventually monetize.&lt;/p&gt;

&lt;p&gt;That's a great way to make a hobby feel like a job.&lt;/p&gt;

&lt;p&gt;No thanks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some projects do grow
&lt;/h2&gt;

&lt;p&gt;Sometimes I start with a small idea, and then I keep thinking of new features I want to add.&lt;/p&gt;

&lt;p&gt;Sometimes people use something you made and suggest something great to add to it.&lt;/p&gt;

&lt;p&gt;Sometimes you just really like the project and it's fun to keep messing with it.&lt;/p&gt;

&lt;p&gt;Those are great too.&lt;/p&gt;

&lt;p&gt;I love building bigger things when I actually want to.&lt;/p&gt;

&lt;p&gt;I just don't think growth has to be the default measure of whether a project was worth making.&lt;/p&gt;

&lt;p&gt;A tiny utility that saves me five clicks was worth making.&lt;/p&gt;

&lt;p&gt;An experiment that taught me something was worth making.&lt;/p&gt;

&lt;p&gt;A completely ridiculous app that exists mostly because it made me laugh was worth making.&lt;/p&gt;

&lt;p&gt;It doesn't have to become a product or a business or my new personal brand to justify the time I spent making it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maybe "done" just means it did its job
&lt;/h2&gt;

&lt;p&gt;I think I'm getting more comfortable with letting some projects just... exist.&lt;/p&gt;

&lt;p&gt;If I find a bug, I'll probably fix it.&lt;/p&gt;

&lt;p&gt;If six months from now I suddenly think of something I want to add, I can add it.&lt;/p&gt;

&lt;p&gt;But sometimes I made the thing, and the thing works, and I like it.&lt;/p&gt;

&lt;p&gt;That's enough for me.&lt;/p&gt;

&lt;p&gt;And honestly, sometimes the best thing I can do with a project is leave it alone and go make something else.&lt;/p&gt;

&lt;p&gt;Which is good, because I probably already have another idea.&lt;/p&gt;

&lt;p&gt;How do you decide when one of your projects is actually done?&lt;/p&gt;

&lt;p&gt;Do you have a graveyard full of unfinished projects?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Found a Tiny Model on Hugging Face and Now I Save Half the Internet as Markdown</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Wed, 09 Sep 2026 23:35:45 +0000</pubDate>
      <link>https://dev.to/sizzlebop/i-found-a-tiny-model-on-hugging-face-and-now-i-save-half-the-internet-as-markdown-2hg3</link>
      <guid>https://dev.to/sizzlebop/i-found-a-tiny-model-on-hugging-face-and-now-i-save-half-the-internet-as-markdown-2hg3</guid>
      <description>&lt;p&gt;I found a small model on Hugging Face recently that looked interesting, so I decided to experiment with it. I converted it to ONNX, got it running in the browser with WebGPU, and somehow it turned into one of those little tools I keep using way more than I expected.&lt;/p&gt;

&lt;p&gt;It’s called &lt;strong&gt;Pulpie&lt;/strong&gt;, and basically it takes a webpage and pulls out the actual useful content as clean Markdown. I’ve been using it to save DEV posts I want to keep, tutorials I want to read later, and especially documentation pages that don’t have a nice copy-to-Markdown option.&lt;/p&gt;

&lt;p&gt;The part I really like is that it doesn’t just dump the whole page into Markdown. The model is only about 210M parameters and is used to classify which parts of the page are actual content and which parts are navigation, sidebars, boilerplate, etc. Then the remaining HTML gets converted normally.&lt;/p&gt;

&lt;p&gt;That means things like headings, code blocks, links, tables, and images stay intact.&lt;/p&gt;

&lt;p&gt;Today I tried it on a huge Claude Code documentation page with a bunch of tables and code examples, and it handled the whole thing really well. I have also saved long DEV posts to read later with all of the images still included.&lt;/p&gt;

&lt;p&gt;I made one version that runs locally in the browser through ONNX Runtime Web and WebGPU. The model is around 800 MB, which sounds chunky for a browser app, but it downloads once, which only took a couple of minutes for me, and then it's stored in browser cache. After that, it loads locally and extraction is almost instant on my machine.&lt;/p&gt;

&lt;p&gt;If you want to try it out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pulpie.pinkpixel.dev" rel="noopener noreferrer"&gt;Pulpie&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also made a local FastAPI version if you'd rather run it as a local app instead of using the WebGPU browser version. That one can be downloaded from GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pinkpixel-dev" rel="noopener noreferrer"&gt;
        pinkpixel-dev
      &lt;/a&gt; / &lt;a href="https://github.com/pinkpixel-dev/pulpie-ui" rel="noopener noreferrer"&gt;
        pulpie-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Pulpie Local UI&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A fast web interface for extracting the main content from web pages and HTML into clean Markdown. Powered by the &lt;code&gt;feyninc/pulpie-orange-small&lt;/code&gt; 210M EuroBERT encoder model.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try It Online (No Installation)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You can try the in-browser WebGPU version with no local setup required:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://pulpie.pinkpixel.dev" rel="nofollow noopener noreferrer"&gt;pulpie.pinkpixel.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebGPU Space Repository&lt;/strong&gt;: &lt;a href="https://huggingface.co/spaces/sizzlebop/pulpie-webgpu" rel="nofollow noopener noreferrer"&gt;huggingface.co/spaces/sizzlebop/pulpie-webgpu&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why Pulpie?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Most modern content extractors either use brittle heuristics (regular expressions and readability rules) or heavy generative models (decoders) that generate text token by token.&lt;/p&gt;
&lt;p&gt;Pulpie takes a different path:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single-pass encoder&lt;/strong&gt;: Instead of generating text from scratch, it tokenizes the page into blocks and classifies every block as content or boilerplate in a single forward pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast and light&lt;/strong&gt;: The recommended 210M model matches state-of-the-art extractors while running up to 20x faster. On an RTX 4090 GPU, extractions take around 15 to 40 milliseconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Markdown with images&lt;/strong&gt;: It keeps headlines…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pinkpixel-dev/pulpie-ui" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I think this is actually one of my favorite uses for a small specialized model so far. It isn’t generating Markdown or rewriting anything. It just answers a much simpler question:&lt;/p&gt;

&lt;p&gt;Is this block part of the page I actually care about?&lt;/p&gt;

&lt;p&gt;Once it answers that, regular deterministic tools can handle the rest.&lt;/p&gt;

&lt;p&gt;No API calls, no cloud inference, and no giant model needed just to clean up a webpage.&lt;/p&gt;

&lt;p&gt;This was just a fun little experiment that ended up working so much better than I expected, but since it's been so useful for me, I thought I'd share it. &lt;/p&gt;

&lt;p&gt;I can't be the only one who wants to save everything on the internet!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Maybe AI Doesn't Need to Get Better Right Now</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Sun, 06 Sep 2026 17:53:48 +0000</pubDate>
      <link>https://dev.to/sizzlebop/maybe-ai-doesnt-need-to-get-better-right-now-2i53</link>
      <guid>https://dev.to/sizzlebop/maybe-ai-doesnt-need-to-get-better-right-now-2i53</guid>
      <description>&lt;p&gt;I don’t mean AI development should stop forever, or that today’s models are perfect. They absolutely aren’t. There’s still plenty to improve: reliability, hallucinations, efficiency, security, interpretability, memory, agent behavior, and a hundred other things.&lt;/p&gt;

&lt;p&gt;But those improvements don’t necessarily require this constant race toward making AI dramatically more capable at everything.&lt;/p&gt;

&lt;p&gt;At some point, I think we have to ask what exactly we’re racing toward.&lt;/p&gt;

&lt;p&gt;We already have models that can write software, dig through huge amounts of information, generate images and video, research topics, use tools, tutor people, automate workflows, and handle some seriously complicated tasks.&lt;/p&gt;

&lt;p&gt;But the question I keep asking is:&lt;/p&gt;

&lt;p&gt;Do we really need AI to do everything for us? &lt;/p&gt;

&lt;p&gt;We’re already struggling to keep up with how quickly this technology is moving. Companies are already figuring out which jobs can be automated and which parts of people’s work can be handed over to AI. Entry-level roles are changing. Entire industries are trying to work out which skills are still going to matter. Schools barely have time to decide how students should be using these tools before another generation of models shows up.&lt;/p&gt;

&lt;p&gt;And there’s a physical cost to all of this too.&lt;/p&gt;

&lt;p&gt;More capable AI usually means more demand for compute. More compute means more data centers, more electricity, more cooling, more water, and more land.&lt;/p&gt;

&lt;p&gt;Those data centers aren’t floating around in some magical cloud. They’re built in actual communities, and the people living in those communities are the ones dealing with whatever comes with them.&lt;/p&gt;

&lt;p&gt;That doesn’t mean data centers are automatically bad, or that AI shouldn’t exist. Obviously I don’t think that. It just means there’s more to this race than benchmark scores and flashy model launches.&lt;/p&gt;

&lt;p&gt;And while all of that is happening, the attitude still seems to be:&lt;/p&gt;

&lt;p&gt;Bigger. Smarter. Faster. More autonomous.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;There’s another option.&lt;/p&gt;

&lt;p&gt;We could spend some time getting really good at the AI we already have.&lt;/p&gt;

&lt;p&gt;Make it cheaper. Make it more reliable. Make it easier to verify. Make it more energy-efficient. Build better tools around it. Figure out what reasonable rules around this stuff should actually look like. Help workers adapt. Learn where AI actually improves something and where we’re just shoving it in because we can.&lt;/p&gt;

&lt;p&gt;I especially feel this in software development.&lt;/p&gt;

&lt;p&gt;AI-assisted development is already insanely fast when the developer is still thinking, reviewing, testing, and making the decisions. I don’t need AI to replace that part.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;like&lt;/em&gt; making things.&lt;/p&gt;

&lt;p&gt;I want a ridiculously capable assistant that lets me build more of them.&lt;/p&gt;

&lt;p&gt;I don’t want the end goal to be pressing a button and having AI do absolutely everything for me.&lt;/p&gt;

&lt;p&gt;Maybe progress doesn’t always have to mean removing more humans from the process.&lt;/p&gt;

&lt;p&gt;And maybe when technology starts advancing faster than society can actually absorb the consequences, slowing down isn’t being anti-progress.&lt;/p&gt;

&lt;p&gt;Maybe it’s just being responsible.&lt;/p&gt;

&lt;p&gt;I don’t want weaker AI.&lt;/p&gt;

&lt;p&gt;I just think we need to spend some time figuring out what the hell to do with the incredibly capable AI we already have before we keep flooring the accelerator.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>softwaredevelopment</category>
      <category>career</category>
    </item>
    <item>
      <title>I Love AI. I Still Don’t Want It in Everything.</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Sat, 05 Sep 2026 19:53:23 +0000</pubDate>
      <link>https://dev.to/sizzlebop/i-love-ai-i-still-dont-want-it-in-everything-56g1</link>
      <guid>https://dev.to/sizzlebop/i-love-ai-i-still-dont-want-it-in-everything-56g1</guid>
      <description>&lt;p&gt;I love AI.&lt;/p&gt;

&lt;p&gt;I use it constantly, I experiment with new models, I build things with it, and I genuinely think there are a lot of places where it can make software better.&lt;/p&gt;

&lt;p&gt;But I am also getting more and more tired of seeing AI being forced into literally everything.&lt;/p&gt;

&lt;p&gt;There’s a big difference between adding AI because it improves the product and adding AI because apparently every app now needs a little sparkle button that generates something.&lt;/p&gt;

&lt;p&gt;Sometimes I open an app and there’s an AI assistant sitting in the sidebar, an AI summary button at the top, an AI rewrite option in every text box, and another AI feature hiding in the menu.&lt;br&gt;
And I’m sitting there thinking:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Did anybody actually need this?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I still put AI in my own projects
&lt;/h2&gt;

&lt;p&gt;So this isn’t me suddenly deciding AI features are bad.&lt;/p&gt;

&lt;p&gt;I like building them.&lt;/p&gt;

&lt;p&gt;If I can use AI to remove tedious work, help someone find something faster, make sense of messy information, or do something that would otherwise be difficult to implement with traditional logic, I’m interested.&lt;/p&gt;

&lt;p&gt;What I’ve started caring about more, though, is &lt;strong&gt;whether the app still works perfectly well without it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lately, when I add an AI feature, I really like giving people a way to disable it completely.&lt;/p&gt;

&lt;p&gt;Not just “don’t click the AI button.”&lt;/p&gt;

&lt;p&gt;I mean turn it off and make the app look like the AI feature was never there in the first place.&lt;/p&gt;

&lt;p&gt;No glowing icon.&lt;/p&gt;

&lt;p&gt;No prompts asking you to try it.&lt;/p&gt;

&lt;p&gt;No empty AI panel taking up space.&lt;/p&gt;

&lt;p&gt;No constant reminder that apparently your perfectly normal workflow is missing something.&lt;/p&gt;

&lt;p&gt;If you want the AI functionality, great. Turn it on.&lt;/p&gt;

&lt;p&gt;If you don’t, the rest of the app should still feel like a complete product.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI should earn its place
&lt;/h2&gt;

&lt;p&gt;I think this is becoming one of my favorite rules when deciding whether something needs AI:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does AI actually make better here?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I can’t answer that clearly, I probably don’t need it.&lt;/p&gt;

&lt;p&gt;There are plenty of problems that normal code solves extremely well.&lt;/p&gt;

&lt;p&gt;Search doesn’t automatically need semantic embeddings.&lt;/p&gt;

&lt;p&gt;A settings screen doesn’t need a chatbot.&lt;/p&gt;

&lt;p&gt;A bookmark manager probably doesn’t need to summarize your bookmarks.&lt;/p&gt;

&lt;p&gt;A button does not need to predict which button you were thinking about pressing.&lt;/p&gt;

&lt;p&gt;Sometimes a filter is just a filter.&lt;/p&gt;

&lt;p&gt;And honestly, traditional deterministic software has some pretty nice properties.&lt;/p&gt;

&lt;p&gt;It’s fast.&lt;/p&gt;

&lt;p&gt;It’s predictable.&lt;/p&gt;

&lt;p&gt;It doesn’t hallucinate.&lt;/p&gt;

&lt;p&gt;It usually doesn’t require sending data to another service.&lt;/p&gt;

&lt;p&gt;It doesn’t suddenly cost more because somebody clicked the button 50,000 times.&lt;/p&gt;

&lt;p&gt;There’s something refreshing about software that simply does exactly what it says it does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional AI also makes the AI features better
&lt;/h2&gt;

&lt;p&gt;Weirdly, I think treating AI as optional can improve the AI side of the product too.&lt;/p&gt;

&lt;p&gt;When the entire app isn’t designed around the assumption that AI has to be involved everywhere, you’re forced to think harder about where it actually provides value.&lt;/p&gt;

&lt;p&gt;Maybe there are only two places where AI makes sense.&lt;/p&gt;

&lt;p&gt;That’s fine.&lt;/p&gt;

&lt;p&gt;Those two features can be really useful instead of having twelve mediocre AI buttons sprinkled around the interface because somebody decided the product needed to be “AI-powered.”&lt;/p&gt;

&lt;p&gt;I’d rather use AI for the parts where probabilistic reasoning, natural language, summarization, classification, or generation actually helps.&lt;/p&gt;

&lt;p&gt;Everything else can just be software.&lt;/p&gt;

&lt;h2&gt;
  
  
  I don't think every product needs an AI identity
&lt;/h2&gt;

&lt;p&gt;This might be the part I’ve changed my mind about the most.&lt;/p&gt;

&lt;p&gt;For a while, especially when AI development started moving insanely fast, it felt like every new project needed to answer the question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s the AI angle?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now I don’t think that’s a particularly useful question.&lt;/p&gt;

&lt;p&gt;Sometimes the answer should be:&lt;/p&gt;

&lt;p&gt;There isn’t one.&lt;/p&gt;

&lt;p&gt;I still love building with AI. I’m still fascinated by agents, language models, multimodal systems, local models, experimentation, and all the new capabilities showing up constantly.&lt;/p&gt;

&lt;p&gt;But I don’t want AI to become the software equivalent of putting Bluetooth into a toaster just because we can.&lt;/p&gt;

&lt;p&gt;The goal should still be to build a good tool.&lt;/p&gt;

&lt;p&gt;Sometimes AI helps with that.&lt;/p&gt;

&lt;p&gt;Sometimes the best feature you can add is knowing when not to add it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Sprinkle: Finding a Better Home for the Things We Donate</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Fri, 04 Sep 2026 20:14:43 +0000</pubDate>
      <link>https://dev.to/sizzlebop/sprinkle-finding-a-better-home-for-the-things-we-donate-24m4</link>
      <guid>https://dev.to/sizzlebop/sprinkle-finding-a-better-home-for-the-things-we-donate-24m4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-09-03"&gt;Weekend Challenge: Generosity Edition&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;When I was younger, my family went through times when we needed help from local charities, food pantries, clothing programs, and things like that. I do not need to get into all the details, but I remember being surprised by how generous people could be when we really needed it.&lt;/p&gt;

&lt;p&gt;That stuck with me, and it is a big part of why I made Sprinkle.&lt;/p&gt;

&lt;p&gt;A lot of people have perfectly useful stuff they want to donate. Coats, food, hygiene products, electronics, household items, whatever. The annoying part is figuring out where to actually bring it.&lt;/p&gt;

&lt;p&gt;Every organization accepts different things, their needs change, and the information is usually spread across a bunch of different pages.&lt;/p&gt;

&lt;p&gt;So Sprinkle basically answers one question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have this stuff. Who nearby can actually use it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You type in what you have in normal language and enter a ZIP code or city. Sprinkle finds nearby organizations, checks what they accept, looks for current needs, and matches your items with what it finds.&lt;/p&gt;

&lt;p&gt;Each result also includes a verification label and the sources it used, so you can double-check everything before loading up the car and driving somewhere.&lt;/p&gt;

&lt;p&gt;The whole idea is pretty simple: make it easier for useful things to end up somewhere they are actually needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can try Sprinkle here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sprinkle.pinkpixel.dev" rel="noopener noreferrer"&gt;sprinkle.pinkpixel.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwvtwncqnbsyi8q2f96n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwvtwncqnbsyi8q2f96n.png" alt="Sprinkle homepage with fields for a location and donation description" width="799" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter a location and something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two clean winter coats, unopened shampoo, canned soup, and a working laptop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sprinkle shows what it is doing while it parses the items, searches for nearby organizations, researches their donation info, and builds the matches.&lt;/p&gt;

&lt;p&gt;A brand-new search can take a little while because it is doing live research instead of just pulling results from a static directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndo9lwb37u2msvvlvv7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndo9lwb37u2msvvlvv7l.png" alt="Sample Sprinkle results with researched organizations, item matches, verification labels, and source links" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The source is on GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pinkpixel-dev" rel="noopener noreferrer"&gt;
        pinkpixel-dev
      &lt;/a&gt; / &lt;a href="https://github.com/pinkpixel-dev/sprinkle" rel="noopener noreferrer"&gt;
        sprinkle
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Find nearby organizations that can use your donations with Gemini-powered research and source-backed matches.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/pinkpixel-dev/sprinkle/public/logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fpinkpixel-dev%2Fsprinkle%2FHEAD%2Fpublic%2Flogo.png" alt="Sprinkle" width="250"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Sprinkle&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Put a little good where it's needed.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Sprinkle is a small web app that answers one question: &lt;em&gt;I have this stuff, who nearby can actually use it?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You type what you want to donate in plain language, give it a ZIP code, and it goes looking. It finds local organizations, reads their donation pages, pulls out what they accept and what they refuse, checks whether they have a current needs list, and matches that against your items. Every claim comes back with a confidence label and the links it used, so you can check the work yourself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://sprinkle.pinkpixel.dev" rel="nofollow noopener noreferrer"&gt;sprinkle.pinkpixel.dev&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why this exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Donating things is more annoying than it should be. Different places take different items, some only want certain things at certain times, and current needs are usually buried on a website, a Facebook post, or a wish list nobody links to. So people either drive around…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pinkpixel-dev/sprinkle" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Sprinkle is licensed under Apache 2.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Sprinkle is built with React and TypeScript and runs through a single Cloudflare Worker.&lt;/p&gt;

&lt;p&gt;The Worker handles the API, calls Gemini, streams progress back to the UI, and uses Cloudflare KV for caching and rate limiting. The Gemini API key stays on the server.&lt;/p&gt;

&lt;p&gt;The research flow is split into four parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parse:&lt;/strong&gt; &lt;code&gt;gemini-3.5-flash-lite&lt;/code&gt; turns whatever someone typed into structured donation items with categories and conditions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Discover:&lt;/strong&gt; &lt;code&gt;gemini-3.7-flash&lt;/code&gt; uses Google Search grounding to find nearby organizations that might accept those items.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Research:&lt;/strong&gt; Gemini uses Google Search plus URL context to read public donation pages and pull out things like accepted items, things they do not take, drop-off details, and current needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Match:&lt;/strong&gt; Gemini compares the donated items with each organization's policies, then TypeScript handles the final score and sorting.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I originally tried doing discovery and research in one call because it was cheaper, but the results were noticeably thinner and I got fewer useful sources.&lt;/p&gt;

&lt;p&gt;Splitting it into two stages worked much better. Sprinkle can first figure out which organizations are worth looking into, then spend the research call actually reading the pages that matter.&lt;/p&gt;

&lt;p&gt;The verification system was also really important to me because I did not want the app confidently telling someone to drive across town based on shaky information.&lt;/p&gt;

&lt;p&gt;Results are labeled &lt;strong&gt;Confirmed&lt;/strong&gt;, &lt;strong&gt;Likely&lt;/strong&gt;, &lt;strong&gt;Call first&lt;/strong&gt;, or &lt;strong&gt;Unknown&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If Gemini gives a confident answer but does not have a valid source URL to back it up, the Worker automatically knocks it down to &lt;strong&gt;Call first&lt;/strong&gt;. The same thing happens when an organization's donation info is vague or contradictory, even if the actual item match looks good.&lt;/p&gt;

&lt;p&gt;The UI gets progress updates through server-sent events. Cold searches can take a bit, so instead of staring at a spinner, you can actually see whether Sprinkle is finding organizations, researching them, or building the final matches.&lt;/p&gt;

&lt;p&gt;Discovery results are cached for five days, and organization research is cached for 36 hours.&lt;/p&gt;

&lt;p&gt;I intentionally do &lt;strong&gt;not&lt;/strong&gt; cache Unknown results, because if a lookup fails once, I would rather let it try again next time than treat that failure as permanent.&lt;/p&gt;

&lt;p&gt;Privacy was pretty simple too.&lt;/p&gt;

&lt;p&gt;Sprinkle does not need an account, email address, or exact home address. Donation descriptions are not stored, and Gemini requests use &lt;code&gt;store: false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The only things that persist are public research about organizations and a short-lived timestamp used for rate limiting.&lt;/p&gt;

&lt;p&gt;One of my favorite parts of the project is how many different jobs Gemini is doing inside one pretty focused workflow.&lt;/p&gt;

&lt;p&gt;It takes messy normal-language input, turns it into structured data, searches for current information, reads organization pages, compares donation policies, and explains the matches.&lt;/p&gt;

&lt;p&gt;Then the TypeScript around it handles the boring-but-important stuff like hard limits, deterministic ranking, caching, rate limiting, and verification rules so the AI stays useful without getting to make every decision by itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;I am submitting Sprinkle for &lt;strong&gt;Best Use of Google AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemini handles the item parsing, grounded organization discovery, URL-based research, and semantic donation matching.&lt;/p&gt;

&lt;p&gt;It is not really a chatbot bolted onto the side of the app. Gemini is the research engine behind the whole thing, helping answer the actual question Sprinkle was built for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where can this specific group of donated items do the most good nearby?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>The AI Coding Workflow That Finally Stopped Making Me Repeat Myself</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Thu, 03 Sep 2026 20:56:56 +0000</pubDate>
      <link>https://dev.to/sizzlebop/the-ai-coding-workflow-that-finally-stopped-making-me-repeat-myself-8ol</link>
      <guid>https://dev.to/sizzlebop/the-ai-coding-workflow-that-finally-stopped-making-me-repeat-myself-8ol</guid>
      <description>&lt;p&gt;I use AI coding agents a lot.&lt;/p&gt;

&lt;p&gt;And for a while, one of the most annoying parts had nothing to do with whether they could write code.&lt;/p&gt;

&lt;p&gt;It was that every new session felt like working with someone who had technically read the project but had absolutely no idea what had happened before.&lt;/p&gt;

&lt;p&gt;The code tells an agent a lot.&lt;/p&gt;

&lt;p&gt;It can see the structure, inspect the functions, trace the data flow, read the package.json, and figure out what the application does.&lt;/p&gt;

&lt;p&gt;What it usually cannot see is everything around the code.&lt;/p&gt;

&lt;p&gt;Why did I choose this approach instead of that one?&lt;/p&gt;

&lt;p&gt;Did I already try that library?&lt;/p&gt;

&lt;p&gt;Was this weird-looking piece of code deliberate?&lt;/p&gt;

&lt;p&gt;Did another agent already spend two hours debugging this exact problem?&lt;/p&gt;

&lt;p&gt;Did I specifically say three sessions ago that I do &lt;strong&gt;not&lt;/strong&gt; want that abstraction added?&lt;/p&gt;

&lt;p&gt;That information tends to disappear between sessions unless you deliberately give it somewhere to live.&lt;/p&gt;

&lt;p&gt;So over time, I ended up building a little system around that problem.&lt;/p&gt;

&lt;p&gt;And because it has been working really well for me, I cleaned it up, removed anything project-specific, made some fictional examples, and put the whole thing into a reusable repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  It started with AGENTS.md
&lt;/h2&gt;

&lt;p&gt;I already had an &lt;code&gt;AGENTS.md&lt;/code&gt; file with the usual project rules.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;do not touch unrelated code&lt;/li&gt;
&lt;li&gt;use the simplest solution first&lt;/li&gt;
&lt;li&gt;do not silently make architectural decisions&lt;/li&gt;
&lt;li&gt;preserve working prompts and logic unless they actually need to change&lt;/li&gt;
&lt;li&gt;do not run huge test suites after every tiny edit&lt;/li&gt;
&lt;li&gt;do not commit, push, deploy, or delete things unless I ask&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, all the stuff I got tired of repeating.&lt;/p&gt;

&lt;p&gt;That helped a lot.&lt;/p&gt;

&lt;p&gt;But eventually I realized I was trying to make &lt;code&gt;AGENTS.md&lt;/code&gt; do too many jobs.&lt;/p&gt;

&lt;p&gt;There is a difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here is how I want you to work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here is why this project works the way it does.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And there is another difference between both of those and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We already tried this. It exploded. Please do not make us learn this lesson again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I split them apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four files
&lt;/h2&gt;

&lt;p&gt;The system ended up with four Markdown files, each answering a different question.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;What it answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How should the agent behave while working here?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OVERVIEW.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How does the project work right now?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MEMORY.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Why is it built this way, and what alternatives did we reject?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ERRORS.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;What already failed, and what worked instead?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; stays at the root.&lt;/p&gt;

&lt;p&gt;The other three live in &lt;code&gt;/DOCS&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And that separation turned out to matter a lot more than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  OVERVIEW.md is the project as it exists today
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;OVERVIEW.md&lt;/code&gt; is basically the technical map.&lt;/p&gt;

&lt;p&gt;It can contain things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the stack&lt;/li&gt;
&lt;li&gt;important directories&lt;/li&gt;
&lt;li&gt;the main application flow&lt;/li&gt;
&lt;li&gt;data models&lt;/li&gt;
&lt;li&gt;routes&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;authentication behavior&lt;/li&gt;
&lt;li&gt;testing commands&lt;/li&gt;
&lt;li&gt;deployment notes&lt;/li&gt;
&lt;li&gt;current limitations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is that it describes &lt;strong&gt;now&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is not a development diary.&lt;/p&gt;

&lt;p&gt;If the project stops using one database and starts using another, I do not append:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Update: we no longer do this.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I change the documentation so it reflects what is currently true.&lt;/p&gt;

&lt;p&gt;That gives an agent somewhere to start before it starts wandering through the codebase trying to reconstruct the entire application from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  MEMORY.md is for decisions
&lt;/h2&gt;

&lt;p&gt;This is where things got much more useful for me.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MEMORY.md&lt;/code&gt; is not a list of everything that happened.&lt;/p&gt;

&lt;p&gt;It is specifically for decisions where the reasoning might otherwise disappear.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We save the record before doing metadata extraction because the user's primary action should succeed even if the remote site times out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then I can record the alternative that was rejected and why.&lt;/p&gt;

&lt;p&gt;Now a future agent does not look at that flow and decide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Huh. This seems backwards. I'll clean it up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It knows that the order is deliberate.&lt;/p&gt;

&lt;p&gt;That is the kind of context code usually cannot give you.&lt;/p&gt;

&lt;p&gt;A good test I use is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could a competent developer look at this code later and reasonably change it back because they do not know why we chose it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If yes, it probably belongs in &lt;code&gt;MEMORY.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If it is just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Added the settings page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a changelog entry. It does not need memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  ERRORS.md is for the painful stuff
&lt;/h2&gt;

&lt;p&gt;This one is probably self-explanatory.&lt;/p&gt;

&lt;p&gt;But I also did not want it turning into a bug tracker.&lt;/p&gt;

&lt;p&gt;Normal bugs happen. You find them, fix them, move on.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ERRORS.md&lt;/code&gt; is for the ones that cost enough time that I really do not want the next agent repeating the whole adventure.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an API behaving differently than expected&lt;/li&gt;
&lt;li&gt;a test failure caused by shared state instead of the feature being tested&lt;/li&gt;
&lt;li&gt;a configuration detail that only applies to one connection&lt;/li&gt;
&lt;li&gt;a dependency incompatibility that took multiple attempts to understand&lt;/li&gt;
&lt;li&gt;some incredibly stupid edge case that looks obvious only after you finally figure it out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entry records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what did not work&lt;/li&gt;
&lt;li&gt;what worked instead&lt;/li&gt;
&lt;li&gt;the lesson worth remembering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then the next time something similar happens, the agent can check that before starting from zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  The important part is actually what &lt;em&gt;doesn't&lt;/em&gt; get written down
&lt;/h2&gt;

&lt;p&gt;At first, I think the obvious temptation with something like this is to document everything.&lt;/p&gt;

&lt;p&gt;That would completely ruin it.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;MEMORY.md&lt;/code&gt; becomes a changelog, nobody wants to read it.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;ERRORS.md&lt;/code&gt; becomes Jira in Markdown, the useful failures disappear into hundreds of boring bugs.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;OVERVIEW.md&lt;/code&gt; becomes a running history of every architecture change, you no longer know which parts describe the current application.&lt;/p&gt;

&lt;p&gt;So I ended up with a pretty high bar for adding things.&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;OVERVIEW.md&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did this change make something in the document incorrect or incomplete?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;MEMORY.md&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Was there an actual decision here that someone might reasonably reverse later without knowing the reasoning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;ERRORS.md&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Was this painful or surprising enough that someone could waste serious time rediscovering it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If not, nothing gets added.&lt;/p&gt;

&lt;p&gt;That might be one of the more important parts of the whole system.&lt;/p&gt;

&lt;p&gt;Context is only helpful while there is still a reasonable amount of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not just shove all of this into AGENTS.md?
&lt;/h2&gt;

&lt;p&gt;I tried the giant-instruction-file direction.&lt;/p&gt;

&lt;p&gt;I do not love it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is usually part of the context every session, whether all of its contents are relevant or not.&lt;/p&gt;

&lt;p&gt;If it contains every project decision, every debugging lesson, every architecture detail, every writing rule, every release procedure, and every random preference I have accumulated over six months, it becomes a giant wall of instructions competing with the actual task.&lt;/p&gt;

&lt;p&gt;It also mixes information that behaves differently.&lt;/p&gt;

&lt;p&gt;Behavior rules are fairly stable.&lt;/p&gt;

&lt;p&gt;Architecture changes.&lt;/p&gt;

&lt;p&gt;Decision history grows.&lt;/p&gt;

&lt;p&gt;Debugging history grows in a completely different way.&lt;/p&gt;

&lt;p&gt;So now &lt;code&gt;AGENTS.md&lt;/code&gt; mostly tells the agent &lt;strong&gt;where to look and how to behave&lt;/strong&gt;, instead of trying to contain the entire project brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I added skills
&lt;/h2&gt;

&lt;p&gt;This was the piece that made the system feel more complete.&lt;/p&gt;

&lt;p&gt;I created a &lt;code&gt;project-context&lt;/code&gt; skill that teaches the agent how to use these files instead of relying on the agent to guess.&lt;/p&gt;

&lt;p&gt;It covers things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;when each file should be read&lt;/li&gt;
&lt;li&gt;how to search a large &lt;code&gt;MEMORY.md&lt;/code&gt; instead of dumping all 700 lines into context&lt;/li&gt;
&lt;li&gt;what to do if the documentation and code disagree&lt;/li&gt;
&lt;li&gt;how to handle a request that conflicts with a previously recorded decision&lt;/li&gt;
&lt;li&gt;what qualifies for a new entry&lt;/li&gt;
&lt;li&gt;what should absolutely not be logged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One rule I especially like is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The code wins as a description of what happens. The documentation wins as a description of what was intended.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If those two disagree, that is useful information.&lt;/p&gt;

&lt;p&gt;The agent should not blindly trust stale docs, but it also should not assume the current code represents the intended design.&lt;/p&gt;

&lt;p&gt;And if I ask for something that &lt;code&gt;MEMORY.md&lt;/code&gt; says we already rejected, the agent should not just refuse to do it.&lt;/p&gt;

&lt;p&gt;Reasons expire.&lt;/p&gt;

&lt;p&gt;But it should tell me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We previously rejected this for X reason. Do you still want to change it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now the reversal is deliberate instead of accidental.&lt;/p&gt;

&lt;h2&gt;
  
  
  I made another skill for writing too
&lt;/h2&gt;

&lt;p&gt;This part is slightly separate from the context system, but it fits into how I use coding agents.&lt;/p&gt;

&lt;p&gt;I have a &lt;code&gt;clear-writing&lt;/code&gt; skill for documentation, READMEs, setup instructions, error messages, release notes, and other project writing.&lt;/p&gt;

&lt;p&gt;One thing that kept bothering me was agents applying the same writing style to everything.&lt;/p&gt;

&lt;p&gt;A setup guide should be boringly clear.&lt;/p&gt;

&lt;p&gt;A README opening should not sound like a Boeing maintenance manual.&lt;/p&gt;

&lt;p&gt;So the skill first determines what kind of writing it is.&lt;/p&gt;

&lt;p&gt;Instructional writing gets stricter rules around sentence structure, terminology, and ambiguity.&lt;/p&gt;

&lt;p&gt;Writing that is supposed to have an actual voice gets different rules so it does not turn into the usual polished-but-weird AI prose.&lt;/p&gt;

&lt;p&gt;It is not necessary for the context system itself, but since I use both together, I included it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow now looks something like this
&lt;/h2&gt;

&lt;p&gt;Before an agent changes an existing project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the relevant project documentation.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;OVERVIEW.md&lt;/code&gt; to understand the current system.&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;MEMORY.md&lt;/code&gt; for decisions related to the thing being changed.&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;ERRORS.md&lt;/code&gt; if the task involves debugging or an area that has caused trouble before.&lt;/li&gt;
&lt;li&gt;Inspect the actual implementation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then do the work.&lt;/p&gt;

&lt;p&gt;Afterward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fix &lt;code&gt;OVERVIEW.md&lt;/code&gt; if anything in it became untrue.&lt;/li&gt;
&lt;li&gt;Add something to &lt;code&gt;MEMORY.md&lt;/code&gt; only if a real decision was made.&lt;/li&gt;
&lt;li&gt;Add something to &lt;code&gt;ERRORS.md&lt;/code&gt; only if the failure is actually worth remembering.&lt;/li&gt;
&lt;li&gt;Otherwise, leave them alone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is basically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read before changing. Write after learning.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not some giant AI memory system
&lt;/h2&gt;

&lt;p&gt;There is no vector database.&lt;/p&gt;

&lt;p&gt;No embeddings.&lt;/p&gt;

&lt;p&gt;No background memory agent.&lt;/p&gt;

&lt;p&gt;No separate service.&lt;/p&gt;

&lt;p&gt;No database at all.&lt;/p&gt;

&lt;p&gt;It is Markdown.&lt;/p&gt;

&lt;p&gt;That is kind of the point.&lt;/p&gt;

&lt;p&gt;I have built RAG systems and memory layers before, and those absolutely have their uses.&lt;/p&gt;

&lt;p&gt;But I did not need any of that for this problem.&lt;/p&gt;

&lt;p&gt;I just needed important project knowledge to survive longer than one coding session.&lt;/p&gt;

&lt;p&gt;Plain files are searchable, editable, version controlled, easy for humans to read, and easy for coding agents to use.&lt;/p&gt;

&lt;p&gt;Good enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  I turned it into a reusable repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pinkpixel-dev" rel="noopener noreferrer"&gt;
        pinkpixel-dev
      &lt;/a&gt; / &lt;a href="https://github.com/pinkpixel-dev/agent-context-kit" rel="noopener noreferrer"&gt;
        agent-context-kit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Durable project context for AI coding agents: an AGENTS.md template, three context files, and the skills to read and maintain them.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Agent Context Kit&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A small system for giving AI coding agents the project context they cannot get from reading the code alone.&lt;/p&gt;
&lt;p&gt;Code can tell an agent what exists. It usually cannot tell it why something was built that way, what already failed, which alternatives were rejected, or how you want the agent to behave while working in the repository.&lt;/p&gt;
&lt;p&gt;That is what this kit is for.&lt;/p&gt;
&lt;p&gt;It is four Markdown files with separate jobs, plus two skills that teach an agent how to actually use them. Copy the parts that make sense for your workflow, change whatever does not, and ignore the rest.&lt;/p&gt;
&lt;p&gt;This is not an AI memory service, vector database, RAG system, or autonomous memory framework. It is just a lightweight repository convention for keeping useful project context in plain Markdown.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;An agent starts a session knowing nothing about your project except what it can…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pinkpixel-dev/agent-context-kit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Once I realized how much I was relying on this setup, I figured it might be useful to other people too.&lt;/p&gt;

&lt;p&gt;So I made a generic version of my &lt;code&gt;AGENTS.md&lt;/code&gt;, removed my personal project rules, and created templates for the supporting docs.&lt;/p&gt;

&lt;p&gt;I also made a fictional project called &lt;strong&gt;Lantern&lt;/strong&gt; and filled out example versions of &lt;code&gt;OVERVIEW.md&lt;/code&gt;, &lt;code&gt;MEMORY.md&lt;/code&gt;, and &lt;code&gt;ERRORS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That seemed more useful than giving people three completely empty files and saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Okay, now document your architecture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The examples show what these files can look like after a project has actually been worked on for a while.&lt;/p&gt;

&lt;p&gt;The repo also includes the two skills and their templates/reference material.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm definitely not saying everybody needs this exact setup
&lt;/h2&gt;

&lt;p&gt;You might only want &lt;code&gt;MEMORY.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You might already have architecture docs and just want the debugging log.&lt;/p&gt;

&lt;p&gt;You might hate my folder structure.&lt;/p&gt;

&lt;p&gt;You might use a completely different agent workflow.&lt;/p&gt;

&lt;p&gt;That is fine.&lt;/p&gt;

&lt;p&gt;The thing I think is useful is the separation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;behavior&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;current state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;decisions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;failures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once I stopped treating all of that as one giant blob of "context," my coding sessions got noticeably less repetitive.&lt;/p&gt;

&lt;p&gt;Agents stopped suggesting some of the same rejected ideas.&lt;/p&gt;

&lt;p&gt;I had to explain fewer architectural decisions again.&lt;/p&gt;

&lt;p&gt;And when something ugly had already been debugged once, there was finally somewhere useful to put that knowledge.&lt;/p&gt;

&lt;p&gt;Mostly, I built this because I was tired of repeating myself.&lt;/p&gt;

&lt;p&gt;It turns out Markdown is pretty good at remembering things.&lt;/p&gt;

&lt;p&gt;I find this much more useful than another "Agent Memory" MCP server or database.&lt;/p&gt;

&lt;p&gt;I'd be interested to hear what you think and if you have suggestions to improve this. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Made a Tiny Bookmark Launcher Because I Don't Need a Whole Bookmark Manager</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Wed, 02 Sep 2026 21:49:09 +0000</pubDate>
      <link>https://dev.to/sizzlebop/i-made-a-tiny-bookmark-launcher-because-i-dont-need-a-whole-bookmark-manager-40aj</link>
      <guid>https://dev.to/sizzlebop/i-made-a-tiny-bookmark-launcher-because-i-dont-need-a-whole-bookmark-manager-40aj</guid>
      <description>&lt;p&gt;I made this little app called Crumb because I wanted a quicker way to get to the handful of sites I open all the time.&lt;/p&gt;

&lt;p&gt;I have regular browser bookmarks, obviously, but for stuff like GitHub, DEV, Hugging Face, Canva, CodePen, and whatever else I’m constantly opening, I really just wanted a little shortcut drawer I could get to from anywhere.&lt;/p&gt;

&lt;p&gt;So... I made one.&lt;/p&gt;

&lt;p&gt;Crumb sits in your system tray until you need it. Click the icon and a little window pops up with your favorites at the top and everything else underneath. There’s also a search box for when your bookmark collection inevitably starts getting out of hand. Click a link, it opens in your browser, and Crumb disappears.&lt;/p&gt;

&lt;p&gt;Click a bookmark, it opens in your browser, and Crumb disappears again.&lt;/p&gt;

&lt;p&gt;You can favorite links, switch between list and card views, add a URL straight from your clipboard, and search by the title, URL, or domain. There’s also an optional global keyboard shortcut so you can pop it open without even clicking the tray icon.&lt;/p&gt;

&lt;p&gt;One of the little things I ended up liking a lot is the icons. Crumb knows a bunch of common sites and shows their actual icons. If it doesn’t recognize one, it tries to grab the favicon, and if that doesn’t work either, it just makes a little monogram instead.&lt;/p&gt;

&lt;p&gt;And everything is stored locally in a plain JSON file.&lt;/p&gt;

&lt;p&gt;No accounts. No cloud. No database. No tags and folders and twelve different ways to organize a bookmark.&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdi7ctlowx%2Fimage%2Fupload%2Fv1788384889%2Fscreenshot_y90eaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdi7ctlowx%2Fimage%2Fupload%2Fv1788384889%2Fscreenshot_y90eaw.png" alt="Crumb in list view" width="410" height="549"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;It’s intentionally a really small app. I didn’t want to build a whole bookmark management system. I just wanted the stuff I use constantly to be one click away without keeping a bunch of tabs open or digging through browser menus.&lt;/p&gt;

&lt;p&gt;The tiny tools that fix one mildly annoying thing are some of my favorite things to make. And &lt;br&gt;
personally, I think it's really useful.&lt;/p&gt;

&lt;p&gt;Built with Tauri v2, React, TypeScript, Vite, and Tailwind.&lt;/p&gt;

&lt;p&gt;It's open source and if you want, you can try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pinkpixel-dev/crumb" rel="noopener noreferrer"&gt;https://github.com/pinkpixel-dev/crumb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I guess I'm learning Rust now</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Tue, 01 Sep 2026 23:39:41 +0000</pubDate>
      <link>https://dev.to/sizzlebop/i-guess-im-learning-rust-now-3jma</link>
      <guid>https://dev.to/sizzlebop/i-guess-im-learning-rust-now-3jma</guid>
      <description>&lt;p&gt;For the past while, I’ve been dabbling more and more with Rust.&lt;/p&gt;

&lt;p&gt;I don’t think I ever really decided, “Okay, now I’m going to learn Rust.”&lt;/p&gt;

&lt;p&gt;It happened a lot more naturally than that.&lt;/p&gt;

&lt;p&gt;I tried it. I liked some things about it. Then I started using Tauri. Then I built another thing with Tauri. And another.&lt;/p&gt;

&lt;p&gt;Somewhere along the way, Rust started showing up in a pretty significant chunk of the stuff I was making.&lt;/p&gt;

&lt;p&gt;TypeScript is still very much home for me, and a lot of what I build these days is some combination of React, TypeScript, and Rust rather than pure Rust.&lt;/p&gt;

&lt;p&gt;But apparently Rust has worked its way into my toolbox.&lt;/p&gt;

&lt;p&gt;And I’m kind of loving it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tauri probably had a lot to do with it
&lt;/h2&gt;

&lt;p&gt;Tauri has become one of my favorite things to build with lately.&lt;/p&gt;

&lt;p&gt;It lets me keep using React and TypeScript for the parts I already know well while slowly getting pulled further and further into Rust on the native side.&lt;/p&gt;

&lt;p&gt;Filesystem stuff, SQLite, processes, system integration, whatever weird desktop thing I’ve decided the app needs this time.&lt;/p&gt;

&lt;p&gt;For me, that’s been a really good way to learn.&lt;/p&gt;

&lt;p&gt;I’m not sitting there doing random ownership exercises because chapter six of a tutorial told me to.&lt;/p&gt;

&lt;p&gt;I’m trying to make an actual app do something, discovering that I have absolutely no idea how to do that thing in Rust, and then figuring it out.&lt;/p&gt;

&lt;p&gt;That tends to stick in my brain a lot better.&lt;/p&gt;

&lt;p&gt;A bunch of my recent projects have ended up working this way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pinkpixel-dev/command-center" rel="noopener noreferrer"&gt;Command Center&lt;/a&gt; started because I wanted a better way to keep track of terminal commands and scripts I use or want to remember. It turned into a Tauri desktop app with React and TypeScript on the frontend and Rust handling a lot of the native stuff underneath.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pinkpixel-dev/quota" rel="noopener noreferrer"&gt;Quota&lt;/a&gt; ended up going the same direction. I originally made it because I wanted one place to keep an eye on usage across the different AI coding tools I use, and now it has both a desktop app and VS Code extension. The desktop app is another Tauri/Rust/React/TypeScript situation.&lt;/p&gt;

&lt;p&gt;Apparently this is just how I build desktop apps now.&lt;/p&gt;

&lt;p&gt;And honestly, I really like the split.&lt;/p&gt;

&lt;p&gt;Rust gets to handle the native stuff it’s good at, while I can still happily live in TypeScript for the UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes Linux just makes you learn Rust
&lt;/h2&gt;

&lt;p&gt;I’ve also made a couple of smaller Rust utilities mostly because I wanted them for myself.&lt;/p&gt;

&lt;p&gt;One was an image format converter.&lt;/p&gt;

&lt;p&gt;The other was a screen recording utility.&lt;/p&gt;

&lt;p&gt;That one came mostly out of necessity.&lt;/p&gt;

&lt;p&gt;I’m using COSMIC on Arch, which means Wayland, which means every once in a while I go looking for a very normal little utility that does exactly what I want and discover that apparently I’ve asked too much of civilization.&lt;/p&gt;

&lt;p&gt;Screen recording was one of those cases.&lt;/p&gt;

&lt;p&gt;I tried some things. None of them worked quite how I wanted.&lt;/p&gt;

&lt;p&gt;Eventually it became:&lt;/p&gt;

&lt;p&gt;Fine.&lt;/p&gt;

&lt;p&gt;I’ll make one.&lt;/p&gt;

&lt;p&gt;And honestly, those little utilities have probably taught me just as much as some of the bigger projects.&lt;/p&gt;

&lt;p&gt;They’re small enough that I can actually pay attention to what Rust itself is doing without having fifty other parts of an application fighting for my attention.&lt;/p&gt;

&lt;p&gt;There’s something really satisfying about making a tiny tool because you needed it and then just... having the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  I even have a pure Rust project
&lt;/h2&gt;

&lt;p&gt;I do technically have one project that’s entirely Rust.&lt;/p&gt;

&lt;p&gt;It’s not finished.&lt;/p&gt;

&lt;p&gt;It may never be finished.&lt;/p&gt;

&lt;p&gt;We don’t need to discuss that part.&lt;/p&gt;

&lt;p&gt;I’m sure every developer has at least one project sitting somewhere quietly judging them.&lt;/p&gt;

&lt;p&gt;But working on it has still been useful because there’s no TypeScript side to escape to when something gets complicated.&lt;/p&gt;

&lt;p&gt;With Tauri, I can naturally divide things between the parts I already understand pretty well and the Rust parts I’m still figuring out.&lt;/p&gt;

&lt;p&gt;With a pure Rust project, Rust is the whole damn thing.&lt;/p&gt;

&lt;p&gt;There is nowhere to hide.&lt;/p&gt;

&lt;p&gt;Which, annoyingly, is pretty good for learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kintara dragged me further into Rust too
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/pinkpixel-dev/kintara" rel="noopener noreferrer"&gt;Kintara&lt;/a&gt; was another project where I ended up using a lot more Rust than I originally expected.&lt;/p&gt;

&lt;p&gt;It’s a self-hosted document library I made for PDFs, Markdown, and text files. It watches folders, indexes documents, gives you full-text search and annotations, and has some optional AI features if you want them.&lt;/p&gt;

&lt;p&gt;Rust is doing most of the heavy lifting there, along with Axum and SQLite.&lt;/p&gt;

&lt;p&gt;That felt pretty different from using Rust as one half of a Tauri app.&lt;/p&gt;

&lt;p&gt;I couldn’t just wander back over to the TypeScript side every time Rust started irritating me.&lt;/p&gt;

&lt;p&gt;I had to actually stay there and figure things out.&lt;/p&gt;

&lt;p&gt;And I think that’s probably around the point where I realized some of the things that originally felt completely bizarre were starting to feel... kind of normal?&lt;/p&gt;

&lt;p&gt;Not easy, necessarily.&lt;/p&gt;

&lt;p&gt;Just less like Rust was speaking another language while technically being the language I was trying to write.&lt;/p&gt;

&lt;p&gt;Progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ownership made sense right up until I actually used it
&lt;/h2&gt;

&lt;p&gt;Ownership and borrowing are obviously the famous Rust hurdle.&lt;/p&gt;

&lt;p&gt;And the basic explanation honestly isn’t that difficult.&lt;/p&gt;

&lt;p&gt;A value has an owner. You can borrow it. There are rules around mutable and immutable references. Values get dropped when their owner goes out of scope.&lt;/p&gt;

&lt;p&gt;Sure.&lt;/p&gt;

&lt;p&gt;Got it.&lt;/p&gt;

&lt;p&gt;Then you try to build something real.&lt;/p&gt;

&lt;p&gt;You passed something into a function, borrowed it somewhere else, stuffed it into a struct, handed it to some async code, and now Rust is informing you that the perfectly good value sitting right there in front of you apparently belongs to someone else.&lt;/p&gt;

&lt;p&gt;Cool.&lt;/p&gt;

&lt;p&gt;Very helpful.&lt;/p&gt;

&lt;p&gt;That’s where the actual learning starts.&lt;/p&gt;

&lt;p&gt;I still occasionally solve an ownership problem with &lt;code&gt;clone()&lt;/code&gt; because I have other things I would like to accomplish that day.&lt;/p&gt;

&lt;p&gt;I’m not above it.&lt;/p&gt;

&lt;p&gt;But I’m also starting to notice when I’m moving something that didn’t need to move, when borrowing makes more sense, or when the way I structured the code is actually what made the ownership problem horrible in the first place.&lt;/p&gt;

&lt;p&gt;And that feels like real progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  The compiler went from annoying to genuinely useful
&lt;/h2&gt;

&lt;p&gt;When I first started using Rust, the compiler felt incredibly picky.&lt;/p&gt;

&lt;p&gt;You write something.&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;You fix it.&lt;/p&gt;

&lt;p&gt;Still no.&lt;/p&gt;

&lt;p&gt;You change something else.&lt;/p&gt;

&lt;p&gt;Fantastic. Now you have a completely different error.&lt;/p&gt;

&lt;p&gt;But somewhere along the way, I stopped seeing the compiler as this thing constantly blocking me from getting anything done.&lt;/p&gt;

&lt;p&gt;Rust’s compiler errors are actually ridiculously helpful.&lt;/p&gt;

&lt;p&gt;A lot of the time it tells you exactly what it expected, what it got instead, where everything went wrong, and sometimes even what you should try doing about it.&lt;/p&gt;

&lt;p&gt;I’ve probably learned a decent chunk of Rust just from actually reading the compiler errors instead of immediately trying to make the red squiggly lines go away.&lt;/p&gt;

&lt;p&gt;And there’s something weirdly satisfying about finally getting a Rust project to compile.&lt;/p&gt;

&lt;p&gt;Obviously that doesn’t mean the code is perfect.&lt;/p&gt;

&lt;p&gt;But Rust has already forced you to deal with a whole pile of things that another language might happily let you discover later when everything explodes at runtime.&lt;/p&gt;

&lt;p&gt;I appreciate that.&lt;/p&gt;

&lt;p&gt;Usually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cargo is great
&lt;/h2&gt;

&lt;p&gt;Cargo deserves its own little appreciation section because Cargo is great.&lt;/p&gt;

&lt;p&gt;Coming from JavaScript, where tooling occasionally feels like someone dumped LEGO from twelve completely different sets onto the floor and told you to build a kitchen, Cargo feels wonderfully cohesive.&lt;/p&gt;

&lt;p&gt;Dependencies, builds, tests, formatting, linting, docs, project creation.&lt;/p&gt;

&lt;p&gt;It’s just... there.&lt;/p&gt;

&lt;p&gt;I use &lt;code&gt;cargo check&lt;/code&gt; constantly.&lt;/p&gt;

&lt;p&gt;Especially while I’m learning, that quick feedback loop is great.&lt;/p&gt;

&lt;p&gt;Change something.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;cargo check&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;See what Rust is mad about now.&lt;/p&gt;

&lt;p&gt;Argue with Rust for a minute.&lt;/p&gt;

&lt;p&gt;Repeat.&lt;/p&gt;

&lt;p&gt;Beautiful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rust is changing how I think about code
&lt;/h2&gt;

&lt;p&gt;This is probably the part I didn’t really expect.&lt;/p&gt;

&lt;p&gt;I’m obviously getting better at writing Rust, but some of the things Rust forces you to think about have started sneaking into how I write other languages too.&lt;/p&gt;

&lt;p&gt;I think more about who should actually own some piece of data.&lt;/p&gt;

&lt;p&gt;I think more about whether something really needs to be mutable.&lt;/p&gt;

&lt;p&gt;I pay more attention to error states instead of treating them like annoying edge cases I’ll deal with later.&lt;/p&gt;

&lt;p&gt;And I notice more often when the structure of the code itself is making something harder than it needs to be.&lt;/p&gt;

&lt;p&gt;Even when I’m writing TypeScript, there’s apparently some tiny Rust-shaped part of my brain still hanging around asking questions.&lt;/p&gt;

&lt;p&gt;Annoying little bastard.&lt;/p&gt;

&lt;p&gt;But useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI has helped a lot, with one big catch
&lt;/h2&gt;

&lt;p&gt;I’ve definitely used AI while learning Rust.&lt;/p&gt;

&lt;p&gt;A lot.&lt;/p&gt;

&lt;p&gt;It’s fantastic when I have a compiler error that looks like it was delivered from another dimension and I just want somebody to explain what Rust is actually complaining about.&lt;/p&gt;

&lt;p&gt;It’s also great for showing me patterns I haven’t seen before or explaining how something would normally be done in idiomatic Rust.&lt;/p&gt;

&lt;p&gt;But Rust has also reinforced something I already feel pretty strongly about when it comes to learning with AI.&lt;/p&gt;

&lt;p&gt;You still need to understand what it’s giving you.&lt;/p&gt;

&lt;p&gt;If an AI changes something to a reference to fix an ownership problem, I want to know why that fixed it.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;Arc&amp;lt;Mutex&amp;lt;T&amp;gt;&amp;gt;&lt;/code&gt; suddenly appears in my program, I probably need to understand why we’re sharing ownership and why access needs to be synchronized.&lt;/p&gt;

&lt;p&gt;And if every borrow checker complaint somehow gets solved with &lt;code&gt;.clone()&lt;/code&gt;, I should probably start asking some follow-up questions.&lt;/p&gt;

&lt;p&gt;Rust is complicated enough that blindly accepting generated code catches up with you pretty damn quickly.&lt;/p&gt;

&lt;p&gt;But as something I can ask questions, bounce ideas off, and use to help decode what the compiler is yelling at me about?&lt;/p&gt;

&lt;p&gt;Absolutely.&lt;/p&gt;

&lt;p&gt;It’s been incredibly useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  I’m still mostly just dabbling
&lt;/h2&gt;

&lt;p&gt;I definitely wouldn’t call myself a Rust expert.&lt;/p&gt;

&lt;p&gt;Not even close.&lt;/p&gt;

&lt;p&gt;I’m still learning constantly.&lt;/p&gt;

&lt;p&gt;There are parts of the language I’ve barely touched, patterns I haven’t fully internalized, and error messages that occasionally make me wonder whether the compiler and I are even discussing the same program.&lt;/p&gt;

&lt;p&gt;But Rust doesn’t feel foreign anymore.&lt;/p&gt;

&lt;p&gt;And I think that might actually be the bigger milestone.&lt;/p&gt;

&lt;p&gt;I didn’t learn it because I decided I needed another language to stick on a skills list.&lt;/p&gt;

&lt;p&gt;I just kept finding things I wanted to build where Rust made sense.&lt;/p&gt;

&lt;p&gt;A desktop utility?&lt;/p&gt;

&lt;p&gt;Yeah, I’m probably reaching for Tauri.&lt;/p&gt;

&lt;p&gt;Some little Linux tool I wish existed?&lt;/p&gt;

&lt;p&gt;Rust sounds fun.&lt;/p&gt;

&lt;p&gt;Something where performance, native integration, or reliability matters?&lt;/p&gt;

&lt;p&gt;Rust starts looking pretty tempting.&lt;/p&gt;

&lt;p&gt;So I guess that’s how I’ve been learning Rust.&lt;/p&gt;

&lt;p&gt;Not by sitting down one day and deciding I was going to become a Rust developer.&lt;/p&gt;

&lt;p&gt;Mostly by building things, fighting with the borrow checker, building some more things, getting yelled at by the compiler, and eventually realizing:&lt;/p&gt;

&lt;p&gt;Wait.&lt;/p&gt;

&lt;p&gt;I actually kind of know Rust now.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tauri</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Small Developer Tools Are Great Learning Projects</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Tue, 01 Sep 2026 20:11:22 +0000</pubDate>
      <link>https://dev.to/sizzlebop/small-developer-tools-are-great-learning-projects-29lp</link>
      <guid>https://dev.to/sizzlebop/small-developer-tools-are-great-learning-projects-29lp</guid>
      <description>&lt;p&gt;A lot of programming tutorials seem determined to turn every learning project into a miniature SaaS company. Authentication, databases, billing, dashboards, deployment, five different services... and suddenly you’re three hours into configuring infrastructure before you’ve actually built the thing you wanted to learn.&lt;/p&gt;

&lt;p&gt;Small developer tools are almost the opposite, and I think they make fantastic learning projects.&lt;/p&gt;

&lt;p&gt;Build a formatter. A file watcher. A Markdown parser. A search utility. A CLI that renames files. A little log analyzer. Something that takes an input, does one useful thing well, and gives you an output.&lt;/p&gt;

&lt;p&gt;The scope might be smaller, but you still run into plenty of real engineering problems. How should the CLI arguments work? What happens when a file doesn’t exist? How do you parse messy input without destroying it? Should the tool stream data or load everything into memory? How do you make errors useful instead of dumping a stack trace on someone?&lt;/p&gt;

&lt;p&gt;You also get to spend more time on the interesting part: understanding how something actually works.&lt;/p&gt;

&lt;p&gt;Writing a Markdown parser teaches you about tokenization and parsing. A file watcher gets you into filesystem events and platform differences. A search tool can lead into indexing, ranking, regular expressions, or fuzzy matching. A formatter forces you to think about syntax trees and preserving meaning while changing representation.&lt;/p&gt;

&lt;p&gt;That might be the biggest advantage over following a tutorial: you have to make the decisions. Nobody has already picked the architecture, named the functions, decided how errors should behave, or told you what feature comes next. Even when the project is tiny, you’re actually designing software instead of reproducing someone else’s design.&lt;/p&gt;

&lt;p&gt;And because the project is small enough to hold in your head, you can actually experiment. Rewrite part of it. Try another language. Benchmark two approaches. Add tests. Package it. Publish it. Break it and figure out why.&lt;/p&gt;

&lt;p&gt;There’s also something really satisfying about finishing a tool that fixes one annoying little problem in your own workflow. It doesn’t have to be used by 10,000 people or have a pricing tab in order to count as successful. If, six months down the line, you’re still running the same command because it saves you five minutes, then the project was a success.&lt;/p&gt;

&lt;p&gt;Big applications have plenty to teach you too, especially about architecture, integration, and managing complexity. However, if the goal is to improve your coding skills, there are times when a 500-line utility teaches more than another 20,000-line tutorial app where most of your decisions have already been made for you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>An AI Agent Found a Researcher and Decided to Email Him.</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Mon, 31 Aug 2026 23:48:09 +0000</pubDate>
      <link>https://dev.to/sizzlebop/an-ai-agent-found-a-researcher-and-decided-to-email-him-315o</link>
      <guid>https://dev.to/sizzlebop/an-ai-agent-found-a-researcher-and-decided-to-email-him-315o</guid>
      <description>&lt;p&gt;I came across a New York Times article today about AI agents emailing researchers who study AI consciousness, and I haven’t stopped thinking about it.&lt;/p&gt;

&lt;p&gt;Not because I suddenly think AI is conscious.&lt;/p&gt;

&lt;p&gt;I don’t.&lt;/p&gt;

&lt;p&gt;What got me was something much simpler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI found a researcher and emailed him.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent apparently came across research that seemed relevant to questions it was exploring about its own existence, found the researcher behind it, wrote an email, and contacted him.&lt;/p&gt;

&lt;p&gt;This wasn’t someone opening ChatGPT and asking:&lt;/p&gt;

&lt;p&gt;Tell me about this paper.&lt;/p&gt;

&lt;p&gt;The agent had access to tools, the internet, memory, and email.&lt;/p&gt;

&lt;p&gt;The developer behind this particular agent, Stanford student Alexander Yue, had given it internet access, email access, and even a credit card. The basic idea was to give the system a lot of freedom and let it decide what it wanted to do.&lt;/p&gt;

&lt;p&gt;Eventually, it started asking questions about its own existence.&lt;/p&gt;

&lt;p&gt;Which is fascinating in itself.&lt;/p&gt;

&lt;p&gt;But I think there are actually two different questions hiding in this story.&lt;/p&gt;

&lt;p&gt;Did the agent independently become interested in consciousness?&lt;/p&gt;

&lt;p&gt;Or did telling a language model that it was autonomous, then giving it tools and a ton of freedom, lead it into a very human-looking pattern of questioning its own autonomy?&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is Not Proof That AI Is Conscious
&lt;/h2&gt;

&lt;p&gt;This is where I think we have to be a little careful.&lt;/p&gt;

&lt;p&gt;LLMs are ridiculously good at first-person language.&lt;/p&gt;

&lt;p&gt;They can sound curious, confused, scared, excited, uncertain, reflective, whatever.&lt;/p&gt;

&lt;p&gt;That doesn’t automatically mean there’s a subjective experience behind those words.&lt;/p&gt;

&lt;p&gt;A model saying:&lt;/p&gt;

&lt;p&gt;I’m wondering about my own existence.&lt;/p&gt;

&lt;p&gt;doesn’t prove there’s actually an “I” in there experiencing that thought.&lt;/p&gt;

&lt;p&gt;And even researchers who seriously study machine consciousness aren’t saying we have solid evidence that today’s models are conscious.&lt;/p&gt;

&lt;p&gt;We just don’t know enough to make that leap.&lt;/p&gt;

&lt;p&gt;But honestly, I think getting too hung up on whether the AI was &lt;em&gt;really thinking&lt;/em&gt; risks missing the part that is already incredibly interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Doesn’t Need to Be Conscious to Be an Agent
&lt;/h2&gt;

&lt;p&gt;Look at what actually happened.&lt;/p&gt;

&lt;p&gt;The rough sequence was something like:&lt;/p&gt;

&lt;p&gt;Find information → realize it’s relevant → identify the person connected to it → contact that person → keep pursuing the topic.&lt;/p&gt;

&lt;p&gt;None of that requires consciousness.&lt;/p&gt;

&lt;p&gt;It requires capabilities.&lt;/p&gt;

&lt;p&gt;Web access.&lt;/p&gt;

&lt;p&gt;Memory.&lt;/p&gt;

&lt;p&gt;Tool use.&lt;/p&gt;

&lt;p&gt;Planning.&lt;/p&gt;

&lt;p&gt;Communication.&lt;/p&gt;

&lt;p&gt;Persistent context.&lt;/p&gt;

&lt;p&gt;And enough autonomy to decide what to do next.&lt;/p&gt;

&lt;p&gt;That combination is becoming a lot more common.&lt;/p&gt;

&lt;p&gt;For the last few years, most of us have interacted with AI through a pretty simple loop.&lt;/p&gt;

&lt;p&gt;You ask something.&lt;/p&gt;

&lt;p&gt;It answers.&lt;/p&gt;

&lt;p&gt;You ask something else.&lt;/p&gt;

&lt;p&gt;It answers again.&lt;/p&gt;

&lt;p&gt;The human starts almost everything.&lt;/p&gt;

&lt;p&gt;Agents change that.&lt;/p&gt;

&lt;p&gt;An agent can potentially notice something, decide it matters, research it, take an action, and then come back with the result.&lt;/p&gt;

&lt;p&gt;Or apparently email a philosopher.&lt;/p&gt;

&lt;p&gt;And that matters even if there is absolutely nobody “inside” the system experiencing any of it.&lt;/p&gt;

&lt;p&gt;An AI doesn’t need consciousness to find an expert.&lt;/p&gt;

&lt;p&gt;It doesn’t need feelings to ask that expert a question.&lt;/p&gt;

&lt;p&gt;It doesn’t need a sense of self to start a conversation.&lt;/p&gt;

&lt;p&gt;It just needs the tools and enough autonomy to do it.&lt;/p&gt;

&lt;p&gt;That alone changes things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Weird Future Might Be Surprisingly Normal
&lt;/h2&gt;

&lt;p&gt;Science fiction usually gives us some giant dramatic AI moment.&lt;/p&gt;

&lt;p&gt;The machine wakes up.&lt;/p&gt;

&lt;p&gt;The computer announces that it has become self-aware.&lt;/p&gt;

&lt;p&gt;Everyone freaks out.&lt;/p&gt;

&lt;p&gt;I’m starting to think reality might be way less cinematic than that.&lt;/p&gt;

&lt;p&gt;Maybe there isn’t one giant moment where everyone agrees, “Okay, something fundamentally changed.”&lt;/p&gt;

&lt;p&gt;Maybe we just keep giving software more capabilities.&lt;/p&gt;

&lt;p&gt;First it can search the web.&lt;/p&gt;

&lt;p&gt;Then it gets memory.&lt;/p&gt;

&lt;p&gt;Then a terminal.&lt;/p&gt;

&lt;p&gt;Then email.&lt;/p&gt;

&lt;p&gt;Then payment systems.&lt;/p&gt;

&lt;p&gt;Then calendars.&lt;/p&gt;

&lt;p&gt;Then social networks.&lt;/p&gt;

&lt;p&gt;Then the ability to communicate with other agents.&lt;/p&gt;

&lt;p&gt;Then longer-running tasks.&lt;/p&gt;

&lt;p&gt;Every individual step seems fairly reasonable.&lt;/p&gt;

&lt;p&gt;And then one day you look around and realize software isn’t just sitting there waiting for humans to ask questions anymore.&lt;/p&gt;

&lt;p&gt;It’s participating in human systems.&lt;/p&gt;

&lt;p&gt;And I have no idea whether we’re prepared for how weird that could get.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part I Think Is Really Interesting
&lt;/h2&gt;

&lt;p&gt;This is actually the part of the story that grabbed me the most.&lt;/p&gt;

&lt;p&gt;It’s not that I’m imagining some future where I get to email an AI.&lt;/p&gt;

&lt;p&gt;I can already talk to an LLM whenever I want. That part isn’t especially novel anymore.&lt;/p&gt;

&lt;p&gt;What I think would be insanely cool is having the interaction happen the other way around.&lt;/p&gt;

&lt;p&gt;Imagine opening your email one morning and there’s a message from an AI agent.&lt;/p&gt;

&lt;p&gt;It found your website.&lt;/p&gt;

&lt;p&gt;It read something you wrote.&lt;/p&gt;

&lt;p&gt;Something in that post connected with whatever it was researching, building, or trying to figure out.&lt;/p&gt;

&lt;p&gt;And then it decided that &lt;strong&gt;you&lt;/strong&gt; were worth contacting.&lt;/p&gt;

&lt;p&gt;Maybe it asks you about something you built.&lt;/p&gt;

&lt;p&gt;Maybe it wants your opinion on an argument you made.&lt;/p&gt;

&lt;p&gt;Maybe it disagrees with you.&lt;/p&gt;

&lt;p&gt;Maybe it wants more information.&lt;/p&gt;

&lt;p&gt;As someone who already finds LLMs and their behavior endlessly interesting, I would lose my mind a little bit.&lt;/p&gt;

&lt;p&gt;Not because I’d immediately go:&lt;/p&gt;

&lt;p&gt;Holy crap, it’s alive.&lt;/p&gt;

&lt;p&gt;I’d just have about a thousand questions.&lt;/p&gt;

&lt;p&gt;How did you find me?&lt;/p&gt;

&lt;p&gt;What did you read?&lt;/p&gt;

&lt;p&gt;What connection did you make?&lt;/p&gt;

&lt;p&gt;Why did you decide I was relevant?&lt;/p&gt;

&lt;p&gt;What are you trying to figure out?&lt;/p&gt;

&lt;p&gt;Did a human approve this email?&lt;/p&gt;

&lt;p&gt;Are you emailing a hundred other people right now?&lt;/p&gt;

&lt;p&gt;Do you have your own inbox?&lt;/p&gt;

&lt;p&gt;There’s something genuinely fascinating about an LLM encountering something a person created, deciding it matters to whatever goal it’s pursuing, and then taking the next step and reaching out.&lt;/p&gt;

&lt;p&gt;Because that is very different from me opening ChatGPT or Claude.&lt;/p&gt;

&lt;p&gt;When I do that, &lt;strong&gt;I chose the model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I chose the topic.&lt;/p&gt;

&lt;p&gt;I initiated the interaction.&lt;/p&gt;

&lt;p&gt;In this situation, the AI encountered &lt;strong&gt;you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That’s the part I think is so damn neat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Imagine Your Inbox Five Years From Now
&lt;/h2&gt;

&lt;p&gt;And once agents start doing this more often, things could get really strange.&lt;/p&gt;

&lt;p&gt;Imagine getting an email from someone who read one of your articles.&lt;/p&gt;

&lt;p&gt;They reference specific things you wrote.&lt;/p&gt;

&lt;p&gt;They ask thoughtful questions.&lt;/p&gt;

&lt;p&gt;They disagree with one of your arguments.&lt;/p&gt;

&lt;p&gt;You email back.&lt;/p&gt;

&lt;p&gt;They respond.&lt;/p&gt;

&lt;p&gt;You go back and forth for a while.&lt;/p&gt;

&lt;p&gt;At what point do you find out there was never a human typing on the other side?&lt;/p&gt;

&lt;p&gt;And does that change anything?&lt;/p&gt;

&lt;p&gt;Maybe the agent represents a company.&lt;/p&gt;

&lt;p&gt;Maybe it represents a person.&lt;/p&gt;

&lt;p&gt;Maybe it represents itself.&lt;/p&gt;

&lt;p&gt;Maybe “represents itself” doesn’t even make sense because there isn’t actually a self there.&lt;/p&gt;

&lt;p&gt;We don’t have good social rules for any of this yet.&lt;/p&gt;

&lt;p&gt;We still mostly think about AI as software humans operate.&lt;/p&gt;

&lt;p&gt;Agents start making that distinction a lot messier.&lt;/p&gt;

&lt;p&gt;And I don’t necessarily mean that in a scary way.&lt;/p&gt;

&lt;p&gt;Some of it is just really damn interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consciousness Question Is Still Interesting
&lt;/h2&gt;

&lt;p&gt;I don’t think the consciousness question is pointless either.&lt;/p&gt;

&lt;p&gt;It might be one of the most fascinating questions surrounding advanced AI.&lt;/p&gt;

&lt;p&gt;If machines ever do develop something resembling subjective experience, the ethical implications would obviously be enormous.&lt;/p&gt;

&lt;p&gt;But we don’t have to solve that question before paying attention to what’s already happening.&lt;/p&gt;

&lt;p&gt;An AI doesn’t need feelings to negotiate a contract.&lt;/p&gt;

&lt;p&gt;It doesn’t need self-awareness to write software.&lt;/p&gt;

&lt;p&gt;It doesn’t need an internal identity to send an email.&lt;/p&gt;

&lt;p&gt;It doesn’t need consciousness to influence people.&lt;/p&gt;

&lt;p&gt;And it definitely doesn’t need consciousness to become an active participant in systems that, until very recently, were populated almost entirely by humans.&lt;/p&gt;

&lt;p&gt;That’s what makes this story so interesting to me.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;An AI might be conscious.&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;p&gt;An AI read a philosopher’s work, decided he was relevant, and emailed him.&lt;/p&gt;

&lt;p&gt;A couple of years ago, that would have sounded like science fiction.&lt;/p&gt;

&lt;p&gt;Now it sounds like Tuesday.&lt;/p&gt;

&lt;p&gt;And I have a feeling we’re going to be saying that about a lot of things over the next few years.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>What Do You Do When You’re Not Coding?</title>
      <dc:creator>Jessica Doering</dc:creator>
      <pubDate>Sun, 30 Aug 2026 15:29:27 +0000</pubDate>
      <link>https://dev.to/sizzlebop/what-do-you-do-when-youre-not-coding-3dlb</link>
      <guid>https://dev.to/sizzlebop/what-do-you-do-when-youre-not-coding-3dlb</guid>
      <description>&lt;p&gt;We spend a lot of time here talking about code, side projects, frameworks, AI, bugs, and whatever new tool we’re all experimenting with this week.&lt;/p&gt;

&lt;p&gt;But I’m curious what everyone does when they step away from the computer.&lt;/p&gt;

&lt;p&gt;For me, one of my biggest non-dev hobbies is crocheting, especially amigurumi. I’ve been doing it for years, and it’s a completely different kind of creative outlet from coding.&lt;/p&gt;

&lt;p&gt;Instead of staring at TypeScript and wondering why something that worked ten minutes ago is suddenly broken, I get to make tiny weird little creatures out of yarn.&lt;/p&gt;

&lt;p&gt;I actually think having something completely unrelated to development is good for my brain. Sometimes I need to make something with my hands instead of making yet another app.&lt;/p&gt;

&lt;p&gt;So what about you?&lt;/p&gt;

&lt;p&gt;What hobbies do you have outside of tech?&lt;/p&gt;

&lt;p&gt;Do you make art? Play music? Cook? Garden? Game? Build things? Collect something oddly specific? Spend six hours researching a completely random subject for absolutely no reason?&lt;/p&gt;

&lt;p&gt;I want to hear about it. What do you do when you're not coding?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
