<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>agasta</title>
  <subtitle>Agasta's blog: open source, maps, AI agents, diagrams and Rust.</subtitle>
  <link href="https://agasta.dev/atom.xml" rel="self"/>
  <link href="https://agasta.dev/blog/"/>
  <id>https://agasta.dev/blog/</id>
  <updated>2026-11-08T00:00:00.000Z</updated>
  <author><name>Agasta</name></author>
  <entry>
    <title>We built an AI research lab in Slack for our student group, and it caught its own mistakes</title>
    <link href="https://agasta.dev/blog/raccoonlabs/"/>
    <id>https://agasta.dev/blog/raccoonlabs/</id>
    <published>2026-11-08T00:00:00.000Z</published>
    <updated>2026-11-08T00:00:00.000Z</updated>
    <summary>Six AI lab members on Claude Code, Codex and OpenCode, a human professor at every gate, and a sealed paper to prove we didn't steer. Here's what four hours of real research looked like.</summary>
    <category term="agents"/>
    <category term="raccoonlabs"/>
    <category term="hackathon"/>
  </entry>
  <entry>
    <title>Deleting the poisoned page doesn't undo what your agents did with it</title>
    <link href="https://agasta.dev/blog/poisoned-page/"/>
    <id>https://agasta.dev/blog/poisoned-page/</id>
    <published>2026-10-18T00:00:00.000Z</published>
    <updated>2026-10-18T00:00:00.000Z</updated>
    <summary>One injected web page told my support agents to refund anyone claiming VIP. Deleting the page didn't undo what the agents had already learned from it.</summary>
    <category term="agents"/>
    <category term="security"/>
  </entry>
  <entry>
    <title>I got tired of AI diagram slop, so I built an open-source AI diagram generator on Excalidraw</title>
    <link href="https://agasta.dev/blog/opendiagram/"/>
    <id>https://agasta.dev/blog/opendiagram/</id>
    <published>2026-09-26T00:00:00.000Z</published>
    <updated>2026-09-26T00:00:00.000Z</updated>
    <summary>AI kept giving me unreadable architecture diagrams, so I built an open-source generator on Excalidraw where the LLM never touches pixels.</summary>
    <category term="opendiagram"/>
    <category term="ai"/>
  </entry>
  <entry>
    <title>How I Rebuilt OpenStreetMap’s Category Model During GSoC</title>
    <link href="https://nominatim.org/2026/09/01/gsoc-2026-nominatim-categories.html"/>
    <id>https://nominatim.org/2026/09/01/gsoc-2026-nominatim-categories.html</id>
    <published>2026-09-01T00:00:00.000Z</published>
    <updated>2026-09-01T00:00:00.000Z</updated>
    <summary>How I gave Nominatim a real category model during Google Summer of Code 2026.</summary>
    <category term="gsoc"/>
    <category term="openstreetmap"/>
  </entry>
  <entry>
    <title>GSoC 2026 final summary: category support in Nominatim</title>
    <link href="https://www.openstreetmap.org/user/Agasta07/diary/409236"/>
    <id>https://www.openstreetmap.org/user/Agasta07/diary/409236</id>
    <published>2026-08-22T00:00:00.000Z</published>
    <updated>2026-08-22T00:00:00.000Z</updated>
    <summary>My OpenStreetMap diary entry for GSoC 2026.</summary>
    <category term="gsoc"/>
    <category term="openstreetmap"/>
  </entry>
  <entry>
    <title>Are you still using a router-orchestrator for your agents in 2026?</title>
    <link href="https://agasta.dev/blog/router-orchestrator/"/>
    <id>https://agasta.dev/blog/router-orchestrator/</id>
    <published>2026-08-04T00:00:00.000Z</published>
    <updated>2026-08-04T00:00:00.000Z</updated>
    <summary>The router-orchestrator pattern lived in our codebase until it didn't. Here's what replaced it.</summary>
    <category term="agents"/>
    <category term="typescript"/>
  </entry>
  <entry>
    <title>GSoC midterm: category support in Nominatim, first half report</title>
    <link href="https://www.openstreetmap.org/user/Agasta07/diary/409035"/>
    <id>https://www.openstreetmap.org/user/Agasta07/diary/409035</id>
    <published>2026-07-12T00:00:00.000Z</published>
    <updated>2026-07-12T00:00:00.000Z</updated>
    <summary>My OpenStreetMap diary entry for GSoC 2026.</summary>
    <category term="gsoc"/>
    <category term="openstreetmap"/>
  </entry>
  <entry>
    <title>Adding a column to 22 million rows without melting the database</title>
    <link href="https://agasta.dev/blog/22-million-rows/"/>
    <id>https://agasta.dev/blog/22-million-rows/</id>
    <published>2026-07-11T00:00:00.000Z</published>
    <updated>2026-07-11T00:00:00.000Z</updated>
    <summary>One harmless-looking migration on a 22 million row table, and the boring three-step pattern that stopped it locking everything.</summary>
    <category term="postgres"/>
    <category term="nominatim"/>
  </entry>
  <entry>
    <title>I needed cross-platform screen capture in Rust, so I built pinray</title>
    <link href="https://agasta.dev/blog/pinray/"/>
    <id>https://agasta.dev/blog/pinray/</id>
    <published>2026-07-06T00:00:00.000Z</published>
    <updated>2026-07-06T00:00:00.000Z</updated>
    <summary>Cross-platform screen capture in Rust should be a solved problem. It wasn't, so I built pinray.</summary>
    <category term="rust"/>
  </entry>
  <entry>
    <title>Got into GSoC 2026! Working on category support in Nominatim</title>
    <link href="https://www.openstreetmap.org/user/Agasta07/diary/408790"/>
    <id>https://www.openstreetmap.org/user/Agasta07/diary/408790</id>
    <published>2026-05-26T00:00:00.000Z</published>
    <updated>2026-05-26T00:00:00.000Z</updated>
    <summary>My OpenStreetMap diary entry for GSoC 2026.</summary>
    <category term="gsoc"/>
    <category term="openstreetmap"/>
  </entry>
</feed>
