Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Bike – macOS Native Outliner (hogbaysoftware.com)
513 points by jessegrosjean on May 17, 2022 | hide | past | favorite | 236 comments
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.

Give it a try, it feels different. (movie on home page if you don't have Mac)

Other Features:

• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.

• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.

• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.

• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].

Implementation Notes:

• View is built using CALayers[^2].

• Animations are performed by Core animation and Motion[^3] lib.

• View performance is determined by visible text, not document size.

Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.

I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.

Hope you find Bike interesting. I’m happy to answer any questions.

[^1]: https://www.hogbaysoftware.com/posts/moby-dick-workout/

[^2]: https://developer.apple.com/documentation/quartzcore/calayer

[^3]: https://github.com/b3ll/Motion

[^4]: https://github.com/apple/swift-collections




In particular I love these features:

- "respects your computer's memory and battery"

- "uses open file formats"

- "is scriptable"

Feels like we should also think about these kinds of things when we think about "organic" software. Kudos to the developer for these.


Jesse is certainly one of the patron saints of open formats in the Apple world given he invented TaskPaper.


How much memory and battery do all the animation use?


I think the architecture needed to support them means the total package is less than most apps. For example consider scrolling:

In Bike it's fast enough that when you scroll it just updates what you can see on the screen. This means you only pay memory for visible text. For most macOS apps scrolling performance is achieved by pre-rendering before and after the visible scroll area. So you pay for that cache and you also pay for the background processing required by pre-rendering.

