<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title>ivxvm.github.io</title>
	<link href="https://ivxvm.github.io/atom.xml" rel="self" type="application/atom+xml"/>
	<link href="https://ivxvm.github.io"/>
	<generator uri="https://www.getzola.org/">Zola</generator>
	<updated>2026-10-23T00:00:00+00:00</updated>
	<id>https://ivxvm.github.io/atom.xml</id>
	<entry xml:lang="en">
		<title>Btrfs for daily driving</title>
		<published>2026-10-23T00:00:00+00:00</published>
		<updated>2026-10-23T00:00:00+00:00</updated>
		<link href="https://ivxvm.github.io/btrfs-for-daily-driving/"/>
		<link rel="alternate" href="https://ivxvm.github.io/btrfs-for-daily-driving/" type="text/html"/>
		<id>https://ivxvm.github.io/btrfs-for-daily-driving/</id>
		<content type="html">&lt;p&gt;Initially I wanted to name this post &quot;btrfs for desktop use&quot; to create contrast with server scenarios, but I realized it may be confusing because the term &quot;desktop&quot; is sometimes also used in contrast to &quot;laptop&quot;, but in this case I actually mean both desktops and laptops and probably some other personal devices. &quot;Daily driving&quot; might sound a bit &quot;too memey&quot;, but it feels like a better choice here.&lt;/p&gt;
