<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Notes on plant99&#39;s webgarden</title>
    <link>https://shivashis.dev/notes/</link>
    <description>Recent notes on plant99&#39;s webgarden</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
    
    
    <lastBuildDate>Sun, 14 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://shivashis.dev/notes/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>Wireless NIC are nice, just not on Linux</title>
      <link>https://shivashis.dev/notes/t2u_nano_archer_adapter/</link>
      <pubDate>Sun, 14 Sep 2025 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/t2u_nano_archer_adapter/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been collecting &lt;a href=&#34;https://www.servethehome.com/introducing-project-tinyminimicro-home-lab-revolution/&#34;&gt;TinyMiniMicro computers&lt;/a&gt; like &lt;a href=&#34;https://en.wikipedia.org/wiki/Infinity_Stones&#34;&gt;Infinity Stones&lt;/a&gt;. Just kidding, I&amp;rsquo;m just on my second one.&lt;/p&gt;
&lt;p&gt;But the house I live in doesn&amp;rsquo;t make it easy to move a LAN cable to another corner where my desk is &amp;ndash; and where I keep my home-servers as well. And most of the used mini/micro computers don&amp;rsquo;t come with NICs inside. So one has to either get &lt;a href=&#34;https://www.amazon.de/TP-Link-Archer-T2U-Nano-Verschl%C3%BCsselungs-Standard/dp/B07KRCW6LZ&#34;&gt;USB&lt;/a&gt; or PCI-e network adapters.&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t explored the PCI-e ones, but this note tries to save some hours for you by listing the steps required to get such devices working on Debian and on NixOS, because the downloadable adapters from official websites aren&amp;rsquo;t upto date with recent kernel versions.&lt;/p&gt;
&lt;h3 id=&#34;debian&#34;&gt;Debian&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/lwfinger/rtw88&#34;&gt;This repository on GitHub&lt;/a&gt; has instructions that&amp;rsquo;ll work for any Linux distro, however I&amp;rsquo;ve only installed with Debian 13 and DKMS.&lt;/p&gt;
&lt;p&gt;One has to reboot for the network adapters to work.&lt;/p&gt;
&lt;h3 id=&#34;nixos&#34;&gt;NixOS&lt;/h3&gt;
&lt;p&gt;There would already be NIC drivers for your USB/PCI-e adapters and one can search them by the name of their chip in &lt;a href=&#34;https://search.nixos.org/packages?channel=25.05&amp;amp;query=rtl8821&#34;&gt;search.nixos.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In your &lt;code&gt;configuration.nix&lt;/code&gt; one has &lt;a href=&#34;https://discourse.nixos.org/t/help-installing-wifi-drivers/4575&#34;&gt;to add&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;boot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;extraModulePackages &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; [ config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;boot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kernelPackages&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rtl8821au ];
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The name &lt;code&gt;rtl8821au&lt;/code&gt; comes from the name of the chip, and varies according to the device you want to use.&lt;/p&gt;
&lt;p&gt;Also &lt;a href=&#34;https://shivashis.dev/notes/debian-12-wifi-driver/&#34;&gt;relevant debian trivia.&lt;/a&gt;&lt;/p&gt;
</description>
    </item><item>
      <title>About GitLab&#39;s CI tokens</title>
      <link>https://shivashis.dev/notes/gitlab-tokens/</link>
      <pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/gitlab-tokens/</guid>
      <description>&lt;p&gt;Everytime I have to do something new with GitLab CI, it&amp;rsquo;s harder than fighting inner demons to figure out the correct permissions for things.&lt;/p&gt;
