Sign in

arv

@arv.bsky.social
110 followers 154 following 38 posts

Partner at rocicorp.dev, building zero.rocicorp.dev Ex V8, Chrome, TC39, Gmail, Gears

PostsRepliesMedia
arv @arv.bsky.social · 20h
And here is the Hermes graph. Note that the actual numbers are not representative since this was run on iOS simulator on a MacBook M5. In reality old Android phones are at least 5x slower.
Line chart: sorting random doubles on Hermes (React Native 0.86). Float64Array.sort() is 3.3–3.5× faster than Array.sort((a, b) => a - b) at every size from 100 to 1M elements, 199 vs 681 ns per element at 1M.
000
arv @arv.bsky.social · 05/10/2026
Any reason to not use TimSort for TypedArray? (who should I cc?)
100
arv @arv.bsky.social · 05/10/2026
`Array.prototype.sort` was badly designed to start with. Sort by string by default. Seriously Brendan.
230
arv @arv.bsky.social · 05/10/2026
This might seem like it so fast that it does not matter... but... Hermes.
100
arv @arv.bsky.social · 05/10/2026
@hashseed.bsky.social @ajklein.bsky.social
100
arv @arv.bsky.social · 05/10/2026
Also, unfortunately `TypeArray.prototype.sort` does not use TimSort... Not sure why???
010
arv @arv.bsky.social · 05/10/2026
TIL: Prefer `Float64Array` over `Array<number>` when you care about sorting. Sorting the former is a lot faster.
Graph comparing Float64Array sort with Array sort. Float64Array sort is about 4.5x faster
4191
arv @arv.bsky.social · 01/10/2026
/subscribe
000
arv @arv.bsky.social · 22/09/2026
It must have been hard to be in that audience without starting to laugh.
150
arv @arv.bsky.social · 22/09/2026
Needed some minor tweaks to allow strings too www.typescriptlang.org/play/#code/C...
typescriptlang.org
TS Playground - An online editor for exploring TypeScript and JavaScript
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.
011
arv @arv.bsky.social · 22/09/2026
Crazy typescript
type IsValidIndexLiteral<H> = H extends number
  ? `${H}` extends `-${string}` | `${string}.${string}` | `${string}e-${string}`
    ? false
    : true
  : false;


type A = IsValidIndexLiteral<1> 
type B = IsValidIndexLiteral<-1> 
type C = IsValidIndexLiteral<0.5> 
type D = IsValidIndexLiteral<123e-45>
110
arv @arv.bsky.social · 15/09/2026
Testing rindle again
000
arv @arv.bsky.social · 15/09/2026
Comes with an object allocation and a method call.
000
Reposted by arv
Jeremy Keith @adactio.com · 14/09/2026
Journal: Stalling installing Trying to get past Webkit’s blockage at the W3C. 🔗https://adactio.com/journal/22757
75713
arv @arv.bsky.social · 19/08/2026
I miss you Emil.
020
Reposted by arv
Rob Palmer @robpalmer.bsky.social · 10/06/2026
Jarred Sumner experiments with multi-threaded JavaScript 🧪 Filip Pizlo's "wild thought experiment" from 2017 is brought to life 🔥 Unlike existing approaches (workers, SharedArrayBuffer) this shares the JS heap. It means threads directly access the same JS objects. github.com/oven-sh/WebK...
The API

A thread is a function call on another core:

const t = new Thread((a, b) => {
  return expensive(a, b);
}, x, y);