Also consider simple things like window resize. In Bike that only effects visible text. If you open a large document in TextEdit you will see that resize is quite slow and processor and memory intensive. (you can test with https://www.hogbaysoftware.com/posts/moby-dick-workout/). And then after that resize there's lots of background processing to refill a bunch of layout caches I guess. On the other hand resize is instant and only does work for visible text in Bike.

I don't think the animations are expensive, but it's hard to test because that work happens in Mac OS window server and I'm not an expert there. If they really are a problem and you are on battery then you can turn off animations in preferences.


Probably very little if it is built on top of CoreAnimation, since that set of OS APIs is extremely heavily optimized specifically to enable animation-rich UIs that are light in terms of CPU and battery use.


Indeed. As far as I know, Core Animation was originally created as part of work on the first version of iOS (née iPhoneOS), where the target device, the original iPhone, was pretty severely memory and CPU constrained.


Here’s part of the ArsTechnica article on Leopard that discussed CoreAnimation:

https://arstechnica.com/gadgets/2007/10/mac-os-x-10-5/8/

Of note:

> [The] advent of Core Animation probably means that we'll have to endure some amount of gratuitously animated software created by "overly enthusiastic" developers. But the same was true during the introduction of styled text and color graphics. Mac developers learn quickly, and Mac users are good at rewarding restraint and punishing excess.


Right, it was introduced publicly as an API in Mac OS X Leopard, but my understanding has always been that it was actually conceived as part of iPhoneOS, then ported to Mac as well. The iPhone shipped a few months before Leopard, though of course UIKit wasn’t made public until the next year when the iPhone SDK was first released.

There’s a similar story around SwiftUI. It was initially created by the Apple Watch team at Apple, then extended to all the other OSes (all this was long before it was made public).


CALayer is part of the OS toolkit, so probably not much. It’s the same system the OS itself uses, so probably a shared lib, and it’s heavily optimised. Similar to animating your web page with only CSS animations. It’s all baked into the existing rendering system already.


If anyone digs in and profiles Bike 1.0 you'll unfortunately find that it is wasting some CPU with a timer. This will be fixed soon and is not related to underlying architecture or animations. It's me coalescing events from user defaults with a Combine API that I didn't fully understand.


This is an impressively well stripped down app. It's all I ever wanted from OmniOutliner (remember when it shipped with OS X?).

Unfortunately, I've been drawn in by the linking functionality in Roam/Logseq and cannot go back to a simple outliner, though this makes me want to.

I don't think I'm a fan of the animated cursor while typing. It somehow makes the typing feel slower, like it takes some physical effort for the cursor to push forward.


Yes, I am in the same boat. I started using Logseq when I switched to linux as my primary workstation and could no longer use OmniOutliner.

I used to focus a lot on structuring and organizing things properly before. But after I started using linking, tags, ref embeds etc. more I found that I was more productive by just quickly dumping specific things into poorly organized isolated notes, and adding headers, cross-linking/organizing/merging them much later if they survive.

I later learnt (to my surprise) that people had written whole books about similar methodologies (zettelkasten etc.) but yet to sit down and explore any of them.


It can feel that way for some people. Seems different per user, there's a preference to change the speed in settings.

Also yet need to remember that you don't need to wait for it, sometimes you might just get mesmerized by it and then it feels slow, but if you just type it will keep up with you. It's only ever the "last" animation that fully completes if you are typing fast.


I'll have to try it again, I didn't realize there was a setting for it. I uninstalled it because the typing felt really slow and awkward.

My two cents, default disable so it feels faster, it sounded like speed and smoothness was one of the many selling points.


Another plug for linking... I loved Taskpaper and would be very interested in adopting Bike, but I need those sweet links/backlinks


Congratulations on the release! It’s cool to see more outliners with multi-item text selection. The “fluid” animations look really delightful — I’m jealous! I know you’ve shared some details about the animation implementation, but I’m curious about how much system stuff you take advantage of. Is your view accessible through VoiceOver? What parts of the Cocoa text system do you use (or, what do you use instead for layout and shaping)? (https://developer.apple.com/library/archive/documentation/Te...)

I think you started working on this around the time I was working on multi-block text selection in Notion. I remember seeing a preview tweet in a Andy Matuschak thread and thinking “great minds!”. When I started working on it, I was so surprised that no outliner I tested had multi-item text selection! It’s a unique fusion. I’m curious about how you handled deletions across different indent levels… Do you know of any other outliners with it besides Bike and Notion?


Thanks!

Bike's editor is pretty much:

OutlinerLayer RowLayers LineFragmentLayers

I use CoreText to line break and render into each LineFragmentLayer. A whole new level of performance is possible if I knew more metal/opengl, but right now rendering text on CPU and sending as line fragments to CoreAnimation.

> Do you know of any other outliners with it besides Bike and Notion?

It's hard to define "outliner". This has been a main feature of TaskPaper for a long time... but TaskPaper is maybe a bit more "text editor" than outliner. Also tools like orgmode and probably lots more are pretty much outliners and also have all text editor features.

But yeah, for tools that feel more like an outliner it's not a common feature. In particular Bike even allows you too over indent and movies lines around without moving children. I think that's pretty unique, and goes together with multiline selection in Bike's case.


I imagine then you would had to reimplement behaviour for text selection from scratch? Impressive stuff!


Yes, all the basic needed to be implemented. Impressive or dumb or maybe just persistent.


I'm a big fan of Workflowy [0] but I've been keeping an eye on a Bike-like outliner called Zavala [1] – written with Swift and already has an iOS app.

[0] https://workflowy.com/ [1] https://zavala.vincode.io/


I've been using Workflowy for years now. I really love it.

They been working lots of interesting features in but stick to the basics that everything starts as a list. You would be surprised what is possible w/ just a list!


This is great. It feels very fast, focused, native, and lightweight like all of HogBay's offerings.

Is there any way to change the font? As a developer, non-monospace fonts feel foreign for composing text.


Thanks, sorry not yet font option. I expect to add TaskPaper like stylesheets in the medium future, then there will be many style options.


A simple font selector would be nice. I have some seriously impaired vision w/o correction and monospaced fonts really help when I have to look at a screen that way.

That and ability to zoom in/out or increase/decrease font size.


Note that Bike does support changing font size already.

I'm getting a lot of request for also adding changing the underlying font. Will likely add that sooner then later now since lots of people seem to need.


Awesome!


This looks cool. I just started using MindNode yesterday [0] which is a similar tool (although it takes a very different approach - it's more visual). I wasn't sure of the effectiveness of these sort of tools as I usually just use text files + Notability sketches but I have to say they are very useful in helping to structure thoughts better. I'm interested to try this.

[0] https://www.mindnode.com/


Nice think about Mindnode and Bike is copy/paste between the two works quite well.


Bonus is that Mindnode has a built in outliner view as well. I use Mindnode for this type of thing 99% of the time.


Another long time MindNode user here. I know the nested lists and map views are essentially two visualizations of the same structured data but my brain just finds the maps less thought-constraining. I end up with more creative paths in map view when I use it to plan.

Horses for courses I guess.

Bike looks neat though.


I'm generally in agreement, but when I need to share something, the outline tends to be easiest to share with others. I'm really happy it's there. Maps for me, outline for others.


It would be interesting to see MindNode approach applied to PKM-style backlinks like in Reflect [1]. So not only visualize connections between pages, but also the outline inside each page.

[1] https://reflect.app


How does Reflect compare to Noteplan 3? They both look similar.


Oh cool, I've been looking for a mindmap app. Oh wait - it is a subscription? Why? That makes zero sense.

<spews out vitriol>


While I’m sympathetic to that, I’ve (somewhat) come around on the notion of “subscription apps” if the developers are responsible with it. I’ve found that in most cases, new features that would probably be held for major version releases (e.g., “this is a feature that would entice you to pay for the upgrade”) just come out when they’re ready; it’s essentially shifting the app to a rolling release model. The traditional commercial model of “buy the new major version and get free updates until the next major version that makes you buy it again, hopefully at a discount” does always give you the option of not upgrading if you don’t want the new features, to be sure, but if you are a regular user and tend to buy upgrades as they come out, the price difference tends to be minimal.

Having said that, I’m not sure a subscription model makes sense for an app like MindNode, since I’d bet a majority of its users only work on mind maps sporadically That’s conjecture on my part, of course, and I could be absolutely wrong, but I suspect people who do everything with mind maps are fairly few and far between. Paying annually for Ulysses, a writing app I really do use every day, is one thing; paying for MindNode, which I use maybe once a quarter, is a big ask.


Yes, sporadic use is a major issue on top of the fact that this is not SaaS and nothing lives in the cloud (which of course I don't want of a document creation tool anyway).

I am all for layers of features that cost money to unlock, but never ever ever on a subscription basis. It's like every developer out there heard that SaaS is where the money is at and decided that applied to their project out of dogma rather than a well reasoned business case.


Ah I didn't realise. I have it through SetApp, which itself is a subscription, albeit an easier subscription to swallow as you get access to a number of great apps.


Yup - without SetApp there are a number of apps I wouldn't otherwise be able to justify spending on individually; but as a group I get more than enough value.

It's a tough balance. Software doesn't age like fine wine sitting on a shelf - it lives in a dynamic environment. It's more akin to produce that will rot over time. Even if no new features are added, it still requires maintenance - by someone.


I've been using the free version for years. Never needed any of the premium features to create a useful mindmap.


I will never invest my time into an app that I might need to pay for later if paying for it will require a subscription and it is not an SaaS or cloud based app.


Surprised nobody has mentioned org-mode yet. It does everything shown in the video: collapse/expand nodes, focus on subtrees, ability to highlight across rows/nodes, etc.

That said, the fluid animations in Bike look great, and the video was very slick! Nice work.


I've been through more than a dozen "outliners", "todo apps", and "document databases", and i always end up with a mix of org-mode and Markdown. It may be my requirements, but i'd rather have my data available on "whatever" platform i'm working on, than having a specialized tool on one platform.

My job frequently has me switching between different desktop operating systems and mobile, so for me a simple clear text approach works the best, and org-mode and Markdown has that nailed down.

So for now my tools are limited to Sublime Text on the desktop (with the OrgExtended plugin), Obsidian for my markdown notes (though sublime/vs code would work just as well), and BeOrg/PlainOrg on the iOS side of things, with simple file synchronization to keep files synchronized across platforms.

Ironically, TaskPaper was the tool that got me started on the cleartext approach (also written by the author of Bike).


Well, you just did.

OrgMode relies on emacs, which is not exactly in the same class of software that this is. This is "one thing well" stuff. Emacs and OrgMode are pretty much the other side of the continuum.


I’ve been having good success with _basic_ outlining functionality of Org Mode in VS Code using the “VS Code Org Mode” extension. No need for emacs for this use case. The built-in VS Code folding works really well and then combining with GitLab which has rendering support for Org Mode when committing/pushing commits. Plus, since everything I’m doing is already in Org Mode syntax, I can move to other editors later if desired. It’s a good solution for my needs, at least.


There's a fairly complete, and rather functional plugin for Sublime Text : https://github.com/ihdavids/orgextended


I watched the movie on the linked website, but I really don't get what "fluid" editing is supposed to be and what problem it solves? (I've been using OmniOutliner for years and never missed something like described there)


I made a tiny screencast showing the big difference: https://imgur.com/a/u1QTns6

OmniOutliner feels like it has a separate text field for each node. Bike feels like a text editor when you're editing a document with nodes, which to me is more natural.


Thanks! So this is more about seemless navigation than about the actual editing, I guess. I've always used OmniOutliner as a sort of "Excel with Tree" (multicolumn outline), so having separate cells is kind of an obvious default or even main feature for me. I can see now how purely longform-text cases might profit from this version.


I'd recommend using KeyCastr to show the keystrokes while recording.


Yeah, sorry for the lack of keystokes. I usually use ScreenFlow which also has this feature, but for this one I used LICEcap.


If you don't see how that's fluid and why it's valuable then that feature isn't for you. But it's certainly unquestionably fluid unlike a lot of other trash apps.


Not recognizing what the word is supposed to mean in this context doesn't imply any of those things.


It most certainly does, lol. There's a lot of programmers who have literally zero design aesthetic. I bet 99% of the people who don't understand what "fluid" means in this context fall into that category. Anyone with even a remote sense of aesthetics and design will immediately recognize the fluidness of the navigation/animation/flow


What a great non answer


Finally! So many outliners think of each node as a separate text field and add node movements on top. This one gets it. Great work, Jesse!


Thanks, that's also a pretty key aspect of Bike. Maybe more important than "fluid animation", but I expect hyping up the fluid animation will get more clicks and people can discover the unconstrained text editor after using it.


I can't believe this guy is writing software that runs on my computer and selling it for money. Feels like the good old days.


I also do this! There are a few grumpy old people around doing this for a living.


Aside: looks like the domain for the url in your profile expired and it now goes to some ad harvesting site.


Thanks, that's not my site - I've removed the link to it.


Keep those good old days going. Get a license :)


I'm thinking about it! I downloaded and played with it and I'm going to try to use it over the next couple of weeks.


OutlineEdit 3 is a great choice for a modern, native Mac outliner: https://outlineedit.com/home.html

I am the developer and always looking for feedback on the app. So let me know any thoughts!


And for those who care: It also supports every macOS version back to and including 10.14 (Mojave)


First, I use and love TaskPaper so I'm interested in what you've got going on. But on its surface, I don't see the differentiation between the two products right now other than Bike having slicker rendering and TaskPaper having more utility. It seems like TaskPaper is a competent outliner that supports focus and other features just fine. Can you comment to what the goals are that separate them?


I've written about Bike's relationship to TaskPaper here:

https://support.hogbaysoftware.com/t/how-does-bike-relate-to...

I think core summary is:

1. Wanted to control own text editor. Building off NSTextView was limiting 2. Wanted to use structured document format. Plain text was limiting


Interesting, thanks. It does sound like there's a lot to build on there so I'll be interested in seeing where it goes. Some of my best "productivity" memories are with the "free" copy of OmniOutliner that came on my first Macs, and I think you have the bones to bring that to the 2020s.


>Text editing should work as you expect. This is a nice feature of Bike. Often outliner apps constrain text editing in various ways. Bike doesn't do that.

So, how do you add a "soft linebreak" - so that I get a line break in a single node (so that I can have e.g. 3 paragraphs on a node).

The things I've tried (enter, shift-enter, etc) all create a new node below - and the manual doesn't give any clue.


Sorry, just not supported right now.


Thanks.

If possible, making an item as markable (as in done) would also be nice (perhaps that touches on TaskPaper and co.


It sounds like you might prefer TaskPaper (same dev different app)


Regarding the website: having a video embedded with zero control to mute or change it's audio volume is really insensitive UX. The annoying background music is not even necessary to actually get meaning from the video.


Sorry about that. I'm a one guy does many things. Maybe I missed on video sound, but it's tricky trying to make a text editor look interesting. I thought the music helped.


I enjoyed the music. It gave me the feeling of an Apple presentation.

I'm also blessed with a computer that has a "mute" button if I didn't want to hear it.


I would've vastly preferred you narrating over the video instead of generic sounding Kickstarter music, I immediately muted it.


The music does sound interesting, but I also wanted to mute it. But at least there are some images later in the page.


I hated the music and closed my browser the second I couldn't find a mute button.


Sorry, I might have misunderstood you, but can’t you just mute the audio of your device altogether? Or do you want to continue to listen to music in the background or something?


It’s not uncommon to respond to bad UX by simply leaving. I do that all the time.


Strong disagree to both of these points. Nothing "insensitive", save your comment. Devices have audio controls, no need to repeat them in a video player-especially not one on a landing page for a product. Background music for promotional material is standard, and all too necessary.


> Devices have audio controls, no need to repeat them in a video player

You assume that the web page is the only source of audio happening on a device. If someone is listening to something on their machine while browsing articles and then needs to stop whatever is playing because the website is taking over the audio, that's very poor UX and is indeed insensitive to the user.

Suppose you have a screen reader and now you cannot hear it because a video is unnecessarily blaring music that you can't hide. 99.99% of all websites offer the user individual audio control over playing content -- for a reason.


Making me think that maybe you should be insensitive to certain users


> Making me think that maybe you should be insensitive to certain users

People with screen readers usually have an accessibility issue, so you are advocating to ignore the visually impaired, for example.


I like that you described some of the underlying APIs you used and picked something to try and do well, and it seems like you did. I also like macOS native software.

I do struggle to understand the value proposition though. I've been using Bear for outlining, admittedly smallish lists. It's macOS native, supports things like pasting in images, video, markdown, checkboxes, etc.. and is supported by a tiny subscription fee or free. I've never run into performance problems.

Some people just want to work on massive outlines with either text or links and nothing else, move those list items around frequently, and to those people $30 might be cheap. As a product it seems tricky to me, but I'd love to hear from anyone who's the perfect customer, and how this hits the mark for you. As in, what the hell do you plan day-to-day?

Also I quite like the icon, and the nature of it being incredibly simple. In a sense, it reminds me of the first version of IA Writer.


I think Bike is more "tool for thought" than it is tool for notes. It's more like a text editor with some magic features, then it is like a directory of text files.

So value proposition... It's a unique surface for your ideas. The way that it "feels" is important and different than any other app. If that helps you think then Bike might be fore you.

In another comment I said Fluid = Animation... and it does, but there's another aspect of fluid with Bike. If you try most any outliner there are pretty rigid tools. A little hard to explain, but they don't feel "fluid" like a text editor. There are limits and constraints. Bike is different in that it has all the capabilities of an outliner, but it also has all the freedom of a text editor. You can select over multiple lines, cursor moves like a text editor.

Not sure that I've explained that last bit well... but try a good outliner like Workflowy. Then try Bike, beyond the animations (they can be turned off in preferences) Bikes core editing commands feel different.


A killer feature for me that might sound silly, would be a "distraction free" mode - which would just require being able to center the content in the window in fullscreen mode.

I have an ultrawide, and if I could work in this app full screen and centered with just a click or two, it would be pretty great.


I made WriteRoom which coined "Distraction free writing". Good fullscreen mode for Bike is on my list for sure.


I bought WriteRoom :) It gave me a lifelong appreciation for "distraction free" computing.


I've been refraining myself to upgrade to MacOSX 11 in order to not mess with my dev environment. Are you planning to release it for MaxOSX 10.14 or lower?


Sorry I don't. So much still to do on Bike, I think my time is better spent building up the app feature set.


Please do at least put the minimum required version on the homepage (maybe in small text below the "Download" button or something).


A bit late, but added, I always forget that bit.


Thanks! Good luck with the app.


OutlineEdit 3 supports macOS 10.14: https://outlineedit.com/home.html


This looks great.

One small suggestion would be to add a "collapse parent" keyboard shortcut since this is something I imagine using a lot after scanning one or more items in a list. Perhaps Shift-Command-0 might be a good fit for that.


I don't think I want to add to many specialized shortcuts, but if you ask in the hogbaysoftware support forums I'm happy to write an AppleScript to do this, and then that can be assigned a keyboard shortcut.

Also generally for collapsing items I use outline mode: Press escape key, and then you can just use left/right arrows to expand collapse items. Maybe not what you are after, but that's how I find I'm always collapsing/expanding things in Bike.


In OmniOutliner, the collapse row shortcut will collapse the parent which takes care of the specialized extra keybind. What seems odd is OmniOutliner and Bike's outline/collapse row keys are reversed with cmd-0 and cmd-9 doing collapsing and expanding in one and expanding and collapsing in the other.


Nice!

Do you think you could add support for pandoc to export to other formats and import things?

Another option --- possible to set it up so that each node is a text file (or other file format, see pandoc above) and they are grouped using file directories? The nifty Tombo notepad worked thus, and I found it really nice for keeping notes --- for bonus points, multiple files in a directory which have the same name would show as a single node, but have a toggle at the top to select which file extension one is viewing, w/ an option for "all" which expands them so that one can see all of them.


> Do you think you could add support for pandoc to export to other formats and import things?

Maybe, but not likely soon. Bike does already provide read/write support for .bike (html subset), .opml, and .txt. I think best route is to work from those file formats.

> Another option --- possible to set it up so that each node is a text file (or other file format, see pandoc above) and they are grouped using file directories?

I've long wanted to try something like that. It would be very fun, but I don't expect Bike will do this.


Well, you could just work up a pandoc file to get to/from the .bike format, then you'd get it all by supporting pandoc.

If you do the Tombo.exe type thing, please let me know --- I'd be delighted to have something like that on MacOS.


Happy to see this available as both a standalone download, and through the App Store.

I'm a big supporter of indie software, but I've had some recent bad experiences that make me gravitate toward the App Store again.

One of them is just a plain old boring MP3 Tag Editor. When I migrated to an M1 MacBook, it no longer worked. I contacted the author, and it took him a couple of months to respond. Once he did, he said I used it on too many computers, so I can't use it anymore. I used it:

1. The computer I purchased the software on, which I no longer have and was recycled.

2. The computer that replaced the first computer, which I no longer use and gave to my wife, who does not use the software.

3. The computer I replaced computer #2 with, which I used temporarily until I got my current computer. The old computer is now a headless media server in the closet.

The author says there's no way to override his copy protection, or to give me a new license key. "I don't have technical options to resolve such an issue."

Great. So I switched to another (more expensive) MP3 tag editor. But this one I bought through the App Store, so I know it will continue working, even if I upgrade my machine.


Very cool and congrats on what you’ve built! This is something I’ve been looking for. Any plans to do iCloud syncing and maybe a mobile app?


I think basic iCloud syncing between Macs should already work, just as part of the fact that Bike saves your outlines to some Mac OS file (not database). I know I need to do iOS support, as long as I stay financially viable I will do iOS support. But I still need to work on a few more basics in the macOS app first.

Bike will also read/write .opml files. You should be able to share with iOS outliner that way I think.


Very well done. An iOS app would be great, since people often do outlining/thinking in the nature.


This seems very similar to Workflowy, which is meant as a compliment.

Scriptability is a huge feature here, and something that WF users have been asking about for a long time.

If you could offer this on multiple devices & OSes, and provide a sync feature, then I'd be very interested in switching.


> What a computer is to me is it's the most remarkable tool that we have ever come up with. It's the equivalent of a bicycle for our minds.

Steve Jobs

I like that the product references this quote for the logo as well as the fact that's it's on macOS.


The "movie" example music had me laughing at the similarity to Bob's Burger Patty Cake scene. https://youtu.be/GfCkzqJZAR0?t=145


Is this available on the App Store ? (Not a super big deal if not. Just like to manage all my subscriptions/purchases in one place. So makes updating easier along with the privacy report that makes recommending to friends easier)


It is available here:

https://apps.apple.com/us/app/bike-outliner/id1588292384?mt=...

Mac App Store version is subscription based. I know many people don't like that, that's why my direct download version is not subscription based... but for Mac App Store upgrades are a pain/impossible. So subscription.


Yeah, I wouldn’t have considered this for a second if it was subscription-only. The pay-once-and-pay-for-upgrades model is very fair; I’d impulse-buy something for $30 once, but I don’t impulse-buy recurring payments.

This is a very cool idea. Might make note-taking a lot easier. I’m looking forward to trying it out.


This is excellent . When I searched for it on the App Store via “bike” I was unable to find it. I’ll subscribe if it means you can maybe buy App Store ads for keywords like bike for better visibility.


Yeah, Bike's not a very good name for searches, but it's a good name for what the app intends to be.


I have been in the market for an outliner that outputs to open formats so I am absolutely your audience. (My current top contender is OutlineEdit, and I was days away taking the plunge so thank you!)

Two things I would love to see in any outliner:

1) Support Harvard and other outline format. I grew up outlining in Harvard and this bullet list stuff is maddening. The developer told me that OutlineEdit will not support it, period, so it's not a deal-breaker.

2) Horizontal outlining. Sometimes it's nice to have a hierarchy that expands and folds to the side. There was a Mac app called Tree 2 that did this but it is long unsupported.

