<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: remolacha</title><link>https://news.ycombinator.com/user?id=remolacha</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 12:17:05 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=remolacha" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by remolacha in "Ask HN: Who is hiring? (February 2026)"]]></title><description><![CDATA[
<p>Mesa | San Francisco - On-site | Software Engineers (Senior+) | <a href="https://mesa.dev/" rel="nofollow">https://mesa.dev/</a><p>Mesa is building GitHub for AI Agents. We create new kinds of infrastructure and human interfaces for AI-driven software development. We are currently a team of 7 (all engineers), looking to add a few more highly autonomous SWEs.<p>Comp: $180k - $275k, 0.2% - 2% equity<p>Sound like a good fit? Email founders@mesa.dev</p>
]]></description><pubDate>Mon, 02 Feb 2026 19:31:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46860157</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46860157</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46860157</guid></item><item><title><![CDATA[Coding agents are a new infrastructure primitive]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.mesa.dev/blog/coding-agents-are-infra">https://www.mesa.dev/blog/coding-agents-are-infra</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46804217">https://news.ycombinator.com/item?id=46804217</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 29 Jan 2026 00:58:55 +0000</pubDate><link>https://www.mesa.dev/blog/coding-agents-are-infra</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46804217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46804217</guid></item><item><title><![CDATA[Using an expensive model made our agent 75% cheaper]]></title><description><![CDATA[
<p>Article URL: <a href="https://twitter.com/bwarrn/status/2013761508942192788">https://twitter.com/bwarrn/status/2013761508942192788</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46699378">https://news.ycombinator.com/item?id=46699378</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 20 Jan 2026 23:58:31 +0000</pubDate><link>https://twitter.com/bwarrn/status/2013761508942192788</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46699378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46699378</guid></item><item><title><![CDATA[Agentblame: Line-level AI attribution using Git notes]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/mesa-dot-dev/agentblame">https://github.com/mesa-dot-dev/agentblame</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46662555">https://news.ycombinator.com/item?id=46662555</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 17 Jan 2026 22:02:21 +0000</pubDate><link>https://github.com/mesa-dot-dev/agentblame</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46662555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46662555</guid></item><item><title><![CDATA[New comment by remolacha in "Using Git to attribute AI-generated code"]]></title><description><![CDATA[
<p>OP here.<p>We recently open-sourced a small tool we built internally to help answer a question we couldn't find a good solution for:
How do you evaluate AI coding agents on a real production codebase?<p>Like most teams, we had lots of opinions about which agents and models "felt" best, but no hard data. The missing piece wasn’t analysis; it was attribution. We needed to know which lines of code were written by which agent/model, without changing how engineers work.<p>The key insight was that Git already gives us most of what we need.<p>By reverse-engineering how tools like Cursor and Claude Code modify files, we attach attribution metadata directly to Git whenever an AI agent edits code. Engineers don’t have to opt in or change their workflows.<p>Once that data exists, we can run fairly simple queries to answer questions like:<p>- merged lines per dollar by agent/model<p>- bug rates correlated with AI-generated code<p>- how different developers actually use AI in practice<p>An unexpected side effect was code review: once we surfaced AI attribution in pull requests, reviews got faster because reviewers could focus on AI-generated code in sensitive areas.<p>We've open-sourced the data capture layer and code review extension so other teams can experiment with this approach. For us, the most valuable part wasn't which agent "won," but finally having a way to measure it at all.<p>Happy to answer questions or hear critiques.</p>
]]></description><pubDate>Thu, 15 Jan 2026 21:12:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46639383</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46639383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46639383</guid></item><item><title><![CDATA[Using Git to attribute AI-generated code]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/mesa-dot-dev/agentblame">https://github.com/mesa-dot-dev/agentblame</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46639348">https://news.ycombinator.com/item?id=46639348</a></p>
<p>Points: 5</p>
<p># Comments: 2</p>
]]></description><pubDate>Thu, 15 Jan 2026 21:09:12 +0000</pubDate><link>https://github.com/mesa-dot-dev/agentblame</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=46639348</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46639348</guid></item><item><title><![CDATA[New comment by remolacha in "How to Visualize Your Python Project's Dependency Graph"]]></title><description><![CDATA[
<p>looks cool. do you have any case studies of people using this for big refactors?</p>
]]></description><pubDate>Sat, 25 Jan 2025 00:56:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42818433</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42818433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42818433</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: Visprex – Open-source, in-browser data visualisation tool for CSV files"]]></title><description><![CDATA[
<p>not quite what you're describing, but I open-sourced a fuzzy deduplication tool last week: <a href="https://dedupe.it" rel="nofollow">https://dedupe.it</a>
Would be interested in expanding it to deal with data cleaning more broadly</p>
]]></description><pubDate>Sun, 10 Nov 2024 01:08:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42097918</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42097918</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42097918</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: One-Click CSV Deduplication (open-source)"]]></title><description><![CDATA[
<p>Appreciate the kind words! Linear scaling in terms of speed and cost. We haven't yet optimized the prompts & choice of model to minimize token usage, so I'd recommend emailing us for advice if you want to run this on a large dataset</p>
]]></description><pubDate>Wed, 06 Nov 2024 16:40:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42064948</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42064948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42064948</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: Fuzzy deduplicate any CSV using vector embeddings"]]></title><description><![CDATA[
<p>Thanks! Yeah, we'd do a GSheet extension if there's enough interest. Privacy-wise, we don't store any data. Local-only isn't a priority, but should be easy to self-host if you take a look at the Github README.</p>
]]></description><pubDate>Wed, 06 Nov 2024 16:33:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=42064814</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42064814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42064814</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: Fuzzy deduplicate any CSV using vector embeddings"]]></title><description><![CDATA[
<p>Very cool :) I initially tried something like this, but had trouble getting reliable results without tuning my distance functions to the specific schema & domain. Did you find a way around that?</p>
]]></description><pubDate>Wed, 06 Nov 2024 16:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=42064782</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42064782</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42064782</guid></item><item><title><![CDATA[Show HN: One-Click CSV Deduplication (open-source)]]></title><description><![CDATA[
<p>I made an app to fuzzy-deduplicate my Google Sheets and CRM records<p>- No manual configuration required
- Works out-of-the-box on most data types (ex. people, companies, product catalog)<p>Implementation details:<p>- Embeds records using an E5 model
- Performs similarity search using DuckDB w/ vector similarity extension
- Does last-mile comparison and merges duplicates using Claude<p>Demo video: <a href="https://youtu.be/7mZ0kdwXBwM" rel="nofollow">https://youtu.be/7mZ0kdwXBwM</a><p>Github repo (Apache 2.0 licensed): <a href="https://github.com/SnowPilotOrg/dedupe_it">https://github.com/SnowPilotOrg/dedupe_it</a><p>Lmk any feedback on how to make this better!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42064724">https://news.ycombinator.com/item?id=42064724</a></p>
<p>Points: 4</p>
<p># Comments: 2</p>
]]></description><pubDate>Wed, 06 Nov 2024 16:28:30 +0000</pubDate><link>https://app.dedupe.it</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42064724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42064724</guid></item><item><title><![CDATA[Show HN: Fuzzy deduplicate any CSV using vector embeddings]]></title><description><![CDATA[
<p>I made an app to fuzzy-deduplicate my Google Sheets and CRM records<p>- No manual configuration required<p>- Works out-of-the-box on most data types (ex. people, companies, product catalog)<p>Implementation details:<p>- Embeds records using an E5-family model<p>- Performs similarity search using DuckDB w/ vector similarity extension<p>- Does last-mile comparison and merges duplicates using Claude<p>Demo video: <a href="https://youtu.be/7mZ0kdwXBwM" rel="nofollow">https://youtu.be/7mZ0kdwXBwM</a><p>Github repo (Apache 2.0 licensed): <a href="https://github.com/SnowPilotOrg/dedupe_it">https://github.com/SnowPilotOrg/dedupe_it</a><p>Background story: My company has a table for tracking leads, which includes website visitors, demo form submissions, app signups, and manual entries. It’s full of duplicates. And writing formulas to merge those dupes has been a massive PITA.<p>I figured that an LLM could handle any data shape and give me a way to deal with tricky custom rules like “treat international subsidiaries as distinct from their parent company”.<p>The challenging thing was avoiding an NxN comparison matrix. The solution I came up with was first narrowing down our search space using vector embeddings + semantic similarity search, and then using a generative LLM only to compare a few nearest neighbors and merge.<p>Some cool attributes of this approach:<p>- Can work incrementally (no reprocessing the entire dataset)<p>- Allows processing all records in parallel<p>- Composes with deterministic dedupe rules<p>Lmk any feedback on how to make this better!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42044962">https://news.ycombinator.com/item?id=42044962</a></p>
<p>Points: 5</p>
<p># Comments: 5</p>
]]></description><pubDate>Mon, 04 Nov 2024 19:07:03 +0000</pubDate><link>https://app.dedupe.it</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42044962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42044962</guid></item><item><title><![CDATA[New comment by remolacha in "Launch HN: Patched (YC S24) – AI workflows for post-code tasks"]]></title><description><![CDATA[
<p>Congrats on the launch! One piece of feedback - I find the tagline confusing. I had no idea what "post-code tasks" meant until I clicked around and saw a few examples.</p>
]]></description><pubDate>Thu, 31 Oct 2024 23:49:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=42012706</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=42012706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42012706</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: Open-source low-code email editor"]]></title><description><![CDATA[
<p>Congrats guys, this looks great. Definitely would've used Dittofeed for some previous projects.</p>
]]></description><pubDate>Thu, 24 Oct 2024 05:08:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=41932116</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41932116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41932116</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: InstantDB – A Modern Firebase"]]></title><description><![CDATA[
<p>@stopachka, sorry for late reply. I've mostly provided my ideal API in the posts above. I think my answer to transactions and forgetting save is to offer a few options, as in ActiveRecord. From what I recall, Rails gives a few ways to make persistent changes:<p>1. Assign, then save. AFAIK, this is effectively transactional if you're saving a single object, since it's a single `UPDATE` statement in sql. If you assigned to a related object, you need to save that separately.<p>2. Use ActiveRecord functions like `post.update({title: "foo", content: "Lorem ipsum"})`. This assigns to the in-memory object and also kicks off a request to the DB. This is basically syntax sugar over assigning and then calling `save()`, but addresses the issue around devs forgetting to call `save()` after assigning. In Rails, this is used in 90% of cases.<p>3. I can also choose to wrap mutations in a transaction if I'm mutating multiple proxy objects, and I need them to succeed/fail as a group. This is rarely used, but sometimes necessary. For example, in Rails, I can write something along the lines of this:<p>```rb<p>ActiveRecord.transaction do<p><pre><code>  post.title = "Foo"

  post.author.name = "John Smith"

  post.save()

  post.author.save()
</code></pre>
end<p># Alternatively, using the `update()` syntax<p>ActiveRecord.transaction do<p><pre><code>  post.update({ title: "Foo" })

  post.author.update( { name: "John Smith" })
</code></pre>
end<p>```<p>This gives transactional semantics around anything happening inside of the `do` block. I think the syntax would look very similar in javascript, for example:<p>```js<p>transaction(() => {<p><pre><code>  post.update({ title: "Foo" })

  post.author.update( { name: "John Smith" })
</code></pre>
})<p>```</p>
]]></description><pubDate>Sat, 24 Aug 2024 07:28:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=41336325</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41336325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41336325</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: InstantDB – A Modern Firebase"]]></title><description><![CDATA[
<p>Maybe a dumb question, but why do I have to wrap in `db.transact` and `tx.*`? Why can't I just have a proxy object that handles that stuff under the hood?<p>Naively, it seems more verbose than necessary.<p>Also, I like that in Rails, there are ways to mutate just in memory, and then ways to push the change to DB. I can just assign, and then changes are only pushed when I call `save()`. Or if I want to do it all-in-one, I can use something like `.update(..)`.<p>In the browser context, having this separation feels most useful for input elements. For example, I might have a page where the user can update their username. I want to simply pass in a value for the input element (controlled input)<p>ex.<p>```jsx<p><input
  value={user.name}
  ...
