Gingko Desktop – An Update

Hi all!

The Desktop version of Gingko is nearly ready to be launched!
You can find it on the new homepage, here:

Here are some of its features:

  • Downloadable desktop app for Windows, Linux, and Mac
  • Work entirely offline, and save to files, by default
  • Full undo/version history (not navigable yet, though)
  • Drag and Drop
  • Syntax Highlighting
  • Import/Export JSON files from/to web version (manually)
  • Export Markdown

And here is some of what’s still missing:

  • Automatic sync or backups
    (but you can save files to a Dropbox folder to achieve auto backups)
  • LaTeX support
  • Card-splitting
  • Search
  • Import OPML or Markdown
  • Export to Word, or any other format besides plain-text and JSON.

It’s been a long road, but I’m happy with how it’s turned out. It might not be much different to look at, but it’s been rewritten in such a way as to allow much more powerful features to be built in the future.

Check it out, let me know what you think, so I can iron out the last few bugs before announcing it to everyone on the full mailing list.


Resolving Freedom vs Constraint

Sometimes, we have no trouble starting a story or project, but we’re unable to stick to one for long enough to actually get it done.

That’s fine if we’re just playing and exploring, but at some point, we need to learn to push for completion in order to grow.

The trouble is that we tend to rebel against any restrictions on our freedoms. We might start out with enthusiasm, but you will hit a point where continuing feels like a chore.

Freedom is important because it’s one of the few (if not the only) values that one can argue as being intrinsically good. Restrictions are important because constraints now can lead to freedom later. When used in this way, it’s called “self-control” or “discipline”.

This tension between Freedom and Constraint is present whenever we have the power to choose. And we always have that power, even if it might not seem like it. So how do we resolve the tension?

Continue reading Resolving Freedom vs Constraint

The Input/Output Ratio

  • Are you reading several books a month, but somehow you “don’t have time” to write?
  • Do you read for inspiration, but avoid writing even when it strikes?

I read. A lot. If I’m into a good story, I can hardly stop. My wife will see me gravitating to my Kindle during every random time pocket, and she’ll tell our son “Oh, looks like we’ve lost papa to a book again!”

I also think of myself as a writer, though I have very little writing to back that claim. Why is that? I didn’t understand why I read so much, and wrote so little, until I read this quote:

“If you’re a perfectionist of the paralyzed sort, it’s almost guaranteed that you watch a lot of TV. Perfectionists and procrastinators love TV because nobody watches TV incorrectly. It is completely passive, which makes it an automatic, simple, rewarding, and mistake-free “win”.”
– Stephen Guise, How to be an Imperfectionist

Now, I read this book more than once (of course!) but the first few times I did, that quote just slid right over me and made no impression. We’ve never owned a TV. My wife and I watch shows on Netflix at her prompting, not mine. I do watch a lot of productivity videos on YouTube, though… but at least that’s “productive” (notice a pattern?).

It took another pass to finally see that those words were written for me… I just had to substitute “watching TV” with “reading” for it to apply.

Ouch. I might not be a couch potato, but I’m the literary equivalent. An armchair beet? A rocking chair parsnip? Never mind… humor isn’t my strong suit. Must be all serious, all productive, all the time.

Reading is worthwhile, it’s fun, and it does build perceptual exposure that can improve your writing. But the key is to focus on your production/consumption ratio.

Seeing things as either production or consumption left me no room to hide. Reading classics of my chosen genre: consumption. Reading a “how-to” book on writing: consumption. Watching YouTube videos on time management: consumption. Consumption is fine, but it needs to be balanced with the appropriate amount of production. What’s “appropriate”? Enough that you feel satisfied.

Since I started seeing things this way, I’ve started writing again after a hiatus of over a year.

The mechanics of this are simple: figure out how much time you spend in each category, and adjust it slowly until it feels right. But the key is simpler still:

Start the habit of asking yourself: “Am I producing, or consuming?”

Writer’s block? 6 things to try to get unstuck

If you’re struggling to start writing, or struggling to continue, here are a few things you can try to get unstuck.

  1. Expose yourself to bad work. Get some examples of terrible work in your genre, and read them. Here’s a video I made describing why this works.
  2. Be playful. If you’re stuck in the middle of a piece, save your draft, then try throwing out all the rules for a while. You can pretend that you’ve stumbled on someone else’s work, and want to be devious as you continue. Kill off darling characters, throw in a crazy twist… the point isn’t to find a path forward, but instead to loosen you up.
  3. Set your bar at “existence”. Do the words exist on the page? Success. Are they in the ether of your mind? Failure. We tend to get paralyzed when we compare our current state (nothing/blocked) with what we imagine (some perfect, or even “good enough” finished piece)… and the gap between now and then is overwhelming. But really, we should be comparing “non-existence”, which is the default state of everything, to “existence”, which isn’t too hard to achieve.
  4. Forget ordering. This is why writing in index cards, or software like Gingko is so effective. You can write without worrying too much about structure.
  5. Work at a different level. If you’re stuck with a scene or description, jump up to writing rough overviews of entire chunks of your book. If you’re stuck on the overall structure, zoom in to one part and write out all the details.
  6. Cut off all input. Being stuck comes from unrealistic expectations, which comes from repeated exposure to Quality. If exposing yourself to bad work (point 1.) isn’t enough, then cut off your exposure completely for a week or so. Don’t read, watch, or listen to anything related to what you’re hoping to write.

