<?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>#liszt posts — Ben Crowder</title>
    <link>https://bencrowder.net/blog/tag/liszt/</link>
    <atom:link href="https://bencrowder.net/blog/tag/liszt/feed/" rel="self" />
    <description>Feed for blog posts tagged with #liszt.</description>
    <lastBuildDate>Mon, 24 Aug 2026 16:43:24 GMT</lastBuildDate>
    <language>en-US</language>
    <generator>https://bencrowder.net/</generator>

    <item>
      <title>Homegrown apps retrospective</title>
      <link>https://bencrowder.net/blog/2026/homegrown-apps-retrospective/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2026/homegrown-apps-retrospective/</guid>
      <pubDate>Sat, 08 Aug 2026 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>I know these kinds of posts about internal apps may be less interesting since you can’t actually use any of the mentioned software, but on the off chance that some of the ideas somehow prove useful in some small way to someone, here we go. These apps were all written by hand, by the way, no AI involved. I should probably include updated screenshots, but then I might never actually get around to posting this, so we’re going purely verbal for now. In alphabetical order:</p>
<p><a href="https://bencrowder.net/blog/tag/bookshelf/">Bookshelf</a>, my reading tracker, which I’ve been using pretty much daily over the past fifteen years to keep track of which page I’m on in each book and also (via the automatically generated stats) as strong motivation to reach my per-day and per-book page count reading goals. I love it. No plans to move to something else.</p>
<p><a href="https://bencrowder.net/blog/tag/cast/">Cast</a>, my static site generator, used to build this site for the last year and a half. Glad I finally put in the time to make this happen, because I love static files and having fewer moving parts, and I’ve been very happy with Cast itself. No plans to move to a third-party SSG like Origami or Hugo. (Nothing against those, to be clear.)</p>
<p><a href="https://bencrowder.net/blog/tag/codex/">Codex</a>, my notes app, which I use daily to track which books I want to read, notes on house and car maintenance, tracking progress on my journal transcription work, story outlines, genealogy research notes, blog drafts (I’m writing this post in it), and more. I like it a lot, but lately I’ve gotten back into taking notes by hand in my Field Notes and other pocket notebooks (as mentioned in the last links post, and probably in other posts before that), and I’m now figuring out when I want to use this app vs. paper notes. Long-lived notes that I modify a lot over time still seem like a better fit for digital, for example. Anyway, no immediate plans to move to something else, though I imagine more types of notes will probably move to paper over time.</p>
<p><a href="https://bencrowder.net/blog/tag/digest/">Digest</a>, my static RSS reader. It’s been six months so far, and this way of reading feeds still works really well on my brain — the self-contained nature of bundling posts by day is soothing, and instead of feeling anxious that I need (“need,” I should say) to keep up with an endless stream of new posts, I feel like I can read at whatever pace I want to, which usually ends up being every few days instead of daily. I love that each day is its own static HTML file that I rsync up to my server. I also have really loved reading posts on their original sites instead of in a homogeneous design of my own make. Feels much more human and more delightful.</p>
<p><a href="https://bencrowder.net/blog/tag/gate/">Gate</a>, my quick entry app. I use it dozens of times a day to send to-dos to Liszt and journal notes/entries to Leaf, and it’s working really well. No plans to move away from it.</p>
<p><a href="https://bencrowder.net/blog/tag/leaf/">Leaf</a>, my journal app, where I keep my daily journal and my project logs. While it’s tempting to write paper journals again, I’ve been transcribing my older journals and it’s nice being able to read older entries and search through all of them to find out when something happened, and I don’t see myself wanting to give that up. The app automatically exports each day’s entries to a day-specific text file for extra preservation beyond the database itself, which I love and plan to do in other applicable apps of mine. No plans to move to something else, though I do write some types of entries in my Field Notes.</p>
<p><a href="https://bencrowder.net/blog/tag/liszt/">Liszt</a>, my to-do list app, which I use dozens of times a day, and it’s working well. I love being able to quickly add items via Gate, including multiple items at a time (each on its own line). I love the text-based annotations. (<code>Write that blog post ! #writing 5m</code> marks it as important, tags it, and indicates I should spend five minutes on it.) I love having my daily routine autopopulated in the list each morning. All of that said, however, I do find myself thinking about going back to pen and paper for to-do lists, because I don’t know that I strictly <em>need</em> any of the extra functionality the app is giving me. Also, for the past few years I’ve been using a plain text Markdown file on my work laptop for my work to-do list, and that same model could easily work for my projects where I’m almost always working on them mainly on my laptop. In fact, as I write these words I’m now remembering that when I was younger I used to keep my to-do lists as plain text files. (Part of these thoughts, by the way, come from wanting to move more analogward, and part come from wanting fewer dependencies, fewer moving parts, fewer things to maintain on my server.) Not sure yet what I’ll do.</p>
<p><a href="https://bencrowder.net/blog/tag/momentum/">Momentum</a>, my time tracker, which I use daily to track time (go figure) for scripture study and conference talk study and, primarily, to make sure I’m walking enough each day (for my back pain). It’s nice being able to just tap a button to start or stop tracking, and to see the recent history of how much time I’ve spent per category, but I’ve also been thinking I could probably do this via pen and paper, or via the stopwatch on my phone. We’ll see.</p>
<p><a href="https://bencrowder.net/blog/tag/saturn/">Saturn</a>, my quick launcher web page, which I use daily for fast access to notes and other bookmarks and as a quick search entry point — I type in a query and then choose where I want to search (my journal, Project Gutenberg, Standard Ebooks, eReaderIQ, my library, etc.). Works great, love it, no plans to move to something else.</p>
<p><a href="https://bencrowder.net/blog/tag/scroll/">Scroll</a>, my ebook reader. An absolute win in my book. It’s been almost two years now and I still love it and use it almost every day and wish I’d made the move earlier. I love having full typographic control, bleedthrough and paper backgrounds, autoscroll (and scrolling in general, instead of swiping), and the lightweight feel of knowing it’s just static HTML files with some JavaScript. There are admittedly some things I still want to fix — changing pagination from percentage-based (which is unstable across font changes) to statically built in (which has the extra advantage of being usable in other apps and devices, like the Xteink X4) (which I got for my birthday, by the way; been meaning to post about it), and using publisher styles instead of overriding everything like the madman that I am — but overall I’d say it’s perhaps my favorite among all the things I’ve built.</p>
<p><a href="https://bencrowder.net/blog/tag/storybook/">Storybook</a>, my fiction writing app. It’s working fine, though I don’t use it often enough — and wish I did, so I would be finishing stories more often. The daily word count tracking is nice. Per that Neal Stephenson link earlier today, though, the idea of writing more by hand has intrigued me, and if I do that (and even if I don’t), I think plain text files are fully adequate for story drafts. (As opposed to using a database in an app.) So&hellip;we’ll see.</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%20Homegrown apps retrospective">Reply by email</a></p>]]></description>
    </item>
    <item>
      <title>Since the phone is now the window to the soul, here’s my current home screen: Things of possible int...</title>
      <link>https://bencrowder.net/blog/2021/1260/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2021/1260/</guid>
      <pubDate>Fri, 20 Aug 2021 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>Since the phone is now the window to the soul, here’s my current home screen:</p>
<p><figure>
        <a href="https://cdn.bencrowder.net/blog/2021/08/iphone-home-screen.png"><img src="https://cdn.bencrowder.net/blog/2021/08/iphone-home-screen.png" alt="iphone-home-screen.png" title="iphone-home-screen.png" /></a>
        
      </figure></p>
<p>Things of possible interest (or more likely imminent boredom):</p>
<ul>
<li>30 Seconds is a system shortcut I made that starts a thirty-second timer, which I use for my physical therapy exercises morning and night (I used to use a third-party app until I realized I didn’t need one)</li>
<li>Projectile (an app version of my <a href="https://bencrowder.net/project-tracker/">project tracker</a>), Bookshelf (reading tracker), Slash (blog engine), Storybook (writing app), Momentum (time tracker), and Liszt (to-do list) are all PWAs I’ve built</li>
<li>While it’s kind of weird (they’re the same exact app), I love that Marvin SxS is on the App Store alongside Marvin; I use the dark-background Marvin for fiction and the white-background Marvin for nonfiction</li>
<li>From left, the three bottom apps in the dock are Codex (notes app), Saturn (launcher), and Gate (Drafts clone), which are also PWAs I’ve built, and clearly I have a problem</li>
<li>I currently have 136 tabs open in mobile Safari, and clearly I have two problems</li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Since the phone is now the window to the soul, here’s my current home screen: Things of possible int...">Reply by email</a></p>]]></description>
    </item>
    <item>
      <title>Momentum intro</title>
      <link>https://bencrowder.net/blog/2020/momentum-intro/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2020/momentum-intro/</guid>
      <pubDate>Sun, 09 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/">neverending series</a> talking about my personal productivity tools.</em></p>
<p>Momentum is my daily goal app, for keeping a goal chain/streak going. It’s a Python app running Django. The name comes from the momentum that a long streak gives.</p>
<h2 id="overview">Overview</h2>
<p>Goals can be either binary flags (whether I did it that day or not) or timed (in which case Momentum keeps track of the time spent). The default mode is focus mode, which shows only the top unfinished goal at a time and looks like this (with dummy data):</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/08/momentum-1.png" alt="momentum-1.png" title="momentum-1.png" />
        
      </figure></p>
<p>The thin red line along the top is a progress bar showing how close I am to finishing my Momentum goals for the day. The red boxes show the last few weeks of the streak, the green box at the right is the button for saying I’ve completed that goal for the day, and the blue text under the goal name shows how long the total streak is.</p>
<p>When focus mode is off, it looks like this:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/08/momentum-2.png" alt="momentum-2.png" title="momentum-2.png" />
        
      </figure></p>
<p>You can see a partially completed timed goal along with a binary goal. Momentum also supports ignoring goals for Saturdays and/or Sundays (the gray boxes among the red), which I use for things I don’t usually do on the weekends.</p>
<p>When the timer on a goal is running, the favicon changes and the page looks like this, with the pink box at right showing the elapsed time for the current session:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/08/momentum-3.png" alt="momentum-3.png" title="momentum-3.png" />
        
      </figure></p>
<p>(The idea with the timer is that it may take multiple sessions spread throughout the day to meet the daily goal, by the way — if I wanted to make sure I spend an hour writing each day but don’t usually have time to do it all in one block, for example.)</p>
<h2 id="howiusemomentum">How I use Momentum</h2>
<p>On my laptop, I have Momentum open in Firefox as a pinned tab. On my phone, I have it saved to my homescreen as a PWA.</p>
<p>I use Momentum every day for my morning routine, primarily on my phone. The goals I put into it (as opposed to just adding things to my to-do list in Liszt) are things I want to do each day and, to some degree, are things I might not do if I didn’t have a streak pushing me forward (thus “Momentum”).</p>
<h2 id="thefuture">The future</h2>
<p>I’m happy with the app as it is, but I’ve been thinking about merging it into Liszt, since goals like these are fundamentally to-do items. (Every morning Liszt already automatically adds all the items in my  ::streak list to my ::today list, so that I can work off my to-do list without necessarily having to go back to Momentum as much.)</p>
<p>Giving Liszt items the ability to be timed is already in place with belt mode, so I’d just need to add the ability to keep track of both partially finished goals and total streaks. Seems worthwhile.</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%20Momentum intro">Reply by email</a></p>]]></description>
    </item>
    <item>
      <title>Liszt intro</title>
      <link>https://bencrowder.net/blog/2020/liszt-intro/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2020/liszt-intro/</guid>
      <pubDate>Thu, 30 Jul 2020 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p><em>First in the <a href="https://bencrowder.net/blog/2020/910/">series</a> introducing my personal productivity tools. Buckle up, this is going to be nerdy. And long.</em></p>
<p>Liszt is my to-do list app. Named after the composer, though I regret it a little since I butcher his name by pronouncing it <em>lisht</em> to differentiate it from the ordinary <em>list</em>. Heresy. The next version will have a better name, though. It’s a Python app running on Django.</p>
<p>Disclaimer: I don’t think this app is perfect. (Or any of the other tools I’ll talk about, for that matter.) I’ll describe things as they are, acknowledging here that there’s a lot of room for improvement.</p>
<h2 id="overview">Overview</h2>
<p>This is what the dashboard looks like, populated with some dummy data:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-1.png" alt="liszt-1.png" title="liszt-1.png" />
        
      </figure></p>
<p>And on mobile, where the controls move to the bottom for easier access:</p>
<p><figure class="clampvert">
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-1mobile.png" alt="liszt-1mobile.png" title="liszt-1mobile.png" />
        
      </figure></p>
<p>The top bit is my stats panel, with the data pulled in from my other tools’ APIs. Daily writing counts, daily words left, total words written on the novel (all three from Storybook), daily pages left (from Bookshelf), and daily goals left (from Momentum). I’ll cover those tools later.</p>
<p>There’s also a slide-in menu on the side, with my most commonly used top-level lists:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-2.png" alt="liszt-2.png" title="liszt-2.png" />
        
      </figure></p>
<p>Double-clicking on a list item opens up an edit panel, which also allows me to move the item to another list with some commonly used lists included as buttons (this whole panel is kind of clunky and needs improvement):</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-7.png" alt="liszt-7.png" title="liszt-7.png" />
        
      </figure></p>
<h2 id="payloadsyntax">Payload syntax</h2>
<p>The basic idea behind Liszt (and this is common to many of my apps) is the text-based payload, which enables some nice cross-app integrations (more on this when I cover Gate and Quill). Adding items looks like this:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-3.png" alt="liszt-3.png" title="liszt-3.png" />
        
      </figure></p>
<p>A Liszt payload (the text entered into the add tray) has one item per line, with optional blank lines and optional list specifiers. If there’s no specifier, it’ll assume the current list if there is one, otherwise it’ll default to <code>::inbox</code>. (I use the double-colon prefix to mark lists, with a slash to specify sublists.) Here’s a fuller example of the syntax, again with dummy data:</p>
<pre><code>Process email :5
Review the merge requests :10

::work/notifications
Read up on Python futures ::: https://docs.python.org/3/library/concurrent.futures.html
Refactor [::work/notifications/refactor]
Write up the design doc
</code></pre>
<p>The first two items (which have belt-mode durations, I’ll explain those in a minute) would go into the <code>::today</code> list (which is the dashboard list). The last three items would go into the <code>::work/notifications</code> list, as pictured here:</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-3b.png" alt="liszt-3b.png" title="liszt-3b.png" />
        
      </figure></p>
<p>Of these, the first line sets a subtitle by putting it after the triple-colon marker. I use this all the time.</p>
<p>The second line is a symlink of sorts, pulling in the top item from the linked list (different meaning here) and showing it in place, with the <code>Refactor</code> text shown as the subtitle. I used to use this more often but haven’t as much lately.</p>
<p>You can also see that this list has a child list (<code>::work/notifications/refactor</code>).</p>
<h2 id="beltmode">Belt mode</h2>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-4.png" alt="liszt-4.png" title="liszt-4.png" />
        
      </figure></p>
<p>If an item has a duration marker included, that triggers belt mode (ala conveyer belts), as evidenced by the new bar at the top of the screen in the image above.</p>
<p>Brief backstory: I initially wrote an Electron app called Belt that did the same sort of thing, then a few months ago ported it to Go as a menubar app. Shortly after I finished that, I realized it would make much more sense in Liszt and brought the functionality in.</p>
<p>And what is that functionality? It’s just an easy way to time tasks from the list. When I hit Start, it switches into belt mode (also changing the favicon so I can tell that it’s running and turning on focus mode so I can only see the task I’m actively working on):</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-5.png" alt="liszt-5.png" title="liszt-5.png" />
        
      </figure></p>
<p>When the timer runs out, it plays a sound and brings up a panel allowing me to continue on to the next item in the list, stop belt mode, or add more time to the timer. (There are also keyboard shortcuts for all of this.)</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2020/07/liszt-6.png" alt="liszt-6.png" title="liszt-6.png" />
        
      </figure></p>
<h2 id="howiuseliszt">How I use Liszt</h2>
<p>On my laptop, I have Liszt open in Firefox as a pinned tab. On my phone, I have it saved to my homescreen as a PWA.</p>
<p>Every morning I go through the main lists and move the items I’m going to work on to the today list. I then work out of the today list the rest of the day, opening it often.</p>
<p>I use belt mode most days, primarily to help me stop avoiding tasks I don’t really want to work on (but that still need to be done).</p>
<h2 id="thefuture">The future</h2>
<p>Lately I’ve grown enamored of the idea of storing data as plain text files in directories, rather than using an actual database like Postgres or Mongo. There are plenty of apps where this doesn’t make sense, but for personal, small tools, it works nicely, so I’m planning to migrate Liszt off SQLite to plain text, and I am very excited about it. Yes, I am that kind of a person.</p>
<p>While Django is fine (we use it at work and I love it), I’m planning to move to FastAPI, which I’m already using for Ditto and Arc. It’s a bit faster and feels more lightweight. I think in my mind I mostly use Django because of the ORM and admin; once I’ve given that up, the baby goes out with the bathwater.</p>
<p>I’m also looking forward to simplifying things, removing vestigial functionality, and sanding down as many of the friction points as I can.</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%20Liszt intro">Reply by email</a></p>]]></description>
    </item>
    
  </channel>
</rss>