/><p>```<p>But I only want to push the changes to the db (save) when the user clicks the save button at the bottom of the page.<p>If any changes go straight to the db, then I have two choices:<p>1. Use an uncontrolled input element. This is inconvenient if I want to use something like Zod for form validation<p>2. Create a temporary state for the WIP changes, because in this case I don't want partial, unvalidated/unconfirmed changes written to either my local or remote db.</p>
]]></description><pubDate>Thu, 22 Aug 2024 20:20:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=41324061</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41324061</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41324061</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: InstantDB – A Modern Firebase"]]></title><description><![CDATA[
<p>I really want an ActiveRecord-like experience.<p>In ActiveRecord, I can do this:<p>```rb<p>post = Post.find_by(author: "John Smith")<p>post.author.email = "john@example.com"<p>post.save<p>```<p>In React/Vue/Solid, I want to express things like this:<p>```jsx<p>function BlogPostDetailComponent(...) {<p><pre><code>  // `subscribe` or `useSnapshot` or whatever would be the hook that gives me a reactive post object

  const post = subscribe(Posts.find(props.id));

  function updateAuthorName(newName) {
    // This should handle the join between posts and authors, optimistically update the UI

    post.author.name = newName;

    // This should attempt to persist any pending changes to browser storage, then
    // sync to remote db, rolling back changes if there's a failure, and
    // giving me an easy way to show an error toast if the update failed. 

    post.save();
  } 

  return (
    <>
      ...
    </>
  )</code></pre>
}<p>```<p>I don't want to think about joining up-front, and I want the ORM to give me an object-graph-like API, not a SQL-like API.<p>In ActiveRecord, I can fall back to SQL or build my ORM query with the join specified to avoid N+1s, but in most cases I can just act as if my whole object graph is in memory, which is the ideal DX.</p>
]]></description><pubDate>Thu, 22 Aug 2024 20:00:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=41323905</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41323905</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41323905</guid></item><item><title><![CDATA[New comment by remolacha in "Show HN: InstantDB – A Modern Firebase"]]></title><description><![CDATA[
<p>This is awesome. I know that a lot of people are looking for something like the Linear sync engine.<p>I appreciate that you're thinking about relational data and about permissions. I've seen a bunch of sync engine projects that don't have a good story for those things.<p>imo, the more that you can make the ORM feel like ActiveRecord, the better.</p>
]]></description><pubDate>Thu, 22 Aug 2024 18:02:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=41322841</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41322841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41322841</guid></item><item><title><![CDATA[New comment by remolacha in "Launch HN: Airhart Aeronautics (YC S22) – A modern personal airplane"]]></title><description><![CDATA[
<p>This is so epic. One of the fundamental challenges in mainstreaming personal aviation is the difficulty of learning to fly. If you can make it 10x easier, it will be a massive step forward. Good luck and congrats on the progress so far!</p>
]]></description><pubDate>Mon, 05 Aug 2024 19:36:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=41164660</link><dc:creator>remolacha</dc:creator><comments>https://news.ycombinator.com/item?id=41164660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41164660</guid></item></channel></rss>