These strategies aren’t meant to help you find the correct path forward. The more you try to do that, the more stuck you’ll be. These techniques are meant to allow you to discover for yourself that there is no one true path.

As an example, take the art of sculpture. It’s good to have an idea of what you’re aiming for, but the process hasn’t started until you have clay in your hands, and are molding it into shape.

Writing in your head is like sculpting without clay. You need some words in front of you (any words), in order to start shaping the story you want to tell.

Still going strong

I received a couple emails in a row asking if Gingko was “still active”, despite putting out what (to me) is quite a lot of updates… I realized that they’re all over the place, but not here on the blog.

I’m most definitely still here, working hard and full-time on fixing bugs for current Gingko, and developing the next version (Desktop + web). Most updates for that take place on the community forums.

You can follow me on Twitter, as it seems to be the platform I’m most active (though still, not that active).

I also started posting videos on YouTube, and will continue to do so, once our schedule returns to normal. For those who aren’t aware: my wife and I both work from home, and homeschool our 4.5 yr old son. He’s normally with us five days a week, and with the grandparents the other two… except for the last couple months when we’ve had him 6 or even 7 days a week.

So, that’s my mini update. I’m trying to be more visibly active, and I need to get over perfectionism in order to do so… working on that daily!

Gingko Desktop – Ready for Testing


Gingko Desktop is now ready for testing.

