diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/blog/logseq.html.erb | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/src/blog/logseq.html.erb b/src/blog/logseq.html.erb new file mode 100644 index 0000000..1da5090 --- /dev/null +++ b/src/blog/logseq.html.erb @@ -0,0 +1,339 @@ +title: Switching from GitJournal to LogSeq +date: July 15, 2023 +--- +<p> +As mentioned previously on the blog, for a long time I was relying on +<a href='<%= path_to 'blog_gitjournal' %>'> + GitJournal +</a> for note taking. There were quite a few reasons I really liked it: +</p> + +<ul> + <li>It's open source.</li> + <li>Syncs with <code>git</code> (which I can selfhost).</li> + <li> + The underlying format is just MarkDown, which means that I can easily edit + the notes on my laptop with my editor of choice. + </li> +</ul> + +<p> +But there's also some issues I kept running into: + +<ul> + <li> + Search is not very good (in particular, there's no in-page search, only + searching for notes that contain a certain string) + </li> + <li> + The hierarchical organization of notes is nice and simple, but has its + limits, not all relationships between ideas are tree-like. + </li> + <li> + The <code>git</code> implementation on the mobile app has its problems. E.g. + merge conflicts are not going to be resolved, sometimes leading to forced + commits that remove notes. All of this can be resolved on a computer with + access to the repo, but it can become a hassle. + </li> + <li> + There's no easy way to link between notes, which could have been very nice. + </li> + <li> + Some other bugs I've noticed, e.g. sometimes duplicate notes appearing, or + others completely disappearing (could be caused by the git issues mentioned + above, or the way I was managing notes computer-side away from the app). + </li> +</ul> +</p> + +<p> +None of these issues are absolute deal breakers, and I still think GitJournal is +a really nice solution that I can recommend, but all the slight annoyances led +me on a search for a potential replacement. If I didn't find anything better, I +would have been happy to stick with GitJournal, but maybe there's a note taking +solution somewhere out there that would suit me better? +</p> + +<p> +If you do some research on note taking apps you'll be greeted with a flood of +content from "productivity" YouTubers, bloggers, etc. Turns out there's a ton of +options for different types of workflows and preferences, however most of them +are +</p> + +<ul> + <li>proprietary</li> + <li>bloated</li> + <li> + for syncing, require registration with a SaaS startup that you have no idea + how long it will stay in business, or how much of their monetization model + depends on scraping your data. + </li> +</ul> + +<p> +Enter <a href='https://logseq.com/'>LogSeq</a>. +</p> + +<h3> Enter LogSeq </h3> +<p> +Let me start off by saying that LogSeq is not <i>the</i> perfect solution for +me, but I'll go over my personal gripes with it later. First, let's talk about +what LogSeq even is and what's good about it. +</p> + +<p> +LogSeq is an open source note taking application that is privacy-first, +outline-based, non-hierarchical, and features bidirectional linking. Let's break +that down: +</p> + +<ul> + <li> + <i>Privacy-first</i>: all notes are stored as plain-text files on your + computer. By default, there's no synchronization; in particular, there's no + central server the app talks to. + </li> + <li> + <i>Outline-based</i>: each line of text is a bullet point (and these can be + nested), there's no plain paragraphs/headings like in MarkDown or basic + HTML. + </li> + <li> + <i>Non-hierarchical</i>: notes are not organized into a tree-like directory + structure. Instead, each note is a separate page, and you organize your + notes by linking/tagging between pages. + </li> + <li> + <i>Bidirectional linking</i>: these links between pages go in two directions, + i.e. when page A links to page B, page B will have a section of + <i>backlinks</i>, making it easy to jump back to where B is referred from + (be that back to page A, or any other pages that link to B). + + <ul> + <li> + This feature is inspired by another app, Obisidan, which you might be + familiar with. Both Obisdian and LogSeq are touted by some to be good + tools for building a so-called "second brain." + </li> +</ul> + +<p> +Some other features to mention: +</p> + +<h4> Journal </h4> +<p> +LogSeq automatically creates daily journal pages. These can be used for +journaling or as a dumping spot of random ideas, links you encounter, notes to +jot down. Thanks to backlinks, if you include tags or links to topic pages in +your notes, you'll be able to find these seemingly chaotic daily notes when +looking at a specific topic later. +</p> + +<h4> Plugins </h4> +<p> +There is a plugin interface, and an already fairly large marketplace of +community-built plugins available. Many are just visual tweaks you can add if +you like them, there's also a bunch of integrations with various other note +taking/productivity apps (which I personally don't use, but many find them +useful, from what I hear, in their workflows). There's really only one plugin +I'm using currently, more on that in the next section, but overall its nice to +see extensibility. +</p> + +<h4> Synchronization </h4> +<p> +As mentioned, there's no synchronization enabled by default. There is a +recommended cloud sync option with LogSeq's servers, which respects your privacy +by end-to-end encrypting all your content, but you know me. I prefer to sync my +notes with <code>git</code>. Not only does this allow me to selfhost my notes, +it also gives me all the benefits of version control (history, a way to deal +with merge conflicts when dealing with multiple devices). +</p> + +<p> +Since all of LogSeq's note files are just plain-text on your disk, setting up +git synchronization is trivial: just make the notes directory a git repo, add a +remote, and voilá. +</p> + +<p> +Here's also where a plugin comes in useful: there's a <code>git</code> plugin +that makes it easy to commit, push, and pull changes from within LogSeq itself, +rather than having to switch between it and a terminal. +</p> + +<p> +Note: LogSeq does have a separate built-in version control feature that's based +on <code>git</code>, but I recommend against it. It's based on automatically +committing every <i>x</i> seconds, so you never exactly know if your latest +changes are already committed, and you end up with a very messy history of +partial and/or unrelated changes going into individual commits. +</p> + +<h4> Mobile app </h4> +<p> +There is a functional mobile app, with the same look and most of the same +features as the desktop application. It is missing plugins, so in particular, no +git plugin. <code>git</code> synchronization on Android is still possible with +Termux, but less convenient than on a desktop, since it requires you to manually +go into Termux to commit/push/pull changes (and be very careful of ending up +with a merge conflict on your phone, that's much less fun to deal with on a +phone screen than in your favorite desktop editor). +</p> + +<h4> Other features </h4> + +Some other features include: + +<ul> + <li> + Aliases: you can create aliases for tags, so that when you tag a note with + any of the aliases, it will still point to the original tag. For example, if + you have a tag "book", and add an alias "books", you won't have to remember + if the tag was in the singular or plural. + </li> + <li> + To-do lists. + </li> + <li> + Scripting/queries: this is a feature I haven't looked into much yet, but it + sounds very useful. You can write queries in a very general syntax to find + notes that satisfy particular conditions. E.g. find all articles (tagged + with <code>#article</code>) that are about graph theory (tagged with + <code>#[[graph theory]]</code>) published in the last year (a date property + is within a particular time frame). + </li> + <li> + Embedding blocks: a bullet point (with everything nested below it) can be + directly embedded elsewhere (such that editing either instance changes + both). + <li> + Whiteboards. + </li> + <li> + <i>The Graph</i>: a visualization of links/relationships between your pages. + </li> + <li> + Flash cards. + </li> +</ul> + +<p> +The first two I use regularly. Queries I want to eventually get into. The others +I don't really find use for. +</p> + +<h3> Problems </h3> +<p> +There are a few things I'm personally not a fan of with LogSeq. +</p> + +<h4> Bloat </h4> +<p> +The biggest general problem for me is that despite a nice, minimal interface, +LogSeq is an Electron application. The <code>logseq-desktop-bin</code> AUR +package is <i>500MB</i>! All for a note taking application. In addition to the +bloat coming from Electron, I think a lot of it is also features that I have +absolutely no use for (like the aforementioned graph view and whiteboards, which +go way beyond basic text editing and markup). +</p> + +<p> +Many people these days brush bloat under the rug, saying that on modern machines +it doesn't matter, and frameworks like Electron are good because it means +faster, simpler development. But these problems do end up having consequences. +For example, LogSeq struggles with large files. +</p> + +<p> +The full text of Shakespeare's <i>Othello</i> (around 160KB) takes several +seconds to load, and the app displays a bright orange warning message that +"Large blocks will not be editable or searchable to not slow down the app." +<code>vim</code> opens the same file in a fraction of a second, a web browser +takes maybe about a second. +</p> + +<h4> Not exactly MarkDown </h4> +<p> +The LogSeq team say that the underlying text files are just MarkDown, but that's +not exactly true. +</p> + +<p> +The notes have to be all organized into bullet points, you don't have plain +paragraphs or headings. Furthermore, additional markup is inserted, e.g. for +block references. All of that makes the text less human-readable/-editable, a +core feature of MarkDown. +</p> + +<p> +Which leads to the next very sad problem... +</p> + +<h4> It's not <code>vim</code> </h4> +<p> +Once you get used to <code>vim</code>, all other text editing options are just +inferior. Bram's gift to humanity is both a blessing and a curse, since there's +no getting away from sometimes needing to edit text outside of it. +</p> + +<p> +Yes, there's a "vim" plugin that implements some keybindings, but I tend to stay +away from those, as they're always disappointing: they implement some of the +most basic keys, but others I'm used to relying on are not supported. So I'd +have to remember which plugin for which piece of software implements which ones, +and it just becomes more of a hassle than a convenience. +</p> + +<p> +As mentioned above, using <code>vim</code> directly on the text files is also +not a solution, since the notes format is not exactly standard MarkDown, and +either way you'd lose all the benefits of LogSeq, especially links/backlinks. +</p> + +<h3> Conclusions </h3> +<p> +So, with that ranty section above over, what's my final verdict on LogSeq? I've +been using it daily for the past several months, and until something better +comes along, I don't plan on switching. Despite all its shortcomings, I really +like it, it helps me organize my notes and thoughts. +</p> + +<p> +I was actually aware of Obsidian before, and it had piqued my interest, seemed +like a useful tool. However, I didn't want to jump onto a proprietary +note taking solution. When doing my recent research on these apps, I found +LogSeq, which is a FOSS alternative. I was reluctant at first, for all the +reasons stated above, but after just a bit of test running, turns out the +benefits outweigh the trade-offs I have to make, and LogSeq has replaced +GitJournal for me. +</p> + +<h4> The pipe dream </h4> +<p> +To finish this post, let me go on a little fantastical journey into what my +ideal note taking solution would look like. +</p> + +<ul> + <li> + Given my <code>vim</code> addiction, it would be a <code>vim</code> plugin. + </li> + <li> + Given my newly-found backlink addiction, the plugin would implement + backlinking (e.g. displaying backlinks to a note in a separate pane, with + links that can be followed VimWiki-style). + </li> + <li> + Plain MarkDown syntax for notes. + </li> + <li> + An easy-to-use query syntax. + </li> + <li> + An Android application that supports backlinks, queries, and + <code>git</code>. + </li> +</ul> |