<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>Hog Bay Software</title>
	<subtitle>Hog Bay Software Blog</subtitle>
	
	<link href="https://www.hogbaysoftware.com/feed/feed.xml" rel="self"/>
	<link href="https://www.hogbaysoftware.com/"/>
	<updated>2025-12-12T00:00:00Z</updated>
	<id>https://www.hogbaysoftware.com/</id>
	<author>
		<name>Jesse Grosjean</name>
		<email>jesse@hogbaysoftware.com</email>
	</author>
	
	<entry>
		<title>Mac: Where is Save As?</title>
		<link href="https://www.hogbaysoftware.com/posts/mac-save-as/"/>
		<updated>2025-12-12T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/mac-save-as/</id>
		<content type="html">&lt;p&gt;I’m often asked why Save As… is missing from my apps.&lt;/p&gt;
&lt;p&gt;It isn’t gone, but it has been de-emphasized in favor of the &lt;em&gt;new&lt;/em&gt; Auto Save + Versions system. This change isn’t specific to my apps—it’s part of the macOS platform.&lt;/p&gt;
&lt;h2&gt;History: Save As, Duplicate, and Versions&lt;/h2&gt;
&lt;p&gt;Before 2011, Save As… was how you copied an open document. Choose Save As…, provided a new name and format, and the app wrote a separate file and switched you to it. The process was simple, explicit, and manual.&lt;/p&gt;
&lt;h3&gt;Auto Save and Versions&lt;/h3&gt;
&lt;p&gt;In 2011, Apple introduced OS X 10.7, bringing Auto Save and Versions as part of a new document architecture. Under this system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents are automatically saved as you work&lt;/li&gt;
&lt;li&gt;Versions are created that you can later browse and restore.&lt;/li&gt;
&lt;li&gt;Use Revert To to browse prior versions and restore changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This fundamentally changed the workflow: instead of using “Save As…” to create copies or backups, macOS automatically maintains a history of changes for you.&lt;/p&gt;
&lt;h3&gt;Hidden Save As&lt;/h3&gt;
&lt;p&gt;Old habits die hard. In OS X 10.8, Apple restored Save As… as a hidden option. To see it, hold down the Option key while the File menu is open. It effectively does: Duplicate + Save + Close Original.&lt;/p&gt;
&lt;p&gt;Why might it be hidden? Because when you use Save As… and then use Revert To, you can only see versions from the new document, not the original. This can be confusing.&lt;/p&gt;
&lt;h3&gt;The Modern Workflow&lt;/h3&gt;
&lt;p&gt;On current macOS releases, the main document commands are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Save&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/mac-save-as/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; — happens automatic saving as you work&lt;/li&gt;
&lt;li&gt;Duplicate — create a new document copy in a new window&lt;/li&gt;
&lt;li&gt;Revert To — browse and restore previous versions of a document&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Auto Save + Versions system replaces the classic Save As… workflow. The OS now manages saving and versioning automatically, while still allowing you to access the old manual workflow when desired.&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;When you create a new document, use Save to name it, but you don’t need to make this decision right away. If you quit without saving, the untitled document (with its changes) is still restored next time you open the app&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/mac-save-as/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. &lt;a href=&quot;https://www.hogbaysoftware.com/posts/mac-save-as/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;To complicate things, there are different ways to adopt Auto Save + Versions. Some apps will prompt you to save these untitled documents when you quit, while others (all my apps) will just restore them automatically next time you open the app. &lt;a href=&quot;https://www.hogbaysoftware.com/posts/mac-save-as/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: macOS 26</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-tahoe/"/>
		<updated>2025-09-16T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-tahoe/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; (1.x) runs well on macOS 26 (Tahoe).&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://support.hogbaysoftware.com/t/bike-2-0-preview-242/6147&quot;&gt;Bike Outliner&lt;/a&gt; 2.0 (Preview) also runs well on macOS 26, but I need to adopt the new Liquid Glass UI, and I haven’t decided how I will do that.&lt;/p&gt;