t.join();          // blocks, returns fn's value or rethrows its exception
await t.asyncJoin(); // same, as a promise; never blocks
Thread.current;    // your Thread
t.id;              // engine thread id, main is 0
5435
Reposted by arv
Zero @zero.rocicorp.dev · 01/05/2026
1️⃣ 4️⃣ Zero 1.4 available * Improved query analyzer * Periodic auto reset for disaster recovery * 7x faster index creation * 2x faster backfills * Up to ~50% faster hydration * ~20 misc fixes * A cute ad for Cloud Zero No breaking changes. You should update soon. zero.rocicorp.dev/docs/release...
zero.rocicorp.dev
Zero 1.4
Performance and Reliability Improvements
061
Reposted by arv
Wojciech Maj @wojtekmaj.pl · 09/04/2026
I wanted an app that would let me see my remaining Codex and GitHub Copilot usage quotas as easily as I can see my remaining battery life. Prompted Codex, went to the gym, came back to this. Nice.
3162
Reposted by arv
Alex Russell @infrequently.org · 09/04/2026
Amazing post. I hope web devs understand this as downstream of antitrust pressure on Apple re: iOS & other browsers. @open-web-advocacy.org won the headcount Apple poured in since '20 because it allowed them to claim engagement w/o threatening the app store: blog.gitbutler.com/the-great-cs...
blog.gitbutler.com
The Great CSS Expansion
CSS now does what Floating UI, GSAP ScrollTrigger, Framer Motion, and react-select used to require JavaScript for. Here is exactly how much that saves, why these libraries were painful beyond their size, and what the platform still hasn't figured out.
1467
arv @arv.bsky.social · 07/04/2026
This always makes me sad. Fixing it requires that I update a bunch of upstream dependencies which I'm unlikely to do.
000
Reposted by arv
Stefan Judis @stefanjudis.com · 07/04/2026
A nine-year-old CSS spec issue has been resolved! 🎉 `position: sticky` now tracks the nearest scrolling container per axis. Want to stick an element to a scroll container AND the document? Soon possible. Chromium only for now, but great to see this land! www.bram.us/2026...
The Change — A recent change to CSS fixes this issue: position: sticky can now track the nearest scrolling container per axis.
2372
Reposted by arv
Stefan Judis @stefanjudis.com · 04/04/2026
This is absolutely beautiful and very well done. > Nothing you own is finished. Everything exists in a state of permanent incompletion, permanently needing. www.terrygodier....
A detailed digital illustration of a Casio F-91W digital watch on a dark background, showing the time 09:25:38 on Saturday the 4th. The watch features the classic black resin case and band with blue accent lines and the iconic WR (water resist) badge.
516370
arv @arv.bsky.social · 02/04/2026
However, if the string is a `SeqTwoByteString` and large it has to do a linear scan which of course is not so fast. Anyone have any tricks up their sleeves to detect if a string is a a two byte string in O(1)?
000
arv @arv.bsky.social · 02/04/2026
This RegExp is O(1) if the string is `SeqOneByteString` 🎉 ```js const isOneByte = !/[^\x00-\xff]/.test(str); ```
100
arv @arv.bsky.social · 25/03/2026
We're officially one dot oh now 🎉
140
Reposted by arv
Aaron Boodman @aaronboodman.com · 25/03/2026
Zero to 1.0 After two years of work, 50+ releases, thousands of commits, and hundreds of bugfixes, we are officially declaring Zero stable and ready for production workloads. zero.rocicorp.dev/docs/release...
zero.rocicorp.dev
Zero 1.0
First Stable Release
69715
arv @arv.bsky.social · 22/03/2026
@diabrowser.com bsky.app/profile/orpa... Opensearch please.
010
arv @arv.bsky.social · 20/03/2026
@vite.dev 8 I need to figure this one out...
000
arv @arv.bsky.social · 17/03/2026
This will greatly simplify our tests! ♥️
011
Reposted by arv
Younes Jaaidi @younesjd.dev · 17/03/2026
Debounces, delays, intervals... they either break your tests or slow them down. ⏩ Since @vitest.dev 4.1.0, you can now "fast-forward" time in your tests with `nextTimerAsync` tick mode. ❤️ credit goes to Andrew Scott (@angular.dev team) 🧑‍🍳 recipe → cookbook.marmicode.io/angular/test...
Slide comparing manual vs automatic handling of fake timers in a Vitest test.

Top-left code shows a test using fake timers manually:
	•	vi.runAllTimersAsync() to flush framework internals (e.g. Angular sync)
	•	vi.advanceTimersByTimeAsync(300) to handle debounce
Annotations explain both steps are required and can slow tests.

Bottom-left note explains that since Vitest 4.1.0, a “fast-forward” mode can automatically advance timers.

Right side shows simplified code using:
	•	vi.setTimerTickMode('nextTimerAsync')
No manual timer flushing or advancing is needed.

