<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>#ditto posts — Ben Crowder</title>
    <link>https://bencrowder.net/blog/tag/ditto/</link>
    <atom:link href="https://bencrowder.net/blog/tag/ditto/feed/" rel="self" />
    <description>Feed for blog posts tagged with #ditto.</description>
    <lastBuildDate>Fri, 17 Apr 2026 23:19:59 GMT</lastBuildDate>
    <language>en-US</language>
    <generator>https://bencrowder.net/</generator>

    <item>
      <title>Ditto intro</title>
      <link>https://bencrowder.net/blog/2020/ditto-intro/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2020/ditto-intro/</guid>
      <pubDate>Sun, 02 Aug 2020 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p><em>Another entry in the <a href="https://bencrowder.net/blog/2020/910/">tedious series</a> about my personal productivity tools.</em></p>
<p>Ditto is my transcription app. It’s a Python app using FastAPI for the web parts.</p>
<h2 id="overview">Overview</h2>
<p>The goal with Ditto is to take scans (usually of journals) and make it easy to transcribe them a page at a time. Same idea as <a href="https://bencrowder.net/blog/tag/unbindery">Unbindery</a>, though scaled way, way down: single-user instead of crowdsourced, a simplified workflow, and it only supports one project at a time so I don’t spread my limited transcription time too thin. It looks like this:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/08/ditto-1.png" alt="ditto-1.png" title="ditto-1.png" />
        
      </figure></p>
<p>And there’s an inverted mode, which initially seemed like a great idea (dark mode, basically) but I never actually use it, I think because it’s harder to read:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/08/ditto-2.png" alt="ditto-2.png" title="ditto-2.png" />
        
      </figure></p>
<p>The transcriptions are stored as plain text files in the same directory as the corresponding images.</p>
<h2 id="howiuseditto">How I use Ditto</h2>
<p>I spend a few minutes transcribing journals each morning as part of my daily routine. (As I finish each volume, I pull the transcribed text files off my server, concatenate them, do some minor formatting, and then import them into Vinci.)</p>
<h2 id="thefuture">The future</h2>
<p>When I made Ditto, one of my goals was to make it work well on mobile so I could have a portable transcription station anywhere I went. It has a responsive design that does work on a phone, but the experience is currently slightly awkward (lots of panning), so I tend to only use it on my laptop. At some point I’d like to try to fix that.</p>
<p>Other than that, though, I’m happy with it. It works well. And it’s small — 340 lines of code. (Which makes me inordinately happy. Small tools are the best.)</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Ditto intro">Reply via email</a></p>]]></description>
    </item>
    
  </channel>
</rss>
