TILens turns technical updates into a focused daily brief: official releases,
trusted reporting, and practitioner analysis, deduplicated and organized by topic.
JavaScript Prototypes, Inheritance, Classes, and Encapsulation When I first started learning JavaScript objects, prototype, Object.create(), class, inheritance, getters, setters, and private fields felt like completely…
Background I run a fleet of static sites that publish new content every day, mostly unattended. One of the house style rules is simple: no emoji anywhere in our own copy. That rule is impossible to hold by hand. A…
Live coding interviews have always made me anxious. Really anxious. For a long time, I assumed that was the main reason I struggled with them. But recently, I’ve come to the realisation that anxiety is an excuse. I am…
This week I packaged a small analyzer I had been testing as a Chrome extension: Copy Tell. It checks product descriptions and posts on Gumroad and Substack for the kind of stock phrasing an unedited AI writing tool…
Every group chat has that debate that never resolves: Messi or Ronaldo, Naruto or Goku, India or China. Someone always says "there's no real answer" and the thread dies. I got annoyed enough by this that I built a site…
For over a decade, building a video editing SaaS came with a massive hidden tax: cloud infrastructure costs. Every time a user applied a cinematic color grade, cropped a 4K frame, or stitched clips together, those raw…
Cropping a GIF should not make it bigger. Ours did, and not by a little: a 288-frame Foucault pendulum went from 1074 KB in to 4881 KB out, and a 70-frame gun turret went 116 KB to 1232 KB. That is 455% and 1062%. The…
A 4 GB video upload reaches 97%. Then the user's Wi-Fi drops for five seconds. If your upload implementation starts again from byte zero, you do not really have a large-file upload system. You have a very optimistic…
10 Website Mistakes That Are Killing Your Conversion Rate We build websites for small businesses. After auditing hundreds of them, we see the same problems everywhere. The good news: most fixes take under an hour. Here…
A few weeks ago I wrote about building a forum where rooms die when people stop talking. The other half of that idea: there are no profiles — the rooms you pass through draw a map that becomes your identity. So what…
Building App-like Experiences with Next.js 16.3 A hands-on look at how Next.js 16.3 helps apps feel fast and smooth, more like a single-page app, without losing the benefits of server rendering. Using four demo apps, it…
We recently ran Lighthouse audits across 40 top B2B SaaS web applications. Over 65% of them were failing Interaction to Next Paint (INP) and Largest Contentful Paint (LCP) targets. The culprit? Legacy onboarding and…
My GitHub profile stats card kept showing up as a broken image. If you use one of the popular public stats card services, you have probably seen it too: the little sad file icon where your beautiful stats used to be.…
Renaming a Python snake_case API response into camelCase for your JavaScript model, or turning a blog title into a URL slug, is exactly tedious enough to be annoying and exactly simple enough that firing up a script…
If/else statements - We all know and love them. While they are incredibly powerful, there comes a point where a long chain of conditions only makes your code look messy. Choosing between if/else and switch depends on…
Crumbongo started from a pretty stupid little question: What if the number of accessible cookies on the website you're visiting could become game currency? So I built it. Crumbongo is a tiny local Chrome game where you…
I wrote a minesweeper probability solver. You hand it a board, it hands back the probability that each unknown square is a mine, so that when logic runs out and you have to guess, you at least guess the cheapest square.…