Advertisement Β· 728 Γ— 90

Posts by Matt Rossman

Made me chuckle πŸ˜† hope your throat recovers, I was nursing a cold with supasoup this week too

6 months ago 1 0 0 0
A silver MacBook Pro with a black skin and green Supabase logo adhered, its lid lifted, positioned atop the original laptop box relabeled with masking tape as "SupaBook Pro".

A silver MacBook Pro with a black skin and green Supabase logo adhered, its lid lifted, positioned atop the original laptop box relabeled with masking tape as "SupaBook Pro".

Supabase laptop looking fresh

6 months ago 3 0 1 0
Post image

Supabase Select brings together the top builders in the industry

Join Guillermo Rauch, CEO and Founder of @vercel.com speaking in Track 1

Apply today: select.supabase.com

7 months ago 7 1 1 0
Matt stands in front of a wall of greenery wearing a black hoodie with Supabase branding atop a green T-shirt, and a black ball cap with the Supabase logo.

Matt stands in front of a wall of greenery wearing a black hoodie with Supabase branding atop a green T-shirt, and a black ball cap with the Supabase logo.

Delighted to share that I’ve joined @supabase.com to work on AI tools!

Open source has taught me so much, so it’s a privilege to now contribute full-time in this space. Excited to help make this excellent developer platform even better!

7 months ago 5 0 0 0
Post image

We're really proud to show off the final design for Pebble Time 2*! It's quite a bit sleeker and imo more awesome looking than the original design for Core Time 2 we showed off in March. I hope you like it!

7 months ago 357 48 59 12
#1615: Viverse’s WebXR Publishing Strategy with James C. Kane & β€œIn Tirol” Game – Voices of VR Podcast

My Voices of VR interview is out! I spoke to @kentbye.com at @awexr.com about my game, WebXR broadly, and publishing on @viverse.com. I'm a huge fan of this podcast b/c of Kent's journalistic objectivity and ethics, but also his genuine enthusiasm and deep experience

voicesofvr.com/1615-viverse...

8 months ago 13 6 0 0
let arr = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
console.log(arr.toBase64());
// 'SGVsbG8gV29ybGQ='
console.log(arr.toHex());
// '48656c6c6f20576f726c64'
let string = 'SGVsbG8gV29ybGQ=';
console.log(Uint8Array.fromBase64(string));
// Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100])

string = '48656c6c6f20576f726c64';
console.log(Uint8Array.fromHex(string));
// Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100])

let arr = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); console.log(arr.toBase64()); // 'SGVsbG8gV29ybGQ=' console.log(arr.toHex()); // '48656c6c6f20576f726c64' let string = 'SGVsbG8gV29ybGQ='; console.log(Uint8Array.fromBase64(string)); // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]) string = '48656c6c6f20576f726c64'; console.log(Uint8Array.fromHex(string)); // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100])

ECMAScript excitement πŸ˜‰

Congrats to @bakkot.com on advancing UInt8Array ↔️ Base64/Hex to Stage 4 at TC39 this week πŸŽ‰

UInt8Array.prototype.
toBase64
toHex

UInt8Array.
fromBase64
fromHex

It lets you convert directly between binary data and Base64/Hex strings πŸ‘

8 months ago 40 9 1 0
Preview
Create beautiful images of your code Turn your code into beautiful images. Choose from a range of syntax colors, hide or show the background, and toggle between a dark and light window.

Note to self for the generated image

8 months ago 1 0 0 0
Advertisement
Visual Effect - Interactive Effect Playground An interactive visualization tool for the Effect library that demonstrates how Effect operations execute over time with animated visual representations and synchronized sound effects.

Demo link from twitter for posterity

9 months ago 1 0 0 0

The sounds are excellent 🀌 @joshwcomeau.com would appreciate

9 months ago 1 0 1 0
Video

Visual Effects

9 months ago 7 2 2 2
Quicktime Color Management: why so many ISSUES?!
Quicktime Color Management: why so many ISSUES?! YouTube video by LE LABO DE JAY

Exporting video with correct colors from #DaVinciResolve is unexpectedly difficult... Something that looks great in editor looks maddeningly "off" in different viewers. I have a lot respect for creators who have mastered this!

www.youtube.com/watch?v=1Qln...

9 months ago 1 0 0 0
Preview
Quality is a trap It is a proxy phrase, often born of an inability or unwillingness to articulate other concerns.

I wrote about why I'm tired of reading about takes on quality. ericwbailey.website/published/qu...

9 months ago 50 14 6 2
Preview
GitHub - OlivierEstevez/astro-masonry: Zero-dependency responsive masonry layout component for Astro with minimal setup. Zero-dependency responsive masonry layout component for Astro with minimal setup. - OlivierEstevez/astro-masonry
9 months ago 0 0 0 0
Video