&lt;p&gt;Today I learned more about &lt;code&gt;CI_JOB_TOKEN&lt;/code&gt;, the access token one gets by default in their CI runtime.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve always regarded this similar to &lt;code&gt;Personal Access Tokens (PATs)&lt;/code&gt; in GitLab. One way it&amp;rsquo;s different is the &lt;code&gt;CI_JOB_TOKEN&lt;/code&gt; works only when &lt;code&gt;CI_JOB_USERNAME&lt;/code&gt; is &lt;code&gt;gitlab-ci-token&lt;/code&gt;. On the other hand, with PATs used, GitLab doesn&amp;rsquo;t care about the username provided.&lt;/p&gt;
</description>
    </item><item>
      <title>Exposing temporary services to the internet</title>
      <link>https://shivashis.dev/notes/tailscale-tunnel/</link>
      <pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/tailscale-tunnel/</guid>
      <description>&lt;p&gt;Earlier today, I had a requirement of hosting some data for some family and friends temporarily, the server would be up for 2 days.&lt;/p&gt;
&lt;p&gt;Before this, I would use &lt;a href=&#34;https://ngrok.com/&#34;&gt;ngrok&lt;/a&gt; for such use cases.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But&lt;/em&gt; the rate limits put by ngrok in its free tier is abysmally bad and if I host some sort of a file server, it&amp;rsquo;d be the end of my relationship with my people.&lt;/p&gt;
&lt;p&gt;In search of something better (and cheap), I looked at &lt;a href=&#34;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&#34;&gt;Cloudflare Tunnels&lt;/a&gt;, which I&amp;rsquo;ve heard so many nice things about, how the default WAF is good enough for public exposure.
But it requires a secure domain for tunneling to work, and I don&amp;rsquo;t have one to expend.&lt;/p&gt;
&lt;p&gt;At the end, incidentally I came across &lt;a href=&#34;https://tailscale.com/kb/1223/funnel&#34;&gt;Tailscale Funnel&lt;/a&gt;. Alongside a custom wireguard setup, I also run some devices on Tailscale in my home network. If you already are familiar with Tailscale, you can spawn &lt;strong&gt;secure tunnels&lt;/strong&gt;,  without rate limits, and a fixed subdomain.&lt;/p&gt;
&lt;p&gt;This is the best of the lot in my opinion.&lt;/p&gt;
</description>
    </item><item>
      <title>Is ghostty any good?</title>
      <link>https://shivashis.dev/notes/zed-and-ghostty/</link>
      <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/zed-and-ghostty/</guid>
      <description>&lt;p&gt;Over the holidays, &lt;a href=&#34;https://github.com/ghostty-org/ghostty&#34;&gt;Ghostty&lt;/a&gt; was released.&lt;/p&gt;
&lt;p&gt;Except for some Redditors saying &amp;ldquo;Oh we have so many terminal emulators now, what&amp;rsquo;s new with this one?&amp;rdquo;. It was very well received by everybody.&lt;/p&gt;
&lt;p&gt;Present company included, I am a big fan of it.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve never tried anything other than the default Gnome terminal, and the default Terminal app from MacOS.
Ghostty was visibly fast for auto-completion, going through and grepping logs from kubernetes pods.&lt;/p&gt;
&lt;p&gt;Ghostty reminded me of why I use &lt;a href=&#34;https://zed.dev/&#34;&gt;zed&lt;/a&gt;. It&amp;rsquo;s the same reason I used &lt;a href=&#34;https://www.sublimetext.com/&#34;&gt;Sublime Text&lt;/a&gt; when I started programming.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bloat&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t gone through setting up JavaScript/Python language extensions in Zed. Thus, the editor is very fast for browsing through and making minor edits.
On the contrary, with 20 extensions and programming good-to-have(s) setup in VS Code, it&amp;rsquo;s slow as a snail.&lt;/p&gt;
&lt;p&gt;So now I use Ghostty to do one-off tasks like restarting a pod or starting something in a remote server.&lt;/p&gt;
&lt;p&gt;For tasks where look and feel of the screen might be important like a pair-programming session, it&amp;rsquo;ll have to wait until I learn how to configure it better.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s the way I&amp;rsquo;m using Zed as well!&lt;/p&gt;
</description>
    </item><item>
      <title>Some morning wisdom from my wife</title>
      <link>https://shivashis.dev/notes/lopin_seed/</link>
      <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/lopin_seed/</guid>
      <description>&lt;p&gt;As my lovely wife made some &lt;a href=&#34;https://www.vegrecipesofindia.com/moong-sprouts-chaat-recipe/&#34;&gt;moong-chat&lt;/a&gt; for breakfast yesterday, and I finished every last speck of food from the plate, she shared something interesting.&lt;/p&gt;