Daily TaskPaper guy, so this is a great development.


Unlikely to be built directly into Bike editor.

I have thoughts (no plans yet) about plugin API that can use web view as output layer. The idea being that an outliner can be used for many things. For example you can create a calendar where the hierarchy is year/month/day. Neat, but not really a perfect solution for a calendar. So the idea with plugin API + Web View is that you could use that outliner calendar data to generate a nicer view. This keeps the outliner simple and uniform, but also gives you data specific view.

I think that same solution might work for Tree style view, or Harvard bullet list view. It would be sorta like a markdown app, content on one side (the outliner), generated polished result on the other.

No promises, but that's how I think I would implement those features in Bike.


Regarding horizontal outlining and Tree replacement, it’s not native to macOS, but there’s a web app called Ginkgo.


I would love a good replacement for Tree. I've never found another app that does what it does.


Looks great, one thing that is not usable is the video player, it only has a play pause, I wanted to seek around to watch bits again, you need a video player with good usability if your app has good usability (which it looks like it does!). That video player might be the first click or interaction a user is having with your brand, it should live a positive imprint on them, not a feeling of fustration. I wanted to watch more of your app being used in the video, go back a bit and see it again, and I couldn't jump around the video.

Hope this is constructive, I don't mean to be negative, the app looks fantastic!