Updated my project template dashboard new.mattrossman.com to a more space-efficient masonry layout with the help of `astro-masonry`

9 months ago 0 0 1 0

Early builds of a rewritten SpotMenu (Spotify controls for Mac menu bar) are popping up in this thread, looking nice πŸ‘€

github.com/kmikiy/SpotM...

9 months ago 0 0 0 0
Advertisement
Preview
::part() - CSS | MDN The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.

TIL about ::part() for letting web component consumers more easily style elements within the shadow DOM

9 months ago 3 1 1 0
Local Voice Assistant

Local Voice Assistant

On device voice assistant running on my Mac Mini w/Ollama and Home Assistant: mattcool.tech/posts/home-a...

9 months ago 2 1 0 0
Preview
mattrossman/mcp-starter

An example to start from:

9 months ago 0 0 0 0
Video

The @vercel.com MCP adapter works with @val.town HTTP triggers (for streamable HTTP at least) meaning you can write and deploy MCP servers with TypeScript instantly, right in your browser!

9 months ago 5 1 1 0
Video

Spotted on the changelog for Deno Deploy EA...

Playgrounds!

- Create and edit playgrounds
- Multi-file playground support
- Playground templates and settings

docs.deno.com/deploy/early...

9 months ago 30 6 1 3
Preview
Matt Rossman on X: "I can't shake the feeling that React is missing a primitive for managing resources that affect first paint. This `useResource` hook is impossible to write while respecting strict mode. https://t.co/Cv1KHBCuUc" / X I can't shake the feeling that React is missing a primitive for managing resources that affect first paint. This `useResource` hook is impossible to write while respecting strict mode. https://t.co/Cv1KHBCuUc

I'd go a step further and say it should support a cleanup function too. State initializers can have side effects and solving this today adds re-renders. I want a hook that combines the strengths of useState (state management) and useEffect (dependencies, lifecycle management).

x.com/the_ross_man...

9 months ago 1 0 1 0
"""
Usage in browser console:

webRTCApp.smallWebRTCTransport.sendMessage({
  type: "user_content",
  content: "What's the weather in SF?"
})
"""

@transport.event_handler("on_app_message")
async def on_app_message(transport, message: dict):
    match message:
        case {"type": "user_content", "content": content}:
            await task.queue_frames(
                [
                    LLMMessagesAppendFrame([{"role": "user", "content": content}]),
                    context_aggregator.user().get_context_frame(),
                ]
            )

""" Usage in browser console: webRTCApp.smallWebRTCTransport.sendMessage({ type: "user_content", content: "What's the weather in SF?" }) """ @transport.event_handler("on_app_message") async def on_app_message(transport, message: dict): match message: case {"type": "user_content", "content": content}: await task.queue_frames( [ LLMMessagesAppendFrame([{"role": "user", "content": content}]), context_aggregator.user().get_context_frame(), ] )

When testing @pipecat.bsky.social examples with their prebuilt UI, you can manually submit user messages (or trigger other behavior of your choice) through the browser console via app messages by including a handler like this.

9 months ago 0 0 1 0
Preview
Cost of running a thin client home server

I use a $35 HP T620 Thin Client as my home server. I measured its energy usage over the past couple of months to assess how much it costs me to run a lightweight always-on server with #HomeAssistant and media management software (around $0.08/day).

9 months ago 0 0 0 0
Preview
Naive promise interruption

Sometimes I want to interrupt an async function that doesn't support abort signals. In situations without side-effects, here's a wrapper to abort a promise and lazily discard its result. I generally prefer safer interruption patterns (as in #Effect-TS) but it's handy in a pinch.

9 months ago 0 0 0 0
Balatro Calculator Calculate the score of any Balatro hand

A helpful calculator for learning optimal synergies in #Balatro

efhiii.github.io/balatro-calc...

10 months ago 0 0 0 0
Advertisement

What camera / lens have you been using for these cat pics? They're so creamy!

10 months ago 0 0 1 0

I like to put `ignore/` in .gitignore for most projects I work on.

When I want to create an untracked file (e.g. private notes, large static asset for dev) I can toss it in an `ignore/` folder anywhere. Wish something like this came in more starter templates! #git

10 months ago 1 0 0 0

I was going nuts trying to figure out why Cloudflare logs for my MCP server were showing requests every 5 minutes from my location. Turns out Claude Desktop was the culprit, even though I closed the app and removed the MCP server config it left an `mcp-remote` process running in the background πŸ™ƒ

10 months ago 2 0 0 0