&lt;p&gt;She said the following&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Typically eggs and seeds are more nutritious because they are created to sustain a new life-form.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;rsquo;s an interesting fact, albeit a little morbid.&lt;/p&gt;
</description>
    </item><item>
      <title>Does &#39;baler&#39; help?</title>
      <link>https://shivashis.dev/notes/does-baler-help/</link>
      <pubDate>Fri, 27 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/does-baler-help/</guid>
      <description>&lt;p&gt;Very recently, I released &lt;a href=&#34;https://github.com/plant99/baler&#34;&gt;baler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That was a productive distraction I went through from my primary goal of building a personal productivity app codenamed &lt;em&gt;Heli&lt;/em&gt;, it&amp;rsquo;s still WIP.&lt;/p&gt;
&lt;p&gt;Heli has a React Native frontend, and is local-first. I&amp;rsquo;m still working on a self-hostable (probably multi-user) Golang based backend.&lt;/p&gt;
&lt;p&gt;And no doubt, I&amp;rsquo;m taking help (a lot of help) from Claude since I am not a good front-end developer.&lt;/p&gt;
&lt;p&gt;The problem  with taking help from an LLM while building larger projects is managing context.&lt;/p&gt;
&lt;p&gt;Once your project gets &amp;gt; 3000 lines, LLMs start giving answers that are technically correct but don&amp;rsquo;t seem relevant to the answer the human is seeking.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s also important that one takes control of the core app logic like &lt;a href=&#34;https://world.hey.com/dhh&#34;&gt;dhh mentioned somewhere&lt;/a&gt; &amp;ndash; you shouldn&amp;rsquo;t let the LLM drive the project, you should know what each piece of code does, even through you didn&amp;rsquo;t write it.&lt;/p&gt;
&lt;p&gt;Even in my case, I had to constantly make sure that my local directory and Claude&amp;rsquo;s context were in sync.&lt;/p&gt;
&lt;p&gt;As the number of files grew, it took me longer and longer to sync these files. The options I already had on GitHub to convert a repository into text didn&amp;rsquo;t help as the text was too long for me. And I wanted a tool that could also convert a text file back to the source code.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s why I built this tool, and have been using it to add more features to &amp;ldquo;heli&amp;rdquo;. So far, the experience has been good, and it only takes me 20 seconds to update my whole context with Claude unlike the 5 minutes it used to take me before.&lt;/p&gt;
&lt;p&gt;I learnt that if you post a single file to Claude, it&amp;rsquo;ll take more from your project memory than if you&amp;rsquo;d split that single file into 5.&lt;/p&gt;
&lt;p&gt;Regardless, &amp;ldquo;baler&amp;rdquo; does help and I&amp;rsquo;ll continue using it until Claude releases a &amp;ldquo;Co-pilot&amp;rdquo; like something.&lt;/p&gt;
</description>
    </item><item>
      <title>How many men does it take to run NixOS?</title>
      <link>https://shivashis.dev/notes/nixos-playground/</link>
      <pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/nixos-playground/</guid>
      <description>&lt;p&gt;Q: How many men does it take to run NixOS?
