Advertisement · 728 × 90

Posts by Rostislav Melkumyan

Post image
1 week ago 2 0 0 0
Preview
Generic directives/plugins syntax This is a proposal for a generic syntax to accommodate custom directives/plugins, which is as simple and markdown-like as possible while still accommodating a lot of use cases. While not enabling all ...

Nice! But how different is this from markdown directives? talk.commonmark.org/t/generic-di...

1 week ago 0 0 0 0
Post image

react-logo-soup is now @sanity-labs/logo-soup 🪅 logo-soup.sanity.dev/docs

1 month ago 1 0 0 0
Preview
Faster Canvas Pixel Manipulation with Typed Arrays – Mozilla Hacks - the Web developer blog Edit: See the section about Endiannes. Typed Arrays can significantly increase the pixel manipulation performance of your HTML5 2D canvas Web apps. This is of particular importance to developers ...

references for the curious:

Uint32Array trick from 2011, still holds up:
hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays/

canvas reuse patterns:
web.dev/articles/canvas-performance

willReadFrequently for getImageData:
schiener.io/2024-08-02/canvas-willreadfrequently

2 months ago 5 0 0 0
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;

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/...

2 months ago 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

2 months ago 2 0 1 0

got asked why react-logo-soup doesn’t just precompute visual weights server-side. fair 🧵

2 months ago 4 0 1 1
Post image

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

2 months ago 6 1 0 0
Advertisement

Hey! I wrote something 🖼️ Give it a read!

2 months ago 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
  )
\`
```

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

11 months ago 2 0 0 0

@zed.dev can i get access to your agent beta to test this out in Zed?

1 year ago 0 0 0 0
Preview
GitHub - sanity-io/sanity-mcp-server: Sanity MCP Server Sanity MCP Server. Contribute to sanity-io/sanity-mcp-server development by creating an account on GitHub.

been hearing that MCP's are the cool new thing - we got one github.com/sanity-io/sa... @sanity.io

1 year ago 2 0 1 0

Here it is in real-time (and Dark Mode) 🥰 Coming to a @sanity.io UI near you 🔜

1 year ago 7 3 2 0
A Git commit message with the text "feat: remove next/image usage"

A Git commit message with the text "feat: remove next/image usage"

how to become a millionaire

1 year ago 0 0 0 0

Zed is beyond goated

1 year ago 0 0 0 0
npm create sanity@latest -- --template nuotsu/sanitypress

npm create sanity@latest -- --template nuotsu/sanitypress

Install SanityPress with the Sanity CLI!

1 year ago 7 2 1 0
Advertisement

Beautiful!! 🫶

1 year ago 1 0 0 0
Post image
1 year ago 2 0 0 0
Video

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

1 year ago 20 9 0 1
Video

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

1 year ago 5 3 1 0
Video

Bibbidi-Bobbidi-Boo

1 year ago 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

1 year ago 3 0 0 0
Post image

idk if arc will even get new features anymore, but a @vercel.com integration is all i want for xmas

1 year ago 0 0 0 0
Advertisement
Post image

@hamburger.cloud you are in my thoughts every day as I leave the office.

1 year ago 2 1 2 0
Post image

These are just bad code ligatures tho. Fira's is better imo

1 year ago 0 0 1 0

❤️❤️❤️

1 year ago 3 0 0 0

Help us ship more quality bugs 🫶

1 year ago 2 0 0 0