# Milind Madhukar > Milind Madhukar, a developer from Mumbai. Trying to build software people actually use, and tinkering with just about anything that has a chip in it. The personal site of Milind Madhukar: projects and a blog. The website is a terminal you can type into, and the same content is served over SSH (`ssh milind.dev`). Every page linked below is plain markdown; the HTML version lives at the same path without the `.md`. ## About - [About Milind Madhukar](https://milind.dev/about.md): background, interests, and links elsewhere ## Projects - [Kora - Reading Feed](https://milind.dev/projects/kora.md): A reading feed where curious people share the articles they save, the lines they highlight, and the notes they take. - [Martin Garrix Discord Bot](https://milind.dev/projects/martin-garrix-bot.md): A multipurpose Discord bot built for the Martin Garrix community — music playback, fan trivia, levelling, and a lyrics engine. Rewritten from Python to Go and still running 24/7. - [Piston Stack](https://milind.dev/projects/piston-stack.md): Three pieces around Piston, the sandboxed code-execution engine: a fork of the engine itself, an idiomatic Go client for it, and a browser playground that runs 80+ languages with full execution stats and interactive stdin. - [StonksAPI - Market Data API](https://milind.dev/projects/stonksapi.md): A REST API that scrapes and serves live stock quotes, cryptocurrency prices, and market news from a single endpoint, so hobby projects don't need a paid data vendor. - [Golang RayTracer](https://milind.dev/projects/raytracer.md): A from-scratch ray tracing engine built in Go, featuring advanced lighting, materials, and optimized parallel rendering. - [DreamTeam - IPL Auction Portal](https://milind.dev/projects/dreamteam.md): The auction portal used to run the DreamTeam IPL auction simulation — real-time bidding over WebSockets, player statistics, and multiple concurrent rooms. - [go-musixmatch](https://milind.dev/projects/go-musixmatch.md): A complete Go client for the Musixmatch API — track, artist, album, and lyrics lookups with typed responses and every optional query parameter mapped. ## Blog - [my blog writing workflow with obsidian](https://milind.dev/blog/my-blog-writing-workflow-with-obsidian.md): ever wondered how some people manage to write technical blogs without losing their minds juggling between a million tools? well, buckle up because i'm about to show you my setup that's so smooth it's almost criminal. (2026-08-13) - [my brain runs on volatile RAM](https://milind.dev/blog/my-brain-runs-on-volatile-ram.md): where half-formed 2 AM ideas come to either become blog posts or die trying. no guarantees either way. (2026-08-05) ## Optional - [Full content](https://milind.dev/llms-full.txt): every page above in a single file - [RSS feed](https://milind.dev/blog/rss.xml): the blog as RSS - [Sitemap](https://milind.dev/sitemap.xml): every HTML page --- Source: https://milind.dev/whoami # Milind Madhukar _Trying to build software people actually use, and tinkering with anything that has a chip in it._ 22 years old. hooked on tech before i could spell it. gadgets, phones, servers. if it has a chip, i've opened it. learned to code by breaking things. method unchanged. now i build software people actually use, which is progress. off screen: soldering dumb little circuits, purely because i can. and music. die-hard martin garrix fan since 2016, 10 years deep. i run plusxhub, a 100k+ instagram community for fans like me. **Location:** Mumbai, India **Email:** [hey@milind.dev](mailto:hey@milind.dev) ## Elsewhere - [GitHub](https://github.com/milindmadhukar) - [LinkedIn](https://www.linkedin.com/in/milind-madhukar-0726b0211/) - [Twitter](https://x.com/milind_1504) - [Instagram](https://www.instagram.com/milind_1504/) - [Spotify](https://open.spotify.com/user/6zg8mjgm1xq8za6ye5uv4eyz3) - [Discord](https://discord.com/users/421608483629301772) --- Source: https://milind.dev/projects/kora # Kora - Reading Feed A reading feed where curious people share the articles they save, the lines they highlight, and the notes they take. **Built with:** Go, TypeScript, React, PostgreSQL ## Highlights - Built the full stack — Go API and scraper, React web app, browser extension, and mobile app - Full-text search and RSS ingestion across every saved article and highlight - Public RPC API so a library can be driven programmatically ## Links - [kora.sh](https://kora.sh) _Source is private._ > Full-Stack · Go · Reading --- Source: https://milind.dev/projects/martin-garrix-bot # Martin Garrix Discord Bot A multipurpose Discord bot built for the Martin Garrix community — music playback, fan trivia, levelling, and a lyrics engine. Rewritten from Python to Go and still running 24/7. **Built with:** Go, DiscordGo, PostgreSQL, Spotify API ## Highlights - Serves 6,000+ users with 24/7 uptime - Processes 10,000+ music requests daily with intelligent caching - Rewritten from Python to Go for lower memory use and faster startup ## Links - [github.com/milindmadhukar/MartinGarrixBot](https://github.com/milindmadhukar/MartinGarrixBot) > Go · Discord · API Integration --- Source: https://milind.dev/projects/piston-stack # Piston Stack Three pieces around Piston, the sandboxed code-execution engine: a fork of the engine itself, an idiomatic Go client for it, and a browser playground that runs 80+ languages with full execution stats and interactive stdin. **Built with:** Go, TypeScript, React, Docker ## Highlights - Playground runs 80+ languages in the browser on a Monaco editor, with interactive stdin - go-piston is a typed, chainable client covering the full API, and the most starred of my Go libraries - Runs on my own fork of the execution engine rather than a public instance ## Links - [piston.milind.dev](https://piston.milind.dev) - [piston-ui](https://github.com/milindmadhukar/piston-ui) - [piston (engine fork)](https://github.com/milindmadhukar/piston) - [go-piston](https://github.com/milindmadhukar/go-piston) > Go · Code Execution · Full-Stack --- Source: https://milind.dev/projects/stonksapi # StonksAPI - Market Data API A REST API that scrapes and serves live stock quotes, cryptocurrency prices, and market news from a single endpoint, so hobby projects don't need a paid data vendor. **Built with:** Go, go-chi, Colly, Astro ## Highlights - Serves stock, crypto, and news data from one API with no key required - Scrapes and normalises multiple upstream sources with Colly - Documented and deployed with a companion docs site ## Links - [stonksapi.milind.dev](https://stonksapi.milind.dev/) - [github.com/milindmadhukar/stonksapi](https://github.com/milindmadhukar/stonksapi) - [stonks.milind.dev](https://stonks.milind.dev) > Go · API · Finance --- Source: https://milind.dev/projects/raytracer # Golang RayTracer A from-scratch ray tracing engine built in Go, featuring advanced lighting, materials, and optimized parallel rendering. **Built with:** Go, Goroutines, 3D Graphics ## Highlights - Developed high-performance ray tracing engine achieving 3x speed improvement through goroutine parallelization - Rendered complex scenes with 1M+ rays per second using efficient data structures - Implemented anti-aliasing, depth of field, and material systems supporting glass, metal, and diffuse surfaces ## Links - [github.com/milindmadhukar/RayTracing](https://github.com/milindmadhukar/RayTracing) > Go · Graphics · Performance --- Source: https://milind.dev/projects/dreamteam # DreamTeam - IPL Auction Portal The auction portal used to run the DreamTeam IPL auction simulation — real-time bidding over WebSockets, player statistics, and multiple concurrent rooms. **Built with:** TypeScript, Next.js, Go, WebSocket, PostgreSQL ## Highlights - Handled 500+ concurrent users bidding in real time - Supported 50+ simultaneous auction rooms with no downtime at peak - Player statistics API serving 200+ profiles in under 100ms ## Links - [github.com/milindmadhukar/dreamteam](https://github.com/milindmadhukar/dreamteam) > Full-Stack · Real-Time · WebSocket --- Source: https://milind.dev/projects/go-musixmatch # go-musixmatch A complete Go client for the Musixmatch API — track, artist, album, and lyrics lookups with typed responses and every optional query parameter mapped. **Built with:** Go, REST ## Highlights - Covers the full Musixmatch API surface with typed responses - Every optional query parameter exposed as a functional option ## Links - [pkg.go.dev/github.com/milindmadhukar/go-musixmatch](https://pkg.go.dev/github.com/milindmadhukar/go-musixmatch) - [github.com/milindmadhukar/go-musixmatch](https://github.com/milindmadhukar/go-musixmatch) > Go · Library · API Wrapper --- Source: https://milind.dev/blog/my-blog-writing-workflow-with-obsidian/ # my blog writing workflow with obsidian _ever wondered how some people manage to write technical blogs without losing their minds juggling between a million tools? well, buckle up because i'm about to show you my setup that's so smooth it's almost criminal._ ## why obsidian is my second brain let me start by gushing about [obsidian](https://obsidian.md/). i use obsidian as my brain dump. seriously, if i think of something even remotely useful, whether it's a random idea at 2 AM or a technical concept i want to explore, i create a note. even if it sounds stupid in the moment, i write it down. this might sound chaotic, but here's the thing: it allows me to let my thoughts flow freely and store them in an easily accessible, indexable way that i can reference later. it's like having a second brain that never forgets and always knows where you left that half-baked idea about database optimization from three months ago. obsidian handles markdown like a dream, and here's the kicker: it's built on open standards. no vendor lock-in, no proprietary formats. just plain markdown files sitting on your computer, ready to be version controlled and backed up however you want. being open source (well, the ecosystem at least) means there's a plugin for basically everything. want to sync with git? there's a plugin. want to create templates? plugin. want to automatically generate file structures? you guessed it, there's a plugin for that too. ## the power couple: obsidian + astro my blog (the one you're reading right now on [milind.dev](https://milind.dev/blog)) is built with [astro](https://astro.build/), which is stupidly fast and handles markdown beautifully. it started out as a fully static site, and these days it runs as a small node server instead — some pages pull live data and i wanted that without bolting on a second service. the marriage between obsidian and astro is chef's kiss because i can write in my comfortable note-taking environment while astro transforms those markdown files into blazing-fast HTML. everything stays in sync automatically, which means i never have to manually copy-paste content or worry about formatting breaking. ## drawing makes everything better here's something i learned early on: a good diagram can explain in 30 seconds what would take me 300 words to write. that's where [excalidraw](https://excalidraw.com/) comes in. excalidraw is this beautiful, minimalist drawing tool that creates sketchy, hand-drawn style diagrams. and yes, before you ask, it's open source too (i might have a type). the best part? there's an [obsidian plugin for excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) that integrates so seamlessly you'd think they were made for each other. i've configured it to automatically export my drawings as PNGs for both light and dark themes. here's the really cool part: if you're reading this on my site, try switching between light and dark mode (there's a toggle somewhere on the page). watch the diagrams below change colors to match your theme. pretty neat, right? ## the workflow (how the magic happens) [image: workflow.excalidraw.dark.png] ### setting up the blog vault i created a dedicated obsidian vault just for my blog content. inside this vault, i've got a `_templates` folder with my blog post template, a `_scripts` folder with automation scripts, and individual folders for each blog post. everything is version controlled with git using the [obsidian git plugin](https://github.com/denolehov/obsidian-git). i've bound `ctrl+shift+s` to commit and sync. muscle memory is a beautiful thing. ### creating a new post when inspiration strikes, i hit `ctrl+n` which triggers the [quickadd plugin](https://github.com/chhoumann/quickadd). a popup appears asking for the blog post title. once i enter it, quickadd works its magic: 1. it grabs my template (which has frontmatter fields like title, description, date, tags, and the astro layout reference) 2. fills in the title and current timestamp 3. creates a new folder with that name 4. runs my custom slugify script to make the folder URL-friendly 5. and then runs another script to generate the file structure with an `_assets` folder and an `excalidraw` subfolder inside it all of this happens in under a second. no clicking through menus, no manual folder creation. just `ctrl+n`, type title, boom. ready to write. the slugify script (you can check it out at `~/Documents/Blog/_scripts/slugify.js`) takes a title like "My Awesome Blog Post" and transforms it into `my-awesome-blog-post` by normalizing unicode characters, converting to lowercase, replacing spaces with hyphens, and removing special characters. clean, URL-friendly, SEO-happy. ### writing content and embedding assets now comes the fun part. i write my blog post in obsidian using good old markdown. when i need to add a diagram, i create a new excalidraw drawing in the `excalidraw` folder. the plugin automatically exports `.light.png` and `.dark.png` versions. in my markdown, i just reference it like `![[workflow.excalidraw]]` and both obsidian and astro know what to do. obsidian shows it inline while i'm writing, and astro will render it as a theme-aware image on the final site. ## the development experience now here's where things get really slick. when i'm actively writing a blog post, i run `bun run dev:watch` on my local astro site. this starts two things: the astro dev server and a file watcher that monitors my blog vault for changes. every time i save a file in obsidian, the watcher (with 500ms debouncing to avoid triggering on rapid-fire saves) detects the change, runs the sync script, and copies the updated blog content to `src/pages/blog` in the astro project. astro's dev server sees the change and hot-reloads the browser. i literally see my changes appear almost instantly. write, save, see result. the feedback loop is chef's kiss. the sync script ([`website/scripts/sync-blog.ts`](https://github.com/milindmadhukar/portfolio/blob/main/website/scripts/sync-blog.ts)) is smart about what it copies. it skips hidden files, system files, templates, and scripts. it only grabs markdown files and blog post folders. it also cleans up old posts before syncing to ensure there's no stale content hanging around. ## the translation layer: obsidian to astro obsidian uses its own wikilink syntax (like `[[this]]`), while astro expects standard markdown. that's where my custom remark plugins bridge the gap. the [link translation plugin](https://github.com/milindmadhukar/portfolio/blob/main/website/src/plugins/remark-obsidian-links.js) converts obsidian wikilinks to proper markdown links. `[[other-post]]` becomes a link to `/blog/other-post/`, `[[post|Custom Text]]` becomes `[Custom Text](/blog/post/)`, and `![[image.png]]` becomes an optimized image with lazy loading attributes. the [excalidraw plugin](https://github.com/milindmadhukar/portfolio/blob/main/website/src/plugins/remark-obsidian-excalidraw.js) does something cooler. it transforms `![[drawing.excalidraw]]` into a container div with both light and dark image variants. CSS handles showing the correct one based on the user's theme preference. this is how you get those smooth theme-switching diagrams i mentioned earlier. ## the deployment pipeline okay, so i've written my masterpiece in obsidian. how does it get to the internet? let me walk you through the journey from my local machine to milind.dev. ### two repositories, one workflow i have two separate github repositories in this setup. the first is my private blog content repo (`milindmadhukar/blog`) which contains just markdown files and assets. the second is my public portfolio repo ([`milindmadhukar/portfolio`](https://github.com/milindmadhukar/portfolio)) which contains the astro site code. this separation is intentional: i can keep my blog drafts and ideas private while keeping the website code open source. the portfolio repo pulls the blog one in as a submodule, so they stay two repos with one seam between them. ### from obsidian to github when i'm done writing or editing a post, i hit `ctrl+shift+s` in obsidian. the git plugin commits my changes and pushes them to the private blog repo on github. simple, quick, muscle memory. ### the part where it becomes a box i own here's where it gets interesting. the site isn't on a hosting platform at all anymore — it's a [docker](https://www.docker.com/) image running on a [hetzner](https://www.hetzner.com/) box i rent, which i have named `limitless` because i have no self-restraint when naming servers. github actions builds that image on every push, signs it, and pushes it to GHCR. the blog content isn't fetched at build time. it rides along as a git submodule pinned to an exact commit, so the image that gets built is the image that gets run — same markdown, same everything, forever reproducible. which means the packages have to be private, because the image literally contains my unpublished drafts. > every published post ships inside a container that is also quietly carrying the half-finished ones. the drafts are in there. they're just not wired to a URL. on the box itself there's a folder called `~/docker/portfolio`, and it contains exactly two things: a `docker-compose.yml` and a `.env`. no source code, no git checkout, no build tools. it pulls a prebuilt image and runs it. that's the entire deployment. in front of it sits [traefik](https://traefik.io/), which notices the new container, routes `milind.dev` to it, and handles TLS. the certificates come from a resolver using the cloudflare DNS-01 challenge, so issuing them doesn't depend on DNS pointing at this machine — which made the migration itself deeply boring, in the best way. so the complete flow is: 1. i push to the blog repo 2. a github action fires a `repository_dispatch` at the portfolio repo 3. CI bumps the submodule to my new commit and builds the image 4. the box pulls it and restarts the container 5. traefik picks it up and the new version is live all automatic. all beautiful. i just write in obsidian and hit `ctrl+shift+s`. ## why this setup rocks let me count the ways: **friction-free writing**: i just open obsidian and write. no context switching, no fighting with a CMS, no waiting for a web interface to load. just pure writing. **version control for everything**: everything lives in git. i can roll back bad edits, see what i wrote three months ago, track changes over time, and never worry about losing work. **privacy meets public**: my blog content stays private until i'm ready to publish, but the site code is open source. best of both worlds. i can experiment with drafts and half-baked ideas without them being public. **fast feedback during development**: changes appear in the browser almost instantly while developing. the tight feedback loop keeps me in the flow state. **theme-aware assets**: diagrams automatically match the user's theme preference. try it right now if you haven't already. toggle your theme and watch the diagrams above change colors. it's the little things. **zero vendor lock-in**: it's all markdown files sitting on my computer. i know this one holds up, because this whole site used to live on a hosting platform and now it doesn't. moving it cost me a compose file and an afternoon — the posts didn't notice. **automation everywhere**: from creating posts to deploying to production, it's all automated. the only manual steps are writing and hitting `ctrl+shift+s`. ## the stack summary for those who skim to the end: | | | | --- | --- | | **writing** | [obsidian](https://obsidian.md/) with plugins for git, quickadd, and excalidraw | | **framework** | [astro](https://astro.build/) with custom remark plugins for translating obsidian syntax | | **hosting** | a hetzner box running docker, with traefik out front | | **version control** | github with separate repos for content (private) and site code (public), joined by a submodule | | **package manager** | [bun](https://bun.sh/) because it's ridiculously fast | | **drawing** | [excalidraw](https://excalidraw.com/) for hand-drawn style diagrams | ## want to build something similar? the entire astro site code is available on my [portfolio repo](https://github.com/milindmadhukar/portfolio). key files worth checking out: - [`website/astro.config.mjs`](https://github.com/milindmadhukar/portfolio/blob/main/website/astro.config.mjs) for the astro configuration with custom plugins - [`website/scripts/sync-blog.ts`](https://github.com/milindmadhukar/portfolio/blob/main/website/scripts/sync-blog.ts) for the sync magic that bridges local and production - [`website/scripts/watch-blog.ts`](https://github.com/milindmadhukar/portfolio/blob/main/website/scripts/watch-blog.ts) for the development file watcher - [`website/src/plugins/remark-obsidian-links.js`](https://github.com/milindmadhukar/portfolio/blob/main/website/src/plugins/remark-obsidian-links.js) for link translation from obsidian to markdown - [`website/src/plugins/remark-obsidian-excalidraw.js`](https://github.com/milindmadhukar/portfolio/blob/main/website/src/plugins/remark-obsidian-excalidraw.js) for theme-aware diagram handling the beauty of this setup is it's modular. you can steal bits and pieces that work for you without adopting the whole thing. maybe you just want the obsidian to astro sync script, or maybe you only care about the theme-aware excalidraw plugin. take what you need. ## final thoughts building this workflow took some upfront time, but it's paid dividends. i can now go from random 2 AM idea to published post in one smooth flow without ever leaving my writing environment. the friction is basically zero. the best tools are the ones that get out of your way and let you focus on the work. this setup does exactly that. obsidian lets me think and write freely, the automation handles the busywork, and astro makes it all fast and beautiful on the web. now if you'll excuse me, i have more blogs to write. and with this workflow, i might actually write them. happy blogging! --- Source: https://milind.dev/blog/my-brain-runs-on-volatile-ram/ # my brain runs on volatile RAM _where half-formed 2 AM ideas come to either become blog posts or die trying. no guarantees either way._ > *"i think, therefore i am... probably overthinking everything and should write it down."* > ~ me, paraphrasing descartes ## my brain is a terrible hard drive welcome to my brain's version of cloud backup, except instead of google drive, it's just a bunch of markdown files and existential dread. you know that feeling when you have a brilliant idea at 2 AM, convinced you'll remember it in the morning, and then wake up with absolutely nothing except a vague sense that you've lost something important? yeah, me too. turns out our brains are terrible storage devices. they're more like volatile RAM that loses everything the moment you blink too hard. so here i am, starting this blog. not because i'm some tech guru with answers. not because i've got life figured out (i barely have breakfast figured out). but because i need somewhere to dump all this random stuff bouncing around in my skull before it vanishes into the void. ## this "second brain" thing you know how there's always that one book everyone references but nobody's actually read? for me, it's about building a "second brain" and this whole **C.O.D.E.** thing: **capture, organize, distill, express**. i haven't read the book (shocking, i know), but people won't shut up about it, so there must be something there, right? i've started this weird habit where whenever a random thought strikes, i immediately open an editor and just... dump it. it's often garbled text, half-formed sentences, barely coherent rambling. but it captures the core idea. later, when i'm more coherent (or caffeinated), i come back, distill it, organize it properly, and some of these will eventually become blog posts. think of it as controlled chaos with a delayed cleanup crew. [image: blog_flow.excalidraw.dark.png] see? you are basically a productivity expert now. ## can we talk about AI-generated garbage for a second? real talk, AI-generated blog content is _everywhere_ and it's hilariously bad. you know the type. those perfectly polished, SEO-optimized robots in disguise that somehow manage to say absolutely nothing in 2000 words. they're like the elevator music of the internet. bland. boring. and they all sound like they were written by the same very tired intern who gave up on life. i hate them with a passion. **so here's my rebellion:** every thought, opinion, and completely random obsession you're reading? that's all me. no AI ghost-writing my takes. no content mill spitting out generic word salad. this is 100% certified organic, free-range, grass-fed brain content. now look, i'm not _completely_ anti-AI. i'll absolutely use it to fix my garbage phrasing and make my sentences slightly less embarrassing, because let's be honest... i can barely string words together. but using AI to generate your entire personality? your whole blog? come on. that's just lazy and kinda sad. i'm typing these words myself because (and this is weird) i actually _enjoy_ it. there's something oddly satisfying about the physical act of typing that makes my thoughts feel more real, more _mine_. like i'm actually creating something instead of just asking a robot to do my homework. will it be messy? oh, absolutely. will i be completely wrong sometimes? you bet. but it'll be _authentically mine_, and when half the internet reads like it was written by a corporate robot, that's gotta count for something, right? ## why i'm really doing this **i'm a nerd and i can't help it.** new technologies? obscure electronics? programming paradigms? i get unreasonably excited about all of it. where else am i supposed to talk about this stuff? parties? (tried that. doesn't work.) **finding my people.** look, i have opinions on things most people don't care about. but somewhere out there is someone who also gets excited about obscure electronics or debates the perfect project structure. this blog is my bat signal to those weirdos. **accountability and growth.** writing my goals down means i can't pretend i didn't set them. in a few years i'll look back and cringe at past-me (definitely happening), or maybe be surprised by how much i've figured out (hopefully both). **i want to look smart.** might as well admit it. writing about technical stuff makes me sound like i know what i'm doing. when i can casually drop "oh yeah, i wrote about that," it feels like unlocking some secret credibility level... shallow? maybe. effective? absolutely. [image: hackerman.gif] ## what you're getting into this isn't a purely technical blog. it's whatever i feel like writing about: - technical deep dives and rants - personal experiences and learning journals - music takes that probably only matter to me - random fascinations and discoveries - things that annoy me (there's a lot) - unfiltered thoughts on whatever grabs my attention i don't consider myself super creative when it comes to writing, but i don't care. i'm not trying to win awards here. this isn't perfectly edited prose. i'm expressing thoughts in a way that feels real to me, rough edges and all. the imperfections are kind of the point. ## why you should try this too here's what nobody tells you: you don't need to be an expert to start writing. you don't need everything figured out. you don't need perfect prose or groundbreaking insights. you just need thoughts worth capturing. ### it's not about productivity building your own "second brain" isn't about being productive or optimized. it's about keeping track of how you think. your perspective matters, even when it doesn't feel like it does. how you understand things, what connections you draw, the questions that bug you, those are worth writing down, if only so you can look back later and see how your brain used to work. ### writing forces clarity that vague understanding you have about something? try writing it down. suddenly all the gaps in your knowledge become painfully obvious. it's uncomfortable, but that's how you actually learn. ### your experiences aren't just yours that bug you spent three hours debugging? someone else will hit it. that weird realization about life? someone else is chewing on the same thought. documentation isn't just for code. ### it's a time capsule in five years, you won't remember what you were struggling with, excited about, or learning. your blog will. future you gets to cringe at past you, and honestly? that's kind of priceless. plus, having an excuse to deep dive into random topics and call it "content creation"? pretty sweet deal. ## the sacred pact if you don't see a blog post from me in 6 months, you have full permission to email me and roast me for quitting. curse me out. shame me into writing. consider it your civic duty. i'm counting on you, internet stranger. ## why this actually matters to me look, at the end of the day, this stuff ends up *somewhere* on the internet. my random thoughts, the things i learned, the mistakes i made — they're not just trapped in my head anymore. it's kind of like leaving graffiti on the internet, except legal and slightly more coherent. proof i was here and had opinions about things. everything online feels so disposable now. stories that vanish, feeds that refresh, content that expires. having something that just... *stays there*? that's weirdly nice. ## real talk will i keep publishing regularly? no clue. will anyone actually read this? also no clue. does any of it matter? honestly, i'm not sure. but i'm doing it anyway. this blog is proof i existed and had thoughts. that i was here, being wrong about stuff, learning things the hard way, occasionally having a decent idea. when everything feels like it's designed to be scrolled past and forgotten, making something that sticks around feels kinda rebellious. so here we are. first post. let's see where this goes. --- **P.S.** that 6-month email thing? i mean it. **P.P.S.** if you made it this far, thanks for reading. now go start your own blog. future you will thank you.