<?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: Kate Pond</title>
    <description>The latest articles on DEV Community by Kate Pond (@ohkpond).</description>
    <link>https://dev.to/ohkpond</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%2F92083%2F8896d71b-534c-4942-a924-0050d5cd2b12.jpg</url>
      <title>DEV Community: Kate Pond</title>
      <link>https://dev.to/ohkpond</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ohkpond"/>
    <language>en</language>
    <item>
      <title>Sidewalk to Summit — build log</title>
      <dc:creator>Kate Pond</dc:creator>
      <pubDate>Sun, 16 Aug 2026 22:10:12 +0000</pubDate>
      <link>https://dev.to/ohkpond/sidewalk-to-summit-build-log-4kp4</link>
      <guid>https://dev.to/ohkpond/sidewalk-to-summit-build-log-4kp4</guid>
      <description>&lt;p&gt;&lt;strong&gt;A note before this starts moving:&lt;/strong&gt;&lt;br&gt;
Been quiet here for a few weeks — heads down building instead of writing about it, which is exactly the trap this devlog exists to prevent. So: catch-up first, then this becomes the actual habit. One running post, edited in place every time I do real work, newest bit on top. No pile of unpublished drafts allowed after tonight.&lt;/p&gt;




&lt;h2&gt;
  
  
  Aug 11–16 — Not a build week: fine-tuning the plan with Melanie
&lt;/h2&gt;

&lt;p&gt;Build hasn't been happening because Melanie and I are fine-tuning the planning — a call to pressure-test the app's direction before more of it gets built. Nothing shipped, nothing to demo yet. Next real checkpoint with her is Aug 25.&lt;/p&gt;

&lt;p&gt;The day after that call I flew to Amsterdam, already on the calendar and not exactly restful timing. So the last few days have looked like: read what got proposed while I was in transit, ratify or correct it, repeat, jetlagged. Slower than a build day. Still real work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aug 10 — A property test catches a quiet undercount; CI lands
&lt;/h2&gt;

&lt;p&gt;Property testing wrapped up on the plan engine — recovery weeks, peak placement, taper. (Quick definition since it's not unit testing: instead of me picking a few example inputs by hand, the test throws hundreds of randomized ones at the code and checks that a general rule never breaks.) One of the new tests caught something I did not want to find: the function that estimates how many weeks a plan takes has been quietly wrong since the day it was written. It assumed the training ramp always grows at its fastest allowed rate. It never has — a decision I made weeks ago about how midweek sessions scale means a slower cap kicks in first, every time, not just on rare edge cases. It also forgot to count week one, which doesn't ramp at all. Both mistakes lean the same direction: undercounting. Which means a plan could get waved through as "fine" while quietly falling short of the fitness it promised to build. Not a fun bug to find. A good one to find with a robot instead of a knee.&lt;/p&gt;

&lt;p&gt;CI also landed, finally: typecheck, lint, and tests now gate every pull request. It immediately found four pre-existing security holes in dependencies I didn't write, fixable only by a framework upgrade spicy enough that I'm sitting on it rather than clicking go. Also, two people submitted essentially the same CI pipeline within hours of each other — an outside contributor and a parallel session of my own — so I got to experience the mild chaos of reviewing my own duplicate PR.&lt;/p&gt;

&lt;p&gt;Also also: a friend looked at the app and told me the background needed more personality. So she hand-drew one — mountain, stream, evergreens, a trail, a tiny hiker — and delivered it in person like an actual patron of the arts. I tested it behind a real plan screen before getting attached to it. Verdict: fun illustration, bad background generated from it. Filed as a decision, not shipped as a component. I'm going to speak to a designer friend to really help me come up with something great based on this concept.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aug 2 — Eight tasks in four hours; the baseline rule that punished a beginner for being honest
&lt;/h2&gt;

&lt;p&gt;Eight tasks in about four hours, which blows through my own "one task a day" rule badly enough that I'm not even going to pretend otherwise. Most of the deterministic plan engine got built in one sitting — effort math, baseline interpretation, feasibility, week generation, route matching — then I abandoned property-testing mid-task and built the intake form instead, because I wanted something real to put in front of Melanie Michaelchuk before Tuesday. The bill for moving that fast: five judgment calls are sitting in the decision log waiting on me to actually stand behind them, and if you'd asked me that night, I could not have defended all five off the top of my head.&lt;/p&gt;

&lt;p&gt;Here's the one worth telling. The baseline test hike is supposed to size itself conservatively for someone starting from nothing, with a floor so week one never asks too much. For my most sedentary test persona, that floor turned out to be doing something sneaky: her own honest report of an easy walk landed below it, so the app quietly handed her a bigger test hike than she'd actually asked for. Then, because the rule reads a hard outing as proof she'd underestimated herself, one rough day out made her whole plan meaningfully harder — off a starting point that was already inflated. The weaker the user, the worse it got. That's precisely the opposite of what the rule was supposed to do, and I only caught it because I had Claude run one specific beginner's numbers by hand. Fourth spec bug in as many days, and every single one turned up the same way: not by reading the rule, by actually running it on a person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jul 29 — Paired with Peter, six tasks land; CJ asks for a plan and outranks my own gate
&lt;/h2&gt;

&lt;p&gt;Peter and I hopped on a Google Meet, screen shared, and built for ninety minutes — him, me, and Claude, which I've decided officially counts as a mob. He's a friend volunteering his time, and he does DevOps professionally, so I'd sent him an infrastructure one-pager the night before specifically asking him to find the holes in it. Six tasks came out of that sitting: schema migrated, seed pipeline written, real data loaded (fifteen Washington trails checked against WTA's own numbers, eight urban hikes, ten stair spots, six workout templates), a soft-delete flag, and the app's actual first page — &lt;code&gt;/routes&lt;/code&gt;, all thirty-three seeded routes with real computed effort, several honestly tagged "estimated" instead of pretending to be exact.&lt;/p&gt;

