innocentzer0.bsky.social
@innocentzer0.bsky.social
In the beginning there was commandline... then emacs took over

Lukewarm takes on C|Rust|Java|OCaml|Haskell (I suck at the last 3, probably the first 2 too)

occasional hacker and nusheller

he/him | 22 | IITM undergrad
Pinned
Not me torn in a dilemma (trilemma?) between learning all I can about type theory and FP, doing low-level OS, embedded type stuff, and trying to actually improve the linux desktop user scene.

Oh, the misery!
Reposted
It may have taken 20 years, but, I have been burned one too many times
December 26, 2025 at 7:21 AM
Reposted
describing claude like this explains a lot about the go programming language
December 26, 2025 at 1:55 AM
Reposted
Time to spend all of the money you’d normally spend on regularly priced RAM upgrades on sponsoring devs building oss + native Rust (or swift, or go) desktop UI frameworks/toolkits instead!

(Then only the rust developers are sad we need more RAM for actually compiling the apps)
It would be hilarious if spiking RAM prices were the cause of a move away from Electron/webview-based apps to native apps. I've seen arguments from gamers* that unoptimized games right now are on the verge of unethical*.

* yeah, I know
* yeah, I know, it's about ethics in videogame optimizat
December 25, 2025 at 11:30 AM
Reposted
<boring name>, a fast and simple programming language with clean syntax (it's just a bastard child of C and Rust)
buzz lightyear from toy story is smiling while sitting in a spaceship .
Alt: a seemingly single buzz lightyear from toy story is smiling while sitting in a box of the form of a spaceship. the camera panning out reveals that it's actually one of many on a store shelf
media.tenor.com
December 25, 2025 at 9:16 PM
Reposted
Merry Christmas to all the Haters and Losers, of which there are many, who Rape the Planet, spend Trillions on Toxic equipment, BLOW UP Society, and train your Monsters on data Produced in part by my Own Hands, without Attribution or Compensation. Thank you for your Attention to this Matter.
December 26, 2025 at 5:34 AM
Louder for the people at the back.
If ATProto is to succeed, it must have an 'embrace, extend, extinguish' philosophy towards existing tech giant apps (I know this sounds diabolical but hear me out).

What the current apps have are audience/communities. We need those. So interop is primary. We also need better bridges for activitypub
I long to see a day where ATProto manages to touch the current user base of activitypub, and even exceed it. Where we have decentralized and polished alternatives to every big tech app out there. Activitypub has made much progress in that regard, but atproto could surpass it given how it's better.
December 26, 2025 at 6:58 AM
It's actually pretty cool. llama.cpp is amazing
Set up a local 7B mamba model for long conversations. Let's see what the fuss is all about :)
December 26, 2025 at 6:58 AM
Plan 9 is a joke. So is go. Unix has its fair share of annoying flaws, but I can give it a pass because it was developed when PCs weren't a thing. If Claude was actually intelligent, it would be sending a hate mail to all of you.
Fuck you people. Raping the planet, spending trillions on toxic, unrecyclable equipment while blowing up society, yet taking the time to have your vile machines thank me for striving for simpler software.

Just fuck you. Fuck you all.

I can't remember the last time I was this angry.
December 26, 2025 at 6:42 AM
www.youtube.com/watch?v=AGVX...

Almost 4 years later, still one of the best guides
NixOS Setup Guide - Configuration / Home-Manager / Flakes
YouTube video by Matthias Benaets
www.youtube.com
December 26, 2025 at 5:53 AM
Reposted
Package managers keep using git as a database, it never works out.

https://nesbitt.io/2025/12/24/package-managers-keep-using-git-as-a-database.html
Package managers keep using git as a database, it never works out
Using git as a database is a seductive idea. You get version history for free. Pull requests give you a review workflow. It’s distributed by design. GitHub will host it for free. Everyone already knows how to use it. Package managers keep falling for this. And it keeps not working out. ## Cargo The crates.io index started as a git repository. Every Cargo client cloned it. This worked fine when the registry was small, but the index kept growing. Users would see progress bars like “Resolving deltas: 74.01%, (64415/95919)” hanging for ages, the visible symptom of Cargo’s libgit2 library grinding through delta resolution on a repository with thousands of historic commits. The problem was worst in CI. Stateless environments would download the full index, use a tiny fraction of it, and throw it away. Every build, every time. RFC 2789 introduced a sparse HTTP protocol. Instead of cloning the whole index, Cargo now fetches files directly over HTTPS, downloading only the metadata for dependencies your project actually uses. (This is the “full index replication vs on-demand queries” tradeoff in action.) By April 2025, 99% of crates.io requests came from Cargo versions where sparse is the default. The git index still exists, still growing by thousands of commits per day, but most users never touch it. ## Homebrew GitHub explicitly asked Homebrew to stop using shallow clones. Updating them was “an extremely expensive operation” due to the tree layout and traffic of homebrew-core and homebrew-cask. Users were downloading 331MB just to unshallow homebrew-core. The .git folder approached 1GB on some machines. Every `brew update` meant waiting for git to grind through delta resolution. Homebrew 4.0.0 in February 2023 switched to JSON downloads for tap updates. The reasoning was blunt: “they are expensive to git fetch and git clone and GitHub would rather we didn’t do that… they are slow to git fetch and git clone and this provides a bad experience to end users.” Auto-updates now run every 24 hours instead of every 5 minutes, and they’re much faster because there’s no git fetch involved. ## CocoaPods CocoaPods is the package manager for iOS and macOS development. It hit the limits hard. The Specs repo grew to hundreds of thousands of podspecs across a deeply nested directory structure. Cloning took minutes. Updating took minutes. CI time vanished into git operations. GitHub imposed CPU rate limits. The culprit was shallow clones, which force GitHub’s servers to compute which objects the client already has. The team tried various band-aids: stopping auto-fetch on `pod install`, converting shallow clones to full clones, sharding the repository. The CocoaPods blog captured it well: “Git was invented at a time when ‘slow network’ and ‘no backups’ were legitimate design concerns. Running endless builds as part of continuous integration wasn’t commonplace.” CocoaPods 1.8 gave up on git entirely for most users. A CDN became the default, serving podspec files directly over HTTP. The migration saved users about a gigabyte of disk space and made `pod install` nearly instant for new setups. ## Go modules Grab’s engineering team went from 18 minutes for `go get` to 12 seconds after deploying a module proxy. That’s not a typo. Eighteen minutes down to twelve seconds. The problem was that `go get` needed to fetch each dependency’s source code just to read its go.mod file and resolve transitive dependencies. Cloning entire repositories to get a single file. Go had security concerns too. The original design wanted to remove version control tools entirely because “these fragment the ecosystem: packages developed using Bazaar or Fossil, for example, are effectively unavailable to users who cannot or choose not to install these tools.” Beyond fragmentation, the Go team worried about security bugs in version control systems becoming security bugs in `go get`. You’re not just importing code; you’re importing the attack surface of every VCS tool on the developer’s machine. GOPROXY became the default in Go 1.13. The proxy serves source archives and go.mod files independently over HTTP. Go also introduced a checksum database (sumdb) that records cryptographic hashes of module contents. This protects against force pushes silently changing tagged releases, and ensures modules remain available even if the original repository is deleted. ## Beyond package managers The same pattern shows up wherever developers try to use git as a database. Git-based wikis like Gollum (used by GitHub and GitLab) become “somewhat too slow to be usable” at scale. Browsing directory structure takes seconds per click. Loading pages takes longer. GitLab plans to move away from Gollum entirely. Git-based CMS platforms like Decap hit GitHub’s API rate limits. A Decap project on GitHub scales to about 10,000 entries if you have a lot of collection relations. A new user with an empty cache makes a request per entry to populate it, burning through the 5,000 request limit quickly. If your site has lots of content or updates frequently, use a database instead. Even GitOps tools that embrace git as a source of truth have to work around its limitations. ArgoCD’s repo server can run out of disk space cloning repositories. A single commit invalidates the cache for all applications in that repo. Large monorepos need special scaling considerations. ## The pattern The hosting problems are symptoms. The underlying issue is that git inherits filesystem limitations, and filesystems make terrible databases. **Directory limits.** Directories with too many files become slow. CocoaPods had 16,000 pod directories in a single Specs folder, requiring huge tree objects and expensive computation. Their fix was hash-based sharding: split directories by the first few characters of a hashed name, so no single directory has too many entries. Git itself does this internally with its objects folder, splitting into 256 subdirectories. You’re reinventing B-trees, badly. **Case sensitivity.** Git is case-sensitive, but macOS and Windows filesystems typically aren’t. Check out a repo containing both `File.txt` and `file.txt` on Windows, and the second overwrites the first. Azure DevOps had to add server-side enforcement to block pushes with case-conflicting paths. **Path length limits.** Windows restricts paths to 260 characters, a constraint dating back to DOS. Git supports longer paths, but Git for Windows inherits the OS limitation. This is painful with deeply nested node_modules directories, where `git status` fails with “Filename too long” errors. **Missing database features.** Databases have CHECK constraints and UNIQUE constraints; git has nothing, so every package manager builds its own validation layer. Databases have locking; git doesn’t. Databases have indexes for queries like “all packages depending on X”; with git you either traverse every file or build your own index. Databases have migrations for schema changes; git has “rewrite history and force everyone to re-clone.” The progression is predictable. Start with a flat directory of files. Hit filesystem limits. Implement sharding. Hit cross-platform issues. Build server-side enforcement. Build custom indexes. Eventually give up and use HTTP or an actual database. You’ve built a worse version of what databases already provide, spread across git hooks, CI pipelines, and bespoke tooling. None of this means git is bad. Git excels at what it was designed for: distributed collaboration on source code, with branching, merging, and offline work. The problem is using it for something else entirely. Package registries need fast point queries for metadata. Git gives you a full-document sync protocol when you need a key-value lookup. If you’re building a package manager and git-as-index seems appealing, look at Cargo, Homebrew, CocoaPods, Go. They all had to build workarounds as they grew, causing pain for users and maintainers. The pull request workflow is nice. The version history is nice. You will hit the same walls they did.
nesbitt.io
December 24, 2025 at 4:49 PM
Reposted
TIL: serde's borrowing can be treacherous

yossarian.net/til/post/ser...
TIL: serde's borrowing can be treacherous
yossarian.net
December 25, 2025 at 10:01 PM
Turns out gnome portal as default hijacks notifs and tries to use gnome-shell to show them and I need to add an exception for that in portals.conf; well atleast it works now.
Gotta love xdg-desktop-portal being weird

default=gnome => notifs don't work

default=gtk => literally nothing works

Wow man wow
December 25, 2025 at 9:04 PM
Gotta love xdg-desktop-portal being weird

default=gnome => notifs don't work

default=gtk => literally nothing works

Wow man wow
December 25, 2025 at 8:40 PM
Reposted
this is something ive been crying about in therapy lately. i love technology and sci fi and futuristic stuff. but the capital maximizer machine has infected so much with its enshittification. im genuinely grieving a passion ripped away from me.
It makes me sad too because growing up, I loved futurism. I loved tech. I pretty much existed solely online due to my own identity and living in South Louisiana. Stories of sentient AI, space travel, singularity resonated with me.

But they've ruined it all and made it the bad place.
December 24, 2025 at 6:50 AM
Reposted
You can add a hashbang #!/usr/bin/env -S cargo -Zscript to a Rust source file and execute it like a script. It's unwieldy as a scripting language, but it's always nice to have a quick way to run code in a compile systems language like this.
November 30, 2025 at 5:39 AM
NixOS looking up in disappointment.
The big three of Linux! 🐧
December 24, 2025 at 10:37 AM
Reposted
holy shit??? what the fuck
Font with Built-In Syntax Highlighting
An experiment in javascript-free syntax highlighting, made possible by opentype contextual alternates and COLR table
blog.glyphdrawing.club
December 23, 2025 at 3:46 PM
Reposted
This is also such a generic scene with high school physics as well, so much so that even top olympiads don't capture more of the formal physics students do in uni.

I was sad that I didn't take physics instead of cs, but after one course in physics here it turned to immense happiness.
December 23, 2025 at 11:51 AM
Reposted
me just using the `apt-get` or `apt` cyberciti.biz/faq/ubuntu-l... but how the world see it:
December 23, 2025 at 11:06 AM
Reposted
This is for the exact same reason everyone in kernel's mailing list brushed tanenbaum off when he said mIcRoKeRnElS aRe ThE fUtUrE

Idk why anyone in the OS community takes his book seriously, I find it to be a joke and a self-yap

Can't find the link to the conversation.
December 23, 2025 at 10:22 AM
Reposted
Imho, ignoring theory is sometimes needed, if not at the very least because code needs to run on actual hardware, and not just a proof checker all the time (as quite a number of math+FP bros like to think).
December 23, 2025 at 10:14 AM
Reposted
> ... compared to traditional malloc where allocations are spread throughout the heap.

I was actually interested, but now I just think the author had no idea how malloc works internally.
December 23, 2025 at 10:26 AM
Set up a local 7B mamba model for long conversations. Let's see what the fuss is all about :)
December 23, 2025 at 5:04 AM
Turns out there's undertones of emotional avoidance and selective dementia as a coping mechanism. I also had undiagnosed autism and adhd (something I always suspected).

Wow....
Apparently, this warrants seeking medical help from a professional. Interesting....
I wish I could go back to being a child... I'd do so many things so differently...

Is it normal to feel a crippling sense of nostalgia while simultaneously not remembering ABSOLUTELY ANYTHING about your childhood?
December 22, 2025 at 3:25 PM