Since some people asked, this is how I did the Chromatic Aberration hack.
Po Co retweeted
STOP USING HDMI
- what version is it??? Can’t tell
- 1.0? 1080@60hz
- 1.4? 4k@30hz
- 2.0? 4k@60hz
- <2.1? No variable refresh rate
- did the manufacturer follow the spec? Are you getting scammed?
- IMAGINE THROTTLING YOUR FPS BECAUSE OF A GOOFY ASS CABLE
- you wouldn’t put bicycle wheels on a Ferrari????
- insane licensing: “high speed”?? “Premium high speed”???? “Ultra high speed”???????
- are you plugging it into the motherboard or the GPU???
- throw them all in the trash
Po Co retweeted
zig is an opinionated language
it can straight up not compile your code just because andrew kelly didnt like the shirt you put on this morning
Po Co retweeted
Replying to @ImpactMediaFR
Il faut attraper la veste des fabriquants plutôt. Comment tu peux vendre un fauteuil non motorisé a 5000€ ?
Po Co retweeted
Personally, I prefer to increase the spacing for each successive indent according to the Fibbonaci sequence:
Po Co retweeted
Replying to @IroncladDev
Please no, .gitignore is for build products, if you need to ignore your files use .git/info/excludes
Po Co retweeted
If only there were "batteries-included" frameworks in nearly all languages....
The only difficulty is that you have to stop following the hype and use real stuff.
The reality of building web apps in 2025 is that it's a bit like assembling IKEA furniture. There's no "full-stack" product with batteries included, you have to piece together and configure many individual services:
- frontend / backend (e.g. React, Next.js, APIs)
- hosting (cdn, https, domains, autoscaling)
- database
- authentication (custom, social logins)
- blob storage (file uploads, urls, cdn-backed)
- email
- payments
- background jobs
- analytics
- monitoring
- dev tools (CI/CD, staging)
- secrets
- ...
I'm relatively new to modern web dev and find the above a bit overwhelming, e.g. I'm embarrassed to share it took me ~3 hours the other day to create and configure a supabase with a vercel app and resolve a few errors. The second you stray just slightly from the "getting started" tutorial in the docs you're suddenly in the wilderness. It's not even code, it's... configurations, plumbing, orchestration, workflows, best practices. A lot of glory will go to whoever figures out how to make it accessible and "just work" out of the box, for both humans and, increasingly and especially, AIs.
Po Co retweeted
And people still don’t see any issue with that.
They keep praising frameworks that don’t even know what a cookie is without another library.
Trust me, try @adonisframework and you will not look back.
Po Co retweeted
After some hacking on van.js, I present to you "Minimum Viable JSX", an embedded DSL for creating DOM elements in a *tiny* amount of JS, <1kb uncompressed.
Po Co retweeted
Answer: Adding square braces around the keywords on both sides of `extends` disables distributivity.
Example:
![// When conditinoal types act on a generic type, they become distributive.
// So, given this type:
type ToArray<Type> = Type extends any ? Type[] : never;
// we get this:
type StrArrOrNumArr = ToArray<string | number>;
// ^ string[] | number[]
// Adding square braces around the keywords on both sides of `extends` disables distributivity
type ToArrayNonDist<Type> = [Type] extends [any] ? Type[] : never;
// 'ArrOfStrOrNum' is no longer a union. It's an array of string OR number.
type ArrOfStrOrNum = ToArrayNonDist<string | number>;
// ^ (string | number)[]](https://pbs.twimg.com/media/GhmV7n3XMAAhjJf.jpg?name=small&format=webp)
ALT // When conditinoal types act on a generic type, they become distributive. // So, given this type: type ToArray<Type> = Type extends any ? Type[] : never; // we get this: type StrArrOrNumArr = ToArray<string | number>; // ^ string[] | number[] // Adding square braces around the keywords on both sides of `extends` disables distributivity type ToArrayNonDist<Type> = [Type] extends [any] ? Type[] : never; // 'ArrOfStrOrNum' is no longer a union. It's an array of string OR number. type ArrOfStrOrNum = ToArrayNonDist<string | number>; // ^ (string | number)[]
Po Co retweeted
A rule that helps avoid wasting time arguing:
Hitchen's Razor: "What can be asserted without evidence can also be dismissed without evidence".
Po Co retweeted
Replying to @michaeldyrynda
Actually Laravel for JS exists, you're just not aware of it.
It's called @adonisframework, and it work like you would expect, like Laravel, everything builtin/supported.
I think the issue is just JS devs like to suffer, some sort of stockholm syndrome with express and shit 😂
Po Co retweeted
Funny statement since @adonisframework, the closest Laravel for JS, is nearly 10 years old.
Po Co retweeted
.@vite_js is the default asset bundler in every AdonisJS app.
Not only does it bundle your frontend assets, but its API also enables server-side rendering of your @inertiajs codebase, making your app even more powerful.
We're excited to be featured on their website today! 🙌
Po Co retweeted
Way too many folks are sleeping on the 'using' keyword.
Here's an awesome use case: cleaning up temporary directories.


