Running the last gen Mac Mini Server which Apple decided to not support past Catalina. As a fan of TaskPaper, this appears to be the point where Apple obsolesce hits me because macOS 11 is needed for Bike and some other new apps I have tried this month.

With 16GB RAM, and the HDDs replaced with SSDs it is a perfectly capable desktop. I would upgrade macOS if I could, but it may be time to move it to Fedora. That won't solve the root issue with Mac apps - Intel architectures don't evolve so fast as a machine with this performance capacity becoming unsupported.


I have a Mini of the same generation and it runs Monterey very well via OpenCore Legacy Patcher - https://dortania.github.io/OpenCore-Legacy-Patcher/. Worth considering if you haven't looked at it before.


I did not know this existed. Definitely giving it a shot.


OutlineEdit 3 supports macOS 10.14 and newer, including Catalina: https://outlineedit.com/home.html


I've been using OmniOutliner for a long time, mostly to take notes in an organized fashion and I'm pretty happy with its functionality, however one thing it doesn't provide is split editing windows on the same outline. This is something I've used with Vim and found it to be very handy when editing code because I frequently needed to look at code at one spot in a file while modifying/creating code in another place in that same file. Anyone know if there is a macOS outliner that can do this?


Workflowy and Logseq already provide these features. Am I missing something?