A: We have to contact their ancestors and start from when earth was formed.&lt;/p&gt;
&lt;p&gt;Jokes aside, I&amp;rsquo;m trying to move my self-hosted setup to NixOS.
The context being, when I moved from one place to another and wanted to set some software in a new computer &amp;ndash; it&amp;rsquo;s very hard to replicate the old setup even with notes.&lt;/p&gt;
&lt;p&gt;This time, I want to run everything with Nix so when I&amp;rsquo;m switching places again it&amp;rsquo;s easier to get up and running again.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve hit a small problem.&lt;/p&gt;
&lt;p&gt;My wife wants me to get it running ASAP to offload some of her phone&amp;rsquo;s storage. Even I can&amp;rsquo;t update my phone&amp;rsquo;s software until I free up some storage.&lt;/p&gt;
&lt;p&gt;So I can&amp;rsquo;t wait until I can set everything up with NixOS.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example, in an ordinary linux computer if you want version 1 of software A, and version 3 of software B you can install them separately yes?&lt;/p&gt;
&lt;p&gt;But nixpkgs freezes versions of its components. So you have to take whatever versions of software A, B is baked into that nixpkgs release? Or have I understood it wrong?&lt;/p&gt;
&lt;p&gt;To cope with the delay, I setup a VirtualBox inside a debian system to run NixOS and come up with a good &lt;code&gt;configuration.nix&lt;/code&gt; (the config which declares your system).
But&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There were some issues with the networking bridge and NixOS failing to register itself with the router.&lt;/li&gt;
&lt;li&gt;When I installed tailscale, apparently there were some conflicts with how tailscale and nix wanted to configure iptables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was just too much time being wasted on setting up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So&lt;/strong&gt;, I deleted VirtualBox and I&amp;rsquo;ll configure that computer the old-fashioned way, like a caveman.&lt;/p&gt;
&lt;p&gt;Very happily, I came across &lt;a href=&#34;https://github.com/elitak/nixos-infect&#34;&gt;nixos-infect&lt;/a&gt; which converts major linux installations into NixOS.
I&amp;rsquo;m using my OCI free tier to have a system that I can play around with &amp;ndash; once I have a good &lt;code&gt;configuration.nix&lt;/code&gt;, I&amp;rsquo;ll bring that bad-boy to my homeserver.&lt;/p&gt;
</description>
    </item><item>
      <title>Installing Debian 12 without wireless network card</title>
      <link>https://shivashis.dev/notes/debian-12-wifi-driver/</link>
      <pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/debian-12-wifi-driver/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a gotcha if you&amp;rsquo;re installing Debian (or probably any other Linux based distro).&lt;/p&gt;
&lt;p&gt;The installation iso already comes with a bunch of packages which you can use in the &lt;code&gt;sources.list&lt;/code&gt; in the installed OS.&lt;/p&gt;
&lt;p&gt;If I remember correctly, this &lt;em&gt;is&lt;/em&gt; the default set-up, and one has to explicitly comment this out to use apt.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;deb cdrom:[Debian GNU/Linux 12.2.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20231007-10:29]/ bookworm main non-free-firmware
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Since my computer didn&amp;rsquo;t have a wireless network card, I could use a USB Wifi adapter and install some dependencies from here.&lt;/p&gt;
</description>
    </item><item>
      <title>Use QVariants instead of defining classes for QSettings</title>
      <link>https://shivashis.dev/notes/qvariants-instead-of-class/</link>
      <pubDate>Sat, 23 Mar 2019 00:00:00 +0000</pubDate>
      
      <guid>https://shivashis.dev/notes/qvariants-instead-of-class/</guid>
      <description>&lt;p&gt;If you ever need to work on QSettings to store config variables in a Qt application, DON&amp;rsquo;T worry about designing class for saving and retrieving different data-types. Use QVariants.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bitbucket.org/wxmetvis/mss/issues/325/refactor-replace-pickle-files-by-qsettings&#34;&gt;Refer to this discussion.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you are introducing version control to your file storage, remember that git commit would not work if this file is opened in &amp;lsquo;w&amp;rsquo;(write mode) in any part of program. Remeber to close the opened reference, so the most recent changes are committed.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