&lt;p&gt;I’m looking for ideas.&lt;/p&gt;
&lt;p&gt;Here’s what Bike 2 looks like today:&lt;/p&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-300.avif 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-600.avif 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-1820.avif 1820w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-300.jpeg&quot; class=&quot;&quot; alt=&quot;Bike 2 Now&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1820&quot; height=&quot;1114&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-300.jpeg 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-600.jpeg 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/Zukd5xDZ14-1820.jpeg 1820w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Note: I almost never run Bike with all UI showing like this!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here’s what Apple’s Notes looks like on macOS 26:&lt;/p&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-300.avif 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-600.avif 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-1884.avif 1884w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-300.jpeg&quot; class=&quot;&quot; alt=&quot;Notes on macOS 26&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1884&quot; height=&quot;1250&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-300.jpeg 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-600.jpeg 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/IWcC9hNvLC-1884.jpeg 1884w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;p&gt;For my taste, this standard macOS 26 Liquid Glass treatment muddies the boundary between UI and content way too much.&lt;/p&gt;
&lt;p&gt;Here’s how ChatGPT imagines Bike 2 on macOS 26:&lt;/p&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-300.avif 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-600.avif 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-1536.avif 1536w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-300.jpeg&quot; class=&quot;&quot; alt=&quot;Bike 2 on macOS 26 (AI Generated)&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1536&quot; height=&quot;1024&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-300.jpeg 300w, https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-600.jpeg 600w, https://www.hogbaysoftware.com/posts/bike-tahoe/LTbHdY0RZn-1536.jpeg 1536w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;p&gt;I kinda like it.&lt;/p&gt;
&lt;p&gt;Or at least I like idea of drawing boundary around content, and leaving the exterior UI flat against the window. The content is clearly separate from the sidebar and inspector. It’s not really Liquid Glass, but I think it could fit in.&lt;/p&gt;
&lt;p&gt;I’m still brainstorming and looking for ideas.&lt;/p&gt;
&lt;p&gt;Let me know what you think!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feedback on my ramblings&lt;/li&gt;
&lt;li&gt;Links to apps that you think adopt glass UI well&lt;/li&gt;
&lt;li&gt;Mockups of how you think Bike 2 could look on macOS 26&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Type, type, type...</title>
		<link href="https://www.hogbaysoftware.com/posts/type-type-type/"/>
		<updated>2024-11-23T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/type-type-type/</id>
		<content type="html">&lt;p&gt;Yikes, it was brought to my attention that I haven’t posted here in over a year :/&lt;/p&gt;
&lt;p&gt;What am I up to?&lt;/p&gt;
&lt;p&gt;I’m still here! Working away on &lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike&lt;/a&gt;, and keeping &lt;a href=&quot;https://www.taskpaper.com/&quot;&gt;TaskPaper&lt;/a&gt; well polished. The &lt;a href=&quot;https://support.hogbaysoftware.com/&quot;&gt;support forums&lt;/a&gt; are still active if you’ve got questions. I just haven’t been posting here.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;For the last year, I’ve been mostly working on Bike 2. It’s a big project, and there’s just not much to show until it’s done. It will get done eventually, but it’s not done yet.&lt;/p&gt;
&lt;p&gt;Bike 2 is pretty much all new code. Expected features include stylesheets, outline filtering, and a foundation for many great new features to come. I’m excited about it, but it’s a lot of work.&lt;/p&gt;
&lt;p&gt;Type, type, type…&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Outline Paths</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-outline-paths/"/>
		<updated>2023-11-07T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-outline-paths/</id>
		<content type="html">&lt;p&gt;Use outline paths to query your &lt;a href=&quot;https://www.hogbaysoftware.com/bike&quot;&gt;Bike&lt;/a&gt; outlines. Today they are used through AppleScript and Shortcuts actions. In the future they will be used to build new features such as stylesheets and outline filtering.&lt;/p&gt;
&lt;article class=&quot;app-card app-header&quot;&gt;
&lt;div class=&quot;app-buttons&quot;&gt;
  &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	&lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	Download
  &lt;/a&gt;
  &lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release Notes&lt;/a&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/882173520?badge=0&amp;amp;autopause=0&amp;amp;quality_selector=1&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner Outline Paths&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;First, it’s not neccessary to understand outline paths to use Bike. They are a foundation technology–can be complex, and are definitaly a bit geeky.&lt;/p&gt;
&lt;p&gt;Outline paths are for users who like to tinker, write scripts, and create themes. I encorage everyone to watch the movie to see what they do, but you are safe to forget the details once you’ve finished.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bikeguide.hogbaysoftware.com/using-bike/using-outline-paths&quot;&gt;Learn more in Bike’s User Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Focus Heading</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-focus-heading/"/>
		<updated>2023-09-07T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-focus-heading/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike&quot;&gt;Bike’s&lt;/a&gt; new “Focus Heading” feature enables fast keyboard navigation.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:64.81% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/862037181?badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Focus Heading&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;h2&gt;Choice Palette&lt;/h2&gt;
&lt;p&gt;Focus Heading uses Bike’s new &lt;a href=&quot;https://bikeguide.hogbaysoftware.com/using-bike/using-the-choice-palette&quot;&gt;choice palette&lt;/a&gt;. This same UI is also used in the new “Format &amp;gt; Add Link to Row” command. I expect I’ll find other uses for it in Bike soon.&lt;/p&gt;
&lt;p&gt;If you are a developer and wondering how it’s so fast… it wasn’t me. I’m using &lt;a href=&quot;https://github.com/helix-editor/nucleo&quot;&gt;nucleo_matcher&lt;/a&gt; for the heavy lifting. It’s extremely fast and has a nice API. I recommend checking it out.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Row Types</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-row-types/"/>
		<updated>2023-08-07T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-row-types/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; adds row types!&lt;/p&gt;
&lt;p&gt;Use row types to add another level of structure and meaning to your outlines. You can now include heading rows, task list rows, ordered list rows, and more.&lt;/p&gt;
&lt;article class=&quot;app-card app-header&quot;&gt;
&lt;div class=&quot;app-buttons&quot;&gt;
  &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	&lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	Download
  &lt;/a&gt;
  &lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release Notes&lt;/a&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/851940525?h=01ead81890&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike: Row Types Intro&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2&gt;Using Row Types&lt;/h2&gt;
