brendan

@brendonovich.dev

building https://opencode.ai desktop at https://anoma.ly

hey! it's been a while. MacroGraph is getting a huge refresh in 2026: - multiplayer editing - client/server architecture, so projects can be ran headless - brand new UI lots more to share in the next couple of months, for now here's a pic :)

Bild

@cap.so is getting a whole suite of improvements over the next few days - redesigned editor - new 'start recording' flow - system audio capture then focusing on bug fixes & ux improvements for the next couple of weeks to make the app super smooth

A screenshot of Cap's new editor

if you haven't been following the work on @solidjs.com 2.0: - createAsync throws instead of returning undefined 🎉 - Resetting an ErrorBoundary refetches errored createAsyncs - Suspense only shows its fallback once. On re-suspend it shows stale data (no Transition!) + much more i'm very excited 😄

been working on my own version of the 'fail' crate for @cap.so that allows fail points to be toggled in real-time. all declared 'fail' (panic) and 'fail_err' (Err return) points are collected by the 'inventory' crate, and a global map that our debug window can modify toggles them on and off.

A screenshot with some code on top, Cap's debug window with a list of fail points on the left, and the main window on the right.
The code demonstrates the 'fail' macro, for declaring fail points that should panic, and 'fail_err', which are points that should return an Err containing some value.

reminder for future me: don’t use your app’s debug build to assess performance. prod build can be way faster even if you don’t expect it. @cap.so’s editor is super smooth in prod, but i always worry it’s not fast enough since i use the dev build 😂

recently discovered @zed.dev's workspace symbols search (⌘T) and it's my new favourite thing. no more remembering what file a type/function is in - just search for the symbol let the LSP do the work 😄

I'm happy to announce I'm officially joining cap.so as Founding Engineer! After helping with the new recorder + editor for a while, I'm excited to be a part of building the open source screen recording suite our users have been asking for.

A screenshot of Cap's recorder and editor windows on a default macOS background

cap.so performs all video rendering in Rust, but uses a web frontend via @tauri.app. how does the frontend receive frames from the backend? WebSockets! we've found local WebSockets can handle >500mb/s of throughput, allowing us to display 1080p@60fps video on a <canvas>!

An Excalidraw diagram titled 'Sending frames from Rust to webviews.
There are two boxes, one on the left that says 'Rust Backend. Axum Server. Sends frame data + width/height', and one on the right that says 'Web Frontend. <canvas>. drawn with putImageData'. There is an arrow pointing from 'Axum Server' to '<canvas>' labelled 'RGBA frames via WebSocket.