<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog on rtk0c's hut</title><link>https://www.rtk0c.com/blog/</link><description>Recent content in Blog on rtk0c's hut</description><generator>Hugo -- 0.152.2</generator><language>en</language><lastBuildDate>Sun, 09 Nov 2025 00:00:00 -0800</lastBuildDate><atom:link href="https://www.rtk0c.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Poor man's selenium</title><link>https://www.rtk0c.com/blog/poor-mans-selenium/</link><pubDate>Sun, 09 Nov 2025 00:00:00 -0800</pubDate><guid>https://www.rtk0c.com/blog/poor-mans-selenium/</guid><description>When chrome-driver just decides to not work on your development workstation today</description></item><item><title>I paid for the whole vpn, so I'm damn well going to use the whole vpn</title><link>https://www.rtk0c.com/blog/hand-rolled-ngrok-over-protonvpn/</link><pubDate>Fri, 24 Oct 2025 21:00:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/hand-rolled-ngrok-over-protonvpn/</guid><description>Or: hand roll a ngrok with protonvpn port forwarding for shenanigans</description></item><item><title>Link clearance #3</title><link>https://www.rtk0c.com/blog/link-clearance/3/</link><pubDate>Mon, 01 Sep 2025 12:25:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/link-clearance/3/</guid><description>From my phone</description></item><item><title>Link clearance #2</title><link>https://www.rtk0c.com/blog/link-clearance/2/</link><pubDate>Mon, 01 Sep 2025 12:00:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/link-clearance/2/</guid><description>Emacs, SVG, video encodings, ACME, and Common Lisp. Also, use RSS (we have one too)</description></item><item><title>On the 1-year language</title><link>https://www.rtk0c.com/blog/on-the-1-year-language/</link><pubDate>Sun, 24 Aug 2025 17:34:28 -0700</pubDate><guid>https://www.rtk0c.com/blog/on-the-1-year-language/</guid><description>&lt;p&gt;Application systems have completely different tolerances than libraries. Chromium can take a completely bespoke build system, equipped with its own C++ code generator, vendoring every library that it tends to use. Interoperability to downstream projects is so far in the rearview mirror, that it may as well exist as its own operating system. Same goes for Emacs. The same goes for Blender.&lt;/p&gt;
&lt;p&gt;What we need for building large and complex application programs is not the 100-year language, it’s the 1-year language.&lt;/p&gt;</description></item><item><title>Tips and tricks: CS 166 Information Security taught by Mark Stamp</title><link>https://www.rtk0c.com/blog/cs166-tips-tricks/</link><pubDate>Tue, 13 May 2025 15:27:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/cs166-tips-tricks/</guid><description>&lt;p&gt;A collection of troubleshooting notes, general tips and tricks, or personal thoughts on the CS 166 Information Security class taught by Mark Stamp at SJSU.&lt;/p&gt;
&lt;p&gt;Part of this, dealing with specific homework problems, is written with the intention of being a last-resort rescue manual. I only include information you need to get out of potential deep water. No solutions to hard problems. No hand holding, especially no &amp;ldquo;here is how you solve this problem&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Watchlist × Emacs org-mode</title><link>https://www.rtk0c.com/blog/org-mode-watchlist/</link><pubDate>Sat, 19 Apr 2025 12:29:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/org-mode-watchlist/</guid><description>&lt;p&gt;Watch progress websites exist for &lt;a href="https://myanimelist.net"&gt;anime&lt;/a&gt; and &lt;a href="https://letterboxd.com"&gt;film&lt;/a&gt;. They work great. Socialization is great.&lt;/p&gt;
&lt;p&gt;But they don&amp;rsquo;t record the &lt;em&gt;exact time&lt;/em&gt; at which I finished each episode. I find such statistics amusing to dig through in some kind of year-end review. I also found it tremendously helpful to know which episodes were most recently watched, and in what order. Helps with recollecting the context of each show, especially when chasing more than a couple of shows at the same time.
Depending on your judgment, using Letterboxd and MyAnimeList may also constitute giving private information to 3rd parties.&lt;/p&gt;</description></item><item><title>On continuations</title><link>https://www.rtk0c.com/blog/on-continuations/</link><pubDate>Sat, 22 Mar 2025 15:51:27 -0700</pubDate><guid>https://www.rtk0c.com/blog/on-continuations/</guid><description>&lt;p&gt;A short piece for teaching continuations, in the Platonic dialectic style. Whether it is helpful is for you to decide. Cheers to burritos!&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Theofanis:&lt;/strong&gt; Are you free right now, Asimoula?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Asimoula:&lt;/strong&gt; Well, surely if your matter of attention is short and concise, I shall give mine too regardless; and if it is long, we shall look upon its intriguability, and then making a decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Theofanis:&lt;/strong&gt; Well, to the very honest, it goes as such: this &amp;ldquo;continuation&amp;rdquo; thing has been perplexing me for days on end. &lt;a href="https://en.wikipedia.org/wiki/Continuation"&gt;Some&lt;/a&gt; state it very short simple, &amp;ldquo;a stored and resuamble state of computation&amp;rdquo;, but do not seem all that useful, or hint at why at all someone should use it. Others give very length examples,&lt;/p&gt;</description></item><item><title>Link clearance #1</title><link>https://www.rtk0c.com/blog/link-clearance/1/</link><pubDate>Wed, 19 Mar 2025 17:13:00 -0700</pubDate><guid>https://www.rtk0c.com/blog/link-clearance/1/</guid><description>Unfortunately I probably won&amp;rsquo;t ever be as good as The Old New Thing</description></item><item><title>Vim really does not like kitty</title><link>https://www.rtk0c.com/blog/vim-kitty-compat/</link><pubDate>Wed, 05 Mar 2025 20:30:01 -0800</pubDate><guid>https://www.rtk0c.com/blog/vim-kitty-compat/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: kitty uses a custom terminfo &lt;code&gt;xterm-kitty&lt;/code&gt;. Vim doesn&amp;rsquo;t like it.
If you&amp;rsquo;re in a pinch, commit a &lt;a href="https://www.rtk0c.com/blog/vim-kitty-compat/#i-just-want-it-work-right-now"&gt;crime&lt;/a&gt;, and hopefully it works fine.
If you&amp;rsquo;re not, switch to another terminal for vim, or switch to neovim, or &lt;a href="https://www.rtk0c.com/blog/vim-kitty-compat/#configure-vim"&gt;attempt to teach vim to speak kitty&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you use Vim in kitty, local machine or going through SSH, and (at least) one of these is happening:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paste &lt;kbd&gt;Ctrl+Shift+V&lt;/kbd&gt; from system clipboard is egregiously slow. Like two lines per second slow&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;li&gt;Paste is glitchy. All the whitespace get eaten, nowhere to be seen. Lines get jumbled together, parts of the clipboard overwrite another, etc&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;li&gt;kitty tells you your clipboard contains terminal escape sequences. Except it absolutely does not. Pasting elsewhere, still in kitty, like into &lt;code&gt;bash&lt;/code&gt; or &lt;code&gt;nvim&lt;/code&gt; works completely fine&lt;sup id="fnref1:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;then congratulations, you have just discovered that Vim isn&amp;rsquo;t very compatible with kitty as a terminal emulator. Instead of trying to poorly summarize &lt;em&gt;why&lt;/em&gt;, you can instead read the problem being extensively discussed &lt;em&gt;con fuoco&lt;/em&gt; in the &lt;a href="https://github.com/vim/vim/issues/11729"&gt;Vim issue tracker&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Adventures on server setup without a monitor</title><link>https://www.rtk0c.com/blog/adventures-on-monitorless-server/</link><pubDate>Mon, 18 Nov 2024 21:41:35 -0800</pubDate><guid>https://www.rtk0c.com/blog/adventures-on-monitorless-server/</guid><description>&lt;p&gt;A story of frantically rescuing a deployed headless server, where I forget to statically assign an IP address.
It just won&amp;rsquo;t have network connection. No SSH. No fixie.&lt;/p&gt;
&lt;p&gt;Except &lt;em&gt;there is nothing saying a DHCP server has to be running on the router or gateway&lt;/em&gt;.
So, just install and configure &lt;code&gt;kea&lt;/code&gt; (or a DHCP server of your choice) on any other computer on the network, reboot the server in question, and voilà!
SSH to your hearts content.&lt;/p&gt;</description></item><item><title>Setting up SJSU VPN for connection to home server</title><link>https://www.rtk0c.com/blog/tailscale-and-sjsu-vpn/</link><pubDate>Wed, 01 May 2024 23:34:13 -0700</pubDate><guid>https://www.rtk0c.com/blog/tailscale-and-sjsu-vpn/</guid><description>&lt;p&gt;Note this intended for relative networking novices, so I will try to explain every term used. Skip over them if you find it verbose. If you don&amp;rsquo;t care about anything else and just wants to replicate my setup for your home server, go to &lt;a href="https://www.rtk0c.com/blog/tailscale-and-sjsu-vpn/#my-journey"&gt;this section&lt;/a&gt;. Read the TL;DR&amp;rsquo;s in there if that section alone is too long for you too.&lt;/p&gt;
&lt;h1 id="motivation"&gt;Motivation&lt;/h1&gt;
&lt;p&gt;Virtual mesh networking software, like Tailscale, ZeroTier, tinc, Hamachi and else, practically&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; cannot establish a direct/p2p connection between a machine on the SJSU wifi and a machine somewhere else, running on a common residential internet. This situation is an example of a hard-NAT to easy-NAT connection (I&amp;rsquo;m using terminology from &lt;a href="https://tailscale.com/blog/how-nat-traversal-works"&gt;Tailscale&amp;rsquo;s article on NAT traversal&lt;/a&gt;). I really only use Tailscale, so that&amp;rsquo;s what I&amp;rsquo;m concerned with here.&lt;/p&gt;</description></item></channel></rss>