Yeah Charlie, stop firing strays
Yeah Charlie, stop firing strays
3.0 getting its own hiatus really makes it mature huh
phish 3.0 is now 17 years old, the same age as 1.0
cc: @cdirksen.bsky.social
back in my day we wrote code uphill both ways
One thing that I got wrong about marketing was: I felt if I published a narrative, I could do it just once.
It turns out you have to reinforce that messaging over and over and over again. This seems obvious in hindsight but I was naive.
Now I know why businesses are so annoying.
there's some cruel irony in NEXT.js not having middleware
but I wanna call next()
Yeah. It's amazing how much code, state, and side-effects you can shed when you just use the platform.
It's funny reading about all the problems people post about and you can see that by better designing your route tree and not being afraid of navigation, you can side-step those problems entirely.
what a fucking bone-headed mistake
I do have a half-written draft on this from the perspectives of loading states, but the bigger picture is even more interesting imo.
the only way I've found of communicating this is taking someones poorly written 'use client'-heavy code and pairing on moving it to a server component architecture.
this is probably worthy of a blog post. but it's so hard to explain because the old heads (php, ruby) just say "no duh - this is how we always did" not understanding compositional client components and the new heads just say "vercel is trying to sell servers, this is so complex"
Remember. Going to a URL in your browser IS a GET request
Everything is a link and a page? You just cut an incredible amount of complexity, bugs, and code. And you got some nice UI/UX wins too.
The big takeaway here is that people forget (or never learned) that the URL is the tier 1 state manager. @tanstack.com and @nuqs.dev are doing their best to re-educate the masses.
Rendering dynamic server components via searchparams feels like a cheat code, but itβs the way it was historically done
Depends on the scenario. Keep in mind that RSC is not a prescription: it is a toolbelt of functionality and you pick what best suits each use case. In general, most data can be fetched in a server component. If you need to handle some data on user action, create a form with a submit button and fire off a server action and useActionState. If it needs to be a GET for some reason (make sure that it does), create a route handler and use a fetching library (like tanstack query). Or thatβs probably a hint that it shouldnt be an API endpoint, but a new page (or a new searchParam). In that case use nuqs to add a searchParam with shallow: false (or a <Link with nuqsβ build URL) and render the relevant data in the new page as a server component. You have all the tools available to you. Itβs up to you to choose the right tool for the job. If this feels complicated, itβs because there are a number of different ideal ways to solve a number of varying problem sets. Just keep in mind, the value here is flexibility and autonomy. You elect what solve to use where most appropriate.
Data fetching in RSCβ¦
I'm sorry he has to see the wizards play basketball, but KD is incredible. True hooper
will do!
you guys could implement something I've long wanted.
create a unified endpoint for pnpm update-interactive that takes a LIST of packages, rather than fetching individually. if you're on bad internet this takes _forever_. it could be 100x more performant with one request.
and here's evidence its synced via icloud (only 1 key because the other is on the secure enclave, not synced)
here's a demo of my secure enclave/icloud sync plc rotation key manager
This posts via PDS session, not keys. But still nice to test
the biggest piece of undiscussed tension in my family is that every day one of us solves the wordle on our shared NYT account and we never talk about it
you can install this via
$ brew tap switz/tap && brew install switz/tap/plc-touch && plc-touch
but keep in mind its super under-baked and needs a lot of work to improve the ux. its buggy. no promises.
you're trusting my binary - read the code and build it yourself if you'd like. PRs are welcome
hardware keys are locked to your device, but you lose them if you lose the device. in theory you could create multiple of these across a handful of devices.
if you trust icloud though, you can create a software-based key and that'll be synced.
by setting up a higher priority key, you ensure you'll always have the highest priority control over the identity should anything happen to it.
the major risk in atproto is that your PDS by default owns your keys (or at least in blueskys case).
this is good for ux, but has bigger ramifications especially as atproto grows wider.
built an atproto terminal ui for setting up alternative plc rotation keys. there are two types of keys.
hardware-based: no sync
software-based: synced via icloud
is anyone interested in this? I could package it up and release it, though it needs a lot of UX work.
tangled.org/saewitz.com/...
It was roughly $96
Pro tip: do not accidentally make 270 million requests to R2
lol - remember when they were a non profitβ¦
Tomorrow is the best day of the year for any SaaS business owners. Happy Feb 28th