<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Rasyidan&apos;s Notes</title><description>Short public records, explorations, findings, and titled notes.</description><link>https://rasyidanaf.com/</link><language>en-us</language><item><title>claude is back!!</title><link>https://rasyidanaf.com/notes/2026-09-25/claude-is-back/</link><guid isPermaLink="true">https://rasyidanaf.com/notes/2026-09-25/claude-is-back/</guid><description>So after claude opus 5.5 was released yesterday, its api pricing dropped from $5/$25 to $4/$20. I also saw a lot of opus 5.5 demos showing its capabilities from most of my oomfs. The vibe was more like opus 4.5 back…</description><pubDate>Fri, 25 Sep 2026 00:09:59 GMT</pubDate><content:encoded>&lt;p&gt;So after claude opus 5.5 was released yesterday, its api pricing dropped from &lt;code&gt;$5/$25&lt;/code&gt; to &lt;code&gt;$4/$20&lt;/code&gt;. I also saw a lot of opus 5.5 demos showing its capabilities from most of my oomfs. The vibe was more like opus 4.5 back then: strong positive sentiment across the timeline, with people satisfied with its capabilities. But the important factors when choosing a model for me as a brokie here are pricing and usage. As you know, fable is really strong, if not the most intelligent model, head-to-head with the astra model by OpenAI. My only concern is that both models, despite currently being the most intelligent models here, drain users’ weekly usage very fast. Thus, I don’t find these types of models &lt;code&gt;efficient&lt;/code&gt; as daily drivers (due to being broke too). I saw some people say that claude’s &lt;code&gt;$20&lt;/code&gt; subs plan is usable enough to drive opus 5.5. I re-subbed to claude again after abandoning my &lt;code&gt;$100&lt;/code&gt; claude max plan a few months ago due to codex being good and generous enough for its subs plan.&lt;/p&gt;
&lt;p&gt;So I did some &lt;em&gt;vibecalculation&lt;/em&gt; with the help of deepseek v4.1 flash (too oddly specific lol) and &lt;code&gt;ccusage&lt;/code&gt; combined. Here is the result so far based on my remaining quota and tokens spent…&lt;/p&gt;
&lt;h3 id=&quot;usage-since-yesterday&quot;&gt;usage since yesterday&lt;/h3&gt;











































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Source&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Input&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Output&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Cache Write&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Cache Read&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Value (USD)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Claude Code&lt;/td&gt;&lt;td&gt;2026-09-23&lt;/td&gt;&lt;td&gt;claude-opus-5-5&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;454&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;276,216&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;605,638&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;85,684,183&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$27.5081&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Code&lt;/td&gt;&lt;td&gt;2026-09-23&lt;/td&gt;&lt;td&gt;claude-sonnet-5&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;8&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;1,689&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;10,584&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;26,755&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$0.0487&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Code&lt;/td&gt;&lt;td&gt;2026-09-24&lt;/td&gt;&lt;td&gt;claude-opus-5-5&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;2,142&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;870,051&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;5,543,593&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;248,127,298&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$109.4553&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Code subtotal&lt;/td&gt;&lt;td&gt;All&lt;/td&gt;&lt;td&gt;Claude&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;2,604&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;1,147,956&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;6,159,815&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;333,838,236&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$137.0121&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;omp&lt;/td&gt;&lt;td&gt;2026-09-24&lt;/td&gt;&lt;td&gt;claude-opus-5-5&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;334&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;104,233&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;601,255&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;30,895,618&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$13.0752&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude-only total&lt;/td&gt;&lt;td&gt;All&lt;/td&gt;&lt;td&gt;Claude&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;2,938&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;1,252,189&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;6,761,070&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;364,733,854&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$150.0873&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;live-quota-status-as-i-write-this-note&quot;&gt;live quota status (as i write this note)&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Checked at&lt;/td&gt;&lt;td&gt;2026-09-24 23:33 UTC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5-hour usage&lt;/td&gt;&lt;td&gt;100%; resets 2026-09-25 00:20 UTC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7-day usage&lt;/td&gt;&lt;td&gt;53%; 47% remaining&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7-day window&lt;/td&gt;&lt;td&gt;2026-09-18 19:00 → 2026-09-25 19:00 UTC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quota breakdown&lt;/td&gt;&lt;td&gt;Claude Code 99%; Chats 1%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;claude-only-api-equivalent-value-estimate-on-claude-pro-subs&quot;&gt;claude-only api-equivalent value estimate on claude pro subs&lt;/h3&gt;























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Method&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Weekly&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Monthly&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;vs $20/mo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Full quota: $150.0873 / 0.53&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$283.18&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$1,226.18&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;61.31x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Observed burst: $150.0873 / 1.643 days x 7&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$639.38&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;$2,768.51&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;138.43x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;monthly = weekly x 4.33. Quota estimates assume the same usage mix.
burst elapsed time starts at 2026-09-23 08:07:20 UTC.
the 5-hour cap makes the burst rate non-sustainable.
values are API-equivalent estimates, not subscription charges.&lt;/p&gt;
&lt;p&gt;So far, since yesterday:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;443.3M processed tokens&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1,960 model calls&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1,037 tool calls&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;5h window: 100%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Weekly window: 53%&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It also appears to fix claude opus 5’s &lt;em&gt;le claudious sloppish jargon&lt;/em&gt; wording, which is unreadable for a mere human peasant like me. The wording from opus 5.5 felt more natural to me. Also remember, based on the data I gave above, how usable and cheap claude opus 5.5 is compared to previous ant models and how good it is (way better than fable 5.1, a significant improvement over opus 5).&lt;/p&gt;
&lt;p&gt;For visual design, I also believe ant improved its model’s taste a lot. A few examples here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://x.com/kevin_t_ngo/status/2102437977435893771?s=20&quot;&gt;https://x.com/kevin_t_ngo/status/2102437977435893771?s=20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://x.com/other__reality/status/2102514581684052169?s=20&quot;&gt;https://x.com/other__reality/status/2102514581684052169?s=20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://x.com/donaldjewkes/status/2102801274173587569?s=20&quot;&gt;https://x.com/donaldjewkes/status/2102801274173587569?s=20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://x.com/devteamdrew/status/2102436464323661880?s=20&quot;&gt;https://x.com/devteamdrew/status/2102436464323661880?s=20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://x.com/pleometric/status/2103082510607610023?s=20&quot;&gt;https://x.com/pleometric/status/2103082510607610023?s=20&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What I want to emphasize here is usability and the usage allowance alone on claude subs. Previously, claude fable was very good but not really that usable given how expensive it was. Now opus 5.5 is literally priced ~20% lower than the usual opus api rates while being better than fable. The usage allowance on claude pro subs is also generous enough, which is very satisfying!&lt;/p&gt;
&lt;p&gt;anthropic might achieved efficiency&lt;/p&gt;
&lt;p&gt;anthropic is back!&lt;/p&gt;
&lt;p&gt;&lt;del&gt;unless they nerf and quantize their model into haiku 5 next week hehehe&lt;/del&gt;&lt;/p&gt;</content:encoded><category>ai</category></item><item><title>Benchmarking Coffeeshops in Tebet, South Jakarta</title><link>https://rasyidanaf.com/notes/2026-09-03/benchmarking-coffeeshops-in-tebet-south-jakarta/</link><guid isPermaLink="true">https://rasyidanaf.com/notes/2026-09-03/benchmarking-coffeeshops-in-tebet-south-jakarta/</guid><description>Since I have been visiting many coffee shops in Tebet, South Jakarta, I have religiously logged each one in Obsidian. I record the coffee taste, pricing (based on a long black or Americano), location, vibe, comfort,…</description><pubDate>Thu, 03 Sep 2026 09:35:54 GMT</pubDate><content:encoded>&lt;p&gt;Since I have been visiting many coffee shops in Tebet, South Jakarta, I have &lt;em&gt;religiously&lt;/em&gt; logged each one in Obsidian. I record the coffee taste, pricing (based on a long black or Americano), location, vibe, comfort, Wi-Fi speed and stability, and more.&lt;/p&gt;
&lt;p&gt;For Wi-Fi speed, stability, and pricing, these are my picks for now. Wi-Fi results show download speed first, then upload speed.&lt;/p&gt;






















































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Recommendation&lt;/th&gt;&lt;th&gt;Coffee shop&lt;/th&gt;&lt;th&gt;Price benchmark&lt;/th&gt;&lt;th&gt;Wi-Fi (Mbps)&lt;/th&gt;&lt;th&gt;Ping (ms)&lt;/th&gt;&lt;th&gt;Test evidence&lt;/th&gt;&lt;th&gt;Notes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Best overall&lt;/td&gt;&lt;td&gt;Coffee &amp;#x26; Thyme Tebet&lt;/td&gt;&lt;td&gt;Americano 25k&lt;/td&gt;&lt;td&gt;174 / 82&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5 samples, stable&lt;/td&gt;&lt;td&gt;Fast connection, 0% packet loss, and outlets throughout&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best upload speed under 31k&lt;/td&gt;&lt;td&gt;Moonshot Coffee &amp;#x26; Eatery&lt;/td&gt;&lt;td&gt;Espresso 30k&lt;/td&gt;&lt;td&gt;135 / 171&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;5 samples, moderate&lt;/td&gt;&lt;td&gt;Strong for uploads and video calls; 0% packet loss&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best tested budget option&lt;/td&gt;&lt;td&gt;Kopi Lima Detik Tebet&lt;/td&gt;&lt;td&gt;Americano 28k&lt;/td&gt;&lt;td&gt;107 / 72&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;10 samples, stable&lt;/td&gt;&lt;td&gt;Good latest result, but speed changed sharply between sessions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Most consistent under 30k&lt;/td&gt;&lt;td&gt;Kedai Kopi Kani&lt;/td&gt;&lt;td&gt;Black coffee 28k&lt;/td&gt;&lt;td&gt;42 / 23&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;5 samples, stable&lt;/td&gt;&lt;td&gt;Slower, but results stayed within a narrow range&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cheapest fast option&lt;/td&gt;&lt;td&gt;Flash Coffee Bukit Duri&lt;/td&gt;&lt;td&gt;Americano 21k&lt;/td&gt;&lt;td&gt;129 / 101&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;1 sample&lt;/td&gt;&lt;td&gt;Excellent value on paper, but confidence is low&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cheap alternative&lt;/td&gt;&lt;td&gt;ARAH Coffee Tebet&lt;/td&gt;&lt;td&gt;Americano 23k&lt;/td&gt;&lt;td&gt;79 / 68&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;1 sample&lt;/td&gt;&lt;td&gt;Promising result, but it needs more tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fastest overall&lt;/td&gt;&lt;td&gt;Sudo Brew Tebet&lt;/td&gt;&lt;td&gt;Americano 40k&lt;/td&gt;&lt;td&gt;258 / 283&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;5 samples, stable&lt;/td&gt;&lt;td&gt;Best raw performance, but the coffee benchmark is expensive&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fast premium alternative&lt;/td&gt;&lt;td&gt;Ribbon Coffee &amp;#x26; Eatery&lt;/td&gt;&lt;td&gt;Americano 33k&lt;/td&gt;&lt;td&gt;223 / 51&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;5 samples, stable&lt;/td&gt;&lt;td&gt;Consistent speed, though power outlets are limited&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Here is a list of drinks from a few coffee shops I have visited in Tebet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yuzu Espresso Tonic - &lt;a href=&quot;https://maps.app.goo.gl/jrFh437UnAEztE2W8&quot;&gt;Flash Coffee Bukit Duri Tebet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Utopian Tiramisu - &lt;a href=&quot;https://maps.app.goo.gl/othzqkjGisfevc9R8&quot;&gt;Toko Kopi Klasik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creamy Pocola - &lt;a href=&quot;https://maps.app.goo.gl/nR1fxJipACZWsK2y6&quot;&gt;Agna Coffee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Agata - &lt;a href=&quot;https://maps.app.goo.gl/KNoTtsfYc1tHnA7w8&quot;&gt;Moonshot Coffee &amp;#x26; Eatery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tamarine Cold Brew - &lt;a href=&quot;https://maps.app.goo.gl/QVtva7xrhbm5F1LLA&quot;&gt;D.M.D.T&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Based on taste and price, Kopi Susu Tetangga remains my go-to for &lt;em&gt;daily caffeine intake&lt;/em&gt;. For the best-tasting coffee, though, I prefer Moonshot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maps.app.goo.gl/Jv66h3LBVzsFAaur6&quot;&gt;Kopi Kina&lt;/a&gt; is one of the most recommended coffee shops in Tebet, but I found it one of the most overrated places for working from a cafe (WFC). Its Wi-Fi connection was quite bad compared with the other coffee shops here.&lt;/p&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;Source&lt;/th&gt;&lt;th&gt;Download (Mbps)&lt;/th&gt;&lt;th&gt;Upload (Mbps)&lt;/th&gt;&lt;th&gt;Ping (ms)&lt;/th&gt;&lt;th&gt;Server&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;speedtest-cli&lt;/td&gt;&lt;td&gt;12.5&lt;/td&gt;&lt;td&gt;5.1&lt;/td&gt;&lt;td&gt;170&lt;/td&gt;&lt;td&gt;auto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;speedtest-cli&lt;/td&gt;&lt;td&gt;9.7&lt;/td&gt;&lt;td&gt;9.7&lt;/td&gt;&lt;td&gt;160&lt;/td&gt;&lt;td&gt;auto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;speedtest-cli&lt;/td&gt;&lt;td&gt;4.8&lt;/td&gt;&lt;td&gt;5.1&lt;/td&gt;&lt;td&gt;137&lt;/td&gt;&lt;td&gt;auto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;speedtest-cli&lt;/td&gt;&lt;td&gt;6.2&lt;/td&gt;&lt;td&gt;6.3&lt;/td&gt;&lt;td&gt;141&lt;/td&gt;&lt;td&gt;auto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;speedtest-cli&lt;/td&gt;&lt;td&gt;5.6&lt;/td&gt;&lt;td&gt;7.4&lt;/td&gt;&lt;td&gt;142&lt;/td&gt;&lt;td&gt;auto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Average:&lt;/strong&gt; 8 Mbps down / 7 Mbps up / 150 ms ping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Range:&lt;/strong&gt; 4.8-12.5 Mbps down / 5.1-9.7 Mbps up / 137-170 ms ping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Samples:&lt;/strong&gt; 5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tested:&lt;/strong&gt; 2026-06-15&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variability:&lt;/strong&gt; High&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kopi Kina was also quite crowded compared with the other coffee shops, and the coffee prices were average. You would struggle to find a spot to work there most of the time. I also ordered their Americano (IDR 30k), and it tasted quite meh (personally).&lt;/p&gt;
&lt;p&gt;I’m still building my curated personal coffee shop database (for fun). I plan to share it in the future, especially the objective data: coffee prices, available facilities, Wi-Fi speed and stability, space size, and more.&lt;/p&gt;</content:encoded><category>coffeeshop</category><category>coffee</category><category>jakarta</category></item><item><title>forgejo service as declarative nix code</title><link>https://rasyidanaf.com/notes/2026-08-22/forgejo-service-as-declarative-nix-code/</link><guid isPermaLink="true">https://rasyidanaf.com/notes/2026-08-22/forgejo-service-as-declarative-nix-code/</guid><description>I wish more people understood that with nix and nixos modules, you can do some IaaC stuff which declares how a service should run on an existing machine, including its package, system user, database, bind address, ports,…</description><pubDate>Sat, 22 Aug 2026 14:06:28 GMT</pubDate><content:encoded>&lt;p&gt;I wish more people understood that with nix and nixos modules, you can do some IaaC stuff which declares how a service should run on an existing machine, including its package, system user, database, bind address, ports, public url, and application settings. Nixos evaluates a declarative host configuration into a buildable system generation, with generation-based upgrades and rollbacks. Here is an example of my forgejo module small snippet from my personal multi-node clan codebase that I vibecoded back then and refined through a lot of iterative changes of course (˶˃𐃷˂˶)&lt;/p&gt;
&lt;p&gt;The surrounding module still defines the &lt;code&gt;git&lt;/code&gt; user and group, &lt;code&gt;forgejoLtsPackage&lt;/code&gt;, and values such as &lt;code&gt;settings&lt;/code&gt; and &lt;code&gt;effectiveRootUrl&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nix&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;            # Forgejo + OpenSSH + Caddy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;            services&lt;/span&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;              # Forgejo service - run as git user for SSH compatibility&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;              forgejo&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                enable&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                package&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; forgejoLtsPackage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                user&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;git&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                group&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;git&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;sqlite3&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  DEFAULT&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    APP_NAME&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;0xrsydn&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    APP_SLOGAN&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Code&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  server&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DOMAIN&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    ROOT_URL&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; effectiveRootUrl&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    HTTP_ADDR&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; forgejoHttpAddress&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    HTTP_PORT&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; forgejoHttpPort&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    SSH_DOMAIN&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    SSH_PORT&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;sshPort&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # Production uses OpenSSH. Tailnet staging uses Forgejo&apos;s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # built-in listener to avoid changing the host SSH service.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    START_SSH_SERVER&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; tailnetOnly&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_SSH&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    LANDING_PAGE&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;/0xrsydn&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                  //&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; lib&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;optionalAttrs&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; tailnetOnly&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    SSH_LISTEN_HOST&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;listenAddress&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    SSH_LISTEN_PORT&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;sshPort&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  repository&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_STARS&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_FORKS&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                  //&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; lib&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;optionalAttrs&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_MIGRATIONS&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  service&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_REGISTRATION&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    SHOW_REGISTRATION_BUTTON&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                  &quot;service.explore&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # Caddy protects the HTML explore routes. Keep this false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # so anonymous public metadata API requests still work.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    REQUIRE_SIGNIN_VIEW&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  actions&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    ENABLED&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # Resolve actions/checkout and other relative references&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;                    # against Forgejo&apos;s maintained action mirror, not GitHub.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DEFAULT_ACTIONS_URL&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;https://data.forgejo.org&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  security&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; lib&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;optionalAttrs&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DISABLE_WEBHOOKS&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  mirror&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; lib&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;optionalAttrs&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    ENABLED&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  mailer&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; lib&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;optionalAttrs&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt; settings&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    ENABLED&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  ui&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    THEMES&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;forgejo-auto,forgejo-light,forgejo-dark,dracula,catppuccin-mocha,catppuccin-mocha-minimal&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DEFAULT_THEME&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;dracula&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                  &quot;ui.meta&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    AUTHOR&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;0xrsydn&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    DESCRIPTION&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Public code and infrastructure projects by 0xrsydn.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    KEYWORDS&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;0xrsydn,git,code,infrastructure&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                  log&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;                    LEVEL&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Info&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;              };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With this, you can verify that your service or app configuration evaluates and builds before deploying it to a machine. &lt;code&gt;nix flake check&lt;/code&gt; verifies that the flake evaluates, including the shape of &lt;code&gt;nixosConfigurations&lt;/code&gt;, and builds derivations declared under &lt;code&gt;checks&lt;/code&gt;, but it doesn’t necessarily build every nixos system closure unless its declared on &lt;code&gt;flake.nix&lt;/code&gt; properly. For a build-only check, use &lt;code&gt;nixos-rebuild build --flake .#&amp;#x3C;machine&gt;&lt;/code&gt; or &lt;code&gt;nix build .#nixosConfigurations.&amp;#x3C;machine&gt;.config.system.build.toplevel&lt;/code&gt;. If your pinned &lt;a href=&quot;https://clan.lol&quot;&gt;clan&lt;/a&gt; cli provides &lt;code&gt;clan machines build &amp;#x3C;machine&gt;&lt;/code&gt;, you can use that too then use &lt;code&gt;clan machines update &amp;#x3C;machine&gt;&lt;/code&gt; as the deployment command.&lt;/p&gt;</content:encoded><category>git</category><category>nix</category><category>forgejo</category></item><item><title>svelte components</title><link>https://rasyidanaf.com/notes/#2026-08-22-204842</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-22-204842</guid><description>adding few svelte components here as for future references if needed on my notes...</description><pubDate>Sat, 22 Aug 2026 13:51:50 GMT</pubDate><content:encoded>&lt;p&gt;adding few svelte components here as for future references if needed on my notes…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-animations.vercel.app&quot;&gt;svelte animation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-table.vercel.app&quot;&gt;svelte table&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-blocks.vercel.app&quot;&gt;svelte blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-efferd.pages.dev&quot;&gt;svelte efferd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-matrix.vercel.app&quot;&gt;svelte matrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-particles.vercel.app&quot;&gt;svelte particles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sv-agentation.com&quot;&gt;svelte agentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>design</category><category>svelte</category><category>uiux</category></item><item><title>git rebase</title><link>https://rasyidanaf.com/notes/#2026-08-22-202752</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-22-202752</guid><description>personally, if you are working in lean team or as a solo developer with bunch of short-lived branches, using git rebase is easier and cleaner than using git merge as it gives you clean and linear history - frequent…</description><pubDate>Sat, 22 Aug 2026 13:32:53 GMT</pubDate><content:encoded>&lt;p&gt;personally, if you are working in lean team or as a solo developer with bunch of short-lived branches, using &lt;code&gt;git rebase&lt;/code&gt; is easier and cleaner than using &lt;code&gt;git merge&lt;/code&gt; as it gives you clean and linear history -&gt; frequent integration into main trunk.&lt;/p&gt;</content:encoded><category>git</category></item><item><title>pixel monofont</title><link>https://rasyidanaf.com/notes/#2026-08-22-200917</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-22-200917</guid><description>someone open-sourced cool pixel monofont, adding to my notes here as well.</description><pubDate>Sat, 22 Aug 2026 13:11:36 GMT</pubDate><content:encoded>&lt;p&gt;someone open-sourced cool pixel monofont, adding to my notes here as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://departuremono.com/&quot;&gt;departure monofont&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rektdeckard/departure-mono&quot;&gt;github url&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SIL OFL license&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>design</category></item><item><title>Log · 22 AUG 2026 20:06 UTC+7</title><link>https://rasyidanaf.com/notes/#2026-08-22-200500</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-22-200500</guid><description>vercel x ora made some web audit site to check how ai-agent native the website is here</description><pubDate>Sat, 22 Aug 2026 13:06:51 GMT</pubDate><content:encoded>&lt;p&gt;vercel x ora made some web audit site to check how &lt;em&gt;ai-agent&lt;/em&gt; native the website is &lt;a href=&quot;https://is-agentic.com/&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>web</category></item><item><title>Log · 22 AUG 2026 20:01 UTC+7</title><link>https://rasyidanaf.com/notes/#2026-08-22-195855</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-22-195855</guid><description>found some useful website to ask any github repo with great inferface, powered by mixedbread team (thanks mixedbread). I think its free (maybe limited usage too). Called repofetch, think worth to check..</description><pubDate>Sat, 22 Aug 2026 13:01:08 GMT</pubDate><content:encoded>&lt;p&gt;found some useful website to ask any github repo with great inferface, powered by mixedbread team (thanks mixedbread). I think its free (maybe limited usage too). Called &lt;a href=&quot;https://repofetch.vercel.app/&quot;&gt;repofetch&lt;/a&gt;, think worth to check..&lt;/p&gt;</content:encoded><category>ai</category></item><item><title>Log · 21 AUG 2026 11:43 UTC+7</title><link>https://rasyidanaf.com/notes/#2026-08-21-113725</link><guid isPermaLink="true">https://rasyidanaf.com/notes/#2026-08-21-113725</guid><description>- hello world! testing new page and feature here (˶˃ ᵕ ˂˶) - written on my neovim with my own customized notes publisher with lua script here (ᵕ—ᴗ—) - with this, i can write notes published to my website under /notes…</description><pubDate>Fri, 21 Aug 2026 04:43:53 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;hello world! testing new page and feature here (˶˃ ᵕ ˂˶)&lt;/li&gt;
&lt;li&gt;written on my neovim with my own customized notes publisher with lua script here (ᵕ—ᴗ—)&lt;/li&gt;
&lt;li&gt;with this, i can write notes published to my website under &lt;code&gt;/notes&lt;/code&gt; from my neovim on my mac..&lt;/li&gt;
&lt;li&gt;also added vim shortcuts on my website as well, use &lt;code&gt;?&lt;/code&gt; for &lt;code&gt;:help&lt;/code&gt;. try use &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;k&lt;/code&gt; too!&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>neovim</category></item></channel></rss>