<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>emre şahin's digital garden 🍃 - zettelkasten</title>
    <link>https://emresahin.net/tags/zettelkasten/</link>
    <description>Posts in the zettelkasten tag</description>
    <language>en</language>
    <managingEditor>contact@emresahin.net (Emre Şahin)</managingEditor>
    <lastBuildDate>Tue, 15 Sep 2026 19:46:32 +0000</lastBuildDate>
    <atom:link href="https://emresahin.net/tags/zettelkasten/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>More features for my Telegram bot</title>
      <published>2024-12-13T16:52:45+00:00</published>
      <updated>2024-12-13T16:52:45+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Fri, 13 Dec 2024 16:52:45 +0000</pubDate>
      <link>https://emresahin.net/more-features-for-my-telegram-bot/</link>
      <guid isPermaLink="true">https://emresahin.net/more-features-for-my-telegram-bot/</guid>
      <description>I have a Telegram bot to save files to my zettelkasten. It’s always there, waiting for my muses to visit. Currently, it only supports text. When I send a message, the bot adds it to a new file or appends it to a file modified within the last 30 minutes, which simplifies multi-paragraph inputs. I ...</description>
      <category>Automation</category>
      <category>Development</category>
      <category>Inboxbot</category>
      <category>Xvc</category>
      <category>Telegram</category>
      <category>Mime-types</category>
      <category>Zettelkasten</category>
      <category>Bots</category>
      <content:encoded><![CDATA[<p>I have a <a href="https://github.com/iesahin/inboxbot">Telegram bot</a> to save files to my zettelkasten. It’s always there, waiting for my muses to visit.</p>
<p>Currently, it only supports text. When I send a message, the bot adds it to a new file or appends it to a file modified within the last 30 minutes, which simplifies multi-paragraph inputs.</p>
<p>I need some more features to make it more useful.</p>
<p>I want it to save audio and image files to my inbox as well. I plan to run <a href="https://github.com/iesahin/xvc">Xvc</a> pipelines on these files to convert audio notes to text and make images searchable via OCR or tagging.</p>
<p>The first step to achieve this is to understand what kind of files Telegram can upload and download. I want to track these files with Xvc to avoid bloating the Git repository. I have a script that processes these files, but currently, it only commits changes to Git. I want to determine whether a file should be tracked by Xvc or Git.</p>
<p>I skimmed the <a href="https://core.telegram.org/bots/api#sending-files">Telegram API documentation</a> and found that it supports a wide range of file types. This led me to change my approach: I will track only <code>.txt</code> and <code>.md</code> files with Git and use Xvc for everything else.</p>
<p>In the future, I plan to add a <code>--binary-only</code> option to <code>xvc file track</code> to track binary files only. This will help me to track only non-text files when using globs as targets. I might also extend this to a general predicate to decide which files to track based on their size, modification time, or other properties.</p>]]></content:encoded>
    </item>
    <item>
      <title>bits 13</title>
      <published>2024-11-26T17:28:37+00:00</published>
      <updated>2024-11-26T17:28:37+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Tue, 26 Nov 2024 17:28:37 +0000</pubDate>
      <link>https://emresahin.net/bits-13/</link>
      <guid isPermaLink="true">https://emresahin.net/bits-13/</guid>
      <description>I needed a Markdown server to preview my Zettelkasten notes on mobile. I tried installing Lanyon , but its installation instructions are outdated, and the project hasn’t been updated in seven years. I also looked at rustmark , but configuring it simply to list Markdown files felt like too much ef...</description>
      <category>publishing</category>
      <category>productivity</category>
      <category>markdown</category>
      <category>dufs</category>
      <category>zettelkasten</category>
      <category>self-hosting</category>
      <category>lanyon</category>
      <category>rustmark</category>
      <category>go</category>
      <content:encoded><![CDATA[<p>I needed a Markdown server to preview my <a href="https://zettelkasten.de/overview/">Zettelkasten</a> notes on mobile. I tried installing <a href="https://github.com/mkaz/lanyon">Lanyon</a>, but its installation instructions are outdated, and the project hasn’t been updated in seven years.</p>
<p>I also looked at <a href="https://docs.rs/crate/rustmark/latest">rustmark</a>, but configuring it simply to list Markdown files felt like too much effort.</p>
<p>Ultimately, I decided to use <a href="https://github.com/sigoden/dufs">dufs</a> and view the files as plain text. It supports basic file operations and WebDAV, which is more than sufficient for my needs.</p>]]></content:encoded>
    </item>
    <item>
      <title>bits 10</title>
      <published>2024-05-24T21:04:10+00:00</published>
      <updated>2024-05-24T21:04:10+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Fri, 24 May 2024 21:04:10 +0000</pubDate>
      <link>https://emresahin.net/bits-10/</link>
      <guid isPermaLink="true">https://emresahin.net/bits-10/</guid>
      <description>I believe in the value of reducing friction when taking notes. Today, I added a function to my Neovim configuration to create a timestamped file and open it for editing. function CreateTimestampedFile() local zkdir = os.getenv("HOME") .. "/github.com/iesahin/garden/zk/" local timestamp = os.date(...</description>
      <category>tools</category>
      <category>productivity</category>
      <category>neovim</category>
      <category>lazyvim</category>
      <category>zettelkasten</category>
      <category>lua</category>
      <category>note-taking</category>
      <category>workflow</category>
      <content:encoded><![CDATA[<p>I believe in the value of reducing friction when taking notes. Today, I added a function to my Neovim configuration to create a timestamped file and open it for editing.</p>
<pre><code class="language-lua">function CreateTimestampedFile()
  local zkdir = os.getenv("HOME") .. "/github.com/iesahin/garden/zk/"
  local timestamp = os.date("%Y%m%d%H%M%S")
  local filename = zkdir .. "/" .. timestamp .. ".md"
  vim.cmd("edit " .. filename)
end

vim.api.nvim_set_keymap("n", "&lt;leader&gt;F", ":lua CreateTimestampedFile()&lt;CR&gt;", { noremap = true, silent = true })
</code></pre>
<p>Now, I can just hit <code>&lt;leader&gt;F</code> (which is <code>&lt;Space&gt;F</code> in my setup) and immediately start adding a note to my zettelkasten.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