&lt;p&gt;I first encountered btrfs when I used Bazzite - gaming-oriented atomic immutable distro - a heavily customized Fedora Atomic. I didn&#39;t think much of it and the only thing I noticed is that this filesystem was used by default on such a &quot;set it and forget it&quot; distro for gamers. Never had any major issues during my year of using that distro other than being annoyed by needing to use things like distrobox and rpm-ostree to get anything that&#39;s not covered by just flatpaks and brew.&lt;/p&gt;
&lt;p&gt;Later, when I moved to Gentoo I also picked btrfs for my system volume because it was one of recommended and well-supported options and I already had an impression of it being a good modern general-purpose filesystem after seeing it used in Bazzite. At that point I wasn&#39;t really aware of properties of btrfs on deeper level, so it wasn&#39;t super deliberate. However, I started discovering them very soon.&lt;/p&gt;
&lt;p&gt;Because of Gentoo not being atomic itself, it means things like kernel and driver updates, or just global software updates in general, are more risky: if something goes wrong during update process, there is a possibility of system ending up in broken inconsistent state. Different ways to make it safer exist, the one I decided to try is to use snapshots which btrfs supports natively. Because this filesystem uses copy-on-write (COW), it naturally makes snapshots zero-cost: they don&#39;t copy anything until you change any of the files at which point new modified copy of the file will be created while the old one will stay in place, still referenced by snapshot. Many tools exist to automate creating snapshots, however I decided to stick to native btrfs cli, because it turned out very easy to use - I simply have to invoke a single command before doing system updates or anything risky:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;btrfs&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; subvolume snapshot / /snapshots/2026_10_16&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that&#39;s basically it: zero-cost = no copying anything without need = no disk space wasted (and no LLMs, even though I written &quot;no&quot; quite a few times). What&#39;s the catch though, why wouldn&#39;t anyone just use filesystems like btrfs universally? That&#39;s where I started researching more and got surprised by how unstable and experimental it was considered in its early days according to decade old posts and discussions. Most of those early issues, however, were addressed and fixed long time ago and nowadays the most problematic aspect turns out to be fragmentation which only happens during very specific circumstances. This issue is rather fundamental and stems mostly from COW itself and from other similarly fundamental filesystem design choices. So what are those conditions and how to deal with them?&lt;/p&gt;
&lt;h2 id=&quot;1-big-files-that-are-modified-often-and-in-random-order-db-vm-volumes&quot;&gt;1. Big files that are modified often and in random order (DB &amp;amp; VM volumes)&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-big-files-that-are-modified-often-and-in-random-order-db-vm-volumes&quot; aria-label=&quot;Anchor link for: 1-big-files-that-are-modified-often-and-in-random-order-db-vm-volumes&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;This is the edge case that is well known on the internet, and is one of the first things to find when looking for problematic btrfs scenarios. The root of the problem is that due to COW, btrfs can&#39;t perform random writes in place: each write will allocate new data and old block becomes dead space. Over time this leads to massive fragmentation: the file&#39;s physical content gets scattered across the disk as many small extents.&lt;/p&gt;
&lt;p&gt;I personally stumbled upon this one in my bitmagnet setup: turns out it uses postgres database for bookkeeping and even though I only kept it spinning for a week or two, when checking fragmentation these postgres files were at multiple dozen thousands extents.&lt;/p&gt;
&lt;p&gt;Fortunately, there is a solution to this problem: disable COW! Yep, turns out btrfs supports disabling COW for individual files and folders, and in the later case, all new files and folders created within such a folder, will also have COW automatically disabled.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# disable COW&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;chattr&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; +C ~/bitmagnet/data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# check flags (big letter &amp;#39;C&amp;#39; means COW is disabled)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;lsattr&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; ~/bitmagnet/data&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;2-big-files-that-are-initialized-in-small-chunks-in-random-order-torrented-media&quot;&gt;2. Big files that are initialized in small chunks in random order (torrented media)&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-big-files-that-are-initialized-in-small-chunks-in-random-order-torrented-media&quot; aria-label=&quot;Anchor link for: 2-big-files-that-are-initialized-in-small-chunks-in-random-order-torrented-media&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;This one is more tricky, initially I expected +C to solve all problems with COW-related fragmentation, but this is not the case unfortunately: when checking my media drive for files with heavy fragmentation, to my surprise the worst cases were all torrented videos. The problem with those is that in many cases torrent clients by default work with sparse files, and when new data arrives in random order those arrivals are not overwrites to existing data, instead it&#39;s new allocations which create fragmented extents. In some torrent clients it&#39;s possible to configure them to preallocate the whole file beforehands, which will fix the problem when combined with +C. Otherwise, the solution would be to defragment torrented files manually as a periodic maintenance.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# defragment file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;btrfs&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; filesystem defrag&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -v -t&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; 32M file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# check file fragmentation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;filefrag&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; file&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;snapshots-and-c&quot;&gt;Snapshots and +C&lt;a class=&quot;zola-anchor&quot; href=&quot;#snapshots-and-c&quot; aria-label=&quot;Anchor link for: snapshots-and-c&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;Another important concern is that in case of snapshots, copy-on-write will still happen on the first write to files that are referenced by snapshots even if they have +C flag. So if your DB or VM files live on btrfs volume that you are snapshotting, you might lose quite some disk space after every new snapshot (on the next write to corresponding DB or VM files). The best solution to this I am aware of is to create separate subvolumes for those DB/VM files, because when snapshotting a volume, btrfs will simply ignore any subvolumes and not include them into snapshots. It&#39;s not as annoying as it sounds because btrfs makes it easy to create arbitrary subvolumes at arbitrary paths - so that you can have for example &lt;code&gt;~/bitmagnet/data&lt;/code&gt; as a separate subvolume, while &lt;code&gt;/&lt;/code&gt; is the main volume that you take snapshots of.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;btrfs&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; subvolume create ~/bitmagnet/data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;chattr&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; +C ~/bitmagnet/data&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;ssd-vs-hdd&quot;&gt;SSD vs HDD&lt;a class=&quot;zola-anchor&quot; href=&quot;#ssd-vs-hdd&quot; aria-label=&quot;Anchor link for: ssd-vs-hdd&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;I use btrfs both for my system SSD and external HDD, and there are some important differences. Because SSDs are very fast, they are more forgiving to fragmentation, but because they also wear off, they benefit from minimizing writes by using compression. This is why I ignore some mild cases of fragmentation on SSD - those where files are not frequently written - and use it with zstd compression:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;UUID&lt;/span&gt;&lt;span style=&quot;color: #EB6F92;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;   /&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;   btrfs   rw,relatime,ssd,compress=zstd:3,space_cache=v2,subvol=/&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; 0 0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On my external HDD there is a lot of space and it&#39;s significantly slower than SSD. Btrfs compression also leads to some additional fragmentation in certain scenarios, so using compression would be a bad choice for HDD:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;UUID&lt;/span&gt;&lt;span style=&quot;color: #EB6F92;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;  /mnt/expansion&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;  btrfs  defaults,noatime&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt;  0  0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;noatime&lt;/code&gt; flag prevents rewriting metadata on file access which improves performance in some cases and it might be useful on HDDs. On my main system SSD I decided to leave the default &lt;code&gt;relatime&lt;/code&gt; in place because some sources say certain system software may need proper access times.&lt;/p&gt;
&lt;h2 id=&quot;impressions-so-far&quot;&gt;Impressions so far&lt;a class=&quot;zola-anchor&quot; href=&quot;#impressions-so-far&quot; aria-label=&quot;Anchor link for: impressions-so-far&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;It really does feel great to be able to instantly create snapshots that take zero extra disk space (until later). But it&#39;s definitely not without a price, and in this case the price is maintenance. I don&#39;t see btrfs as a filesystem you can just use and never think about it, in my opinion you need to pay attention: at the very least check fragmentation periodically, move specific types of files into subvolumes and set certain flags when needed. But when used properly, it does have many nice properties, and snapshotting is only one of them.&lt;/p&gt;
&lt;h2 id=&quot;further-reading&quot;&gt;Further reading&lt;a class=&quot;zola-anchor&quot; href=&quot;#further-reading&quot; aria-label=&quot;Anchor link for: further-reading&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;p&gt;This blogpost barely scratches the surface, but I believe those aspects I covered are the most important ones for everyday btrfs use. My top 3 resources to find information on btrfs would be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://btrfs.readthedocs.io/en/latest/&quot;&gt;https://btrfs.readthedocs.io/en/latest/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://lore.kernel.org/linux-btrfs/&quot;&gt;https://lore.kernel.org/linux-btrfs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/btrfs/&quot;&gt;https://www.reddit.com/r/btrfs/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;useful-scripts&quot;&gt;Useful scripts&lt;a class=&quot;zola-anchor&quot; href=&quot;#useful-scripts&quot; aria-label=&quot;Anchor link for: useful-scripts&quot;&gt;&lt;i class=&quot;fas fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt; 
&lt;/h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# print fragmentation for all files in folder (recursively)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; /mnt/expansion/videos&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; filefrag {} +&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E0DEF4; background-color: #191724;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6E6A86;font-style: italic;&quot;&gt;# find files larger than 10M that have &amp;gt;= 1000 fragmentation extents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; find /&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -xdev -type&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -size&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; +10M&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt; filefrag {} +&lt;/span&gt;&lt;span style=&quot;color: #EB6F92;&quot;&gt; |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;	sed&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -nE&lt;/span&gt;&lt;span style=&quot;color: #F6C177;&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;s/(.+): ([0-9]+).*/\2 \1/p&lt;/span&gt;&lt;span style=&quot;color: #F6C177;&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color: #EB6F92;&quot;&gt; |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;	awk&lt;/span&gt;&lt;span style=&quot;color: #F6C177;&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span style=&quot;color: #9CCFD8;&quot;&gt;$1 &amp;gt;= 1000&lt;/span&gt;&lt;span style=&quot;color: #F6C177;&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color: #EB6F92;&quot;&gt; |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C4A7E7;&quot;&gt;	sort&lt;/span&gt;&lt;span style=&quot;color: #EBBCBA;&quot;&gt; -nr&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
	</entry>
	<entry xml:lang="en">
		<title>Why I moved from Trilium Notes to Obsidian</title>
		<published>2026-08-23T00:00:00+00:00</published>
		<updated>2026-08-23T00:00:00+00:00</updated>
		<link href="https://ivxvm.github.io/why-i-moved-from-trilium-notes-to-obsidian/"/>
		<link rel="alternate" href="https://ivxvm.github.io/why-i-moved-from-trilium-notes-to-obsidian/" type="text/html"/>
		<id>https://ivxvm.github.io/why-i-moved-from-trilium-notes-to-obsidian/</id>
		<content type="html">&lt;p&gt;I&#39;ve been using Trilium for a while and I really enjoyed it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hierarchic notes&lt;/li&gt;
