m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/blog/logseq.html.erb
blob: 18c186dd970d7529d2bba61deab7028d51ca3544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
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."
    </ul>
  </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>