Sign in

Rostislav Melkumyan

@rosti.no
59 followers 88 following 24 posts

Breaking stuff at @sanity.io

PostsRepliesMedia
Rostislav Melkumyan @rosti.no · 06/09/2026
swe today in a nutshell
000
Rostislav Melkumyan @rosti.no · 10/04/2026
020
Rostislav Melkumyan @rosti.no · 08/04/2026
Nice! But how different is this from markdown directives? talk.commonmark.org/t/generic-di...
talk.commonmark.org
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 ...
000
Rostislav Melkumyan @rosti.no · 09/03/2026
react-logo-soup is now @sanity-labs/logo-soup 🪅 logo-soup.sanity.dev/docs
010
Rostislav Melkumyan @rosti.no · 07/02/2026
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
hacks.mozilla.org
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 ...
040
Rostislav Melkumyan @rosti.no · 07/02/2026
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/...
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;
120
Rostislav Melkumyan @rosti.no · 07/02/2026
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
120
Rostislav Melkumyan @rosti.no · 07/02/2026
got asked why react-logo-soup doesn’t just precompute visual weights server-side. fair 🧵
140
Rostislav Melkumyan @rosti.no · 06/02/2026
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
061
Rostislav Melkumyan @rosti.no · 05/02/2026
Hey! I wrote something 🖼️ Give it a read!
041
Rostislav Melkumyan @rosti.no · 06/05/2025
i love groq sm <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
  )
\`
```
020
Rostislav Melkumyan @rosti.no · 11/04/2025
@zed.dev can i get access to your agent beta to test this out in Zed?
000
Rostislav Melkumyan @rosti.no · 10/04/2025
been hearing that MCP's are the cool new thing - we got one github.com/sanity-io/sa... @sanity.io
github.com
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.
120
Reposted by Rostislav Melkumyan
Cody @codey.bsky.social · 28/02/2025
Here it is in real-time (and Dark Mode) 🥰 Coming to a @sanity.io UI near you 🔜
273
Rostislav Melkumyan @rosti.no · 25/02/2025
how to become a millionaire
A Git commit message with the text "feat: remove next/image usage"
000
Rostislav Melkumyan @rosti.no · 08/02/2025
Zed is beyond goated
000
Reposted by Rostislav Melkumyan
SanityPress @sanitypress.dev · 23/01/2025
Install SanityPress with the Sanity CLI!
npm create sanity@latest -- --template nuotsu/sanitypress
172
Rostislav Melkumyan @rosti.no · 11/01/2025
Beautiful!! 🫶
010
Rostislav Melkumyan @rosti.no · 02/01/2025
020
Rostislav Melkumyan @rosti.no · 19/12/2024
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
0209
Reposted by Rostislav Melkumyan
Frank Spin @frankspin.bsky.social · 10/12/2024
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
153
Rostislav Melkumyan @rosti.no · 06/12/2024
Bibbidi-Bobbidi-Boo
010
Rostislav Melkumyan @rosti.no · 29/11/2024
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
030
Rostislav Melkumyan @rosti.no · 27/11/2024
idk if arc will even get new features anymore, but a @vercel.com integration is all i want for xmas
000
Reposted by Rostislav Melkumyan
Eoin Falconer @eoin.no · 22/11/2024
@hamburger.cloud you are in my thoughts every day as I leave the office.
221
Rostislav Melkumyan @rosti.no · 16/11/2024
These are just bad code ligatures tho. Fira's is better imo
100
Rostislav Melkumyan @rosti.no · 12/11/2024
❤️❤️❤️
030
Rostislav Melkumyan @rosti.no · 11/11/2024
Help us ship more quality bugs 🫶
020