Added post on Emacs and Zettelkasten
Updated stylesheet with slimmer padding on pop-boxes (quotes, alerts, etc) Added image for post on Emacs and Zettelkasten.
This commit is contained in:
parent
051f98cc14
commit
0e8c78466d
251
feed.xml
251
feed.xml
@ -17,8 +17,8 @@
|
|||||||
<link>https://judah.freedomland.xyz//</link>
|
<link>https://judah.freedomland.xyz//</link>
|
||||||
<description><![CDATA[]]></description>
|
<description><![CDATA[]]></description>
|
||||||
<language>en</language>
|
<language>en</language>
|
||||||
<pubDate>Thu, 21 Dec 2023 00:00:00 -0500</pubDate>
|
<pubDate>Fri, 22 Dec 2023 00:00:00 -0500</pubDate>
|
||||||
<lastBuildDate>Thu, 21 Dec 2023 20:05:56 -0500</lastBuildDate>
|
<lastBuildDate>Sun, 24 Dec 2023 02:30:24 -0500</lastBuildDate>
|
||||||
<generator>weblorg 0.1.0 (https://emacs.love/weblorg)</generator>
|
<generator>weblorg 0.1.0 (https://emacs.love/weblorg)</generator>
|
||||||
<webMaster>Judah Sotomayor</webMaster>
|
<webMaster>Judah Sotomayor</webMaster>
|
||||||
<image>
|
<image>
|
||||||
@ -28,6 +28,243 @@
|
|||||||
</image>
|
</image>
|
||||||
|
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Reflections on a year of Zettelkasten: Tooling</title>
|
||||||
|
<link>https://judah.freedomland.xyz//posts/reflections-on-a-year-of-zettelkasten-tooling.html</link>
|
||||||
|
<author>author@mail.com (Blog Author)</author>
|
||||||
|
<guid isPermaLink="false">https://judah.freedomland.xyz//posts/reflections-on-a-year-of-zettelkasten-tooling.html</guid>
|
||||||
|
|
||||||
|
<pubDate>Fri, 22 Dec 2023 00:00:00 -0500</pubDate>
|
||||||
|
|
||||||
|
<description><![CDATA[<p>
|
||||||
|
Back in 2021 I began a zettelkasten using guides from <a href="https://zettelkasten.de">zettelkasten.de</a>.
|
||||||
|
It has grown to over 723 notes in less than two full years.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="https://judah.freedomland.xyz//static/img/filetypes.svg" alt="nil" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I'll cover this topic in several posts.
|
||||||
|
This first post will discuss the tools I've used to grow and maintain my second brain.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I have shifted between note-taking systems multiple times between now and the genesis of my Zettelkasten.
|
||||||
|
Different strengths and weaknesses have left me uncomfortable in every system, up until the last: Emacs.
|
||||||
|
Before I get to that, I'll cover the pieces of the system, what's changed, and what hasn't.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="outline-container-text-editing" class="outline-2">
|
||||||
|
<h2 id="text-editing">Text editing</h2>
|
||||||
|
<div class="outline-text-2" id="text-text-editing">
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-vimwiki" class="outline-3">
|
||||||
|
<h3 id="vimwiki">Vimwiki</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
The first version was the amazing <a href="https://vimwiki.github.io/">vimwiki</a>, a system simple and elegant.
|
||||||
|
It provided most of the features needed for a zettelkasten, and supported standard markdown.
|
||||||
|
During this period I grew comfortable with Vim, which I consider <i>the</i> premier editing experience.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I began to use <a href="https://taskwarrior.org/">Taskwarrior</a>, an amazing command-line task management tool.
|
||||||
|
<a href="https://github.com/tools-life/taskwiki">Taskwiki</a> is another amazing vim extension that maps tasks between vimwiki and taskwarrior, allowing you to create "viewports" with various Taskwarrior filters.
|
||||||
|
The combination of Vimwiki and Taskwarrior is exceptionally comfortable, and taught me my first important lesson: <i>tasks</i> and <i>data</i> are inseparable.
|
||||||
|
It is impossible to provide sufficient information to do a task if that task is separated from its context, its data and metadata.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Eventually I grew tired of the limitations of editing text in a terminal.
|
||||||
|
Vim doesn't support graphical things very well, and I wanted to view images inside my notes.
|
||||||
|
While various extensions solve this problem, and adjacent problems, I had at this time noticed <a href="https://www.dendron.so/">dendron</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-dendron" class="outline-3">
|
||||||
|
<h3 id="dendron">Dendron</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Dendron features a mixed hierarchical/networked note setup, which (according to the creators) scales well with heavy use.
|
||||||
|
While I still have not reached the ~10k note count that the authors asserted Dendron would survive, the structure appealed to me because at the time I was working with several sorts of knowledge that a hierarchy represents well–things like programming language concepts in multiple languages.
|
||||||
|
Dendron also features a note-graph, which represents both the hierarchy of notes and the links between notes.
|
||||||
|
This feature was most attractive to me, as inside Vim I was having trouble visualizing my entire zettelkasten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Overall, the featureset provided enough value that I made the change.
|
||||||
|
I adapted all of my vimwiki links (or most!) to Dendron's format, and began to implement some of Dendron's more advanced features in my daily use.
|
||||||
|
I installed VSCode and a Vim emulation plugin, and away I went.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The first snag I ran into was the limitations of Vim emulation plugins, so I switched that plugin to <a href="https://github.com/vscode-neovim/vscode-neovim">vscode-neovim</a>, which embeds neovim into VSCode.
|
||||||
|
I learned a value here: closer to Vim is more comfortable.
|
||||||
|
Vim truly allows you to "edit text at the speed of thought".
|
||||||
|
Its modal paradigm turns the keyboard into a uniquely fluid control panel, optimized for text editing.
|
||||||
|
Extensions often miss features or have subtle bugs.
|
||||||
|
The closer I can get to actual Vim, the more comfortable I am when it is time to edit.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-vim-v2" class="outline-3">
|
||||||
|
<h3 id="vim-v2">Vim (V2)</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
After Vim emulation, VSCode+Dendron's most significant problem was its lack of serious todo functionality.
|
||||||
|
Taskwarrior and its sister program Timewarrior had previously handled my todo lists, while Vimwiki handled documentation and project management.
|
||||||
|
Dendron had no such extension.
|
||||||
|
VSCode's slow startup time wore at me, and I decided I didn't appreciate all of the higher-order features of Dendron.
|
||||||
|
Additionally, around this time development on Dendron ceased, and while the project leader declared it good enough to manage his personal projects, several rough edges and missing features took away from its initial promise.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I switched to Vim again for a short time, and tried to find plugins to piece together some of Dendron's features while avoiding the pain points.
|
||||||
|
Around this time I discovered another innovation, "Emacs Org-mode."
|
||||||
|
<a href="https://www.youtube.com/watch?v=SzA2YODtgK4">This video</a> by Harry Schwartz from thoughtbot showed up in my feed.
|
||||||
|
Reluctantly, I watched it.
|
||||||
|
After seeing the power of Org-mode I decided to give it a try.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-org-mode" class="outline-3">
|
||||||
|
<h3 id="org-mode">Org-mode</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<blockquote>
|
||||||
|
<p>
|
||||||
|
This entire post will probably devolve into a shill for Emacs and org-mode at this point, but bear with me as I explain my use-case and needs first.
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
So, here we go again.
|
||||||
|
Another transition.
|
||||||
|
Each of the last has cost me more than a few hours of troubleshooting and problems and configuration.
|
||||||
|
Theoretically, I was using markdown the entire time, but the unique link formats from Vimwiki and Dendron made transitions difficult.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Now I'm preparing to switch to another format, one with completely incompatible links, formatting, and functionality.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In fact, all of my links broke.
|
||||||
|
All my code-blocks broke.
|
||||||
|
All my LaTeX math snippets broke.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It took me weeks to reach the same level of productivity.
|
||||||
|
But Org-mode's features are amazing, and it was well worth the transition.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The ability to write and evaluate code, mixed in with all my notes, is amazing.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-python"><span class="org-builtin">print</span>(<span class="org-string">"Hello!"</span>)
|
||||||
|
<span class="org-builtin">print</span>( 2 <span class="org-operator">+</span> 2 )
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre class="example">
|
||||||
|
Hello!
|
||||||
|
4
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Emacs' power and scriptability far outstrips everything that Vim had to offer, and Evil mode satisfies my desire for Vim's editing model.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Emacs also handles task management.
|
||||||
|
The default org-mode todo manager is fine, but with the addition of <a href="https://www.nongnu.org/org-edna-el/">edna</a> for better dependency management and <a href="https://gist.github.com/d12frosted/a60e8ccb9aceba031af243dff0d19b2e">d12frosted's</a> little hack for todo-items in hundreds of files, it becomes much easier to manage projects spread across a zettelkasten of knowledge.
|
||||||
|
<a href="https://www.orgroam.com/">org-roam</a> is the final piece of the puzzle, integrating the best of ID-based linking and backlink features into emacs.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-write-ten-zettels" class="outline-3">
|
||||||
|
<h3 id="write-ten-zettels"><span class="todo TODO">TODO</span> Write ten zettels</h3>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-rewrite-d12frosted-s-absurd-code-into-a-simple-ripgrep-script" class="outline-3">
|
||||||
|
<h3 id="rewrite-d12frosted-s-absurd-code-into-a-simple-ripgrep-script"><span class="todo TODO">TODO</span> Rewrite d12frosted's absurd code into a simple ripgrep script</h3>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-finish-up-this-post" class="outline-3">
|
||||||
|
<h3 id="finish-up-this-post"><span class="done DONE">DONE</span> Finish up this post</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Org-mode provides far too many features to cover here, but suffice it to say I am very happy with this setup.
|
||||||
|
I have complete freedom to do anything I need to do, all in plain-text, all with an easily-hackable and infinitely customizeable interface.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It has many issues, and I'll put out another blog post some day detailing the problems I've encountered so far, along with what I have as far as mitigations.
|
||||||
|
Despite the issues, I heartily recommend Emacs to anyone looking for the ultimate endgame in text-editing capability.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Other editors are great. VSCode is easy to use, Vim is wicked fast, and Neovim is great.
|
||||||
|
Emacs is superior in extensibility, it is superior in user-focus, and it is ultimately the most comfortable editor I've ever used.
|
||||||
|
If you think you can handle the learning curve, I invite you to dive in.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
At the least, don't waste as much time as I did trying to find the perfect setup.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="outline-container-misc-software" class="outline-2">
|
||||||
|
<h2 id="misc-software">Misc. Software</h2>
|
||||||
|
<div class="outline-text-2" id="text-misc-software">
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-version-control" class="outline-3">
|
||||||
|
<h3 id="version-control">Version Control</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
I began using git around halfway through my wiki process.
|
||||||
|
I wasn't very familiar with it when I began, but I've come to value it as a part of my daily workflow.
|
||||||
|
It certainly makes data recovery easy, and coupled with a personal <a href="https://git.freedomland.xyz/judahsotomayor">gitea</a> instance it allows me to back up and access my projects from anywhere.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-document-production" class="outline-3">
|
||||||
|
<h3 id="document-production">Document Production</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Half of org-mode's appeal is perfectly typset documents with LaTeX.
|
||||||
|
I have a full texlive install on my writing machine, along with an extensive configuration for APA, MLA, and Turabian.
|
||||||
|
I also have Citar set up with org-cite and Zotero to make citations a breeze.
|
||||||
|
So far, manual formatting has been a thing of the past.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-encryption" class="outline-3">
|
||||||
|
<h3 id="encryption">Encryption</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
I use GPG and <a href="https://github.com/FiloSottile/age">age</a> to encrypt sensitive documents such as my journal files.
|
||||||
|
It works fairly well with org-roam, which supports transparent file encryption.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
]]></description>
|
||||||
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>RSS Feed</title>
|
<title>RSS Feed</title>
|
||||||
<link>https://judah.freedomland.xyz//posts/rss-feed.html</link>
|
<link>https://judah.freedomland.xyz//posts/rss-feed.html</link>
|
||||||
@ -61,7 +298,7 @@ If any project purports to be from me, and is <i>not</i> signed by this key, the
|
|||||||
<div id="outline-container-key" class="outline-2">
|
<div id="outline-container-key" class="outline-2">
|
||||||
<h2 id="key">Key:</h2>
|
<h2 id="key">Key:</h2>
|
||||||
<div class="outline-text-2">
|
<div class="outline-text-2">
|
||||||
<pre class="example" id="org99b2815">
|
<pre class="example" id="org010940c">
|
||||||
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
||||||
|
|
||||||
@ -72,7 +309,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
|||||||
<div id="outline-container-fingerprint" class="outline-2">
|
<div id="outline-container-fingerprint" class="outline-2">
|
||||||
<h2 id="fingerprint">Fingerprint:</h2>
|
<h2 id="fingerprint">Fingerprint:</h2>
|
||||||
<div class="outline-text-2">
|
<div class="outline-text-2">
|
||||||
<pre class="example" id="orgb3ad079">
|
<pre class="example" id="org6bc0a4e">
|
||||||
|
|
||||||
SHA256:9Dq4ppxhfAjbX+7HLXEt+ROMiIojI6kqQgUyFUJb9lI
|
SHA256:9Dq4ppxhfAjbX+7HLXEt+ROMiIojI6kqQgUyFUJb9lI
|
||||||
|
|
||||||
@ -127,8 +364,8 @@ You can check that the latest commits are signed with my key.
|
|||||||
<author>author@mail.com (Blog Author)</author>
|
<author>author@mail.com (Blog Author)</author>
|
||||||
<guid isPermaLink="false">https://judah.freedomland.xyz//posts/qubesos-signing-key.html</guid>
|
<guid isPermaLink="false">https://judah.freedomland.xyz//posts/qubesos-signing-key.html</guid>
|
||||||
|
|
||||||
<description><![CDATA[<div class="alert" id="org2c28657">
|
<description><![CDATA[<div class="alert" id="org47978ac">
|
||||||
<div class="alert-heading" id="org3e0e946">
|
<div class="alert-heading" id="orgad55953">
|
||||||
<p>
|
<p>
|
||||||
Double check your keys!
|
Double check your keys!
|
||||||
</p>
|
</p>
|
||||||
@ -156,7 +393,7 @@ Qubes release keys and developer keys are all signed with the QMSK.
|
|||||||
Please see <a href="https://www.qubes-os.org/security/verifying-signatures/#how-to-import-and-authenticate-the-qubes-master-signing-key">the Qubes website</a> for more information.
|
Please see <a href="https://www.qubes-os.org/security/verifying-signatures/#how-to-import-and-authenticate-the-qubes-master-signing-key">the Qubes website</a> for more information.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="example" id="orgad550f9">
|
<pre class="example" id="org3b4e4bf">
|
||||||
|
|
||||||
427F 11FD 0FAA 4B08 0123
|
427F 11FD 0FAA 4B08 0123
|
||||||
F0IC DDFA 1A3E 3687 9494
|
F0IC DDFA 1A3E 3687 9494
|
||||||
|
@ -42,6 +42,15 @@
|
|||||||
|
|
||||||
<ul class="posts">
|
<ul class="posts">
|
||||||
|
|
||||||
|
<li class="post-title">
|
||||||
|
<a href="https://judah.freedomland.xyz//posts/reflections-on-a-year-of-zettelkasten-tooling.html">
|
||||||
|
|
||||||
|
Dec 22, 2023 —
|
||||||
|
|
||||||
|
Reflections on a year of Zettelkasten: Tooling
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="post-title">
|
<li class="post-title">
|
||||||
<a href="https://judah.freedomland.xyz//posts/rss-feed.html">
|
<a href="https://judah.freedomland.xyz//posts/rss-feed.html">
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ If any project purports to be from me, and is <i>not</i> signed by this key, the
|
|||||||
<div id="outline-container-key" class="outline-2">
|
<div id="outline-container-key" class="outline-2">
|
||||||
<h2 id="key">Key:</h2>
|
<h2 id="key">Key:</h2>
|
||||||
<div class="outline-text-2">
|
<div class="outline-text-2">
|
||||||
<pre class="example" id="org09b11d8">
|
<pre class="example" id="org8cf2466">
|
||||||
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII0YkBVeeBhoCm/+6mCteO7Ikv528ZDmg/tYtWc6O1qP
|
|||||||
<div id="outline-container-fingerprint" class="outline-2">
|
<div id="outline-container-fingerprint" class="outline-2">
|
||||||
<h2 id="fingerprint">Fingerprint:</h2>
|
<h2 id="fingerprint">Fingerprint:</h2>
|
||||||
<div class="outline-text-2">
|
<div class="outline-text-2">
|
||||||
<pre class="example" id="orgf1affcb">
|
<pre class="example" id="org86d4133">
|
||||||
|
|
||||||
SHA256:9Dq4ppxhfAjbX+7HLXEt+ROMiIojI6kqQgUyFUJb9lI
|
SHA256:9Dq4ppxhfAjbX+7HLXEt+ROMiIojI6kqQgUyFUJb9lI
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@
|
|||||||
|
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<div class="alert" id="org289edb3">
|
<div class="alert" id="org5b376bd">
|
||||||
<div class="alert-heading" id="org14d83c5">
|
<div class="alert-heading" id="org430cc95">
|
||||||
<p>
|
<p>
|
||||||
Double check your keys!
|
Double check your keys!
|
||||||
</p>
|
</p>
|
||||||
@ -81,7 +81,7 @@ Qubes release keys and developer keys are all signed with the QMSK.
|
|||||||
Please see <a href="https://www.qubes-os.org/security/verifying-signatures/#how-to-import-and-authenticate-the-qubes-master-signing-key">the Qubes website</a> for more information.
|
Please see <a href="https://www.qubes-os.org/security/verifying-signatures/#how-to-import-and-authenticate-the-qubes-master-signing-key">the Qubes website</a> for more information.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="example" id="orgd3d5e14">
|
<pre class="example" id="org42a8cf9">
|
||||||
|
|
||||||
427F 11FD 0FAA 4B08 0123
|
427F 11FD 0FAA 4B08 0123
|
||||||
F0IC DDFA 1A3E 3687 9494
|
F0IC DDFA 1A3E 3687 9494
|
||||||
|
300
posts/reflections-on-a-year-of-zettelkasten-tooling.html
Normal file
300
posts/reflections-on-a-year-of-zettelkasten-tooling.html
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Open Thoughts
|
||||||
|
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="author" content="Judah Sotomayor" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Reflections on a year of Zettelkasten: Tooling">
|
||||||
|
<meta property="og:url" content="https://judah.freedomland.xyz//posts/reflections-on-a-year-of-zettelkasten-tooling.html">
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://judah.freedomland.xyz//static/style.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lora&family=Space+Mono&display=swap" />
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>
|
||||||
|
<a href="https://judah.freedomland.xyz//">
|
||||||
|
Open Thoughts
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
<a href="#main" class="visually-hidden">jump to main content</a>
|
||||||
|
<nav>
|
||||||
|
<ul class="menu">
|
||||||
|
<li><a href="https://judah.freedomland.xyz//about">about</a></li>
|
||||||
|
<li><a href="https://judah.freedomland.xyz//">blog</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main id="main">
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
<h1 class="post__title">
|
||||||
|
Reflections on a year of Zettelkasten: Tooling
|
||||||
|
</h1>
|
||||||
|
<section class="post__meta">
|
||||||
|
|
||||||
|
Dec 22, 2023
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<p>
|
||||||
|
Back in 2021 I began a zettelkasten using guides from <a href="https://zettelkasten.de">zettelkasten.de</a>.
|
||||||
|
It has grown to over 723 notes in less than two full years.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="https://judah.freedomland.xyz//static/img/filetypes.svg" alt="nil" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I'll cover this topic in several posts.
|
||||||
|
This first post will discuss the tools I've used to grow and maintain my second brain.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I have shifted between note-taking systems multiple times between now and the genesis of my Zettelkasten.
|
||||||
|
Different strengths and weaknesses have left me uncomfortable in every system, up until the last: Emacs.
|
||||||
|
Before I get to that, I'll cover the pieces of the system, what's changed, and what hasn't.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="outline-container-text-editing" class="outline-2">
|
||||||
|
<h2 id="text-editing">Text editing</h2>
|
||||||
|
<div class="outline-text-2" id="text-text-editing">
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-vimwiki" class="outline-3">
|
||||||
|
<h3 id="vimwiki">Vimwiki</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
The first version was the amazing <a href="https://vimwiki.github.io/">vimwiki</a>, a system simple and elegant.
|
||||||
|
It provided most of the features needed for a zettelkasten, and supported standard markdown.
|
||||||
|
During this period I grew comfortable with Vim, which I consider <i>the</i> premier editing experience.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I began to use <a href="https://taskwarrior.org/">Taskwarrior</a>, an amazing command-line task management tool.
|
||||||
|
<a href="https://github.com/tools-life/taskwiki">Taskwiki</a> is another amazing vim extension that maps tasks between vimwiki and taskwarrior, allowing you to create "viewports" with various Taskwarrior filters.
|
||||||
|
The combination of Vimwiki and Taskwarrior is exceptionally comfortable, and taught me my first important lesson: <i>tasks</i> and <i>data</i> are inseparable.
|
||||||
|
It is impossible to provide sufficient information to do a task if that task is separated from its context, its data and metadata.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Eventually I grew tired of the limitations of editing text in a terminal.
|
||||||
|
Vim doesn't support graphical things very well, and I wanted to view images inside my notes.
|
||||||
|
While various extensions solve this problem, and adjacent problems, I had at this time noticed <a href="https://www.dendron.so/">dendron</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-dendron" class="outline-3">
|
||||||
|
<h3 id="dendron">Dendron</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Dendron features a mixed hierarchical/networked note setup, which (according to the creators) scales well with heavy use.
|
||||||
|
While I still have not reached the ~10k note count that the authors asserted Dendron would survive, the structure appealed to me because at the time I was working with several sorts of knowledge that a hierarchy represents well–things like programming language concepts in multiple languages.
|
||||||
|
Dendron also features a note-graph, which represents both the hierarchy of notes and the links between notes.
|
||||||
|
This feature was most attractive to me, as inside Vim I was having trouble visualizing my entire zettelkasten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Overall, the featureset provided enough value that I made the change.
|
||||||
|
I adapted all of my vimwiki links (or most!) to Dendron's format, and began to implement some of Dendron's more advanced features in my daily use.
|
||||||
|
I installed VSCode and a Vim emulation plugin, and away I went.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The first snag I ran into was the limitations of Vim emulation plugins, so I switched that plugin to <a href="https://github.com/vscode-neovim/vscode-neovim">vscode-neovim</a>, which embeds neovim into VSCode.
|
||||||
|
I learned a value here: closer to Vim is more comfortable.
|
||||||
|
Vim truly allows you to "edit text at the speed of thought".
|
||||||
|
Its modal paradigm turns the keyboard into a uniquely fluid control panel, optimized for text editing.
|
||||||
|
Extensions often miss features or have subtle bugs.
|
||||||
|
The closer I can get to actual Vim, the more comfortable I am when it is time to edit.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-vim-v2" class="outline-3">
|
||||||
|
<h3 id="vim-v2">Vim (V2)</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
After Vim emulation, VSCode+Dendron's most significant problem was its lack of serious todo functionality.
|
||||||
|
Taskwarrior and its sister program Timewarrior had previously handled my todo lists, while Vimwiki handled documentation and project management.
|
||||||
|
Dendron had no such extension.
|
||||||
|
VSCode's slow startup time wore at me, and I decided I didn't appreciate all of the higher-order features of Dendron.
|
||||||
|
Additionally, around this time development on Dendron ceased, and while the project leader declared it good enough to manage his personal projects, several rough edges and missing features took away from its initial promise.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I switched to Vim again for a short time, and tried to find plugins to piece together some of Dendron's features while avoiding the pain points.
|
||||||
|
Around this time I discovered another innovation, "Emacs Org-mode."
|
||||||
|
<a href="https://www.youtube.com/watch?v=SzA2YODtgK4">This video</a> by Harry Schwartz from thoughtbot showed up in my feed.
|
||||||
|
Reluctantly, I watched it.
|
||||||
|
After seeing the power of Org-mode I decided to give it a try.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-org-mode" class="outline-3">
|
||||||
|
<h3 id="org-mode">Org-mode</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<blockquote>
|
||||||
|
<p>
|
||||||
|
This entire post will probably devolve into a shill for Emacs and org-mode at this point, but bear with me as I explain my use-case and needs first.
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
So, here we go again.
|
||||||
|
Another transition.
|
||||||
|
Each of the last has cost me more than a few hours of troubleshooting and problems and configuration.
|
||||||
|
Theoretically, I was using markdown the entire time, but the unique link formats from Vimwiki and Dendron made transitions difficult.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Now I'm preparing to switch to another format, one with completely incompatible links, formatting, and functionality.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In fact, all of my links broke.
|
||||||
|
All my code-blocks broke.
|
||||||
|
All my LaTeX math snippets broke.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It took me weeks to reach the same level of productivity.
|
||||||
|
But Org-mode's features are amazing, and it was well worth the transition.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The ability to write and evaluate code, mixed in with all my notes, is amazing.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-python"><span class="org-builtin">print</span>(<span class="org-string">"Hello!"</span>)
|
||||||
|
<span class="org-builtin">print</span>( 2 <span class="org-operator">+</span> 2 )
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre class="example">
|
||||||
|
Hello!
|
||||||
|
4
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Emacs' power and scriptability far outstrips everything that Vim had to offer, and Evil mode satisfies my desire for Vim's editing model.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Emacs also handles task management.
|
||||||
|
The default org-mode todo manager is fine, but with the addition of <a href="https://www.nongnu.org/org-edna-el/">edna</a> for better dependency management and <a href="https://gist.github.com/d12frosted/a60e8ccb9aceba031af243dff0d19b2e">d12frosted's</a> little hack for todo-items in hundreds of files, it becomes much easier to manage projects spread across a zettelkasten of knowledge.
|
||||||
|
<a href="https://www.orgroam.com/">org-roam</a> is the final piece of the puzzle, integrating the best of ID-based linking and backlink features into emacs.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-write-ten-zettels" class="outline-3">
|
||||||
|
<h3 id="write-ten-zettels"><span class="todo TODO">TODO</span> Write ten zettels</h3>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-rewrite-d12frosted-s-absurd-code-into-a-simple-ripgrep-script" class="outline-3">
|
||||||
|
<h3 id="rewrite-d12frosted-s-absurd-code-into-a-simple-ripgrep-script"><span class="todo TODO">TODO</span> Rewrite d12frosted's absurd code into a simple ripgrep script</h3>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-finish-up-this-post" class="outline-3">
|
||||||
|
<h3 id="finish-up-this-post"><span class="done DONE">DONE</span> Finish up this post</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Org-mode provides far too many features to cover here, but suffice it to say I am very happy with this setup.
|
||||||
|
I have complete freedom to do anything I need to do, all in plain-text, all with an easily-hackable and infinitely customizeable interface.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It has many issues, and I'll put out another blog post some day detailing the problems I've encountered so far, along with what I have as far as mitigations.
|
||||||
|
Despite the issues, I heartily recommend Emacs to anyone looking for the ultimate endgame in text-editing capability.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Other editors are great. VSCode is easy to use, Vim is wicked fast, and Neovim is great.
|
||||||
|
Emacs is superior in extensibility, it is superior in user-focus, and it is ultimately the most comfortable editor I've ever used.
|
||||||
|
If you think you can handle the learning curve, I invite you to dive in.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
At the least, don't waste as much time as I did trying to find the perfect setup.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="outline-container-misc-software" class="outline-2">
|
||||||
|
<h2 id="misc-software">Misc. Software</h2>
|
||||||
|
<div class="outline-text-2" id="text-misc-software">
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-version-control" class="outline-3">
|
||||||
|
<h3 id="version-control">Version Control</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
I began using git around halfway through my wiki process.
|
||||||
|
I wasn't very familiar with it when I began, but I've come to value it as a part of my daily workflow.
|
||||||
|
It certainly makes data recovery easy, and coupled with a personal <a href="https://git.freedomland.xyz/judahsotomayor">gitea</a> instance it allows me to back up and access my projects from anywhere.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-document-production" class="outline-3">
|
||||||
|
<h3 id="document-production">Document Production</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
Half of org-mode's appeal is perfectly typset documents with LaTeX.
|
||||||
|
I have a full texlive install on my writing machine, along with an extensive configuration for APA, MLA, and Turabian.
|
||||||
|
I also have Citar set up with org-cite and Zotero to make citations a breeze.
|
||||||
|
So far, manual formatting has been a thing of the past.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-encryption" class="outline-3">
|
||||||
|
<h3 id="encryption">Encryption</h3>
|
||||||
|
<div class="outline-text-3">
|
||||||
|
<p>
|
||||||
|
I use GPG and <a href="https://github.com/FiloSottile/age">age</a> to encrypt sensitive documents such as my journal files.
|
||||||
|
It works fairly well with org-roam, which supports transparent file encryption.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
Made with ♥ and
|
||||||
|
<a href="https://emacs.love/weblorg" target="_blank">
|
||||||
|
weblorg
|
||||||
|
</a>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
188
static/img/filetypes.svg
Normal file
188
static/img/filetypes.svg
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="600" height="480"
|
||||||
|
viewBox="0 0 600 480"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
>
|
||||||
|
|
||||||
|
<title>Gnuplot</title>
|
||||||
|
<desc>Produced by GNUPLOT 5.4 patchlevel 4 </desc>
|
||||||
|
|
||||||
|
<g id="gnuplot_canvas">
|
||||||
|
|
||||||
|
<rect x="0" y="0" width="600" height="480" fill="none"/>
|
||||||
|
<defs>
|
||||||
|
|
||||||
|
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
|
||||||
|
<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
|
||||||
|
<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
|
||||||
|
<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
|
||||||
|
<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
|
||||||
|
<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
|
||||||
|
<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
|
||||||
|
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
|
||||||
|
<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
|
||||||
|
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
|
||||||
|
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
|
||||||
|
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
|
||||||
|
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
|
||||||
|
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
|
||||||
|
<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
|
||||||
|
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
|
||||||
|
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
|
||||||
|
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
|
||||||
|
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
|
||||||
|
</filter>
|
||||||
|
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
|
||||||
|
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
|
||||||
|
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,411.05 L54.53,411.05 '/> <g transform="translate(46.14,414.95)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 0</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,366.42 L54.53,366.42 '/> <g transform="translate(46.14,370.32)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 100</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,321.79 L54.53,321.79 '/> <g transform="translate(46.14,325.69)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 200</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,277.16 L54.53,277.16 '/> <g transform="translate(46.14,281.06)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 300</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,232.53 L54.53,232.53 '/> <g transform="translate(46.14,236.43)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 400</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,187.90 L54.53,187.90 '/> <g transform="translate(46.14,191.80)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 500</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,143.27 L54.53,143.27 '/> <g transform="translate(46.14,147.17)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 600</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,98.64 L54.53,98.64 '/> <g transform="translate(46.14,102.54)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 700</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,54.01 L54.53,54.01 '/> <g transform="translate(46.14,57.91)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" > 800</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M91.94,411.05 L91.94,420.05 '/> <g transform="translate(95.84,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >other</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M148.75,411.05 L148.75,420.05 '/> <g transform="translate(152.65,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >md</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M205.56,411.05 L205.56,420.05 '/> <g transform="translate(209.46,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >org</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M262.37,411.05 L262.37,420.05 '/> <g transform="translate(266.27,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >svg</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M319.18,411.05 L319.18,420.05 '/> <g transform="translate(323.08,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >tex</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M375.99,411.05 L375.99,420.05 '/> <g transform="translate(379.89,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >png</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M432.80,411.05 L432.80,420.05 '/> <g transform="translate(436.70,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >html</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M489.61,411.05 L489.61,420.05 '/> <g transform="translate(493.51,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >pdf</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M546.42,411.05 L546.42,420.05 '/> <g transform="translate(550.32,428.44) rotate(270)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="end">
|
||||||
|
<text><tspan font-family="Arial" >age</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,54.01 L63.53,411.05 L574.82,411.05 M574.82,54.01 M63.53,54.01 '/></g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g id="gnuplot_plot_1" ><title>data using 0:2:3:xticlabels(1)</title>
|
||||||
|
<g fill="none" color="white" stroke="rgb(187, 194, 207)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(255, 108, 107)' fill-opacity = '0.500000' points = '77.73,411.05 106.15,411.05 106.15,330.71 77.73,330.71 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(255, 108, 107)' d='M77.73,411.05 L77.73,330.72 L106.14,330.72 L106.14,411.05 L77.73,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb( 1, 112, 191)' fill-opacity = '0.500000' points = '134.54,411.05 162.96,411.05 162.96,353.91 134.54,353.91 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb( 1, 112, 191)' d='M134.54,411.05 L134.54,353.92 L162.95,353.92 L162.95,411.05 L134.54,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(198, 120, 221)' fill-opacity = '0.500000' points = '191.35,411.05 219.77,411.05 219.77,88.37 191.35,88.37 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(198, 120, 221)' d='M191.35,411.05 L191.35,88.38 L219.76,88.38 L219.76,411.05 L191.35,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(180, 145, 109)' fill-opacity = '0.500000' points = '248.16,411.05 276.58,411.05 276.58,393.19 248.16,393.19 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(180, 145, 109)' d='M248.16,411.05 L248.16,393.20 L276.57,393.20 L276.57,411.05 L248.16,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb( 77, 181, 189)' fill-opacity = '0.500000' points = '304.97,411.05 333.39,411.05 333.39,383.82 304.97,383.82 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb( 77, 181, 189)' d='M304.97,411.05 L304.97,383.83 L333.38,383.83 L333.38,411.05 L304.97,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(169, 161, 225)' fill-opacity = '0.500000' points = '361.78,411.05 390.20,411.05 390.20,303.48 361.78,303.48 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(169, 161, 225)' d='M361.78,411.05 L361.78,303.49 L390.19,303.49 L390.19,411.05 L361.78,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(255, 108, 107)' fill-opacity = '0.500000' points = '418.59,411.05 447.01,411.05 447.01,381.58 418.59,381.58 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(255, 108, 107)' d='M418.59,411.05 L418.59,381.59 L447.00,381.59 L447.00,411.05 L418.59,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb( 1, 112, 191)' fill-opacity = '0.500000' points = '475.40,411.05 503.82,411.05 503.82,393.63 475.40,393.63 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb( 1, 112, 191)' d='M475.40,411.05 L475.40,393.64 L503.81,393.64 L503.81,411.05 L475.40,411.05 Z '/> <g stroke='none' shape-rendering='crispEdges'>
|
||||||
|
<polygon fill = 'rgb(198, 120, 221)' fill-opacity = '0.500000' points = '532.21,411.05 560.63,411.05 560.63,368.64 532.21,368.64 '/>
|
||||||
|
</g>
|
||||||
|
<path stroke='rgb(198, 120, 221)' d='M532.21,411.05 L532.21,368.65 L560.62,368.65 L560.62,411.05 L532.21,411.05 Z '/></g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<path stroke='rgb(187, 194, 207)' d='M63.53,54.01 L63.53,411.05 L574.82,411.05 M574.82,54.01 M63.53,54.01 '/></g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
<g transform="translate(319.17,30.91)" stroke="none" fill="rgb(187,194,207)" font-family="Arial" font-size="12.00" text-anchor="middle">
|
||||||
|
<text><tspan font-family="Arial" >File types</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
After Width: | Height: | Size: 14 KiB |
@ -6,7 +6,10 @@
|
|||||||
--cl-background: #212121;
|
--cl-background: #212121;
|
||||||
--cl-gray: #828282;
|
--cl-gray: #828282;
|
||||||
--cl-note: #F2FFDD;
|
--cl-note: #F2FFDD;
|
||||||
--cl-link: #E49619;
|
--cl-link: #0074D9;
|
||||||
|
|
||||||
|
--cl-meta: #F7A32E;
|
||||||
|
|
||||||
|
|
||||||
/* -- Code Block Colors -- */
|
/* -- Code Block Colors -- */
|
||||||
|
|
||||||
@ -125,10 +128,12 @@ main {
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
article h1:first-child { font-size: 36px; }
|
article h1:first-child { font-size: 36px;
|
||||||
|
line-height: 38px;
|
||||||
|
}
|
||||||
.post__meta {
|
.post__meta {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: var(--cl-gray);
|
color: var(--cl-meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- table -- */
|
/* -- table -- */
|
||||||
@ -153,7 +158,8 @@ main table th { text-align: left; }
|
|||||||
.alert {
|
.alert {
|
||||||
|
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
padding: 20px;
|
padding: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
@ -172,7 +178,8 @@ main table th { text-align: left; }
|
|||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
padding: 20px;
|
padding: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
@ -236,8 +243,6 @@ img {
|
|||||||
max-width: 100%; }
|
max-width: 100%; }
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #0074D9;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert {
|
.alert {
|
||||||
@ -267,11 +272,16 @@ th {
|
|||||||
border: 2px solid;
|
border: 2px solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post__meta {
|
|
||||||
color: #F7A32E;
|
|
||||||
}
|
|
||||||
p {
|
p {
|
||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.todo {
|
||||||
|
color: var(--cl-meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
.done {
|
||||||
|
color: var(--cl-gray);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user