Here are a few quick facts about it:

  • Runs on Windows, Mac, and Linux.
  • Is based on files, so all your data is stored locally.
    You can open, save, and sync (through services like Dropbox).
  • Persistent Undo/Redo
  • Export to JSON (so you can import into
  • Export as text/Markdown
  • Visual changes, to increase the contrast, as well as other tweaks.

What it can’t do yet is:

  • Sync trees across devices.
  • Real-time collaboration.
  • Many other features missing as compared to (such as tags, search, focusing on one subtree, LaTeX etc.)

I need volunteers willing to test it on various platforms.
If you’re willing to try it out, please get in touch with me sign up at the form above.

I’ll be making wider announcements as I continue to iterate on this.


Moving Forward : The Direct Path

I’ve decided not to pursue the Kickstarter Open Sourcing at this time. There are a number of reasons, but the most important is that it would mean a very long time before Gingko would start improving again for you, the user.

I had been working on the campaign for weeks, and still hadn’t completed the script for the video. After that I would have had to create the visuals to accompany my voiceover, edit it all, write all the campaign copy, write a newsletter. Then, once running, it would have been a month where my entire focus was on pushing the campaign, overriding both my ability to provide support, and the time I’d need to ship improvements. Assuming the campaign succeeded, it would then take significant work to make Gingko open source (I’d have to restructure the code, make it easier for others to install, document it fully, and much more). And in the end, it’s only a hypothesis that open sourcing would lead to a faster improvement cycle eventually… that’s something that depends heavily on random factors.

So, on the one hand, even assuming success (not guaranteed), it’s months of work, for very little actual return for you users. I still believe Open Source is a good direction to move towards. And I would like more collaboration. But it’s not time for this yet.

On the other hand, the work that went into the campaign isn’t a waste. I was reminded of the many exciting and powerful features that I had dreamed of implementing. And it’s made me rethink and clarify my priorities. What came out on top was this:

Make great software… everything else is a distraction.

For the last month, I’ve been working on a collection of features that combine both the most frequent request I’ve ever had (a true, download to your device(s), offline capable Gingko), with other changes that people haven’t asked for ever, but I believe will make Gingko far more powerful than it is now. It’s the greatest coding challenge I’ve ever undertaken, but it’s going well, and I’m making progress every day on it.

If you were excited about open source Gingko, I will mention that I am for it in principle. But I’m wary of big and irreversible change, in a direction I’m not experienced in, when it’s not clear that it will be for the better. Instead of open sourcing to everyone, all at once, I will instead be willing to take on “semi-open” collaborators as bandwidth permits. If you are yearning to hack Gingko (for the benefit of everyone and not just your own niche use-case), get in touch with me. If we’re a good fit, I will give you access to the code.

These days, I’m coding 100% of my working time (sometimes forgetting to eat lunch, which I don’t recommend). Customer support happens in pockets of time on my evenings and off days. And I’m loving it. I feel both relieved and excited about moving forward. An excitement I haven’t felt in years.

When I can, I will post specifics of my progress so far.


PS: I added Copy/Paste to Gingko a few weeks ago. You can now hit Ctrl+C to copy a subtree, and Ctrl+V to paste it. It’s a little slow, but it works.

Gingko’s Path to Growth

Gingko is, and always has been, small, self-funded, and profitable. It continues to grow steadily, via word of mouth alone.

But I’ve reached the limit of what I can accomplish alone. For a long time, I believed I faced a tough choice:

  1. Take the path of selling Gingko off, and hope that my successor follows the spirit of the project and doesn’t let it die.
  2. Take the path of opening Gingko up completely in one shot, and risk irrevocably damaging the business. Thereby failing in my responsibility to my current users, and the family I help support.
  3. Devote all my energies to growth and profit, and stop making improvements until I achieve “scale”. Go big or go home.

Each had its attractions, but none are ideal. But, towards the end of the 5 month journey I took with my wife and son, I realized another option: “sell” Gingko to the world. Open-source Gingko, but raise a buffer to support both my current users, and my family in the transition. Bring Gingko, and its vision, to a wider audience.

So, here’s what’s in store:

Gingko Kickstarter OS
I’m creating a Kickstarter campaign to accomplish several things at once: Continue reading Gingko’s Path to Growth

Settling Down Again

6 months ago, myself, my wife, and our then-2-year-old son, sold many of our possessions, packed what was left into a 5′ x 5′ storage unit, and set off for Spain, Kuwait, and Sri Lanka.

We have stayed in 21 different places over this time, ranging from a luxury hotel in the center of Madrid (on deep discount, of course), to a night “sleeping” on the floor on the grounds of a church in Sri Lanka. All told, the trip cost us little more than rent & utilities would have, had we stayed.

As you might imagine, we are very happy to be back in Canada. We’re settling next week into a nice 2 bedroom apartment we’ve found to rent in the suburbs of Ottawa-Gatineau.

There were times during the trip where I let some things slide, mostly email and this blog. For that, I’m sorry. But at no point was I out of reach for anything major. Gingko as of right now has been up continuously for 3,361 hours, and only had 4 minutes of downtime in 2016.

Most importantly, for readers and Gingko users: I’ve had a lot of time to think during this trip. And more than time, I’ve gained some perspective on what matters. This perspective has given me a way forward for Gingko that I’m very excited about. While I can’t reveal much yet, watch this space for announcements.

The Cascade of Costs

I’ve been considering raising Gingko’s prices.

However, I realized that I can achieve the same effect by dropping Intercom and replacing it with something free or much cheaper. Intercom is an incredibly powerful tool, but I am just using it as a second inbox for support.

Why did I jump to “raise prices”?
I believe this is a perfect example of a “Cascade of Costs”.

Intercom has raised $66 million over 5 rounds of funding, and so it needs to do more than cover its costs, pay to continue developing the product, and have enough of a buffer to survive hard times. It is forced to grow rapidly, and forced to charge more, to make a profit for those investors.

Because Intercom is a tool for businesses, that means that every single business that uses it also needs to charge their customers a little (or a lot) more to cover their expenses and make their own profit. If those businesses serve other businesses, the cascade of higher costs/higher prices continues down to all their customers.

Don’t get me wrong: I love Intercom, and I believe they’re making the best choices out of the ones they have. It’s just that the pattern of “move to San Francisco, get funded, get big, raise prices” is so ingrained into the tech world that it’s not questioned half as often as it should be.

I just got back from a trip to San Francisco. It’s a nice city. But frankly, I was very underwhelmed. The single most striking thing I noticed is the absolutely out-of-control cost of rent and living.

Which means that every body on Earth pays more for software (with money or attention), because of the cost-of-living in Silicon Valley.

Also, fewer kinds of software are developed, because the focus needs to be on the few that can make a vast profit for a corporation, not the many that can make a decent living for individuals.

I don’t question the logic of this, only it’s seeming inevitability.

For myself, I might still raise Gingko’s prices. After all, it’s evolved a good deal since launch. But because I’m free of investor pressure, and mobile, I am not tied to just that option.

For instance, to better support ourselves, we might move somewhere cheaper. Right now I’m travelling Spain with my wife and son, to escape both the (relatively) high costs and (insanely) low temperatures of Montreal.

Got my work done in the pre-sunrise hours, so I could spend the day roaming Madrid with my family. By the way, everything I now own (except books) fits in that backpack I'm wearing.
Got my work done before sunrise, so I could spend the day roaming Madrid with my family. By the way, everything I now own (except books) fits in that backpack I’m wearing.

Who knows, we might fall in love with some white-washed small town on the Spanish coast, and make our base here instead!

Freedom and profit don’t have to be mutually exclusive.
But if they were, I’d choose freedom any damn day!