PageSourceSearch

https://citizendot.github.io/articles/

html citizendot.github.io collected 2026-10-03 08:47:58 UTC 17,612 bytes, 4 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-astro-cid-sckkx6r4> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><link rel="icon" type="image/svg+xml" href="/favicon.ico"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap" rel="stylesheet">
1<script defer src="/script.js" data-website-id="1bbae7b1-22e2-43d4-b919-5324c3057df2"></script>
1<meta name="generator" content="Astro v5.18.2"><meta name="description" content="Appaji, a Computer Science graduate from IIT Patna and former intern at Arista Networks, is a Software Engineer at Infinite Reality. Passionate about building innovative web experiences, with a strong interest in sustainable and customer-focused startups."><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate">
1<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CDGfc0hd.js"></script>
1<title>Appaji - Software Engineer</title><link rel="stylesheet" href="/_astro/_slug_.o7QFxO3U.css"></head> <body class="relative bg-[#1a1612]!" data-astro-cid-sckkx6r4> <div class="fixed inset-0 flex justify-center sm:px-8" data-astro-cid-sckkx6r4> <div class="flex w-full max-w-7xl lg:px-8" data-astro-cid-sckkx6r4> <div class="w-full bg-[#24201b] ring-1 ring-zinc-300/20" data-astro-cid-sckkx6r4></div> </div> </div> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style>
1<script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script>
1<script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
1<astro-island uid="1WpTBE" component-url="/_astro/Floaters.BWLagnFK.js" component-export="default" renderer-url="/_astro/client.4HrEwUw9.js" props="{&quot;data-astro-cid-sckkx6r4&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;Floaters&quot;,&quot;value&quot;:true}"></astro-island> 
1<script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();</script>
1<astro-island uid="Z1Xje54" prefix="r13" component-url="/_astro/Header.DmBc9wNi.js" component-export="Header" renderer-url="/_astro/client.4HrEwUw9.js" props="{&quot;pathname&quot;:[0,&quot;/articles/&quot;],&quot;data-astro-cid-sckkx6r4&quot;:[0,true]}" ssr client="load" opts="{&quot;name&quot;:&quot;HeaderJsx&quot;,&quot;value&quot;:true}" await-children><header class="pointer-events-none relative z-50 flex flex-none flex-col" style="height:var(--header-height);margin-bottom:var(--header-mb)"><div class="top-0 z-10 h-16 pt-6" style="position:var(--header-position)"><div class="sm:px-8 top-(--header-top,--spacing(6)) w-full" style="position:var(--header-inner-position)"><div class="mx-auto w-full max-w-7xl lg:px-8"><div class="relative px-4 sm:px-8 lg:px-12"><div class="mx-auto max-w-2xl lg:max-w-5xl xl:max-w-7xl"><div class="relative flex justify-center gap-4 sm:gap-6 md:gap-8 lg:gap-10 xl:gap-12"><div class="flex justify-self-start"><div class="h-10 w-10 rounded-full bg-zinc-800/90 p-0.5 shadow-lg ring-1 shadow-zinc-800/5 ring-white/10 backdrop-blur-sm"><a href="/" aria-label="Home" class="pointer-events-auto"><img src="https://cdn.jsdelivr.net/gh/CITIZENDOT/citizendot.github.io@main/avatar.webp" alt="" sizes="3rem" class="rounded-full bg-zinc-800 object-cover h-9 w-9"/></a></div></div><div class="flex justify-end md:justify-center"><nav class="pointer-events-auto md:hidden"><ul class="flex rounded-full bg-zinc-800/90 px-3 text-sm font-medium text-zinc-200 shadow-lg ring-1 shadow-zinc-800/5 ring-white/10 backdrop-blur-sm"><li><a href="/articles" class="relative block px-3 py-2 transition hover:text-teal-400">Articles</a></li></ul></nav><nav class="pointer-events-auto hidden md:block"><ul class="flex rounded-full bg-zinc-800/90 px-3 text-sm font-medium text-zinc-200 shadow-lg ring-1 shadow-zinc-800/5 ring-white/10 backdrop-blur-sm"><li><a href="/articles" class="relative block px-3 py-2 transition hover:text-teal-400">Articles</a></li></ul></nav></div><div class="flex justify-end"><astro-slot> <astro-island uid="Z1dJGtD" component-url="/_astro/Header.DmBc9wNi.js" component-export="Toggles" renderer-url="/_astro/client.4HrEwUw9.js" props="{&quot;data-astro-cid-sckkx6r4&quot;:[0,true]}" ssr client="only" opts="{&quot;name&quot;:&quot;Toggles&quot;,&quot;value&quot;:true}"></astro-island> </astro-slot></div></div></div></div></div></div></div></header><!--astro:end--></astro-island>  <div class="sm:px-8 mt-16 sm:mt-32"><div class="mx-auto w-full max-w-7xl lg:px-8"><div class="relative px-4 sm:px-8 lg:px-12"><div class="mx-auto max-w-2xl lg:max-w-5xl xl:max-w-7xl"> <header class="max-w-2xl"> <h1 class="text-zinc-100">Thoughts, Compiled.</h1> <p class="mt-6 text-zinc-400">
2No grand theories, no expert opinions, just me, putting words together and hoping they make
3        some kind of sense.
4</p> </header> <div class="mt-16 sm:mt-20"> <div class="md:border-l md:border-zinc-700/40 md:pl-6"> <div class="pointer-events-auto flex max-w-3xl flex-col space-y-16"> <article class="md:grid md:grid-cols-4 md:items-baseline"><div class="md:col-span-3 group relative flex flex-col items-start"><h2 class="font-card-title group-hover:text-shadow-golden-subtle text-4xl font-semibold tracking-wide text-[#fcefb8]"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-600/50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div><a href="/articles/the-idea-of-immutable-social-media"><span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span><span class="relative z-10">The Idea of an Immutable Social Media</span></a></h2><time class="md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"><span class="h-4 w-0.5 rounded-full bg-zinc-500"></span></span>Aug 8, 2026</time><p class="relative z-10 mt-2 text-base text-[#e0d8c1]">Screenshots get faked, posts get quietly deleted, and nobody can prove who said what anymore. I sketched out a design that tries to fix that with hashes, timestamps, and a blockchain. Poking holes in it here.</p><div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-[#b6535cf4]">Read article<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"><path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><time class="mt-1 max-md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500">Aug 8, 2026</time></article><article class="md:grid md:grid-cols-4 md:items-baseline"><div class="md:col-span-3 group relative flex flex-col items-start"><h2 class="font-card-title group-hover:text-shadow-golden-subtle text-4xl font-semibold tracking-wide text-[#fcefb8]"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-600/50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div><a href="/articles/fake-job-interview-git-hook-malware"><span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span><span class="relative z-10">I Inspected My Take-Home Interview Project. It Was a Whole Operation.</span></a></h2><time class="md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"><span class="h-4 w-0.5 rounded-full bg-zinc-500"></span></span>July 23, 2026</time><p class="relative z-10 mt-2 text-base text-[#e0d8c1]">A recruiter reached out with a remote offer for a YC-backed startup. What I found in the assignment sent me down a much deeper rabbit hole than I expected.</p><div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-[#b6535cf4]">Read article<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"><path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><time class="mt-1 max-md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500">July 23, 2026</time></article><article class="md:grid md:grid-cols-4 md:items-baseline"><div class="md:col-span-3 group relative flex flex-col items-start"><h2 class="font-card-title group-hover:text-shadow-golden-subtle text-4xl font-semibold tracking-wide text-[#fcefb8]"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-600/50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div><a href="/articles/the-great-content-blah"><span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span><span class="relative z-10">Why content is becoming less and less interesting to consume</span></a></h2><time class="md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"><span class="h-4 w-0.5 rounded-full bg-zinc-500"></span></span>June 16, 2025</time><p class="relative z-10 mt-2 text-base text-[#e0d8c1]">An exploration of why our feeds are filled with formulaic, AI-generated content that lacks the soul of human creation.</p><div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-[#b6535cf4]">Read article<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"><path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><time class="mt-1 max-md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500">June 16, 2025</time></article><article class="md:grid md:grid-cols-4 md:items-baseline"><div class="md:col-span-3 group relative flex flex-col items-start"><h2 class="font-card-title group-hover:text-shadow-golden-subtle text-4xl font-semibold tracking-wide text-[#fcefb8]"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-600/50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div><a href="/articles/reducio"><span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span><span class="relative z-10">Reducio</span></a></h2><time class="md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"><span class="h-4 w-0.5 rounded-full bg-zinc-500"></span></span>May 16, 2025</time><p class="relative z-10 mt-2 text-base text-[#e0d8c1]">Needed a dead-simple way to shrink videos for Discord or faster uploads, so I built Reducio. It&#x27;s an offline app to compress or mute videos without the command line or sketchy websites. Here’s how it came to be.</p><div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-[#b6535cf4]">Read article<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"><path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><time class="mt-1 max-md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500">May 16, 2025</time></article><article class="md:grid md:grid-cols-4 md:items-baseline"><div class="md:col-span-3 group relative flex flex-col items-start"><h2 class="font-card-title group-hover:text-shadow-golden-subtle text-4xl font-semibold tracking-wide text-[#fcefb8]"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-600/50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div><a href="/articles/replicating-chess-com-analysis-locally"><span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span><span class="relative z-10">Replicating Chess.com Analysis locally: My Upwork Gig</span></a></h2><time class="md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"><span class="h-4 w-0.5 rounded-full bg-zinc-500"></span></span>February 20, 2025</time><p class="relative z-10 mt-2 text-base text-[#e0d8c1]">How a curious Upwork request led me to build a local chess game analysis tool using Python and Stockfish.</p><div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-[#b6535cf4]">Read article<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"><path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><time class="mt-1 max-md:hidden relative z-10 order-first mb-3 flex items-center text-sm text-zinc-500">February 20, 2025</time></article> </div> </div> </div> </div></div></div></div>  <footer class="mt-32 flex-none"><div class="sm:px-8"><div class="mx-auto w-full max-w-7xl lg:px-8"><div class="border-t border-zinc-700/40 pt-10 pb-16"><div class="relative px-4 sm:px-8 lg:px-12"><div class="mx-auto max-w-2xl lg:max-w-5xl xl:max-w-7xl"><div class="flex flex-col items-center justify-between gap-6 md:flex-row"><div class="flex flex-wrap justify-center gap-x-6 gap-y-1 text-sm font-medium text-zinc-200"></div><p class="text-sm text-zinc-400">© <!-- -->2026<!-- --> Appaji C. All rights reserved.</p></div></div></div></div></div></div></footer> <video style="display: none;
4" id="PrologueBackground" data-astro-cid-sckkx6r4 data-astro-transition-persist="astro-gbvijb6a-1"> <source src="/Prologue.mp3" type="video/mp4" data-astro-cid-sckkx6r4 data-astro-transition-persist="astro-coppatqy-2"> </video> </body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.