They both provide many great features, but Bike provides some unique features too. I think they are pretty well listed on Bike's home page (features), but I'll add some notes here:

1. "Fluid" (smoothly animated) editing. You could argue it's not important, but this is something new and unique to Bike. Bike is a "tool for thought". I think how the app feels is an important aspect.

2. macOS native app, of course this is a plus and minus. But if you are on a Mac Bike will generally us a lot less resources then those apps and integrate better with the rest of the system.

3. Local files in open formats. Logseq has this of Course, but I think there's something pretty nice about having your outline just be simple HTML. Easy to parse, easy to work with, should be able to view and make sense of as long as web's around.

4. Faster. Bike is designed to work on somewhat big outlines. Moby Dick has been my test file. It opens instantly. I've just pasted that into Logseq and my computer is working hard a few minutes later. Not sure how workflowy does because it puts me over quotas.

Bike has a pretty unique foundation compared to other outliner apps. It's also missing a lot of higher level features that I plan to build out over time.


The one user interface element I'd suggest is adding the ability to promote/demote nodes w/ the right-click menu when interacting w/ nodes (you could show the keyboard shortcut then to make it discoverable) --- also an option to delete (maybe only if empty?)

Also, when dragging-dropping, I found it way too easy to make empty nodes which was disconcerting.


