A College Forked My Open Source Project and Forgot to Change the Analytics Key
Ramachandra College of Engineering rebuilt my MIT-licensed CodeTrace into a placement portal, and shipped it with my PostHog key still inside. Here's the whole story, the evidence, and what the MIT license actually asked of them.
I took a real XGBoost news-bias classifier and made it run entirely in the browser two different ways: Pyodide unpickling the original .pkl, and ONNX via onnxruntime-web. Same model, same task, wildly different perf. Here's what actually happened, with numbers, the trap that almost broke it, and which one I finally shipped across the whole site.
My friend Amresh was building Pitaara, a live gold-rates app, and needed data from brands that really don't want to be scraped. I've done this dance before, so I helped. Here's the project walkthrough, plus the general guide to scraping sites that swear they don't have APIs.
Every component the Markdown renderer supports, shown in both the tag spelling and the directive spelling: steps, meters, panels, tabs, diagrams, callouts. This page is also the test fixture, so a renderer regression shows up here first.
A pipeline of mine kept asking an LLM for JSON and kept paying for every brace and quote in the reply. I switched the output format to YAML, then got curious and actually ran both through tiktoken to see what was true and what was just a stat floating around the internet. There's a real saving, and a catch nobody mentions: minified JSON beats YAML on raw tokens.
I was building a run-tracker side project and the GPS updates just stopped the moment the screen locked. Turned out I'd built a background service the way Android used to allow, and the OS doesn't allow that anymore. Here's the full picture: foreground, background, and bound services, the lifecycle that governs all three, and what modern Android actually wants you to do instead.
I built a tiny shared blog for a few friends and used it as an excuse to actually learn Prisma properly instead of copy-pasting from the docs. This is what happened: the schema file, migrations, relations, and every gotcha along the way, from the include-vs-select trap to pagination that quietly reshuffles itself when you forget orderBy.
A chat screen with a typing indicator and a fast scroll was enough to make an old-architecture React Native app visibly stutter. The cause wasn't my code, it was JSON crossing a bridge sixty times a second. Here's what the new JSI-based architecture actually replaces, and why the old one had to go.
I stashed a setInterval handle in useState and watched a simple countdown widget stutter every tick. The fix is one hook swap, but understanding why it works is the actual lesson: which of your values need to repaint the screen, and which are just bookkeeping.
The first real fetch call I wrote against my own backend died in the console with a wall of red about CORS policy. Here's what an origin actually is, why browsers block it by default, and every real way CORS bites you afterward, in the order you'll actually hit them: preflight, credentials, wildcards, and the errors that follow.
I pushed a new build of my portfolio, tested it on my laptop over wifi, and it felt instant. Then I ran it through PageSpeed Insights on a throttled connection and watched the largest-contentful-paint number come back embarrassing. This is the walkthrough of fixing FCP, LCP, INP and CLS across a FastAPI backend and Next.js/Astro frontends, with the code that actually moved each number.
I spent longer than I'd like to admit trying to bump a counter inside a function before I actually understood what a Python variable is. Here's the mental model that made it click, and the three ways to get the behavior you actually want.
I was building a tiny combination-lock simulator where the number of wheels was a setting, not a constant, and hit the wall everyone hits eventually: you can't write for i, for j, for k when you don't know how many for's you need. Recursion, itertools.product, and a manual odometer, with real tradeoffs and the one thing you should never do instead.
I tried to test one scraper module in isolation and got 'attempted relative import with no known parent package' for my trouble. Here's what that error actually means, how Python's import system really works, and how to structure a project so you stop hitting it.
I was grinding linked-list problems for interview prep and got sick of writing ll.get_length() and ll.contains(x) by hand for every variant. So I built one general-purpose LinkedList and went through the dunder methods one at a time until list(my_ll), sum(my_ll) and for x in my_ll just worked. Here's every method, in the order I actually hit them, including the one (__del__) that I implemented wrong on the first try.
I built a plugin loader that was supposed to auto-register every class dropped in a folder, reached for a metaclass instead of a decorator because it felt like the 'proper' way, and then couldn't explain why it worked. So I went and figured out what actually happens when Python hits a class statement, and what type really is underneath it all.
A rebase gone wrong taught me that git never really deletes anything, it just moves pointers around. Here's what blobs, trees, commits, refs, merges and rebases actually are under the hood.
A scroll-linked animation once pegged a phone's CPU at 100% and dropped it to 12fps. The bug was one line reading offsetHeight inside a loop that also wrote style.top. Here's the full pipeline that made that line so expensive, from HTML bytes to painted pixels.
A client's marketing site scored terribly on Lighthouse and painted a blank screen for three seconds. It was a plain React SPA with no server rendering at all. That one bug tour is basically the whole history of web rendering, so here it is end to end: MPA, SPA, SSR, RSC, and islands.