<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Home</title><description>Adnan - Programmer &amp;&amp; Sains Tech Enthusiast</description><link>https://root.nanoolabs.dev/</link><item><title>Niri Dotfiles</title><link>https://root.nanoolabs.dev/projects/niri-dotfiles/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/niri-dotfiles/</guid><description>Custom Niri WM config with Cyan color style for Arch Linux.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import Details from &amp;quot;@components/Details.astro&amp;quot;&lt;/p&gt;
&lt;p&gt;Personal dotfiles for Niri (Wayland compositor) on Arch Linux. Cyan theme, minimal, aesthetic.&lt;/p&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;
&lt;Details label=&quot;Interface &amp; Menus&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/interface.png&quot; alt=&quot;interface&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/menu-apps-wofi.png&quot; alt=&quot;menu-apps-wofi&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/waybar.png&quot; alt=&quot;waybar&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/powermenu.png&quot; alt=&quot;powermenu&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/emoji-picker.png&quot; alt=&quot;emoji-picker&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/wp-select.png&quot; alt=&quot;wp-select&quot;&gt;&lt;/p&gt;
&lt;/Details&gt;&lt;Details label=&quot;TUI &amp; Apps&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/tui.png&quot; alt=&quot;tui&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/dunst.png&quot; alt=&quot;dunst&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/htop.png&quot; alt=&quot;htop&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/niri-dotfiles/yazi.png&quot; alt=&quot;yazi&quot;&gt;&lt;/p&gt;
&lt;/Details&gt;&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Niri is a scrollable tiling Wayland compositor. Config live in &lt;code&gt;~/.config/niri/&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compositor:&lt;/strong&gt; Niri&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell:&lt;/strong&gt; Fish + Starship&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal:&lt;/strong&gt; Kitty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Launcher:&lt;/strong&gt; wofi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status Bar:&lt;/strong&gt; Waybar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor:&lt;/strong&gt; Neovim (LazyVim)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications:&lt;/strong&gt; Dunst&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Manager:&lt;/strong&gt; Yazi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lock Screen:&lt;/strong&gt; Swaylock&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/aadnanmt/niri-dotfiles.git
cd niri-dotfiles
cp -r config/* ~/.config/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Directory Structure&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;config/
├── niri/             # WM config (modules/)
├── kitty/            # Terminal
├── fish/             # Shell config
├── waybar/           # Status bar
├── wofi/             # App launcher
├── dunst/            # Notifications
├── yazi/             # File manager
├── swaylock/         # Lock screen
├── nvim/             # Neovim (LazyVim)
└── theme/            # Cyan color palette
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Keybinds&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Mod + Return&lt;/td&gt;
&lt;td&gt;Kitty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + D&lt;/td&gt;
&lt;td&gt;wofi launcher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + N&lt;/td&gt;
&lt;td&gt;Kitty nvim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + Q&lt;/td&gt;
&lt;td&gt;Close window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + F&lt;/td&gt;
&lt;td&gt;Maximize column&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + V&lt;/td&gt;
&lt;td&gt;Toggle floating&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + O&lt;/td&gt;
&lt;td&gt;Toggle overview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + 1-9&lt;/td&gt;
&lt;td&gt;Switch workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + Shift + 1-9&lt;/td&gt;
&lt;td&gt;Move to workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + P&lt;/td&gt;
&lt;td&gt;Powermenu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + .&lt;/td&gt;
&lt;td&gt;Expel window from column&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + Space&lt;/td&gt;
&lt;td&gt;Consume column&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + Shift + W&lt;/td&gt;
&lt;td&gt;Random wallpaper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mod + Shift + E&lt;/td&gt;
&lt;td&gt;Emoji picker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Super + Shift + L&lt;/td&gt;
&lt;td&gt;Lock screen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Credits&lt;/h2&gt;
&lt;p&gt;Based on &lt;a href=&quot;https://github.com/aadnanmt/hyprland-dotfiles&quot;&gt;hyprland-dotfiles&lt;/a&gt; - refactored from Hyprland to Niri WM.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/elifouts/Dotfiles&quot;&gt;elifouts (Dotfiles)&lt;/a&gt;:&lt;/strong&gt; Wofi configs, Powermenu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/dln/wofi-emoji&quot;&gt;dln (wofi-emoji)&lt;/a&gt;:&lt;/strong&gt; Emoji selector.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/victordantasdev/waybar&quot;&gt;victordantasdev/waybar&lt;/a&gt;:&lt;/strong&gt; Waybar base config.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.lazyvim.org/&quot;&gt;LazyVim&lt;/a&gt;:&lt;/strong&gt; Neovim framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/YaLTeR/niri&quot;&gt;Niri&lt;/a&gt;:&lt;/strong&gt; Wayland compositor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;GPL-3.0&lt;/p&gt;
</content:encoded></item><item><title>@nlbs/css</title><link>https://root.nanoolabs.dev/projects/nl-css/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/nl-css/</guid><description>CSS foundation for the Nanoo Labs ecosystem. Design tokens, resets, and utility components built on LightningCSS</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;CSS foundation for the Nanoo Labs ecosystem. Design tokens, resets, and utility components built on LightningCSS.&lt;/p&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pnpm add @nlbs/css
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;import &amp;quot;@nlbs/css&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or via CDN:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/@nlbs/css&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Design tokens&lt;/strong&gt;: CSS custom properties (&lt;code&gt;--nl-*&lt;/code&gt;) for colors, spacing, radius, typography&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dark-first&lt;/strong&gt;: dark mode by default, light override via &lt;code&gt;@media&lt;/code&gt; + &lt;code&gt;[data-theme]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero runtime&lt;/strong&gt;: no pre-processor, no framework. Static CSS output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Components&lt;/strong&gt;: BEM-like &lt;code&gt;nl-*&lt;/code&gt; classes: container, button, card, text utilities&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build&lt;/strong&gt;: LightningCSS CLI - bundling, minification, autoprefix&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tokens&lt;/strong&gt;: CSS custom properties (&lt;code&gt;--nl-*&lt;/code&gt;) - colors, spacing (REM), radius, typography&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Components:&lt;/strong&gt; BEM-like &lt;code&gt;nl-*&lt;/code&gt; classes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;dist/nanoo.min.css&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Development&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/nanoolabs/css.git # clone repo
cd css/      # move to directory repo @nlbs/css
pnpm install # install deps
pnpm build   # minify → dist/nanoo.min.css
pnpm dev     # unminified → dist/nanoo.css
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Maintained&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/aadnanmt&quot;&gt;@aadnanmt&lt;/a&gt; | &lt;a href=&quot;https://nanoolabs.dev&quot;&gt;Nanoo Labs&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Context Switch: UIN to School</title><link>https://root.nanoolabs.dev/blog/after-uin/</link><guid isPermaLink="true">https://root.nanoolabs.dev/blog/after-uin/</guid><description>My journey return to the academic world after a internship experience.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After spending a few months in the professional world through an internship at UIN Malang. Yoo, I finally had to go back to school.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/after-uin/last-day-at-UIN.webp&quot; alt=&quot;Last day at UIN&quot;&gt;
&lt;br&gt;
&lt;em&gt;Last moment at UIN Malang, 04 June 2026.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Transition&lt;/h3&gt;
&lt;p&gt;Back from mode &amp;quot;work&amp;quot; to mode &amp;quot;study&amp;quot; that comes with its own &lt;em&gt;mental overhead...&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Lesson Learned&lt;/h3&gt;
&lt;p&gt;There are many things I took away from UIN:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn more about privacy on the digital world.&lt;/li&gt;
&lt;li&gt;Can implementation my skills and knowlegde in location intership with every people.&lt;/li&gt;
&lt;li&gt;I’ve come to realize that not everyone understand technology but but thats what make it unique.&lt;/li&gt;
&lt;li&gt;I’ve come to understand my strength and weaknesses, but they can be adapted.&lt;/li&gt;
&lt;li&gt;My workflow on programming, coding, up to modeling can be better.&lt;/li&gt;
&lt;li&gt;Getting more and more curious, even though i&amp;#39;m feeling the imposter syndrome&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;There’s a lot more, but that’s all i’m spill.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Back to School&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/after-uin/back-to-school.webp&quot; alt=&quot;Back to school&quot;&gt;
&lt;br&gt;
&lt;em&gt;Fresh start, 11 June 2026.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The context switch is done. I am back at school now. My time at UIN Malang was a great lesson for me. It taught me about technology, people, and myself. Now, I am ready to focus on my studies and keep improving my skills. Let&amp;#39;s keep moving forward.&lt;/p&gt;
</content:encoded></item><item><title>Kaomoji minimalist</title><link>https://root.nanoolabs.dev/projects/kaomoji/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/kaomoji/</guid><description>Minimalist kaomoji for Nanoo Labs documentation.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Minimalist kaomoji for Nanoo Labs documentation.&lt;/p&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install @nlbs/kaomoji
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import { log } from &amp;quot;@nlbs/kaomoji&amp;quot;

console.log(`${log.fatal} Database connection lost!`)
// → [ ✖_✖ ] Database connection lost!

console.log(`${log.success} Deploy complete`)
// → [ ^■^ ] Deploy complete

console.log(`${log.idle} Waiting for task`)
// → [ □_□ ] Waiting for task
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or consume the raw JSON in any language:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import kaomoji from &amp;quot;@nlbs/kaomoji/kaomoji.json&amp;quot; with { type: &amp;quot;json&amp;quot; }
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;import json, urllib.request
data = json.load(open(&amp;quot;kaomoji.json&amp;quot;))
print(data[&amp;quot;fatal&amp;quot;])  # [ ✖_✖ ]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Default fallback&lt;/h3&gt;
&lt;p&gt;Unknown keys return &lt;code&gt;[ ?_? ]&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;log.unknown // → &amp;quot;[ ?_? ]&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;h3&gt;Systems&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Status&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Kaomoji&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Architect&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[⌐■_■]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;System architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Full Load&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ █_█ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Max performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Active&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▣_▣ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Data processing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Busy&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▓_▓ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;High workload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Idle&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ □_□ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Task waiting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hybrid&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ■_█ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Multi-core mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Secure&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▨_▨ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Security operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Grid&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▦_▦ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Matrix operations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;Programming&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Mode&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Kaomoji&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Success&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ^■^ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Build completed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Grind&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ &amp;gt;■&amp;lt; ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Logic execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Skeptical&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ¬■_■ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Validation mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Debug&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ;■_■ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Troubleshooting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Scanning&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ █_▀ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Resource scanning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Fatal&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ✖_✖ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Kernel panic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Void&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ∅_∅ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Null reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Glitch&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ░_░ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;System glitch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Recursion&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▞▚_▚▞ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Logic recursion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Branch&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▐▌_█ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Logic branching&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;Connectivity&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Type&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Kaomoji&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Low Power&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▱_▱ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Low energy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Syncing&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ☁_■ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Cloud sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Online&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▄▆█_■ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Connected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Offline&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ⊘_■ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Disconnected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Shield&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▓_█ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;System protection&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;Operations&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Type&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Kaomoji&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Init&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▄_█ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Booting sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Kernel&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▟_▙ ]&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Kernel monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ship&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;\ [■_■] /&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Production deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Break&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;code&gt;[ ▘_▘ ]~&lt;/code&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;System cooldown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Raw data&lt;/h2&gt;
&lt;p&gt;Consume &lt;code&gt;kaomoji.json&lt;/code&gt; from any language, its the single source of truth. The &lt;code&gt;index.ts&lt;/code&gt; wrapper is optional.&lt;/p&gt;
&lt;h2&gt;Maintained&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/aadnanmt&quot;&gt;@aadnanmt&lt;/a&gt; | Nanoo Labs Ecosystems.&lt;/p&gt;
</content:encoded></item><item><title>Start: My Life Journey</title><link>https://root.nanoolabs.dev/milestones/first-step/</link><guid isPermaLink="true">https://root.nanoolabs.dev/milestones/first-step/</guid><description>I feel bad. My life is messy. I want to change this. I will write my journey here</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I start to write about my life, not just my coding, debbunging, solving on programmming.&lt;br&gt;
I want to fix my messy life.&lt;br&gt; I will write everything here.&lt;br&gt;
I hope this helps me understand myself better.&lt;br&gt;
I want to be better. &lt;br&gt; This is my progress.&lt;br&gt;
I want recording my life.&lt;br&gt;
I hope...&lt;/p&gt;
</content:encoded></item><item><title>I Buy Domain on Hostinger</title><link>https://root.nanoolabs.dev/blog/buy-domain-on-hostinger/</link><guid isPermaLink="true">https://root.nanoolabs.dev/blog/buy-domain-on-hostinger/</guid><description>Steps to buy a domain through Hostinger.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here are my steps to purchase a domain through Hostinger.&lt;/p&gt;
&lt;h3&gt;Steps&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Yapp, I top up via Dana because i just wanted to, even though there is a Jago bank. Why not?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step1.webp&quot; alt=&quot;Step 1&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I check again to nanoolabs.dev on platform hostinger&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step2.webp&quot; alt=&quot;Step 2&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;okeyy, total balace that i spent was 261.086 rupiah (include tax and cont for ICANN&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step3.webp&quot; alt=&quot;Step 3&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;it&amp;#39;s okay, tax 11%&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step4.webp&quot; alt=&quot;Step 4&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;commonly, i was asked to enter data for the billing address&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step5.webp&quot; alt=&quot;Step 5&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;okey data for billing address done. censoring for private address&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step6.webp&quot; alt=&quot;Step 6&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;i use QRIS for paying go to buy domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step7.webp&quot; alt=&quot;Step 7&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;next&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step8.webp&quot; alt=&quot;Step 8&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hostinger give me a QR code to pay for the domain i bought&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step9.webp&quot; alt=&quot;Step 9&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;whatt? minus 1 rupiah? okeyy, no problem&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step10.webp&quot; alt=&quot;Step 10&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;done for paying domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step11.webp&quot; alt=&quot;Step 11&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;nice&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step12.webp&quot; alt=&quot;Step 12&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;thanks you too ^o^&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step13.webp&quot; alt=&quot;Step 13&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step14.webp&quot; alt=&quot;Step 14&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;it&amp;#39;s time to setup the domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step15.webp&quot; alt=&quot;Step 15&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;registration domain nanoolabs.dev&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step16.webp&quot; alt=&quot;Step 16&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;waiting prosess registrastion domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step17.webp&quot; alt=&quot;Step 17&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;oh yeah, suddenly give a promotion&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step18.webp&quot; alt=&quot;Step 18&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;i got it&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step19.webp&quot; alt=&quot;Step 19&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;censoring for private email&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step20.webp&quot; alt=&quot;Step 20&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step21.webp&quot; alt=&quot;Step 21&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;commonly, confirmation verification domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step22.webp&quot; alt=&quot;Step 22&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;done&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step23.webp&quot; alt=&quot;Step 23&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;my order details&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step24.webp&quot; alt=&quot;Step 24&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;first time use platfrom Hostinger btw&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step25.webp&quot; alt=&quot;Step 25&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;i don&amp;#39;t believe it&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step26.webp&quot; alt=&quot;Step 26&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;yapp, parker domain after registration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step27.webp&quot; alt=&quot;Step 27&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;i checking information domain nanoolabs.dev on whois. done&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/blog/buy-domain-on-hostinger/step28.webp&quot; alt=&quot;Step 28&quot;&gt;&lt;/p&gt;
</content:encoded></item><item><title>Hyprland Dotfiles</title><link>https://root.nanoolabs.dev/projects/hyprland-dotfiles/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/hyprland-dotfiles/</guid><description>Custom Hyprland setup with a Cyan color style for Arch Linux.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import Details from &amp;quot;@components/Details.astro&amp;quot;&lt;/p&gt;
&lt;p&gt;This page shows my personal config files (dotfiles) for Arch Linux. It has a custom Hyprland setup with a clear &lt;strong&gt;Cyan Color&lt;/strong&gt; style.&lt;/p&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;
&lt;Details label=&quot;Interface &amp; Layout&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/interface-0.webp&quot; alt=&quot;Hyprland interface-0&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/interface-1.webp&quot; alt=&quot;Hyprland interface-1&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/interface-3.webp&quot; alt=&quot;Hyprland interface-3&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/waybar-style_cyqn.webp&quot; alt=&quot;Waybar style&quot;&gt;&lt;/p&gt;
&lt;/Details&gt;&lt;Details label=&quot;Apps Launcher &amp; Menus (Wofi)&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/wofi-apps.webp&quot; alt=&quot;Hyprland wofi-apps&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/wofi-emoji-style.webp&quot; alt=&quot;Hyprland wofi-emoji-style&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/wofi-power.webp&quot; alt=&quot;Hyprland wofi-power&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/wofi-wallpaper-selector.webp&quot; alt=&quot;Hyprland wofi-wallpaper-selector&quot;&gt;&lt;/p&gt;
&lt;/Details&gt;&lt;Details label=&quot;TUI &amp; CLI Tools&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/fastfetch.webp&quot; alt=&quot;Hyprland fastfetch&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/tui-apps.webp&quot; alt=&quot;Hyprland tui-apps&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/lsd-style.webp&quot; alt=&quot;Hyprland lsd-style&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/yazi.webp&quot; alt=&quot;Hyprland yazi&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://root.nanoolabs.dev/content/projects/hyprland-dotfiles/ncdu.webp&quot; alt=&quot;Hyprland ncdu&quot;&gt;&lt;/p&gt;
&lt;/Details&gt;&lt;h2&gt;Project Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Window Manager:&lt;/strong&gt; &lt;a href=&quot;https://hyprland.org/&quot;&gt;Hyprland&lt;/a&gt; (It controls windows on Wayland)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell:&lt;/strong&gt; &lt;a href=&quot;https://fishshell.com/&quot;&gt;Fish Shell&lt;/a&gt; with &lt;a href=&quot;https://starship.rs/&quot;&gt;Starship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor:&lt;/strong&gt; &lt;a href=&quot;https://neovim.io/&quot;&gt;Neovim&lt;/a&gt; (with &lt;a href=&quot;https://www.lazyvim.org/&quot;&gt;LazyVim&lt;/a&gt; config)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status Bar:&lt;/strong&gt; &lt;a href=&quot;https://github.com/Alexays/Waybar&quot;&gt;Waybar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal:&lt;/strong&gt; &lt;a href=&quot;https://sw.kovidgoyal.net/kitty/&quot;&gt;Kitty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme:&lt;/strong&gt; Custom Cyan theme (&lt;code&gt;#00ffff&lt;/code&gt;) for UI parts like borders and terminal colors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a href=&quot;https://github.com/aadnanmt/hyprland-dotfiles/blob/main/LICENSE&quot;&gt;GPL-3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Directory Structure&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.config/
├── alacritty/
├── btop/
├── cava/
├── dunst/
├── fastfetch/
├── fish/
├── htop/
├── hypr/
│   ├── conf/
│   ├── hyprland.conf
│   ├── hyprlock.conf
│   └── hyprpaper.conf
├── kitty/
├── lazygit/
├── lsd/
├── nvim/
├── theme/
├── wallpapers/
├── waybar/
├── wofi/
└── yazi/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Key Programs&lt;/h2&gt;
&lt;p&gt;As defined in &lt;code&gt;hypr/conf/programs.conf&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terminal:&lt;/strong&gt; Kitty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Manager:&lt;/strong&gt; Dolphin / Thunar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menu/Launcher:&lt;/strong&gt; Wofi (Cyan-cyber theme)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser:&lt;/strong&gt; Firefox&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor:&lt;/strong&gt; Neovim / VS Code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lock Screen:&lt;/strong&gt; Hyprlock&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logout/Power Menu:&lt;/strong&gt; Wofi Power Menu&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Keybindings&lt;/h2&gt;
&lt;p&gt;Here are the shortcuts in &lt;code&gt;hypr/conf/keybindings.conf&lt;/code&gt;:&lt;/p&gt;
&lt;h3&gt;Apps &amp;amp; Menus&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Super + Return&lt;/code&gt; / &lt;code&gt;Q&lt;/code&gt;: Open Terminal&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + B&lt;/code&gt;: Open Browser&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + E&lt;/code&gt;: Open File Manager&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + D&lt;/code&gt;: Open Wofi Launcher&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + .&lt;/code&gt;: Emoji Selector (Wofi)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + M&lt;/code&gt;: Power Menu (Wofi)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + G&lt;/code&gt;: Volume Control (Pavucontrol)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Shift + W&lt;/code&gt;: Wallpaper Select (Wofi)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Shift + S&lt;/code&gt;: Screenshot (Grim/Slurp)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Shift + V&lt;/code&gt;: Open Neovim&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Window Management&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Super + Shift + Q&lt;/code&gt;: Close active window&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + V&lt;/code&gt;: Toggle floating&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + P&lt;/code&gt;: Pseudo Tiling&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + J&lt;/code&gt;: Toggle Split&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Arrow Keys&lt;/code&gt;: Move focus&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Workspaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Super + 1-10&lt;/code&gt;: Switch workspaces&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Shift + 1-10&lt;/code&gt;: Move window to workspace&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Super + Scroll&lt;/code&gt;: Switch workspaces&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;System (Media Keys)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Vol Up/Down/Mute&lt;/code&gt;: Audio Control&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Brightness Up/Down&lt;/code&gt;: Screen Brightness&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Media Play/Pause/Next/Prev&lt;/code&gt;: Player Control&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/aadnanmt/hyprland-dotfiles.git
cd hyprland-dotfiles
cp -r .config/* ~/.config/
hyprctl reload
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;To use changes in Hyprland, reload it (use &lt;code&gt;hyprctl reload&lt;/code&gt; or save the file).&lt;/li&gt;
&lt;li&gt;To reload Waybar, use &lt;code&gt;waybar/reload.sh&lt;/code&gt; script.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Credits&lt;/h2&gt;
&lt;p&gt;This setup uses work from the open-source community. Special thanks to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/elifouts/Dotfiles&quot;&gt;elifouts (Dotfiles)&lt;/a&gt;:&lt;/strong&gt; For the nice Wofi configs, Powermenu, and Hyprlock setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/dln/wofi-emoji&quot;&gt;dln (wofi-emoji)&lt;/a&gt;:&lt;/strong&gt; For the emoji selector script logic in &lt;code&gt;emoji.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/adi1090x/rofi&quot;&gt;Aditya Shakya (adi1090x)&lt;/a&gt;:&lt;/strong&gt; For ideas for Rofi/Wofi themes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/MDiaznf23&quot;&gt;Muhammad Diaz (MDiaznf23)&lt;/a&gt;:&lt;/strong&gt; For some config in &lt;code&gt;simple-autoricing-i3wm-dotfiles&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.lazyvim.org/&quot;&gt;LazyVim&lt;/a&gt;:&lt;/strong&gt; For the modern and strong Neovim config framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/shivam-salkar/minimal-waybar-config&quot;&gt;Shivam Salkar (minimal-waybar-config)&lt;/a&gt;:&lt;/strong&gt; For the clean and small Waybar config that is the base for the status bar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mahaveergurjar/Hyprlock-Dots&quot;&gt;Mahaveer Gurjar (Hyprlock-Dots)&lt;/a&gt;:&lt;/strong&gt; For the many Hyprlock layouts and scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://hyprland.org/&quot;&gt;Hyprland Community&lt;/a&gt;:&lt;/strong&gt; For the great Wayland compositor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arch Linux:&lt;/strong&gt; For being the start of this ricing journey.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Don&apos;t Want to Buy a Webcam? Try Droidcam First!</title><link>https://root.nanoolabs.dev/blog/droidcam-on-distro-linux/</link><guid isPermaLink="true">https://root.nanoolabs.dev/blog/droidcam-on-distro-linux/</guid><description>Droidcam: its uses and how to install it.</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;What is Droidcam?&lt;/h2&gt;
&lt;p&gt;Droidcam is an Android app that turns your phone camera into a temporary webcam for your PC or laptop. You can connect it using Wi-Fi or directly with a USB cable. The basic version is free. The Pro version offers HD quality and no watermark. Let&amp;#39;s look at its pros and cons.&lt;/p&gt;
&lt;h3&gt;Pros?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Free &amp;amp; Open Source&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wireless Connection Possible&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native Linux Support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Up to 1080p Resolution (Pro version)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cons?&lt;/h3&gt;
&lt;p&gt;Based on my experience, Droidcam has some downsides:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Wireless latency can be bad.&lt;/strong&gt; If you want to use this app, I suggest using a USB cable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phone gets hot &amp;amp; battery drains fast&lt;/strong&gt; if used for too long.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First-time setup can be tricky&lt;/strong&gt; on some Linux distributions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality depends on your phone&amp;#39;s camera.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;By the way, I apologize if my writing sometimes contains errors. These ideas come purely from my mind. However, I am always open to any criticism and suggestions from you. Now, let&amp;#39;s continue discussing Droidcam.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;How to Install Droidcam?&lt;/h3&gt;
&lt;p&gt;I often use Linux distributions, so &lt;strong&gt;I will focus on Linux installation steps.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s how to install Droidcam on popular Linux Distros:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Debian/Ubuntu-based Distros (Including Linux Mint)&lt;/strong&gt;
This is the recommended method directly from the developer:&lt;/p&gt;
&lt;p&gt;Install needed dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install gcc make linux-headers-$(uname -r)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Download and run the official installation script:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /tmp/
wget -O droidcam_latest.zip https://files.dev47apps.net/linux/droidcam_latest.zip
unzip droidcam_latest.zip -d droidcam
cd droidcam &amp;amp;&amp;amp; sudo ./install-client
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Arch-based Distros (EndeavourOS, Manjaro, etc.)&lt;/strong&gt;
For Arch-based systems, Droidcam is in the AUR. You will need an AUR helper like &lt;code&gt;yay&lt;/code&gt; or &lt;code&gt;paru&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Install basic headers:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo pacman -S linux-headers base-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install Droidcam via AUR:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S droidcam
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. For Fedora-based Distros&lt;/strong&gt;
Here&amp;#39;s how to install Droidcam on Fedora, based on documentation and forums (I don&amp;#39;t use Fedora myself).
First, install dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo dnf install kernel-devel kernel-headers gcc make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then install via COPR repository:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo dnf copr enable meeuw/droidcam
sudo dnf install droidcam
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Important Final Step (For All Distros):&lt;/strong&gt;
After installing, you must &amp;quot;wake up&amp;quot; the camera driver on your Linux system with this command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo modprobe v4l2loopback_dc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Great, you&amp;#39;re done! Now, open the &amp;quot;Droidcam&amp;quot; app from your Linux application menu, or type &lt;code&gt;droidcam&lt;/code&gt; in the terminal. To connect your phone camera to your PC/laptop, you can &lt;a href=&quot;https://aadnanmt.web.id/blog/how-to-connect-droidcam-smartphone-and-desktop&quot;&gt;click here&lt;/a&gt;. Cmiwww.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Droidcam is best for emergency or short-term use, for example:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your webcam or laptop camera suddenly stops working during an important Zoom call or meeting.&lt;/li&gt;
&lt;li&gt;You are very low on budget and cannot buy a dedicated webcam (even cheap ones, around $15-20).&lt;/li&gt;
&lt;li&gt;You need a quick setup without waiting for shipping.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Alternatives if you still want a cheap upgrade:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check for used webcams on online marketplaces (Logitech C920 is still good in 2026, often $20-30).&lt;/li&gt;
&lt;li&gt;Or use other apps: Iriun (free, often more stable in some cases) or built-in Windows Phone Link (if you have a new Android phone).&lt;/li&gt;
&lt;li&gt;Developer hack: Use Droidcam + OBS VirtualCam for professional streaming, but it&amp;#39;s still temporary.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In short: Droidcam is a lifesaver for emergencies, not for daily use. Test it yourself in your setup. If the lighting is good and you only need it for 30 minutes, it&amp;#39;s fine. For longer use, I suggest buying or saving up for a proper webcam.&lt;/p&gt;
</content:encoded></item><item><title>readmeSync</title><link>https://root.nanoolabs.dev/projects/readmesync/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/readmesync/</guid><description>Automated GitHub Profile README synchronizer.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A minimalist tool to synchronize your GitHub Profile README. Built with &lt;strong&gt;Bun&lt;/strong&gt; and &lt;strong&gt;TypeScript&lt;/strong&gt;, it uses the &lt;strong&gt;GitHub GraphQL API&lt;/strong&gt; for fast data fetching and headless templating.&lt;/p&gt;
&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;p&gt;This project follows a &lt;strong&gt;Headless Templating&lt;/strong&gt; approach:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;code&gt;README.template.md&lt;/code&gt; (Markdown with placeholders).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logic&lt;/strong&gt;: Bun + TS scripts fetch data from GitHub GraphQL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renderer&lt;/strong&gt;: Injects stats into placeholders like &lt;code&gt;{{languages}}&lt;/code&gt; and &lt;code&gt;{{commit}}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt;: GitHub Actions automates the sync every 12 hours to your public profile repository.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Runtime&lt;/strong&gt;: &lt;a href=&quot;https://bun.sh&quot;&gt;Bun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language&lt;/strong&gt;: TypeScript&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API&lt;/strong&gt;: GitHub GraphQL API v4&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: GitHub Actions (Cron)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatting&lt;/strong&gt;: Prettier&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/aadnanmt/readmeSync.git
cd readmeSync
bun install
bun run setup
# Set GH_TOKEN in .env
bun start &amp;lt;path-to-target-readme&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Authentication&lt;/h2&gt;
&lt;p&gt;This project requires a GitHub Personal Access Token (PAT). You can use either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fine-grained PAT&lt;/strong&gt;: (Recommended) Requires &lt;code&gt;Contents (Read/Write)&lt;/code&gt;, &lt;code&gt;Workflows (Read/Write)&lt;/code&gt;, and &lt;code&gt;Profile (Read-only)&lt;/code&gt; permissions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classic PAT&lt;/strong&gt;: (Easier for multiple organizations) Requires &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;workflow&lt;/code&gt;, and &lt;code&gt;read:user&lt;/code&gt; scopes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Automation&lt;/h2&gt;
&lt;p&gt;Updates happen twice a day at &lt;strong&gt;05:00 &amp;amp; 17:00 UTC&lt;/strong&gt;.
Check &lt;code&gt;.github/workflows/stats.yml&lt;/code&gt; for the CI/CD pipeline details.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Zero-bloat. Performance-first. Scalable.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Licensed under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Nanoo Labs Website</title><link>https://root.nanoolabs.dev/projects/nanoolabs-web/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/nanoolabs-web/</guid><description>A simple website and blog with Astro 5 and Tailwind CSS. Made for speed and good design.</description><pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Official website and lab showcase for Nanoo. Astro 5 site deployed to Cloudflare Pages.&lt;/p&gt;
&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Framework:&lt;/strong&gt; Astro 5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fonts:&lt;/strong&gt; Geist Sans + Geist Mono&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; Cloudflare Pages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/nanoolabs/nanoolabs.dev.git
cd nanoolabs.dev
pnpm install
pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Project Structure&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;src/
├── components/    # Astro components
├── layouts/       # HTML shell with Meta tag
├── pages/         # Routes
├── styles/        # Global CSS + design tokens
├── consts.ts      # Site metadata
└── types.ts       # TypeScript interfaces
public/
├── _headers       # CF security &amp;amp; cache headers
└── _redirects     # CF redirect rules
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Nanoo Labs Ecosystem&lt;/h2&gt;
&lt;p&gt;Design tokens live in the &lt;code&gt;@nlbs/css&lt;/code&gt; package. Update tokens there, not in local CSS.&lt;/p&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;MIT License - Nanoo Labs 2026.&lt;/p&gt;
</content:encoded></item><item><title>Git: Time Machine for Developers</title><link>https://root.nanoolabs.dev/blog/git-simple-push/</link><guid isPermaLink="true">https://root.nanoolabs.dev/blog/git-simple-push/</guid><description>Fundamental guide to mastering Version Control. Secure your code, track changes, and collaborate without conflicts.</description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;What is Git?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://git-scm.com/&quot;&gt;&lt;/a&gt;&lt;/strong&gt; Git is a distributed version control system. It tracks changes in source code during software development. Linus Torvalds (main developer of Linux) created it in 2005.&lt;/p&gt;
&lt;h3&gt;Why is Git important for developers?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Speed &amp;amp; Security&lt;/strong&gt;: It is very fast, light, and it is hard to lose data after a commit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaboration&lt;/strong&gt;: It makes it easy for many people to work on one project together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branching &amp;amp; Merging&lt;/strong&gt;: You can create new branches for isolated features. Then, you can easily merge them into the main code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross Platform&lt;/strong&gt;: Available on Windows, Linux, and MacOS. &lt;a href=&quot;https://git-scm.com/install/&quot;&gt;Download and Install&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cheat Sheet: Git for Beginners&lt;/h3&gt;
&lt;p&gt;You don&amp;#39;t need to learn all Git commands on the internet. As a beginner, you only need the cycle: &lt;strong&gt;&amp;quot;Pack =&amp;gt; Save =&amp;gt; Upload&amp;quot;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Here are the important commands:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Open the portal (Init)&lt;/strong&gt;&lt;br&gt;
When you create a new project folder, run this command. Git will start watching your folder.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git init
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2. Choose files (Staging)&lt;br&gt;&lt;/h4&gt;
&lt;p&gt;Before saving, choose which files to include. &lt;br&gt;&lt;br&gt;
&lt;strong&gt;Include all files (most common):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git add .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;If you only want to include one file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git add index.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. Save point (Commit)&lt;/strong&gt;
This is like saving a game. &lt;br&gt; Write a clear message. This helps you understand the history later.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git commit -m &amp;quot;style: replace color icon to red&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4. Connect to the internet&lt;/strong&gt;
Do this only once for your project. &lt;br&gt; This tells your local Git where to send your code (like GitHub).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git branch -M main # change to main if your branch master
git remote add origin https://github.com/username/name-repo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;5. Upload your project (Push)&lt;/strong&gt;
Send your code to your GitHub repository.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push -u origin main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Congratulations, you have secured your digital assets. Using Git is not just a trend; it is an industry standard you must master. Cmiwww:&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Astrolink</title><link>https://root.nanoolabs.dev/projects/astrolink/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/astrolink/</guid><description>A modern linktree alternative moved to Astro for easier changes and better development.</description><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A simple link-in-bio page, rebuilt in Astro for faster builds and easier maintenance.&lt;/p&gt;
&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;p&gt;Static site generation. Single page with links. No backend, no database. Content defined in one config file.&lt;/p&gt;
&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Framework&lt;/strong&gt;: Astro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt;: Vercel&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/aadnanmt/Astrolink.git
cd astrolink
bun install
bun run dev
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Groqili</title><link>https://root.nanoolabs.dev/projects/groqili/</link><guid isPermaLink="true">https://root.nanoolabs.dev/projects/groqili/</guid><description>A React app with Groq AI for fast LLM talks.</description><pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Groqili is a small React application. It gives a fast and easy way to talk with &lt;strong&gt;Groq AI&lt;/strong&gt;. It is built for speed and simple use. It uses the Groq SDK for very quick answers.&lt;/p&gt;
&lt;h2&gt;Key Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Very Fast AI:&lt;/strong&gt; It works with Groq SDK for quick responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Tech:&lt;/strong&gt; It uses React and Vite for easy development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple Look:&lt;/strong&gt; It has a clean design for good work and prompt making.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Project Structure&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Groqili/
├── public/
│   └── vite.svg
├── src/
│   ├── assets/
│   │   └── react.svg
│   ├── components/
│   │   └── ChatMessage.jsx
│   ├── utils/
│   │   └── groq.js
│   ├── App.css
│   ├── App.jsx
│   ├── index.css
│   └── main.jsx
├── eslint.config.js
├── index.html
├── package.json
└── vite.config.js
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; React&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bundler:&lt;/strong&gt; Vite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Engine:&lt;/strong&gt; Groq SDK&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Styling:&lt;/strong&gt; CSS3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/aadnanmt/Groqili.git
cd Groqili
npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;Licensed under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;
</content:encoded></item></channel></rss>