I honestly don't understand comments like this, you know it's ok to competition in this space?


For sure, I have nothing against competition. Usually though, there are some really unique product features which sometimes get lost in the marketing speak, so if there is a product that I am interested in, like this one, I like to verify that since I didn't quite get that from the product page.


Yeah, I read a dismissive tone in your comment but that's on me, your question prompted some good discussion.


Counterpoint, I very much enjoy when commenters surface competitors, because it makes the creator summarize exactly what distinguishes their product.


As the post title says, it's a macOS native app, focusing on fluidity.


Mac native I get. But what is "fluidity"? The other two are just as "fluid".


"fluidity" is a made up marketing term (by me) to mean animation.

But I think this animation is important. Bike is a "tool for thought". I think the way that it "feels/animation" is important. Bike's build built from the ground up to support this. Check out the movie or better yet try the download. Typing feels a bit smoother, text slides into place.

And yes it can be turned off. And no it doesn't slow you down, animations are canceled if you type again before they finish.


> text slides into place

I don't have a Mac to try this on, but slides into place sounds like what Microsoft does in Outlook and I ended up turning it off.

Maybe it's not the same thing though. In Outlook (and some other Office programs) as you type the text seems to appear a little more slowly and the cursor glides to the right. To me, it always felt laggy and so I turned it off.


I've looked at (and discarded) Workflowy before. I hadn't heard of Logseq before, so thank you for that.

However, I am looking at it now, and while it's a nice little app, it's not an outliner and I am not sure if I am going to be able to find any use for it.

Outliners are explained here: http://outliners.scripting.com/

Why are you comparing Logseq to one?


I'm in Dynalist camp!


Does Dynalist support OPML? Nice thing about OPML is you can be in all camps at once. Or use Dynalist as iOS solution. I'm still looking for best outliner to recommend for Bike files on iOS until I get my act together and make iOS version of Bike.


This is a great outliner. I'm quite impressed by how fluid it is. Great work!

quick question: why you chose to go with HTML instead of making OPML the default file format? I'm not judging, I'm just curious.


I want more structure in the file format. OPML is perfect for plain text outliners. But if you want to support rich text then you need to encode the HTML as plain text. This means it's all of the sudden harder to process with web tools like xpath.

Also (not sure this will happen, but I plan to try) I expect to add different node types. For example right now every node is a paragraph. In future might have ... A HEADING (innovation I know). Again that maps really well to HTML, not as well to OPML.

Plus I just like the fact that .bike files are HTML. Makes me confident that they will live and be readable far into the future.