&lt;p&gt;Then, separately, my friend CJ texted: he's through-hiking the Enchantments in a few weeks, could I build him a plan. That one text reordered the roadmap. I'd shelved the app's biggest feature — generating a route from wherever you actually are, instead of picking off a curated list — all the way out to a future version, even though it's the thing basically every doc I've written about this project calls the actual point. It got promoted on the spot. CJ needs a plan, not a map, so now it's: finish the core engine for him first, then build the location-aware stuff before any stranger ever sees this thing. First time an actual human has outranked my own plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jul 25 — Domain picked, first deploy: it's live and does absolutely nothing
&lt;/h2&gt;

&lt;p&gt;The empty scaffold is live on the internet. I picked the shorter of two subdomain options (life's too short to type the long one), pointed a DNS record at the hosting platform, connected the repo, and deployed. SSL just... issued itself. The site loaded with a padlock and the default framework starter page, and that padlock is currently protecting nothing of value whatsoever. The task was "every merge lands on a live URL" — and now it does. Same night the database got wired in too, health-checked against both local and production.&lt;/p&gt;

&lt;p&gt;Going in, I'd pictured domain setup as roughly "making a subdirectory." It is not that. The registrar just holds a single DNS record pointing somewhere else entirely, and I don't actually know much about DevOps, which I felt very acutely tonight — double- and triple-checking every field before clicking anything, the exact caution I'd want from a contractor I'd hired to do this instead of me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jul 18 — Accounts night: the best spend cap is money you've already spent
&lt;/h2&gt;

&lt;p&gt;Accounts night: hosting, database, and an API key, all set up in one sitting. One genuine decision fell out of it — the database provider locks in its Postgres version the moment you create the project, so production ended up dictating local dev's version instead of the other way around, which is not what the plan assumed.&lt;/p&gt;

&lt;p&gt;Better find: my own build plan told me to set a hard monthly spend cap on the LLM API, "not just an alert." Turns out you can't actually configure that directly — but you don't need to, because new API accounts run on prepaid credit. So I bought $20 of it and turned auto-reload off. That's the entire safety mechanism now. If something ever hammers the one AI feature this app has, it burns through the credit and the API politely stops answering. No setting I could configure beats money I've already spent and can't spend again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jul 14 — Planning day becomes build day one
&lt;/h2&gt;

&lt;p&gt;A planning morning turned into the first build day, which is how basically every ambitious plan I've ever made actually goes. The morning went into the knowledge base the whole build runs on: spec docs, security and UX guides, backlogs, a decision log. Biggest call to fall out of it: maps are back in the MVP after all, staged as a ladder from "show a curated map" up to the real location-aware route generation I actually want, with the scarier rungs deliberately parked behind real user feedback. Then, in the afternoon, the actual building started — repo scaffolded, running locally, contributor guide written.&lt;/p&gt;

&lt;p&gt;Best part of the day: I was seriously about to plan out paying people to walk around cities counting staircases for me, mechanical-turk style. Then it turned out the city already publishes its maintained stairways as open data, and a mapping project already tags every staircase with a step count. The exact data I was about to pay strangers to go collect had been sitting in a public dataset this whole time. New rule: check if someone already did the work before you pay someone to do it again.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Sidewalk to Summit: reviving my founder-year idea by building it in public</title>
      <dc:creator>Kate Pond</dc:creator>
      <pubDate>Thu, 06 Aug 2026 01:33:30 +0000</pubDate>
      <link>https://dev.to/ohkpond/sidewalk-to-summit-reviving-my-founder-year-idea-by-building-it-in-public-1i0d</link>
      <guid>https://dev.to/ohkpond/sidewalk-to-summit-reviving-my-founder-year-idea-by-building-it-in-public-1i0d</guid>
      <description>&lt;p&gt;When I booked my 2025 hut-to-hut hike in the Austrian Alps, I looked at the daily distances, then at the elevation gain, and my honest first reaction was: oh dear God.&lt;/p&gt;

&lt;p&gt;Here's the problem. I used to be a park ranger. Staying fit wasn't a goal I had, it was just what the job did to you. Then I became a software engineer, and now the job mostly does the opposite. These days, every time I want to do a big hike, I have to actually train for it. This is new information for my body and it is not thrilled.&lt;/p&gt;

&lt;p&gt;And I don't like the gym membership fees. What I love is walking out my front door and finding out what's in my own neighborhood. That feeling of discovery is a big part of why being a ranger suited me, and most of why I want to see more of the world. But I didn't have a car, so Washington's trails, gorgeous as they are, were mostly out of reach on a weekly training schedule. So I trained the only way available to me: I wandered around my neighborhood and guessed. Was it enough distance? Enough hills? Should I be doing stairs? How many? Carrying what?&lt;/p&gt;

&lt;p&gt;What I wanted was an app that would just tell me. This week, do this trail. Can't get to a trail? Fine: walk these four miles and do the water tower stairs six times. A plan that ramps you up a little each week, starting on your own sidewalk and ending at the summit you signed up for. (If you're already guessing where the app's name came from: yes, exactly.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The eight months I didn't build it
&lt;/h2&gt;

&lt;p&gt;I even had time to build it. I'd been laid off that February and didn't start my current job until October. Eight months. I called it my founder year, with some generous rounding.&lt;/p&gt;

&lt;p&gt;I tried. First as a native Android app, where the maps ate me alive. Everything map shaped was either expensive or missing the API I needed, and I stalled out. So I pivoted to a circular economy app idea, partly because King County had grants and incubators for that kind of work. I spent months on business model canvases and persona research. At some point I caught myself writing a business model canvas and personas for the hiking app on the side, like a kid doing their real homework under the desk.&lt;/p&gt;

&lt;p&gt;Then the eight months were up. I had a stack of research, a new job, and exactly zero shipped software.&lt;/p&gt;

&lt;p&gt;I did the hike, by the way. It kicked my butt, even with the training I'd guessed my way through. Somewhere on the second day of switchbacks I remember thinking: I wish that app existed.&lt;/p&gt;

&lt;p&gt;The lesson I actually took from those eight months: if you ask people whether they'd like your app, they say yes. That's not a signal, that's politeness. The only honest test is putting a real thing in front of real people and watching what they do. So this time, "send it to real hikers" isn't a hope. It's a numbered task in my build plan (T33), and it has a gate: it can't fire until the things first users actually need are live.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;Sidewalk to Summit. You pick a goal hike, real or dream (yes, you can type in Kilimanjaro), tell it a little about yourself, and it builds a week by week ramp out of what's actually around you. Real trails when you can get to one. Urban hikes, neighborhood walks, and stair sessions when you can't.&lt;/p&gt;

&lt;p&gt;And it'll find the stairs for you. This was my favorite discovery of the whole planning phase: Seattle publishes its maintained public stairways as open data. I was about to price out paying strangers to walk around counting steps, and it turns out the city already counted them. If you have a treadmill, you can tell the app that too. That's about the only thing it can't find for you.&lt;/p&gt;

&lt;p&gt;The first real architecture decision happened before any app code existed: the math and the words are kept strictly apart. A deterministic engine computes every number in your plan, because a training plan that overprescribes can injure someone. An LLM writes the friendly explanation around those numbers, and it is never allowed to invent one. Building evals and guardrails for AI products is what I do in my day job, and this is the same discipline pointed at my own app: every numeral the LLM writes will have to trace back to the engine's output, and that rule will be enforced in CI, not in a code review comment. There's a whole post coming about this once it's built and defended by tests.&lt;/p&gt;

&lt;p&gt;(Why "Sidewalk to Summit" and not the couch-themed name it started with? That's a story of its own. Coming soon.)&lt;/p&gt;

&lt;h2&gt;
  
  
  How I'm building it
&lt;/h2&gt;

&lt;p&gt;One small task a day, 15 to 45 minutes (though some days I'm hooked on the vibe coding and run long). I plan, an agent writes the code, I verify. Plan, code, verify, repeat. (It's a cousin of the daily self-evals habit I wrote about &lt;a href="https://dev.to/ohkpond/the-promotion-doc-that-writes-itself-2g1i"&gt;here&lt;/a&gt;.) The planning lives in a knowledge base repo that is the source of truth: the specs, a decision log, the backlogs, and this devlog. The rule is one task per working day. Miss a day? Do that task the next working day. And the devlog is where I admit when I don't hold to it.&lt;/p&gt;

&lt;p&gt;The method has to survive real life, because before this build is done it will cross an ocean with me. That's on purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why like this
&lt;/h2&gt;

&lt;p&gt;My company is called The Pond's Edge, and the name is the whole thesis. Life thrives at edges. The pond's edge is where things grow and change and expand. Park ranger to software engineer was one edge. The edge I'm walking now is designing work around a life instead of the other way around: flexible hours, four-day weeks, living in other countries for months at a time. It's a constraint I'm engineering within, the same way the app has to work for someone with no car and no gym.&lt;/p&gt;

&lt;p&gt;If this app succeeds, the win isn't downloads or revenue. It's proof that the working style works. That one small task a day, planned carefully and verified honestly, is a real way to build software and live on your own terms.&lt;/p&gt;

&lt;p&gt;Follow along here: dated entries in the running devlog, standalone posts when something real ships.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>ai</category>
      <category>career</category>
    </item>
    <item>
      <title>The Promotion Doc That Writes Itself</title>
      <dc:creator>Kate Pond</dc:creator>
      <pubDate>Fri, 03 Jul 2026 00:45:23 +0000</pubDate>
      <link>https://dev.to/ohkpond/the-promotion-doc-that-writes-itself-2g1i</link>
      <guid>https://dev.to/ohkpond/the-promotion-doc-that-writes-itself-2g1i</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I set up a Claude Code skill that checks in with me about my workday, asks follow-up questions, and saves a structured markdown file I can use as promotion evidence. Here's why it works, and how to build one in about five minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  May 6th
&lt;/h2&gt;

&lt;p&gt;On May 6th I had an energy level of 2 out of 5.&lt;/p&gt;

&lt;p&gt;I got my Claude Certified Architect exam score back that day: 717 out of 1000. I needed 720. I missed it by three points.&lt;/p&gt;

&lt;p&gt;Four lines down in the same entry, my manager had told me: "your leadership is being felt around Artium. You're making a good impact."&lt;/p&gt;

&lt;p&gt;Here's the thing about that day: the bad number is vivid and self-evident. 717. Three points short. That number was going to live in my head rent-free for weeks. But the recognition? That quietly evaporates. Left to memory, May 6th is the day I failed the exam by three points. On the page, it's also the day my manager told me my leadership was landing across the company.&lt;/p&gt;

&lt;p&gt;The entry keeps the thing I'd lose otherwise.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Memory
&lt;/h2&gt;

&lt;p&gt;I've been bad at this for years. At performance review time, I'd stare at a blank document trying to remember what I'd actually done. I'd come up with four things instead of forty. My manager would advocate for me based on what she happened to see, which was never the full picture.&lt;/p&gt;

&lt;p&gt;The thing is, I did good work. I just didn't capture it.&lt;/p&gt;

&lt;p&gt;A few years ago I tried to solve this with &lt;a href="https://medium.com/@OhKPond/google-forms-for-self-evaluation-26737ca46870" rel="noopener noreferrer"&gt;Google Forms&lt;/a&gt;, a structured form I'd fill out at the end of each day that fed into a spreadsheet. It worked, kind of. The data was there, but it felt like homework. The form didn't ask follow-up questions. It didn't notice when I was being vague. I had to go somewhere specific to fill it out. And when review time came, I had to go back somewhere else to compile everything, figure out what mattered, and assemble it into something coherent. The friction wasn't just the daily entry. It was the whole chain: capture, retrieve, synthesize, present. I was on my own at every step.&lt;/p&gt;

&lt;p&gt;So I built something better.&lt;/p&gt;




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

&lt;p&gt;I have a git repository called &lt;code&gt;daily_self_evals&lt;/code&gt;. Inside it, every workday gets its own markdown file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;entries/
└── 2026/
    └── 03/
        └── 2026-03-02.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each file has YAML frontmatter (date, day, energy level, tags) and sections for what I shipped, the impact of that work, wins, challenges I overcame, recognition I received, and what's next. Here's a representative example of what an entry looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-02-12&lt;/span&gt;
&lt;span class="na"&gt;day&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Thursday&lt;/span&gt;
&lt;span class="na"&gt;week&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;
&lt;span class="na"&gt;energy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;shipped&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;cross-team&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;recognition&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Daily Eval — Thursday, February 12, 2026&lt;/span&gt;

&lt;span class="gu"&gt;## Shipped&lt;/span&gt;
Wrapped up the LLM observability integration. Multi-turn conversation
history is now captured and agent tool calls are visible for evaluation.
This had been a gap in the platform for a while.

&lt;span class="gu"&gt;## Impact&lt;/span&gt;
The team called it out as a major win in our retro. Other engineers
can now actually see what the agent is doing across a full conversation,
not just at individual turns.

&lt;span class="gu"&gt;## Wins&lt;/span&gt;
Got the company spotlight award today. Wasn't expecting it.

&lt;span class="gu"&gt;## Recognition&lt;/span&gt;
My manager flagged it in the all-hands. A few people I don't work
with day-to-day sent messages saying they'd been waiting for this.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Skill
&lt;/h3&gt;

&lt;p&gt;In Claude Code, you can build a custom skill: a saved workflow with a description that tells Claude when to use it. I built one for journaling, and the nice part is I don't invoke it with any special syntax. I just talk to Claude Code the way I'd talk to a coworker:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hey, let's make an entry for today."&lt;/p&gt;

&lt;p&gt;"Can you record this win I just had?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude recognizes that these match the journaling skill and runs it. (You can also invoke it manually with &lt;code&gt;/daily-eval&lt;/code&gt; if you prefer typing a command, but I never do.)&lt;/p&gt;

&lt;p&gt;When it runs, Claude first checks if an entry already exists for today. If it does, it reads what's there and asks what I want to add. If it doesn't, it starts fresh. Either way it appends and never overwrites, so I can log something at 2pm and add more at the end of the day, and it all lands in the same file.&lt;/p&gt;

&lt;p&gt;Then it asks me questions, one at a time, conversationally:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What did you ship or move forward today, even if it was small?"&lt;/p&gt;

&lt;p&gt;"What effect did that have on your team or the product?"&lt;/p&gt;

&lt;p&gt;"Did anyone thank you or give you good feedback?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's not a form. It feels more like a five-minute debrief with a colleague who's genuinely curious. When we're done, it writes or updates the file and tells me where it saved it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the Conversational Format Matters
&lt;/h3&gt;

&lt;p&gt;The STAR framework (Situation, Task, Action, Result) is embedded in the question flow without being named. When Claude asks "what effect did that have?" after I describe a task, I think harder. I give better answers than I would in a form. By the time I'm done, each entry reads like something I could hand to a hiring manager or drop into a performance review, because the prompts shaped it that way from the start.&lt;/p&gt;

&lt;h3&gt;
  
  
  What You Can Do With the Files
&lt;/h3&gt;

&lt;p&gt;Everything is plain markdown with YAML frontmatter. No app. No database. No lock-in.&lt;/p&gt;

&lt;p&gt;That means you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Export to Word or PDF: &lt;code&gt;pandoc entries/**/*.md -o accomplishments.docx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Import the whole folder into Notion or Obsidian&lt;/li&gt;
&lt;li&gt;Ask Claude to summarize three months of entries before a performance review&lt;/li&gt;
&lt;li&gt;Paste any entry directly into a promotion packet or 1:1 doc&lt;/li&gt;
&lt;li&gt;Push it to a private GitHub repo for a permanent, timestamped record&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the YAML frontmatter includes structured fields like energy level and tags, you can also ask Claude to generate charts and analysis across your entries. Energy level over time. Which weeks had the most wins. How often you shipped versus how often you were blocked. The Google Forms version of this system fed into a spreadsheet that could do exactly this kind of visualization. The Claude Code version can do the same thing, just by asking.&lt;/p&gt;

&lt;h3&gt;
  
  
  One More Use: When Someone Asks You for Feedback on a Colleague
&lt;/h3&gt;

&lt;p&gt;Peer feedback requests always arrive at the worst time. Someone asks you to fill out a survey about a teammate you worked closely with three months ago, and you stare at the form trying to remember anything specific.&lt;/p&gt;

&lt;p&gt;If you've been logging your interactions, you don't have to remember. You can ask your journal: "When did I work closely with [name] and what did I notice?" You'll have the actual moments, the specific things that helped you, the friction you observed. Your feedback becomes something a manager can actually act on, instead of the generic "great to work with, highly recommend" that tells everyone nothing.&lt;/p&gt;

&lt;p&gt;The record makes you a better peer, not just a better advocate for yourself.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Set This Up
&lt;/h2&gt;

&lt;p&gt;You need &lt;a href="https://claude.com/product/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; installed. Then just ask Claude to build it for you. You don't need to create any files manually. Open Claude Code and paste something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I want to set up a daily work journal to build promotion evidence. Create a &lt;code&gt;~/daily_self_evals/&lt;/code&gt; project with a &lt;code&gt;CLAUDE.md&lt;/code&gt;, an &lt;code&gt;entries/&lt;/code&gt; directory organized by year and month, and a global skill at &lt;code&gt;~/.claude/skills/daily-eval/SKILL.md&lt;/code&gt;. Give the skill a description so you'll recognize when I ask you to make a journal entry or record a win in plain language, and make it invocable as &lt;code&gt;/daily-eval&lt;/code&gt; too. When it runs, it should check if an entry already exists for the target date before asking questions, ask one question at a time about what I shipped, the impact, wins, challenges, recognition, and what's next, and save entries as markdown files with YAML frontmatter. All entries should be appendable and never overwrite existing content."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude will handle every file. You just review what it built, open a fresh conversation, and tell it you want to make today's entry. (Skills load at the start of a conversation, so open a new one after setup.)&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happens After a Few Months
&lt;/h2&gt;

&lt;p&gt;I now have a body of evidence I've never had before. Specific accomplishments. Measurable impact. Quotes from colleagues. An energy rating that shows me my own patterns over time: what kinds of days light me up, what kinds drain me.&lt;/p&gt;

&lt;p&gt;When it's time to make the case for a promotion, or find a role that's more interesting and pays better, I won't be starting from memory. I'll be starting from a record.&lt;/p&gt;

&lt;p&gt;And on the days when I miss a certification by three points and want to believe the whole day was a loss, the record knows better.&lt;/p&gt;

&lt;p&gt;One last thing: this system isn't finished. I keep tweaking the questions, adjusting what the frontmatter captures, experimenting with how I ask for summaries. That's part of the point. It's a tool I own and can improve, and the more I use it, the better I get at using it. The version I'm running today is better than the one I started with, and the version I'll be running in six months will be even better.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Inspired by &lt;a href="https://jvns.ca/blog/brag-documents/" rel="noopener noreferrer"&gt;Get your work recognized: write a brag document&lt;/a&gt; by Julia Evans, and my earlier experiment with &lt;a href="https://medium.com/@OhKPond/google-forms-for-self-evaluation-26737ca46870" rel="noopener noreferrer"&gt;Google Forms for self-evaluation&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>ai</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Not Enough SMEs or Customers to Make Your Evals? Make Some!</title>
      <dc:creator>Kate Pond</dc:creator>
      <pubDate>Thu, 25 Jun 2026 15:07:57 +0000</pubDate>
      <link>https://dev.to/ohkpond/not-enough-smes-or-customers-to-make-your-evals-make-some-11nc</link>
      <guid>https://dev.to/ohkpond/not-enough-smes-or-customers-to-make-your-evals-make-some-11nc</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; When you cannot reach real users or SMEs to build eval data, you can build realistic stand-ins instead. Gather everything you actually know about the user into a knowledge base, use Claude Code to synthesize personas from it, have the people closest to the user validate them, then turn the validated personas into agents that generate multi-turn conversations and edge cases for your eval set. The trick is grounding: a persona is only useful if it comes from real evidence and gets checked by someone who knows the user.&lt;/p&gt;

&lt;p&gt;If you have been building with AI for a while, you probably remember when personas were how everyone learned to prompt. Something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You are Rob Pike, architecting a new service in Go. Be opinionated and concise, and explain the tradeoffs behind your choices. How should I structure the packages?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We all did some version of that.&lt;/p&gt;

&lt;p&gt;Then the field kind of moved on. We still hand agents a personality here and there, but persona prompting stopped being the headline move. It started to feel like a beginner trick.&lt;/p&gt;

&lt;p&gt;I think personas are coming back. Not for voice and flavor this time, but for something more serious: they are a way to manufacture a stand-in for a human you cannot actually reach. And it turns out that solves a real problem in evals.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bind
&lt;/h2&gt;

&lt;p&gt;Here is the problem I keep running into.&lt;/p&gt;

&lt;p&gt;You need evals. Good evals need data that looks like real usage. And to make data that looks like real usage, you need access to real users or subject matter experts. But a lot of the time, you do not have enough of either, at least not yet.&lt;/p&gt;

&lt;p&gt;Maybe the product is early and there are not enough users to learn from. Maybe your SMEs are real but hard to reach, the kind of people who do not have time to sit with you for a thousand test cases.&lt;/p&gt;

&lt;p&gt;In my case it is often structural. I do consulting work, and a lot of the time we are building for a company that has its own clients. There is a layer between us and the people who will actually use the thing. I may never get in a room with the end user at all. That is not a budget problem or a laziness problem. It is just the shape of the engagement, and no amount of asking nicely changes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reframe
&lt;/h2&gt;

&lt;p&gt;You do not need real users to start. You need realistic ones. And realistic ones you can build.&lt;/p&gt;

&lt;p&gt;The key word is build, because the difference between a useful persona and a useless one is where it comes from. A persona you invent out of your own head is just your assumptions wearing a costume. The whole thing only works if the personas are grounded in the closest real humans you can actually reach.&lt;/p&gt;

&lt;h2&gt;
  
  
  The method
&lt;/h2&gt;

&lt;p&gt;Here is what I actually did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Build a knowledge base.&lt;/strong&gt; I create a repo and fill it with everything I have learned about the end user. Meeting notes from discovery calls. Transcripts, when the client is comfortable being recorded. Research I have done on my own from public sources. Anything that tells me something true about who this user is and where they get stuck. The point is to triangulate across sources instead of leaning on a single conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Point Claude Code at it and generate personas.&lt;/strong&gt; I use Claude Code to read across the whole knowledge base and synthesize a small set of basic personas. Not a chat window, a repo. That matters, because the personas are coming out of a curated body of evidence rather than one prompt and a vibe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Have the client validate them.&lt;/strong&gt; This is the step that does the real work, and it is the one I would not skip. I send the personas back to the client to correct, enrich, and push back on. Sometimes the client has a UX research team and real user data to check against. Sometimes the client just knows their customer in their bones from working with them for years. Both are legitimate. The human who cannot sit for a thousand eval cases can still look at five personas and say, no, this one would never do that. That validation is what turns the personas from my guesses into the client's real knowledge, captured and structured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Turn the personas into agents that exercise the product.&lt;/strong&gt; Once a persona is validated, it goes back in the repo and becomes something I can use on demand. I can tell Claude Code, use this persona and hold a multi-turn conversation with the chatbot the way this user would. Out the other side I get user-phrased turns, full multi-turn conversations, and edge-case inputs. Those become cases in the eval set.&lt;/p&gt;

&lt;p&gt;I want to be honest about how simple this was. The first version was basic. I was not doing anything clever. And it still gave us genuinely interesting outputs, the kind of conversations and edge cases we would not have thought to write by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this breaks
&lt;/h2&gt;

&lt;p&gt;A validated persona is a proxy, not ground truth, and it is worth being clear-eyed about that.&lt;/p&gt;

&lt;p&gt;The personas are only as good as the evidence underneath them and the client's willingness to correct them. If your discovery was thin, your personas will be confidently wrong, and a confidently wrong eval is worse than no eval. They will also tend to miss the genuinely weird stuff, the inputs no one anticipated, because they are built from what people already expect their users to do. Real humans are stranger than any persona you will validate in a meeting.&lt;/p&gt;

&lt;p&gt;So I do not treat this as a replacement for real user data. I treat it as a way to start before you have it, and as a complement once you do. The day real users show up, you check your personas against them and find out how close you got.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should try this
&lt;/h2&gt;

&lt;p&gt;If you are building an AI product and you are stuck on evals because you cannot get to your users yet, this is worth an afternoon. You do not need a research team or a big budget. You need whatever real signal you can gather, a place to put it, and a willingness to let the people closest to the user tell you where you got it wrong.&lt;/p&gt;

&lt;p&gt;Start small. One knowledge base, a handful of personas, one validation pass, one multi-turn conversation generated from a persona you trust. See what comes out. You can make it fancier later, or you may find, like I did, that the basic version already earns its keep.&lt;/p&gt;

&lt;p&gt;Now I am exploring whether the same personas can serve as a regression harness for product improvements. More on that if it pans out.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>evals</category>
      <category>testing</category>
      <category>personas</category>
    </item>
    <item>
      <title>“Where Tech Meets Planet: A Quickstart Glossary for Climate Tech - Curious”</title>
      <dc:creator>Kate Pond</dc:creator>
      <pubDate>Thu, 24 Apr 2025 05:13:12 +0000</pubDate>
      <link>https://dev.to/ohkpond/where-tech-meets-planet-a-quickstart-glossary-for-climate-tech-curious-5364</link>
      <guid>https://dev.to/ohkpond/where-tech-meets-planet-a-quickstart-glossary-for-climate-tech-curious-5364</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Fupsuoxdi2w29whnc1wh3.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.amazonaws.com%2Fuploads%2Farticles%2Fupsuoxdi2w29whnc1wh3.png" alt="Wetlands in Western Washington" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌿 Start Here: What Is Climate Tech?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Climate tech&lt;/strong&gt; refers to technologies that reduce greenhouse gas emissions or help people adapt to the effects of climate change. That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software for tracking carbon emissions
&lt;/li&gt;
&lt;li&gt;Hardware like smart sensors or solar panels
&lt;/li&gt;
&lt;li&gt;Tools that help protect biodiversity and ecosystems
&lt;/li&gt;
&lt;li&gt;Platforms that connect people to climate action and jobs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it’s not just for scientists or environmental orgs, it needs &lt;strong&gt;designers, devs, analysts, writers, community builders, and dreamers&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What’s That Mean? — A Tiny Climate Glossary
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Carbon Accounting
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Tracking how much carbon a product, company, or activity emits.&lt;/em&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think of it like a budget, but for the atmosphere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Mitigation vs Adaptation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Mitigation&lt;/strong&gt; = slowing down climate change (e.g. reducing emissions)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Adaptation&lt;/strong&gt; = dealing with its effects (e.g. flood-proofing cities)&lt;/p&gt;

&lt;h3&gt;
  
  
  Regenerative
&lt;/h3&gt;

&lt;p&gt;A step beyond “sustainable.” It means designing systems that &lt;em&gt;restore&lt;/em&gt;, not just &lt;em&gt;maintain&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Greenwashing
&lt;/h3&gt;

&lt;p&gt;When something is marketed as eco-friendly... but it’s mostly vibes. Learn to spot it.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Communities &amp;amp; Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Communities to Join
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🌱 &lt;a href="https://9zero.com/" rel="noopener noreferrer"&gt;9Zero&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;🌎 &lt;a href="https://www.workonclimate.org/" rel="noopener noreferrer"&gt;Work on Climate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🛠 &lt;a href="https://climatebase.org/" rel="noopener noreferrer"&gt;Climatebase&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎙 &lt;a href="https://www.mcjcollective.com/" rel="noopener noreferrer"&gt;My Climate Journey&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Job Boards &amp;amp; Learning
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://jobs.mcjcollective.com/" rel="noopener noreferrer"&gt;MCJ Job Board&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techjobsforgood.com/" rel="noopener noreferrer"&gt;Tech Jobs for Good&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.climatedraft.org/" rel="noopener noreferrer"&gt;Climate Draft&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.terra.do/" rel="noopener noreferrer"&gt;Terra.do&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Want to listen instead?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.volts.wtf/" rel="noopener noreferrer"&gt;Volts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔍 Where Tech Meets Planet: Examples
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tech Skill&lt;/th&gt;
&lt;th&gt;Climate Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend Dev&lt;/td&gt;
&lt;td&gt;APIs for emissions tracking platforms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UX Design&lt;/td&gt;
&lt;td&gt;Interfaces for electric grid visualization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Analytics&lt;/td&gt;
&lt;td&gt;Mapping climate risks by neighborhood&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI/ML&lt;/td&gt;
&lt;td&gt;Forecasting wildfires or extreme heat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storytelling&lt;/td&gt;
&lt;td&gt;Helping people &lt;em&gt;care&lt;/em&gt;, not just understand&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💬 Let’s Connect
&lt;/h2&gt;

&lt;p&gt;I used to be a park ranger. Now I’m a software engineer building systems that (I hope) make the world a little better. If you're curious, overwhelmed, excited, or unsure, I'm happy to chat.&lt;/p&gt;

&lt;p&gt;🌱 &lt;a href="https://thepondsedge.com/" rel="noopener noreferrer"&gt;Find me at The Pond's Edge&lt;/a&gt;&lt;br&gt;
💌 &lt;a href="https://www.linkedin.com/in/katepond/" rel="noopener noreferrer"&gt;Message me on LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>climatetech</category>
      <category>techforgood</category>
      <category>sustainability</category>
    </item>
  </channel>
</rss>