Footer includes author handle (@yjaaidi / @younesjd.dev) and a link to marmicode testing content.
3375
arv @arv.bsky.social · 16/03/2026
Discord conversation where someone notes React's package size (171.6 kB) looks tiny compared to Vue (2.5 MB), then a reply points out that's because react-dom (7.3 MB) wasn't included — making the sizes more comparable.
001
arv @arv.bsky.social · 16/03/2026
I voted 🇫🇷🗽
010
arv @arv.bsky.social · 16/03/2026
❤️
010
arv @arv.bsky.social · 11/03/2026
Interesting. One "clean" API might be to export all the functions. It would require using `.call(this, ...)`. Not the most ergonomic but very standard compliant. You would also need a way to create the "native" instance object.
010
arv @arv.bsky.social · 24/02/2026
Another master piece by @nolanlawson.com nolanlawson.com/2026/02/18/y... The passion of becoming a programmer really resonates with me. Thank you Nolan.
nolanlawson.com
You had a story
You had a story you used to tell yourself about how you got here in life. You’d share the story with others. Maybe you’d be at a party, and someone would ask what you do, and you’…
000
Reposted by arv
{🧪} +paoloricciuti.svelte @paolo.ricciuti.me · 22/01/2026
Man customizable select is sooo cool! Modern CSS is another level of powerful. svelte.dev/playground/8...
3496
arv @arv.bsky.social · 16/11/2025
The shadow of the sun is long indeed.
010
arv @arv.bsky.social · 14/10/2025
I'm really sold on fine grained reactivity - all the way from your database (zero.rocicorp.dev) to your UI (zero.rocicorp.dev/docs/solidjs)
zero.rocicorp.dev
Zero Docs
The official documentation for Zero by Rocicorp.
140
arv @arv.bsky.social · 14/10/2025
One thing that I'm a bit unclear on at this point is `update`. Based on the presentation all it did was rerender but what does it mean to rerender? What about DOM state (selection, scroll position)? What about JS state?
100
arv @arv.bsky.social · 14/10/2025
I'm also intrigued by the higher level events they designed. It looks really nice. We did this in Closure Library but we didn't get it right and in the end it wasn't used much. Here is our "action" event. github.com/google/closu...
github.com
110
arv @arv.bsky.social · 14/10/2025
I really like where @remix.run is going in v3. So much less magic and using the platform for its strength. Disclaimer: I designed and implemented ES6, custom elements, shadow dom, some "modern" dom apis (classList, template element, append, remove...), making EventTarget concrete etc...
270
arv @arv.bsky.social · 19/08/2025
4 years ago today you passed away. I wish I could turn back time and come and rescue you.
020
arv @arv.bsky.social · 29/05/2025
Not exactly the same but @igalia.com has an RSS feed for keeping track of new features in browsers. bcd-watch.igalia.com
bcd-watch.igalia.com
BCD Watch
020
Reposted by arv
Local-First Conf @localfirstconf.com · 27/05/2025
ZVM - Zero View Management @aaronboodman.com introduced the incredible tech that enables the zerosync.dev sync engine to almost instantaneously update realtime queries.
051
Reposted by arv
Angelos Arnis 🏴 @arn.is · 30/04/2025
A story in two parts
Tony Blair saying the climate plan based on phasing out fossil fuels is doomed to fail Tony Blair being lobbyist for Saudi oil
152
Reposted by arv
George Takei @georgetakei.bsky.social · 17/03/2025
I know this first hand. When I was a child, my entire community was branded as spies and sabateurs, justifying our internment inside barbed wire camps for years without due process, trial or charge.
X post by Timothy Snyder (@TimothyD
...),  posted 6 hours ago. The post reads, "The people Attorney General Bondi is calling 'terrorists' have had no trial and no chance to defend them. We do not know they are. Ignoring the Constitution does not make us safe. It puts us all in peril."
9916020717004
Reposted by arv
Aaron Boodman @aaronboodman.com · 05/03/2025
Had a really fun time talking to @thdxr.com and Adam about @zero.rocicorp.dev, Replicache, and how (and why!?) I came to spend the majority of my career working on sync. Hear the Rocicorp / Aaron backstory here: tomorrow.fm/126
tomorrow.fm
How About Tomorrow? | Aaron Boodman on Building Zero, Local-First, and Living in Hawaii
Aaron Boodman joins us to chat about his tech journey from building Greasemonkey, working on Google Chrome, being obsessed with sync on the web, Replicache, to his new project, Zero.Links:The Expan...
0101
Reposted by arv
Xuan Huang (黄玄) @hux.pro · 22/02/2025
Every now and then, I revisit @infrequently.org’s blog, and it’s always a moment of clarity. Despite his clashes with JS fwks, notably React, which I’ve been deeply involved with, he remains one of the most influential figures in how I understand the web and platform economics for nearly a decade.
052
arv @arv.bsky.social · 05/03/2025
Explicit Resource Management is now shipping in Chromium 134 🎉
{
    using d = {
        [Symbol.dispose]() {
            console.log('end');
        }
    };
    console.log('start');
}
start
end
010
Reposted by arv
ECMAScript.News @ecmascript.news · 03/03/2025
Turbocharging V8 with mutable heap numbers v8.dev/blog/mutable... #ECMAScript #JavaScript
v8.dev
Turbocharging V8 with mutable heap numbers · V8
Adding mutable heap numbers to script context
012