Have you considered using the org format? I'm not saying it'll be good (I've not seen an implementation outside emacs that really gets it) but org-mode has been the best outliner I've personally used.


I haven't looked too much into it. If someone really wanted it and was motivated to help write I would (might, contact me first) support, but generally the existing formats are what I will focus on.


Why not to use markdown formatting?

For example, Dynalist use this idea for their files

And node itself is heading, while when they need paragraph with heading they create _note="" attribute into <outline> element


Markdown is great and I build another app, FoldingText, around it.

But for my own use I over time realized that was a mistake. All the parsing and formatting adds complexity. I think rich text (which to be clear Bike does not yet have, though I will add soon) is a simpler way to work from user perspective. Just issue commands instead of remember and see formatting rules. It's cleaner and simpler for my uses.


I understand, thanks for sharing. I've seen some outliners using node attributes to change how the content is interpreted in OPML and thus being able to use them for things beyond plain-text. I'm quite partial to OPML, but HTML is cool too and easier to reuse.

Anyway, congratulations on the impressive first public release. The more outliners the better in my opinion.


Speaking as a daily TaskPaper user, this looks great! I totally get why you're doing the things you're doing with this, implementation-wise, and what you're able to achieve because of it.

Having said that, you know very well what a tough sell it is the more general purpose a tool is, and this is very general purpose. I hope having it out there spurs some ideas around how the novel features of this infrastructure can be the basis for some more concrete and easier to market solutions.


Wow - this so closely aligns with how I already think and organize my thoughts with notes. Definitely going to give it a try. Beautiful and fun demo video too.


Just when I have mostly moved on to Linux - it looks incredible and I wish the project luck, I would love to use this on Linux one day


I'll echo that sentiment. After my 2015 MBP dies or is no longer supported, I'll finish my move to Linux. Biggest motivation is the need to run Linux VMs in x86 without having the hypervisor translate M1. Tried org-mode, couldn't get into it. Workflowy does it for me for the time being, since it's browser-based.


Nice! Do you have any plans on adding a "library" sidebar (like IA Writer) to allow quick jumping between multiple files?


I think yes, but no plans are really set in stone at this point. I agree a navigation bar would help navigation in big outlines.


Are there any limits to the unlicensed mode? Is it a shareware or more in line with Sublime Text style?


There are some editor preferences that need a license and AppleScript support requires a license. Going forward I expect most new features will also require a license. For example I hope to add rich text support next and that will require a license. (same license will unlock all new features)


What are your thoughts on this data structure?

https://code.visualstudio.com/blogs/2018/03/23/text-buffer-r...


I've read that article a number of times, it's of course a great data structure, though I haven't ever used it myself. I think I like b+tree/rope better though for indexing lists of things efficiently.

I did a lot work using b+tree in a bigger project that I could never quite finish. Finally gave up a year ago and grabbed leftover code to make Bike. Bike is using a pretty dumb data structure, but good enough for now. Hope one day to add back the more performant b+tree stuff.


FYI, I submitted PR to add Bike into Brew casks - https://github.com/Homebrew/homebrew-cask/pull/123908


Looks terrific! You seem to have implemented the some common org-mode functionality, such as editing outline structure by moving elements and headings. Does Bike do anything that org-mode does not?

Bike certainly _looks_ nicer than org-mode!


I wish someone re-created Varatek B-liner ... https://www.mind-mapping.org/index.php?title=B-liner_2002


It's not exactly the same, but a similar left-to-right tree outliner, specifically optimized for writing, is https://gingkoapp.com


Thanks! This looks like an awesome text editor and has the very understandable navigation I miss from b-liner!


When apps use text based single file as data source are they flushing the whole file when user makes an update?

If I add or move a line does Bike rewrites the whole file and updates the in-mem sorted-dict op mentioned?


For saving to disk yes, but not on every keystroke. An autosave is scheduled and then the save is performed after some period of time. The underlying scheduling and behavior is provided by macOS framework code.

If you add a line then rows after it in the array get shifted.


Call me a curmudgeon, but I just use an editor and markdown for the same fluid outlining. I guess this is more marketed towards people who don't also fluidly use a markup/markdown syntax.


This nice think outliners can do that editors generally can't do is Focus In / Out. Maybe not important for your thought process, but for me I really like being about to start new on a fresh "page", while still being in the same document.


Code editors can do it. It should be possible to define a syntax that would work well with this (no keywords, unquoted strings, : and TAB to define scopes).


Highlight + Tab does the trick for me. Both Atom and VSCode support collapsing Markdown. Just sayin.


This looks awesome! Reminds me of FoldingText.

Edit: I'm not able to force-click on words to look them up (but right click > Look Up "x" still works). This would also be helpful on URLs, too.


Thanks, added to my bug list.


This is cool! I currently use this app for this purpose and like it a lot https://www.foldingtext.com/


Fun Fact: Jesse (OP) wrote the original version of that.

see:

https://www.foldingtext.com/blog/team/foldingtext_next.html


For those want similar on windows, try https://innovationdilation.com/


I really like FoldingText that was also your development. Sadly, it's been discontinued. Looking forward to see if Bike feels as great as FoldingText.


FoldingText was an absolute work of art, best outliner I've ever used. It's one of those pieces of software I keep using, long after it has been discontinued, holding my breath with each OS release to see if this is the one that breaks it. That will literally be the only thing that keeps me from using it. I sincerely hope Bike adopts a lot of the same features!


Thanks I'm glad you liked it. Please note that I sold FoldingText to https://doubledogsoftware.com and it's still being worked on. I don't know full set of plans, but when I sold last summer (right before dedicating fully to Bike) the goal was to get the code into a modern state that would keep working for years to come.


I've been using workflowy.com - looks VERY similar.


Workflowy is a truly category-defining solution that inspired an entire generation of similar products.

I wanted a (preferably open-source) alternative which I could use with self-managed storage/sync without sharing any data and found Logseq to be pretty good.


You mean like Org-mode?


Umm ... I have always associated org mode with powerusers because of the implicit learning curve of emacs. Tools like workflowy/logseq are dead simple because anyone who has ever used a bullet list can instantly get productive.

I know that logseq also supports org files, but I am not well versed enough with org to comment how well it stacks up against emacs.


Cool! I would like to be able to use j and k to navigate up and down when in item selection mode, a la vim (to avoid moving hand to arrow keys).


I plan to do more with single key shortcuts in outline mode, just haven't had time to really think it through. Want to make sure I have a plan before I just start adding them.


Great job with this. Going to try it out now. Slightly off-topic: What is the name of the song in the video? I want to play it on loop as I work



Great - thank you


Solid app! Please consider adding the behavior of VSCode where pressing Cmd+X cuts the line... that would immensely improve the workflow!


Maybe, though I will probably just stick to macOS standard keys for now. And maybe that is ... I don't know. Anyway generally when I want to cut line I will exit into outline mode and cut.


BIKE also stands for Bit-flipping Key Encapsulation

https://bikesuite.org


It's also a two-wheeled vehicle powered by legs


This is great! It has a lot of features I value about Workflowy, but I've always wished Workflowy had a native app


I used to write everything in TaskPaper. I guess I stopped when the iPhone came out? It was so nice back in the day.


Why would I buy this over Obsidian or Logseq, both of which are free and support more platforms?


I think the quote on the app page says it all: bikes, not aircraft carriers. I use Obsidian, and really like it, but it’s an aircraft carrier. Bike is, well, a bike.

I might, after using it, find that it’s just too simple and I need an aircraft carrier after all, but my impression right now is that the Obsidian-vs-Bike comparison is not 1:1 enough to be fair.


but it’s an aircraft carrier.

A cargo bike perhaps, but if you call Obsidian an aircraft carrier already then there aren't much metaphores left for software which does way more and is (feels) slower than Obsidian.


If you need to run it on something other than a Mac, you wouldn't.


Because you're looking for a native application which is a classic outliner. The apps you mentioned are much more than outliners.


If you want a super-fast, Mac-native quality app.


It's super-fast, and Mac native, but quite basic.


For many of us, that's a positive.


Could be, for not for $37.

There are other, equally basic for $0 or $10.


None equally integrated into the macOS system for that price though. Omnioutliner (the typical go-to native Mac outliner) is more than double.


Bike is usable forever (opening, editing, saving) without paying anything.

You only need to pay if you want to change some of the settings or use applescripts.


Can someone combine this concept with a task management/todo app? That would be perfect.


We're working on an outline app with task management/planning functionality. With end-to-end encryption and multiuser/teams support (you can see other users type like Google Docs). Early beta signup at https://thymer.com


> We're working on

Just quickly clicking around makes it look like you are not working on it. It's explained, but it would be better to change some things around so it doesn't look completely dead. E.g.

> You can follow our daily progress / We share our progress daily and share everything, from code to finances.

> This is today's entry (Apr 28 '22).

It also gives false hope one could see the product in two weeks (which was a week ago).


TaskPaper turns each item into a todo that you can check off.


That's the plan among other things. Get a license ;)