&lt;p&gt;The easiest way to use row types is through Bike’s new “smart row types” feature. In a new row, type one of the following markdown inspired shortcuts–followed by a space:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Heading&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Blockquote&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;```&lt;/td&gt;
&lt;td&gt;Code Block&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Note&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;---&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Horizontal Rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;-[]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Task List&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[x]&lt;/code&gt;, &lt;code&gt;-[x]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Task List (completed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;1.&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ordered List&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unordered List&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The shortcut text is replaced and the row type is set. Row types are supported in both &lt;code&gt;.bike&lt;/code&gt; and &lt;code&gt;.opml&lt;/code&gt; outlines. Learn more about row types in Bike’s &lt;a href=&quot;https://bikeguide.hogbaysoftware.com/using-bike/row-types&quot;&gt;user guide&lt;/a&gt;.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Navigation</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-navigation/"/>
		<updated>2023-06-12T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-navigation/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; adds inline navigation buttons so you can zoom through your outline with just your mouse. It also adds a navigation bar with back and forward history and breadcrumbs.&lt;/p&gt;
&lt;article class=&quot;app-card app-header&quot;&gt;
&lt;div class=&quot;app-buttons&quot;&gt;
  &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	&lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	Download
  &lt;/a&gt;
  &lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release Notes&lt;/a&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/834889620?badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Show and correct errors&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;New inline navigation buttons are added after rows with children. Use them to zoom through your outline with just your mouse. They are a nice visual indicator of where you are and where you can go.&lt;/p&gt;
&lt;p&gt;Bike’s new navigation bar makes it easy to go back and forward through your history. It also shows you a breadcrumb trail of where you are in your outline. Click a breadcrumb to navigate from that item.&lt;/p&gt;
&lt;p&gt;The navigation bar is optional. Personally I find it useful it large outlines, but disable it in smaller outlines.&lt;/p&gt;
&lt;h2&gt;License Renewal&lt;/h2&gt;
&lt;p&gt;It’s been a little over a year since Bike 1.0. If you purchased your license more than a year ago you will be prompted to renew your license by this release. I hope you do! I think Bike’s made great progress this year, and I plan to carry that work forward with your support.&lt;/p&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You don’t have to renew your license to keep using older versions of Bike. Your license unlocks those forever.&lt;/li&gt;
&lt;li&gt;Renewal is 50% off the full price and will allow you to unlock an additional year of Bike updates.&lt;/li&gt;
&lt;li&gt;There is no penalty for renewing late. You can renew at any time and get a full year of updates from the date of renewal.&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Hookmark: Bike Companion</title>
		<link href="https://www.hogbaysoftware.com/posts/hookmark-bike-companion/"/>
		<updated>2023-05-09T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/hookmark-bike-companion/</id>
		<content type="html">&lt;p&gt;This month &lt;a href=&quot;https://www.hogbaysoftware.com/bike&quot;&gt;Bike&lt;/a&gt; is partnering with &lt;a href=&quot;https://hookproductivity.com/&quot;&gt;Hookmark&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-300.avif 300w, https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-600.avif 600w, https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-1796.avif 1796w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-300.jpeg&quot; class=&quot;&quot; alt=&quot;Hookmark Screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1796&quot; height=&quot;846&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-300.jpeg 300w, https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-600.jpeg 600w, https://www.hogbaysoftware.com/posts/hookmark-bike-companion/7SKBtTm8Sl-1796.jpeg 1796w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;p&gt;Hookmark is a macOS app for creating links to items: files, todos, mails, and more. These links are deep and bidirectional. The latest Hookmark release is updated to work great with Bike.&lt;/p&gt;
&lt;p&gt;Bike and Hookmark are companions. Use Bike to store and organize links that you’ve created with Hookmark. Use Hookmark to create deep links into specific rows of your Bike outlines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hookproductivity.com/help/integration/bike&quot;&gt;Using Hookmark with Bike&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hookmark 30% Off Coupon&lt;/h2&gt;
&lt;p&gt;Hookmark has as free trial, you can &lt;a href=&quot;https://hookproductivity.com/download/&quot;&gt;download it out now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Use the coupon code “Bike-Outliner” to get 30% off Hookmark’s regular price. This coupon expires May 17th.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Automate with Shortcuts</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/"/>
		<updated>2023-04-18T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; adds Shortcut actions! With Apple’s new &lt;a href=&quot;https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac&quot;&gt;Shortcuts&lt;/a&gt;&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; app you drag and drop actions to create automated workflows. It’s similar in capability to AppleScript, but much easier to get started.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Bike Shortcut Actions&lt;/h2&gt;
&lt;p&gt;Bike provides a complete suite of shortcut actions. You can create, edit, move, and delete rows. You can also search for rows and expand or collapse the outline.&lt;/p&gt;
&lt;p&gt;Here’s what a shortcut looks like. This shortcut saves Safari’s current tab to a “Links” section in your outline. I’ll walk you through part of this shortcut’s creation in the following tutorial.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/SaveLink.shortcut&quot;&gt;Download Shortcut&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-300.avif 300w, https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-600.avif 600w, https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-1248.avif 1248w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-300.jpeg&quot; class=&quot;&quot; alt=&quot;Bike Save Link Shortcut&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1248&quot; height=&quot;900&quot; srcset=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-300.jpeg 300w, https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-600.jpeg 600w, https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/R7qX5ReNRV-1248.jpeg 1248w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;h2&gt;Bike Shortcuts Tutorial&lt;/h2&gt;
&lt;p&gt;In this short tutorial I’ll show you how to create a link and throw in a few tips along the way. I’m still learning this new automation technology. If you have any suggestions, please let me know in the comments.&lt;/p&gt;
&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/817812781?h=e5de6aa394&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;ScreenFlow&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;h2&gt;Bike Shortcuts Examples&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/Cleanup.shortcut&quot;&gt;Cleanup&lt;/a&gt; – Collapse all rows except for the selected row where you are currently working.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/SaveTabs.shortcut&quot;&gt;Save Tabs&lt;/a&gt; – Saves all tabs in the current Safari window into the current Bike outline.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/ShowMatches.shortcut&quot;&gt;Show Matches&lt;/a&gt; – Asks for a search term, and then expands outline to show all rows that contain that search term.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/Today.shortcut&quot;&gt;Today&lt;/a&gt; – Creates a year, month, day outline hierarchy (if needed) for todays date and moves your text caret there so you can start typing.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Shortcuts requires macOS 13 or later and Bike 1.11 or later. &lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Printing + Quicklook + thumbnails</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-printing-quicklook-thumbnails/"/>
		<updated>2023-03-28T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-printing-quicklook-thumbnails/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; now supports printing! It also adds quicklook previews and icon thumbnails for your &lt;code&gt;.bike&lt;/code&gt; files in the Finder.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Screenshot&lt;/h2&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-300.avif 300w, https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-600.avif 600w, https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-2647.avif 2647w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-300.jpeg&quot; class=&quot;&quot; alt=&quot;Printing, Quicklook, Thumbnails&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2647&quot; height=&quot;1260&quot; srcset=&quot;https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-300.jpeg 300w, https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-600.jpeg 600w, https://www.hogbaysoftware.com/img/bike/eD0UglIk5l-2647.jpeg 2647w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;h2&gt;Printing&lt;/h2&gt;
&lt;p&gt;Bike prints the view that you see. Focus into a row and collapse rows to print a smaller part of your outline. Focus out and expand everything to print the whole outline.&lt;/p&gt;
&lt;h2&gt;Quicklook&lt;/h2&gt;
&lt;p&gt;Use Quicklook to see the contents of your &lt;code&gt;.bike&lt;/code&gt; outline without having to open it. To use Quicklook select file in the Finder and press the spacebar.&lt;/p&gt;
&lt;h2&gt;Thumbnails&lt;/h2&gt;
&lt;p&gt;Now when you save Bike will generate a custom thumbnail icon. The thumbnails shows the first page of your outline and adds a “BIKE” label. This makes Bike files a lot easier to spot in the Finder.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Distraction-Free Outlining</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-distraction-free-outlining/"/>
		<updated>2023-03-13T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-distraction-free-outlining/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; now supports full screen mode, typewriter mode, and focus mode. You’ve seen these features before, but not combined with Bike’s speed and fluidiy. Try it out, Bike is different.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/807082150?h=223ca7c4e3&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Show and correct errors&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2&gt;Full Screen Mode&lt;/h2&gt;
&lt;p&gt;Bike now works great in full screen. Text wraps to a specific width and then scales to comfortably fit your window.&lt;/p&gt;
&lt;h2&gt;Typewriter Mode&lt;/h2&gt;
&lt;p&gt;Typewriter mode keeps your text centered on screen while you type. Keep your writing where it’s easy to see.&lt;/p&gt;
&lt;h2&gt;Focus Mode&lt;/h2&gt;
&lt;p&gt;Your own text can be distracting. Dim it out with focus mode to concentrate on just the sentence you are writing.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Word Count &amp; Status Bar</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-word-count-and-status-bar/"/>
		<updated>2023-03-12T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-word-count-and-status-bar/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; now includes word count and a handy status bar. It’s minimal and can be turned off. Use Bike’s new status bar for quick access to some options, navigation status, and text statistics.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Watch the Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/806954173?h=836ce372bb&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Status Bar&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;</content>
	</entry>
	
	<entry>
		<title>Bike: Improved macOS Text Checking</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-improved-text-checking/"/>
		<updated>2022-12-19T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-improved-text-checking/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; now supports autocorrect, substitutions, user replacements, and improved &lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-improved-text-checking/spelling.jpg&quot;&gt;spell checking&lt;/a&gt;! Bike’s text checking interface is custom built, adopting and then improving upon macOS standard behavior.&lt;/p&gt;
&lt;div&gt;
 &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
	   &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
	   Download
 &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Show and correct errors&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/779652865?h=223ca7c4e3&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Show and correct errors&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Showing and correcting spelling errors is surprisingly problematic in most macOS apps. Bike makes this task straight forward.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Incorrect words show immediately&lt;/li&gt;
&lt;li&gt;Correction popups show consistently&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Predictable and reversible autocorrect&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/781557157?h=8fe56f37af&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Predictable and reversible autocorrect&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Autocorrect is a challenging feature. While useful, it will always be wrong or unwanted some of the time. How to design a useful feature that will sometimes be wrong?&lt;/p&gt;
&lt;p&gt;The standard macOS approach is to limit the unwanted cases at the cost of making the system more complex and unpredictable. In my mind this isn’t a good tradeoff. Autocorrect is still wrong sometimes, but now you also have a system that’s hard to predict and understand.&lt;/p&gt;
&lt;p&gt;Bike’s approach is different. It expects autocorrection to be wrong sometimes and optimizes the system make corrections predictable, visible, and easy to undo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autocorrect only depends on caret position and text&lt;/li&gt;
&lt;li&gt;Autocorrect doesn’t show completions as you type&lt;/li&gt;
&lt;li&gt;Autocorrect is disabled in code formatted text&lt;/li&gt;
&lt;li&gt;Autocorrect’s blue underline shows for current sentence&lt;/li&gt;
&lt;li&gt;Undo removes only the autocorrection, never your typing&lt;/li&gt;
&lt;li&gt;Use Delete key to quickly undo the previous autocorrection&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Expanded keyboard friendly checking panel&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/781519615?h=d1d3b71e9b&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike Outliner: Improved text checking&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Standard macOS apps have three text checking UI’s: checking window, substitutions window, and menu items. These are extra windows that you’ll have to manage, and they don’t work well with keyboard shortcuts.&lt;/p&gt;
&lt;p&gt;Bike’s approach is different. There’s a single keyboard friendly checking UI with all settings. There are no extra windows to manage, the panel slides into the bottom of your outline window. Use the Escape key at anytime to close the panel and go back to outlining.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single panel with all features and settings&lt;/li&gt;
&lt;li&gt;Panel slides in below outline, no separate window to manage&lt;/li&gt;
&lt;li&gt;Text checking is keyboard friendly. Use the up/down arrow keys to correct. Use Enter to accept correction and find next problem. Use Escape to close the panel and get back to outlining.&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Mac Text Editing: mark, kill, yank</title>
		<link href="https://www.hogbaysoftware.com/posts/mac-text-editing-mark-kill-yank/"/>
		<updated>2022-11-20T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/mac-text-editing-mark-kill-yank/</id>
		<content type="html">&lt;p&gt;I’ve been implementing the mark, kill, and yank actions for &lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt;. These actions are obscure and under documented. This post documents what I’ve found and includes code I used to implement them.&lt;/p&gt;
&lt;p&gt;My understanding is that these features were originally implemented in terminal based editors. Later used by NeXTSTEP. Now many years later they are still with us on macOS.&lt;/p&gt;
&lt;p&gt;There isn’t much documentation of the macOS implementation. Much of the following behavior was discovered by experimenting with TextEdit. Probably I’ve missed some things and got some things wrong.&lt;/p&gt;
&lt;p&gt;Corrections welcome!&lt;/p&gt;
&lt;h2&gt;Mark&lt;/h2&gt;
&lt;p&gt;Marks are from terminal editors where it wasn’t possible to visually select a range of text. When you needed to define a range you would “mark” one end and use the insertion point for the other.&lt;/p&gt;
&lt;p&gt;Actions to manipulate the mark:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;setMark:&lt;/code&gt; Save the selection to the mark.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToMark:&lt;/code&gt; Union the mark and selection and delete that union.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selectToMark:&lt;/code&gt; Union the mark and selection and select that union.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;swapWithMark:&lt;/code&gt; Swap the selection with the mark.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that on macOS the mark is a range, not a single point. The mark shouldn’t be updated to account for text changes in the editor. When reading the the mark always clamp it to the editor’s text length.&lt;/p&gt;
&lt;p&gt;I don’t think there are standard keybindings for mark actions. I think they are mostly used when building up more complex multi-action keybindings. See the keybinding links below.&lt;/p&gt;
&lt;h2&gt;Kill&lt;/h2&gt;
&lt;p&gt;When text is deleted by certain actions it gets added to the kill ring. By default the kill ring contains a single text entry. If you change the &lt;code&gt;NSTextKillRingSize&lt;/code&gt; system default the kill ring can contain multiple entries.&lt;/p&gt;
&lt;p&gt;Actions that kill text:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;delete:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToMark:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToBeginningOfLine:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToEndOfLine:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToBeginningOfParagraph:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deleteToEndOfParagraph:&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generally killed text it is added to the ring as a new entry. Once the ring is filled it will wrap and new kills replace older kills.&lt;/p&gt;
&lt;p&gt;The exception is when you repeat the same kill action. In that case the killed text is combined with the current kill entry. This coalescing stops when you edit text or change the selection.&lt;/p&gt;
&lt;p&gt;To quickly try out kill use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;kbd&gt;Control-k&lt;/kbd&gt;: To kill using &lt;code&gt;deleteToEndOfParagraph:&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Yank&lt;/h2&gt;
&lt;p&gt;Text can be retrieved from the kill ring by yank:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;yank:&lt;/code&gt; Replace the selection with the most recent kill text.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;yankAndSelect:&lt;/code&gt; Replace the selection with the most recent kill text and select the inserted text. Repeat calls to &lt;code&gt;yankAndSelect:&lt;/code&gt; will cycle through the kill ring. Cycling pauses when you make an edit.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each app maintains a private kill ring. You can kill text in one view and then yank it into another view within the same app. You can’t kill or yank between apps.&lt;/p&gt;
&lt;p&gt;To quickly try out yank use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;kbd&gt;Control-y&lt;/kbd&gt;: To yank text from the kill ring using &lt;code&gt;yank:&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To &lt;code&gt;yankAndSelect:&lt;/code&gt; you will need to &lt;a href=&quot;https://apple.stackexchange.com/questions/409816/how-do-i-get-text-key-binding-yankandselect-to-work&quot;&gt;add your own binding&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why would you use these actions?&lt;/h2&gt;
&lt;p&gt;I have seen these actions used most often in custom multi-action keybindings. Marks are useful for saving and restoring the selection. Kill and yank are useful for moving text without overwriting the pasteboard.&lt;/p&gt;
&lt;p&gt;To learn more about keybindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jrus/cocoa-text-system&quot;&gt;Cocoa Text System | Jacob Rus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://brettterpstra.com/projects/keybindings/&quot;&gt;Customizing KeyBindings | Brett Terpstra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html#//apple_ref/doc/uid/20000468-CJBDEADF&quot;&gt;Text System Defaults and Key Bindings | Apple&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How to implement in your own text editor?&lt;/h2&gt;
&lt;p&gt;I’ve created &lt;a href=&quot;https://gist.github.com/jessegrosjean/1bfc57d0251e557d3c606e43bf7fe288&quot;&gt;&lt;code&gt;KillRing.swift&lt;/code&gt;&lt;/a&gt; class to get you started.&lt;/p&gt;
&lt;p&gt;The kill ring needs to maintain some state. Your editor should call &lt;code&gt;selectionChanged()&lt;/code&gt; and &lt;code&gt;textChanged()&lt;/code&gt; anytime they change in your editor. When killing and yanking your editor should perform all related changes within the callback block.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Innovative Rich Text Editing</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-rich-text/"/>
		<updated>2022-10-11T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-rich-text/</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt; now supports rich text!&lt;/p&gt;
&lt;div&gt;
  &lt;a class=&quot;button&quot; ping=&quot;https://www.hogbaysoftware.com/bike/ping&quot; href=&quot;https://www.hogbaysoftware.com/bike/Bike.dmg&quot;&gt;
    &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
    Download
  &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/releases/&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bike’s rich text editing should be familiar. There’s also innovation&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-rich-text/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. I’m trying to improve the fundamentals of how rich text editing works.&lt;/p&gt;
&lt;h2&gt;Watch Bike’s Rich Text Movie&lt;/h2&gt;
&lt;div id=&quot;bikePromoMovie&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/758067700?h=7211173f2f&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Bike: Rich Text Intro&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2&gt;Inspired by Markdown&lt;/h2&gt;
&lt;p&gt;Bike’s rich text editing is inspired by Markdown.&lt;/p&gt;
&lt;p&gt;I like Markdown because the formatting is directly accessible. The formatting characters are always right there to guide my edits.&lt;/p&gt;
&lt;p&gt;I dislike Markdown for the same reason. Those formatting characters are &lt;em&gt;always&lt;/em&gt; visible. They make my text look messy.&lt;/p&gt;
&lt;p&gt;I want clean looking outlines, so Bike uses rich text. I would also like my outlines easy to edit. That’s where I think rich text has problems and Bike’s &lt;em&gt;typing affinity&lt;/em&gt; is a good solution.&lt;/p&gt;
&lt;h3&gt;Editing Puzzles&lt;/h3&gt;
&lt;p&gt;Rich text is difficult when you need to insert text at formatting boundaries. Markdown has formatting characters to guide you. In rich text there are no such characters, and so you must rely on these conventions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use formatting from text before the caret&lt;/li&gt;
&lt;li&gt;At start of line use formatting from text after caret&lt;/li&gt;
&lt;li&gt;Some formatting (links for one) might use different rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you need to perform an edit that doesn’t fit into these conventions then rich text editing becomes painful.&lt;/p&gt;
&lt;h4&gt;Puzzle 1:&lt;/h4&gt;
&lt;p&gt;Start with “Hello” in bold. Then add &amp;quot; world&amp;quot; in normal text. In Markdown this is easy, just place &amp;quot; world&amp;quot; outside the &lt;code&gt;**&lt;/code&gt;s:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;From: **Hello**
  To: **Hello** world.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now try the same thing in a rich text editor.&lt;/p&gt;
&lt;p&gt;Not as easy. You need to exit from bold typing mode. Probably you will do &lt;kbd&gt;Command-B&lt;/kbd&gt; to do that. How you exit depends on the previous formatting–in this case it’s &lt;kbd&gt;Command-B&lt;/kbd&gt;, but if the formatting was different then you would need a different command. There’s no consistent way to end formatting, and go back to typing unformatted text.&lt;/p&gt;
&lt;h4&gt;Puzzle 2:&lt;/h4&gt;
&lt;p&gt;Insert &amp;quot;cool &amp;quot; at the start of a link. In Markdown it is straight-forward. You have the syntax characters to guide you, insert inside the braces:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Start: [links][...]
  End: [cool links][...]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now try the same thing in a rich text editor.&lt;/p&gt;
&lt;p&gt;Painful. You are editing against the conventions, &amp;quot;cool &amp;quot; doesn’t want to be part of the link. Best approach I’ve found is to select the first letter in the link “l” and then type to replace it to &lt;em&gt;catch&lt;/em&gt; the formatting. We shouldn’t have to do these editing gymnastics.&lt;/p&gt;
&lt;h3&gt;Bike’s Solution: Typing Affinity&lt;/h3&gt;
&lt;p&gt;Bike’s &lt;em&gt;typing affinity&lt;/em&gt; solves both editing puzzles easily. At each formatting boundary (including start and end of line) Bike’s text caret shows a tail. Use the arrow keys to point the tail at the formatting you want. Thats it.&lt;/p&gt;
&lt;p&gt;Bike’s approach is just as precise as Markdown and requires fewer keystrokes. It does this without littering formatting characters throughout your document.&lt;/p&gt;
&lt;p&gt;Give typing affinity a try. Perform the above editing puzzles in Bike and see how clean and predictable rich text editing can be.&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Some of this innovation is &lt;a href=&quot;https://ux.stackexchange.com/questions/72309/caret-positioning-in-html-richtext-wysiwyg-editor&quot;&gt;rediscovered&lt;/a&gt; &lt;a href=&quot;https://www.hogbaysoftware.com/posts/bike-rich-text/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
	</entry>
	
	<entry>
		<title>Changelog Interview</title>
		<link href="https://www.hogbaysoftware.com/posts/changelog-interview/"/>
		<updated>2022-06-10T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/changelog-interview/</id>
		<content type="html">&lt;p&gt;I just did an interview for &lt;a href=&quot;https://changelog.com/podcast/492&quot;&gt;The Changelog&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;audio data-theme=&quot;night&quot; data-src=&quot;https://changelog.com/podcast/492/embed&quot; src=&quot;https://cdn.changelog.com/uploads/podcast/492/the-changelog-492.mp3&quot; preload=&quot;none&quot; class=&quot;changelog-episode&quot; controls=&quot;&quot;&gt;&lt;/audio&gt;&lt;script async=&quot;&quot; src=&quot;https://cdn.changelog.com/embed.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Combine&#39;s .collect(.byTime)</title>
		<link href="https://www.hogbaysoftware.com/posts/combines-collect-by-time/"/>
		<updated>2022-05-23T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/combines-collect-by-time/</id>
		<content type="html">&lt;p&gt;Post mostly for programmers…&lt;/p&gt;
&lt;p&gt;The biggest bug in &lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike’s&lt;/a&gt; 1.0 release was excessive CPU use while in background. This bug is fixed now, but embarrassing since Bike is a macOS native app that isn’t supposed to do that sort of thing.&lt;/p&gt;
&lt;p&gt;How did it happen?&lt;/p&gt;
&lt;p&gt;First, I didn’t realize that each time you use &lt;code&gt;.collect(.byTime)&lt;/code&gt; you are setting up a new repeating timer. I had expected a timer was involved, but thought it would only get scheduled when new items were coming into the publisher. Nope, it’s repeating once the pipeline is setup.&lt;/p&gt;
&lt;p&gt;Second, I stress test Bike with &lt;a href=&quot;https://www.hogbaysoftware.com/posts/moby-dick-workout/&quot;&gt;one big outline&lt;/a&gt;, but this problem didn’t show up noticeably until you opened multiple documents. I was using &lt;code&gt;.collect(.byTime)&lt;/code&gt; a few times per document. After the issue was reported I tried opening 30 documents and the CPU would sit at 50% usage when in the background. Ugh.&lt;/p&gt;
&lt;p&gt;Why use &lt;code&gt;.collect(.byTime)&lt;/code&gt; in the first place? Collect by time is really useful because it allows your model to change often, while not flooding your view with updates.&lt;/p&gt;
&lt;p&gt;For example Bike schedules background spell checking when an item scrolls into view. When that work is finished the view needs to be updated. The problem is spell check results can arrive quickly and a separate view update for each new result will slow down scrolling.&lt;/p&gt;
&lt;p&gt;Bike used &lt;code&gt;.collect(.byTime)&lt;/code&gt; to collect those spelling results, but only update the view every 16ms or so. It’s a big performance win and makes scrolling fast while also showing spelling errors “immediately” as they scroll into view. Except for the background CPU usage it’s great.&lt;/p&gt;
&lt;p&gt;I’ve posted a &lt;code&gt;.collect(.byTime)&lt;/code&gt; &lt;a href=&quot;https://forums.swift.org/t/combines-collect-bytime-schedules-a-repeating-timer/57456/2&quot;&gt;replacement&lt;/a&gt; (for my use case) here. It solves the problem by only scheduling on the runloop once per group of incoming results. It appears to be working well and Bike now uses 0% CPU when in background even with 30 documents open.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Bike: Tool for thought</title>
		<link href="https://www.hogbaysoftware.com/posts/bike-tool-for-thought/"/>
		<updated>2022-05-17T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/bike-tool-for-thought/</id>
		<content type="html">&lt;p&gt;I have a new app!&lt;/p&gt;
&lt;div class=&quot;screensgallery&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-300.avif 300w, https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-600.avif 600w, https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-1280.avif 1280w&quot; sizes=&quot;600px&quot; /&gt;&lt;img src=&quot;https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-300.jpeg&quot; class=&quot;&quot; alt=&quot;Welcome Screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;800&quot; srcset=&quot;https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-300.jpeg 300w, https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-600.jpeg 600w, https://www.hogbaysoftware.com/img/bike/pd0FL9LQgy-1280.jpeg 1280w&quot; sizes=&quot;600px&quot; /&gt;&lt;/picture&gt;
&lt;/div&gt;
&lt;p&gt;Bike is a fast and fluid outliner app for macOS. Your thoughts and ideas flow smoothly across the screen. Bike also works well with big files, uses open file formats, and is scriptable.&lt;/p&gt;
&lt;p&gt;Try Bike, it feels different:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Get Bike Outliner + Watch Movie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hogbaysoftware.com/bike?purchase=759899&amp;amp;coupon=BIKE10&quot;&gt;Limited Time 10% Off Coupon (BIKE10)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why Bike Outliner?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;We were promised bicycles for the mind, but we got aircraft carriers instead – Jonathan Edwards&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s why I’m building Bike. I think macOS needs more “bicycles for the mind”.&lt;/p&gt;
&lt;p&gt;Bike is small enough to fully understand. Once understood it’s flexible enough to be used for many purposes.&lt;/p&gt;
&lt;p&gt;Bike is small, but designed for real work. It’s fast. It can handle &lt;a href=&quot;https://www.hogbaysoftware.com/posts/moby-dick-workout/&quot;&gt;big projects&lt;/a&gt; that break other outliners. Bike’s also fast at the basics–opening files, scrolling views, and resizing windows. Bike won’t slow your Mac down.&lt;/p&gt;
&lt;p&gt;Bike makes your work open and accessible. Outlines are stored in text files using &lt;a href=&quot;https://bikeguide.hogbaysoftware.com/using-bike/using-documents&quot;&gt;standard file formats&lt;/a&gt;. Bike is also scriptable. Automate and extend Bike into your own workflows with scripts.&lt;/p&gt;
&lt;p&gt;Bike is just getting started. I’ve been building on the outliner idea for a long time, Bike is the next chapter. I hope you’ll give it a try, get a license, and &lt;a href=&quot;https://support.hogbaysoftware.com/c/bike/22&quot;&gt;let me know what to improve&lt;/a&gt; for the next release.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Moby Dick Workout</title>
		<link href="https://www.hogbaysoftware.com/posts/moby-dick-workout/"/>
		<updated>2022-04-12T00:00:00Z</updated>
		<id>https://www.hogbaysoftware.com/posts/moby-dick-workout/</id>
		<content type="html">&lt;p&gt;How many items should your todo list handle? Not the most pressing question in the world, but one that I sometimes wonder about.&lt;/p&gt;
&lt;p&gt;I think productivity apps should scale to “user generated” content. I don’t expect every app to load multi-gigabyte log files, but it should handle what I can write myself.&lt;/p&gt;
&lt;p&gt;I use “Moby Dick” to test that. I know it’s longer and uses bigger words than anything I’ll write. If the app works well with “Moby Dick” then that’s a good indication that it will handle my needs also.&lt;/p&gt;
&lt;p&gt;Here’s the test:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open “Moby Dick”. Fast?&lt;/li&gt;
&lt;li&gt;Scroll to end. Resize the window. Fast?&lt;/li&gt;
&lt;li&gt;Scroll to middle. Resize the window. Fast?&lt;/li&gt;
&lt;li&gt;Select all. Cut, Paste, Undo. Redo. App still standing?&lt;/li&gt;
&lt;li&gt;Edit some content near the middle. No typing lag? No scroll jumping?&lt;/li&gt;
&lt;li&gt;Repeat 2-5 until you get bored, then open macOS Activity Monitor and see if it’s using acceptable amount of Memory.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Computers are really fast, Moby Dick is tiny compared to this fastness. If an app doesn’t pass this test that suggests to me that there might be problems. This is just a test–a good app for you might fail this test, a bad app for you might pass.&lt;/p&gt;
&lt;p&gt;Test Files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jessegrosjean/mobydickworkout/raw/main/moby_dick.bike.zip&quot;&gt;MobyDick.bike&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;This is what I use to test my app &lt;a href=&quot;https://www.hogbaysoftware.com/bike/&quot;&gt;Bike Outliner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jessegrosjean/mobydickworkout/raw/main/moby_dick.opml.zip&quot;&gt;MobyDick.opml&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;This is OPML file useful for testing outliner apps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jessegrosjean/mobydickworkout/raw/main/moby_dick.md.zip&quot;&gt;MobyDick.markdown&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;This is a Markdown file useful for testing markdown apps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
</feed>
