Over the past month I’ve started working on Bike 2.0.
I’m calling it 2.0 because it will have significant changes and new features. Licensing is the same as for any Bike release–It will be a free update if you purchased Bike within the last year.
Bike 2.0 will take a while to be ready. I’ve been working on it for a month, and I’m still at least another month+ away from a first preview. Then likely at least another few months until it’s ready to replace 1.x. Also, my estimates are always wrong.
I expect to continue smaller 1.x releases, but I’m unlikely to add new big features.
Why is a 2.0 needed?
Bike 2.0 started as I was adding outline styling and filtering to the current 1.x codebase. The coding was difficult. I decided to step back and figure out how to make these and other future features easier to implement.
I have a design now that I think works, but it’s a big change to Bike’s internals. It requires that I touch every corner of the codebase and then put everything back together again. At some point I realized this wasn’t just a big update, but a version 2.0, and it would take a while to finish.
What to expect?
I expect the 2.0 release cycle to go similar to 1.0 release cycle. I’ll release a rough and limited preview release. Then iterate quickly over a few months as I add features and polish until it’s ready for release.
I’m excited for 2.0!
Long way to go, but just got first pixels to the screen in Bike 2.0 codebase:
Do anything and it then crashes!
I have a design now that I think works, but it’s a big change to Bike’s internals. It requires that I touch every corner of the codebase and then put everything back together again.
Sounds like a big job! Thanks for your effort.
Markdown support, markdown support!
Look at her cute face!
I’m also excited about the internal change even I can’t see!
Sorry, that’s not in plans for this release. Other cools stuff though!
A week later and I’ve got some new pixel colors:
Still a long way till it’s ready for testing
Tested with a million rows. Loading is slow, and scaling to that size isn’t all that useful, but it’s a good test that basic structures and algorithms aren’t to bad. Once loaded scrolling and editing are fast as can be.
Have a system for filtering. That’s what the yellow region is, filtered rows. TaskPaper had filtered rows, but it either showed the row or did not. In Bike I will devote space to indicate that sibling rows are filtered, and make it proportional to the number of rows filtered. I hope this will make filtered outlines more understandable.
Building the filtering system with smooth animations in mind. I’m imagining that as you type your query rows will slide smoothly into the filtered area, again to make it all more understandable. And pretty darn fun, at least I’m imagining it will be.
The layers used for displaying rows are more structured. In Bike 1.x there is no layer hierarchy used when showing rows. This was an easy path to making things fast, but added a lot of complication later when implementing features like folding and focusing. In Bike 2 the layer hierarchy matches the outline hiearchy. It’s fast and I “think” it will simplify a bunch of the animation code… still not to that point yet though to be sure.
So that’s where I am today. I think next step is to get selection working, so that I can implement basic fold and focus commands.
Embedded files still very much on list, but not a focus of 2.0. Generally they can be added whenever I have “time”, file formats don’t depend too much on Bike’s internals.
I expect I will be adding additional file format options for iOS version of Bike, which should start soon after 2.0. That will be good time for file attachment design too.
Eagerly waiting for the iOS version!
Great news. Love this app. I hope the silky smooth cursor animations will remain!
Another week and continuing to make progress:
- File reading
- Text picking/geometry
- Selection model in progress
This isn’t a promise of any features to come, but did impress me as a debug screen.
What is exciting is that those styles are computed by matching generic Bike outline paths. Still a lot of work to build UI to edit stylesheets, but core logic for running generic stylesheets is now in place.
Very cool …
It hadn’t occurred to me that outline paths could attach different styles to substrings within a row, if that’s what we’re seeing there …
They allow attaching styles to existing text runs. In this example I’m actually styling existing inline styles, bold, italic, strikethrough… etc, but just applying colors. You could style your own custom text run attributes as well.
For performance (and intelligence… because I can’t figure out proper transformations to turn absolute path into efficient relative path ) reasons I only allow relative paths when matching for styles. So for example the path to match bold text is:
Which translates to:
. current node
run is type run
@strong and contains strong attribute
That sounds very useful …
Finally got filtering search working today! Still a long way to go, but making progress. I think the next hardest thing that I need to work on is 2.0 animations.
Still going !
No much on animation front yet, instead I decided to work on editing. Moving rows, typing text. It’s making Bike 2.0 feel more real. Then I hit the delete key (not yet implemented) and boom… feels like still have a lot of work to go.
Time keeps flying. Still messing with animation. Then get stuck and port over some easier features. Just got undo working again! Wishing I had something that could become the public beta now, but still not ready.