I use Taskpaper everyday, both for To-do:s and to take notes. I’ll gladly switch to Bike the day it can do most of the thing Taskpaper can do. I’ll eagerly follow the development of it.


Lovely but unfortunately Mac only.


My only suggestion would be to add some padding to the text field, at least as an option.


If this supported multi-user synchronous editing Google-docs style I'd be thrilled.


Sorry that's not likely. I'm a single developer, not ready to run a server. More likely (though still have many more basic features on roadmap) is automatic merging support when a Bike file is stored on something like Dropbox.

In fact that would be a pretty great service (for someone else to develop). "Dropbox", but for strutted data (xml, json, whatever) that knows how to merge trees and make use if unique ids. Maybe it wouldn't work, each merge situation needs a special case solution. But for Bike files at least I think it might work pretty well.


I think you could encode a “shelf” last-write-wins CRDT into your HTML using data attributes without exploding your file size. You would need to add a data-version attribute, and if you want to support hand-editing or editing by programs that don’t understand the CRDT, a CRC32 or other parity as data-parity so your loader can tell when a user might have edited a row without updating data-version.

Shelf is really simple - the JS implementation is tiny (https://github.com/dglittle/shelf) and a walkthrough of the algorithm here is a quick read: https://bartoszsypytkowski.com/shelf-crdt/amp/

It wouldn’t handle character level sync - but would let you merge documents at a rows/items/blocks level.


Thanks for the tip, I'll keep a reference to this. I will say that it's still unlikely that I tackle this myself anytime soon. I'm a single programmer, and not all that fast at that. Lots of more basic stuff to do on Bike, and iOS version... going to keep me busy for a while.


Simplenote survived the Moby Dick workout. It lags a little after paste, and hangs momentarily on redo. It may work better with more structured data. (I used the markdown file in the webapp; didn't test native/mobile versions.)

So https://www.simperium.com/overview/ might be a low-effort option to add syncing without managing your own server.

> - Data transparently moves across mobile, web, and desktop versions of your app

> - Your users can read and write data even when they're offline

> - Multiple users can collaborate with the same data at the same time

> Simperium persists your data for you in buckets... Every Simperium object is JSON data that is stored in a bucket.

> Simperium does some basic conflict resolution for you automatically... When two edits are made for the same field though, Simperium supports automatic resolution for strings (currently) and will merge the two edits together.


Did you have a look at [y-js](https://github.com/yjs/yjs)? They claim to be suitable for p2p collaborative editing and they have bindings for other languages as well.


Early in Bike's development I did try a few solutions, but I want Bike to work on somewhat big files. See (https://www.hogbaysoftware.com/posts/moby-dick-workout/). Anytime I loaded such a file into a sync solution everything blew up.


YJS is one of the more performant ones. Wonder how it would do with your example file.


Which other languages?


Let me know when I can have the same item under N nodes.

Not a copy, but a leaf with multiple parents.


I would consider dropping notion for this if there was a good Windows cousin.


Any chance you’ll be releasing this on SetApp too (like TaskPaper)?


Maybe, I'll have to see how it goes. My main goal is to sell enough copies so I can keep working on it. Last few years I've had to spend a bunch of time contracting. Hoping this will get me back to full time independent.


Well done on the smooth animations. Looks very satisfying to use.


First class job!


I like it


Off topic and meta to HN: I had no idea you could do both a URL and a text submission, is this a recent change?

I think this format is fantastic for Show HN threads.



Thank you! I love that they do very small changes that have positive impact. It really makes the most sense for Show HN.


I believe this changed a few months ago or so, and it's only available for Show HN submissions afaik. It's a small change but definitely a great improvement over the old way where you'd post a link and then add a comment.


> An outliner (or outline processor) is a specialized type of text editor (word processor) used to create and edit outlines, which are text files which have a tree structure, for organization.

https://en.wikipedia.org/wiki/Outliner

I'm not criticising use of the term, it seems familiar to (also used by) several commenters here, I just hadn't come across it. Guessed 'bulleted notes app' from the submission, which is close enough I suppose.


[flagged]


It's funny how our expectations have changed. I am keen to like this app simply because of who it's from, Hog Bay, who made one of the first Mac apps that really inspired me to how different Mac software could be back in the 2005-ish era. That was WriteRoom, and I used it on my second-gen Intel running Tiger and Snow Leopard.

In 2007 it was $25: https://web.archive.org/web/20070202002238/https://www.hogba... (and crikey wasn't design beautiful back then? Look at that snapshot of web design history.)

That same $25 would, calculated by inflation, cost $35 now. Which is the price of this app, Bike.


Thanks for history link, just spent 15 minutes looking through my own website :)


It was a blast from the past! I really enjoy looking at sites from that era - I'm thinking of setting up a proxy through the Internet Archive (several tutorials online) to use with my lampshade iMac running Snow Leopard.

UI, UX, websites, software -- it was a good time and we've lost a lot.


I'm fine with that. Newer OSes contain new features and APIs, and I can totally understand a developer wanting to build on top of some new feature instead of having to reinvent it themselves. Sometimes that's inconvenient for me, although I try to keep all my devices current. But if a dev wants to require an OS version that's shipped with every M1 Mac that's ever existed and chooses that as their cutoff, I get it.


$30 for an outliner and 1 year of support does feel steep.

I dig that it has AppleScript support, rare (and great!) to see a new app supporting that.


Won't run on my MacPro laptop because it's pre 11. Boo!


Same.

I am on 10.14 because there are some 32-bit apps I can't replace (either because there are no 64-bit versions, for instance some old emulators, or because there are but they cost money, or there are but they have other changes which I don't like. MS Office is an example of both of the latter.


OutlineEdit 3 supports macOS 10.14: https://outlineedit.com/home.html


Just FWIW, I tried it.

It does work, but it's a little clunky IMHO. For instance, if you press Return in the middle of a line, I expect it to split the current paragraph into 2, but not in OutlineEdit (or Outlinely or OmniOutline).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: