<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Karpaty</title><description>A collection of thoughts, essays and service notes</description><link>https://blog.palczew.ski/</link><language>en-US</language><managingEditor>jpalczewski@gmail.com (Jacek Palczewski)</managingEditor><webMaster>jpalczewski@gmail.com (Jacek Palczewski)</webMaster><item><title>Rust, Docker, and the GHA layer caching problem</title><link>https://blog.palczew.ski/en/thoughts/year/2026/04/rust-docker-cache/</link><guid isPermaLink="true">https://blog.palczew.ski/en/thoughts/year/2026/04/rust-docker-cache/</guid><description>Lately I&apos;ve been working on my own vibe-designed todo app rewrite in Rust[^1]. Along the way I started looking for a sensible path to optimizing Docker image builds on GitHub Actions. One of the solutions you can easily stumble upon is cargo-chef — it separates dependency fetching from building...</description><pubDate>Mon, 27 Apr 2026 16:30:02 GMT</pubDate><content:encoded>&lt;p&gt;Lately I’ve been working on my own vibe-designed todo app rewrite in Rust&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Along the way I started looking for a sensible path to optimizing Docker image builds on GitHub Actions.&lt;/p&gt;
&lt;p&gt;One of the solutions you can easily stumble upon is &lt;a href=&quot;https://github.com/lukemathwalker/cargo-chef&quot;&gt;&lt;code&gt;cargo-chef&lt;/code&gt;&lt;/a&gt; — it separates dependency fetching from building the actual code to better cache layers. The problem is it’s designed for simpler applications with a single &lt;code&gt;lib.rs&lt;/code&gt;. In a workspace with more crates it doesn’t cache what it should, and every push ends up recompiling everything from scratch.&lt;/p&gt;
&lt;p&gt;Two approaches I tried: buildkit cache dance&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; — speeds things up a bit, but doesn’t cache brilliantly and adds its own time overhead&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; — and &lt;a href=&quot;https://github.com/swatinem/rust-cache&quot;&gt;&lt;code&gt;swatinem/rust-cache&lt;/code&gt;&lt;/a&gt;, which works nicely on GHA for binary caching, but deploying Kartoteka as a Docker image on Coolify rules that action out.&lt;/p&gt;
&lt;p&gt;Research turned up &lt;code&gt;sccache&lt;/code&gt; as worth trying — I made an attempt, but Hetzner S3 is a no-go&lt;sup&gt;&lt;a href=&quot;#user-content-fn-4&quot; id=&quot;user-content-fnref-4&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;. So Cloudflare R2 on the free tier as a potential alternative&lt;sup&gt;&lt;a href=&quot;#user-content-fn-5&quot; id=&quot;user-content-fnref-5&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For now I’m parking at cache dance. Not ruling out going toward my own runner with local cache — just on a slightly bigger server.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Kartoteka — somewhere between Todoist, Jira, Amazing Marvin, and Toggl. Classic scope creep. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/jpalczewski/kartoteka/blob/a588f99a204ec6c3688f2ae7aafe9ab8cd883559/.github/workflows/docker-build.yml&quot;&gt;Example in the Kartoteka repo.&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;In Kartoteka’s case there’s also the exotic stack — Leptos — which means deploying the server binary together with the built frontend/wasm. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-4&quot;&gt;
&lt;p&gt;Hetzner S3 bills storage in 1 TB blocks. A bit astronomical for one innocent backup and build artifacts. &lt;a href=&quot;#user-content-fnref-4&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 4&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-5&quot;&gt;
&lt;p&gt;Yes, I know — suggesting I go back to Cloudflare when I’ve spent two weeks rewriting an MCP from a Cloudflare Worker to axum/rmcp specifically to get off the Cloudflare ecosystem, sure. &lt;a href=&quot;#user-content-fnref-5&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 5&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><author>jpalczewski@gmail.com (Jacek Palczewski)</author></item><item><title>How to improve Zotero experience?</title><link>https://blog.palczew.ski/en/thoughts/year/2023/08/zotero-experience/</link><guid isPermaLink="true">https://blog.palczew.ski/en/thoughts/year/2023/08/zotero-experience/</guid><description>It&apos;s an old note, just for archival purposes. There might be newer alternatives. Also, old blog template used another method of referencing urls, don&apos;t have it yet here, so leaving it as-is: link I have a need to share how much I love Zotero. It was a tool that was a significant part of my...</description><pubDate>Tue, 29 Aug 2023 02:13:17 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;It’s an old note, just for archival purposes. There might be newer alternatives. Also, old blog template used another method of referencing urls, don’t have it yet here, so leaving it as-is: &lt;a href=&quot;https://beepb00p.xyz/annotating.html&quot;&gt;link&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have a need to share how much I love &lt;a href=&quot;https://www.zotero.org/&quot;&gt;Zotero&lt;/a&gt;. It was a tool that was a significant part of my academic journey and I had fallen in love while I was writing my B.Sc. thesis&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and all coexisting add-ons were indirectly responsible for about 50 references mentioned. I’ve recently also incorporated Zotero into my workflow alongside another side-project on Notion.&lt;/p&gt;
&lt;p&gt;Other remarkable features that Zotero offers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Awesome notes on existing PDFs. A bit better than &lt;a href=&quot;https://web.hypothes.is/&quot;&gt;hypothes.is&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; what was my main driver in B.Sc. era for taking notes from PDFs.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-4&quot; id=&quot;user-content-fnref-4&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Collection mechanism - it’s a bit specific approach for zotero and needs time to be used to.&lt;/li&gt;
&lt;li&gt;Group collections that you can share your findings in teams.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-5&quot; id=&quot;user-content-fnref-5&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What add-ons were helpful?&lt;/p&gt;
&lt;h2 id=&quot;firefox-extension&quot;&gt;Firefox extension&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.zotero.org/download/connectors&quot;&gt;Zotero Connector for Firefox&lt;/a&gt; simplifies the process of adding new database entries. A single click can trigger metadata extraction, and in some cases, even full-text PDF retrieval.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;better-bibtex&quot;&gt;Better Bibtex&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://retorque.re/zotero-better-bibtex/&quot;&gt;Better Bibtex&lt;/a&gt; allows exporting yours database in format compatible with Latex.&lt;/p&gt;
&lt;h3 id=&quot;only-latex&quot;&gt;Only Latex?&lt;/h3&gt;
&lt;p&gt;If you need a place to take notes and mention/link your entries, &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; might be a good place to start. There is a great tutorial that was a great inspiration, available in &lt;a href=&quot;https://medium.com/@alexandraphelan/an-academic-workflow-zotero-obsidian-56bf918d51ab&quot;&gt;this Zotero–Obsidian academic workflow guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is a newer approach, however, that might work a bit better - &lt;a href=&quot;https://github.com/PKM-er/obsidian-zotero&quot;&gt;Obsidian Zotero Plugin&lt;/a&gt;. Haven’t tested yet.&lt;/p&gt;
&lt;h2 id=&quot;but-what-if-i-want-to-share-my-zotero-based-entries-with-friends&quot;&gt;But what if I want to share my zotero-based entries with friends?&lt;/h2&gt;
&lt;p&gt;Sometime tool just doesn’t suit well, and forcing others to use obsidian might be imposing useless cognitive overload, so then Notion comes into play with &lt;a href=&quot;https://github.com/dvanoni/notero&quot;&gt;notero&lt;/a&gt; extension. Works surprisingly smooth.&lt;/p&gt;
&lt;p&gt;To wrap up, there are more efficient workflows than relying solely on a Word database or gathering references in a single designated file. And they may be integrated with your favorite applications&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;That’s the one tag which supposedly is a river and doesn’t match to other apps listed. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;Zotero has much more colors to highlight text. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-4&quot;&gt;
&lt;p&gt;While PDF support in Zotero is superior, I was mainly taking notes from websites where hypothesis were better. Look in further sources section for great review of note-taking tools. &lt;a href=&quot;#user-content-fnref-4&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-5&quot;&gt;
&lt;p&gt;Sharing is caring, or something like that. &lt;a href=&quot;#user-content-fnref-5&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 4&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;I was thinking if there may be an extension using other, less legal sources. Yep, they exist. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 5&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><author>jpalczewski@gmail.com (Jacek Palczewski)</author></item><item><title>Implication of deploying github page to another repo</title><link>https://blog.palczew.ski/en/thoughts/year/2023/08/github-page-another-repo/</link><guid isPermaLink="true">https://blog.palczew.ski/en/thoughts/year/2023/08/github-page-another-repo/</guid><description>Be aware that it is a n old post. Just reference or an inspiration if someone is lost. Years ago I had a thought to seperate repo with hugo theme and the one with rendered page due to possible use of utterances[^1]. There are my experiences with both approaches: deploying page to the same repo -...</description><pubDate>Thu, 17 Aug 2023 13:39:43 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Be aware that it is a n old post. Just reference or an inspiration if someone is lost.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Years ago I had a thought to seperate repo with hugo theme and the one with rendered page due to possible use of &lt;a href=&quot;https://utteranc.es/&quot;&gt;utterances&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. There are my experiences with both approaches:&lt;/p&gt;
&lt;h2 id=&quot;deploying-page-to-the-same-repo&quot;&gt;deploying page to the same repo&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Astro docs provides a &lt;a href=&quot;https://docs.astro.build/en/guides/deploy/github/&quot;&gt;good starting point&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;deploying-site-elsewhere&quot;&gt;deploying site elsewhere&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;There is a a &lt;a href=&quot;https://cpina.github.io/push-to-another-repository-docs/index.html&quot;&gt;convinient github-action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Can you reuse &lt;code&gt;withastro/action@v0&lt;/code&gt; to build it? You might, but it is designed for scenario above, this action creates an &lt;a href=&quot;https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts&quot;&gt;artifact&lt;/a&gt; that is consumed by &lt;code&gt;actions/deploy-pages@v1&lt;/code&gt; action.
&lt;ul&gt;
&lt;li&gt;tl;dr: there are better ways&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;example-of-deploying-astro-blog-to-github-pages&quot;&gt;Example of deploying astro blog to github pages&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/jpalczewski/entuzjazm/blob/6bd91f3a1d60714ab80836c2125b2a654d3a1b63/.github/workflows/deploy.yml&quot;&gt;There is my example&lt;/a&gt; of working github action.&lt;/p&gt;
&lt;p&gt;Things worth to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;By using actions to install node and pnpm there is huge time savings due to caching.&lt;/li&gt;
&lt;li&gt;There should be a &lt;code&gt;.nojekyll&lt;/code&gt; file in blog root - otherwise css is messed up&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Is it a good idea? One of tutorials on integrating utterances with astro doesn’t have it either. I hope not to see it as a opinion whether this is good option, but someday I will give it a try. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/74489844/astro-js-deployment-media-files-not-rendering&quot;&gt;Source&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><author>jpalczewski@gmail.com (Jacek Palczewski)</author></item></channel></rss>