&lt;li&gt;Rich text formatting&lt;/li&gt;
&lt;li&gt;Embedded media formats support&lt;/li&gt;
&lt;li&gt;Templates&lt;/li&gt;
&lt;li&gt;Properties&lt;/li&gt;
&lt;li&gt;Scripting and customization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, after some time, some weak points also showed up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Database-backed, which means you won&#39;t see your note hierarchy as normal folders and files in filesystem, which has its pros and cons, but for me cons are overwhelming because it means I can&#39;t use regular tools, for example grep, or opening notes in other editors easily, or symlinking a folder from elsewhere as child items of the note&lt;/li&gt;
&lt;li&gt;No plugin infrastucture: even though Trilium is open-source, there&#39;s no built-in plugin support and rich plugin ecosystem like in Obsidian&lt;/li&gt;
&lt;li&gt;Even though rich text formatting is cool, it isn&#39;t great for compatibility, because it isn&#39;t always possible to convert this formatting to pure text formats: lossless export requires xml/html in general&lt;/li&gt;
&lt;li&gt;Theming isn&#39;t great, weak support to popular themes like Rose Pine, compared to Obsidian&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obsidian solves all those pain points for me. It also comes with its own set of issues though, and I&#39;d like to address them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Built-in features are very lacking compared to Trilium: for example, folders by default can&#39;t be notes themselves, there&#39;s also no gallery view for folders of images, no custom sorting for notes, etc - all those issues are solvable with plugins thanks to the powerful plugin ecosystem, however it takes some time to set them up correctly&lt;/li&gt;
&lt;li&gt;Proprietary codebase: even though plugins are opensource, the Obsidian core app is proprietary, which is very unfortunate, but it is somewhat balanced out by its simple and open-ended architecture - the fact that everything in the vault is just regular folders and files makes it easy to create alternative frontends for the same vault format which don&#39;t even need to be associted to Obsidian itself in any way, and there are already examples of such projects: basalt (tui) and obsidian.nvim&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Special mention needs to be made regarding embeds and backups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Trilium I had to back up the whole vault, including any embedded images, atomically, as a single archive, my single backup size lately was exceeding 1GB, which is crazy for something that is supposed to be mostly about text, it happened because of images and media embeds ofc, but those in my case don&#39;t really belong to notes themselves and would benefit to be references to separate places in filesystem&lt;/li&gt;
&lt;li&gt;Because in Obsidian vault is just normal files, it becomes possible to bring images in by symlinking picture folders elsewhere in my filesystem, backup strategy also becomes more open-ended and even allows using VCS, and there are already plugins for git and such&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notable plugin mentions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Folder notes by Lost Paul - allows folders being notes themselves (actually there will be md file with the same name as folder either inside or outside of the corresponding folder depending on selected options, but Obsidian will show them as a single item in a smart way thanks to this plugin)&lt;/li&gt;
&lt;li&gt;Custom File Explorer sorting by SebastianMC - allows custom sorting of items in folders in multiple different ways, I use sortspec based approach which is very flexible and allows things like combining adhoc order for few items and then sorting the rest by metadata such as specified date property field in notes&lt;/li&gt;
&lt;li&gt;Gallery View by mkshp - allows using &lt;code&gt;```obs-gallery ...```&lt;/code&gt; blocks in notes to render image galleries, I use it with image folders elsewhere in my filesystem symlinked into &lt;code&gt;vault/Symlinks/...&lt;/code&gt;, I then use &lt;code&gt;path: &quot;Symlinks/some_folder&quot;&lt;/code&gt; and it just works&lt;/li&gt;
&lt;li&gt;Iconize by Florian Woelki - allows adding icons to folders and notes&lt;/li&gt;
&lt;li&gt;Minimal Theme Settings by @kepano and Style Settings by mgmeyers - for nice and easy theme customizations&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
</feed>
