My new album ‘Of The Earth’ is released today on Shabaka Records. This music is personal and has lived in my headphones for so long it’s great to see it out in the world. It’s been this whole process of learning, experimenting, questioning, reconciling opposing answers and listening for the internal voices that speak when no one else is around. And in the end I’m left knowing no certainties about who I am and what the future holds. All I can vouch for is the fact that potential is limitless in the face of willpower and we are much more than the labels we attach to ourselves.
https://t.co/X740LrBOIu
we just released 𝚙𝚘𝚜𝚝𝚐𝚛𝚎𝚜-𝚋����𝚜𝚝-𝚙𝚛𝚊𝚌𝚝𝚒𝚌𝚎𝚜, inspired by Vercel's 𝚛𝚎𝚊𝚌𝚝-𝚋𝚎𝚜𝚝-𝚙𝚛𝚊𝚌𝚝𝚒𝚌𝚎𝚜
these are the Agent Skills that we use on the supabase platform - including performance, security, & schema design
details ↓
https://t.co/7GOYpuin6e
Today we shipped Bun support to Vercel Functions as a beta, delivering a significant performance boost for Next.js applications – @theo bench shows around ~28% improvement.
Give it a try by adding bunVersion to your vercel.json. In the coming days, we’ll also bring Bun.serve() support. @tomlienard and I implemented the PoC today.
The best is yet to come — @jarredsumner & team cooked. We know we’ll make it much better soon.
https://t.co/PZMuiVzi9F
5 años después de asociarnos con @dncandia, el momento llegó:
@RebillTeam ya puede operar pagos domésticos en Argentina.
Pasamos de depender de terceros a tener infraestructura propia.
Ahora también acompañamos a empresas locales, con un producto world-class.
Hablamos?
@StatisticsFTW@benapatton@dillon_mulroy@Chiffa117 really nice, didn’t know about pico. Have you thought about the possibility of persisting the intermediate steps? So if you run the compiler in non watch mode it can reuse previous work
[1/3 (probably)]:
A typical batch compiler may have the following high level architecture:
- read all the files
- parse all the files
- validate everything
- generate all the artifacts
If any stage fails, we throw away everything, and the next time we run it, we start from scratch and don't reuse any saved state.
This has the advantage of being very simple to write and easy to reason about.
An incremental compiler (i.e. one in watch mode) tries to reuse as much as it can. That's not very useful if our compiler is structured as above, since the first step involves all the files, so any change will invalidate the results of the first step, invalidating everything afterward. Womp womp. We effectively can't actually reuse any values.
So, instead, we might refactor it to something like:
- for each file
- read, parse
- validate everything
- generate all the artifacts
Now we're getting somewhere! You modify one file, you can at least reuse the parsed AST for every unchanged file. The "validate everything" step is still redone on every compilation, though, and it's probably the expensive part.
An even better architecture (EBA) would try to push the "validate everything" as far back as possible, e.g. structuring it more like:
- for each artifact we need to generate:
- validate what we need, meaning we
- parse and read what we need
Now, with this architecture, we can reuse even more intermediate results.
But now we have a problem: how do we know what we can reuse and what we can't? If the file containing `extend type User { name: String }` is changed, does a fragment on Query need to be revalidated? Maybe! It depends, does it access User and does it access name?
What we really don't want to do is try to manually track that invalidation! That's error prone to begin with, and hard to maintain as we iterate on the compiler.