for (let i = 0; i < pixelCount; i++) {
const pixel = data32[i]!;
// unpack RGBA from Uint32Array (little-endian)
const a = pixel >>> 24;
if (a <= contrastThreshold) continue;
const r = pixel & 0xff;
const g = (pixel >>> 8) & 0xff;
const b = (pixel >>> 16) & 0xff;
// squared euclidean distance from white
const distSq = (r - 255) ** 2 + (g - 255) ** 2 + (b - 255) ** 2;
if (distSq < contrastDistanceSq) continue;
// recover x,y from flat index
const x = i % sw;
const y = (i - x) / sw;
// accumulate weighted visual center
totalWeight += distSq * a;
weightedX += (x + 0.5) * distSq * a;
weightedY += (y + 0.5) * distSq * a;
i collapsed it into 1 pass over a Uint32Array, downsampled to ~45x45, reused canvases at module level, and added caching so changing baseSize/scaleFactor doesnβt re-scan
content detection: 1.4ms -> 37us per logo (38x)
full mount: 29ms -> 828us for 20 logos (35x)
github.com/sanity-labs/...
07.02.2026 16:04
π 2
π 0
π¬ 1
π 0
it was doing 3 full pixel scans per logo (bbox, visual center, density). each scan made a new canvas, drew full-res, then walked every pixel. 400x400 is 160k pixels, 3x
07.02.2026 16:04
π 2
π 0
π¬ 1
π 0
got asked why react-logo-soup doesnβt just precompute visual weights server-side. fair π§΅
07.02.2026 16:04
π 4
π 0
π¬ 1
π 1
fun css tip from yesterday's react-logo-soup post:
if you render logos as inline-block, the browser treats them like words. which means css text-wrap: balance just works. it distributes logos evenly across lines instead of leaving one sad orphan on the last row
06.02.2026 15:27
π 6
π 1
π¬ 0
π 0
Hey! I wrote something πΌοΈ Give it a read!
05.02.2026 18:54
π 4
π 1
π¬ 0
π 0
Code block with the following code:
```groq
export const headingsProjection = \`
_key,
"title": array::join(children[].text, ""),
"level": select(
style == "h2" => 2,
style == "h3" => 3
)
\`
```
i love groq sm <3
06.05.2025 09:43
π 2
π 0
π¬ 0
π 0
@zed.dev can i get access to your agent beta to test this out in Zed?
11.04.2025 08:41
π 0
π 0
π¬ 0
π 0
Here it is in real-time (and Dark Mode) π₯° Coming to a @sanity.io UI near you π
28.02.2025 14:47
π 7
π 3
π¬ 2
π 0
A Git commit message with the text "feat: remove next/image usage"
how to become a millionaire
25.02.2025 09:56
π 0
π 0
π¬ 0
π 0
Zed is beyond goated
08.02.2025 11:14
π 0
π 0
π¬ 0
π 0
npm create sanity@latest -- --template nuotsu/sanitypress
Install SanityPress with the Sanity CLI!
23.01.2025 05:09
π 7
π 2
π¬ 1
π 0
Beautiful!! π«Ά
11.01.2025 20:57
π 1
π 0
π¬ 0
π 0
02.01.2025 08:29
π 2
π 0
π¬ 0
π 0
You can now init a new Sanity project with a remote template!
Here are some to get you started:
$ npm create sanity@latest -- --template
sanity-io/sanity-template-astro-clean
sanity-io/sanity-template-nextjs-clean
sanity-io/sanity-template-sveltekit-clean
sanity-io/sanity-template-remix-clean
19.12.2024 18:01
π 20
π 9
π¬ 0
π 1
Really impressed by this stack!
Real-time live previews with localized path namesβso cool that this works seamlessly.
@nextjs.org
@sanity.io
next-intl next-intl-docs.vercel.app
10.12.2024 11:03
π 5
π 3
π¬ 1
π 0
Bibbidi-Bobbidi-Boo
06.12.2024 09:32
π 1
π 0
π¬ 0
π 0
My theory is that Black Week was invented by SREs to load balance human spendingβturns out spreading chaos across the week is more efficient than handling a single peak day
29.11.2024 12:09
π 3
π 0
π¬ 0
π 0
idk if arc will even get new features anymore, but a @vercel.com integration is all i want for xmas
27.11.2024 14:10
π 0
π 0
π¬ 0
π 0
@hamburger.cloud you are in my thoughts every day as I leave the office.
22.11.2024 16:24
π 2
π 1
π¬ 2
π 0
These are just bad code ligatures tho. Fira's is better imo
16.11.2024 12:28
π 0
π 0
π¬ 1
π 0
β€οΈβ€οΈβ€οΈ
12.11.2024 17:47
π 3
π 0
π¬ 0
π 0
Help us ship more quality bugs π«Ά
11.11.2024 15:13
π 2
π 0
π¬ 0
π 0