The @cursor_ai blog details a new autocomplete model in the 0.45.0 update... anyone got this yet?
cursor.com/blog/tab-update
Lu Nelson retweeted
AI coding replacing programmers is the modern version of calculators replacing mathematicians.
Someone please drop a really big cardboard box in to the Serengeti National Park, so I can see if lions will climb in to it
Lu Nelson retweeted
This video is incredible.
Everyone should RETWEET it so the whole *world* sees it.
Lu Nelson retweeted
I’m done blessing America. I’m moving on to Canada. It’s less needy and has better poutine.
Lu Nelson retweeted
Hey Elon, Can I have my designs back please? #ElonMusk #Elon_Musk
I wonder whether @datocms had these issues getting started? Or did you get profitable fast enough to avoid it?
Lu Nelson retweeted
A list of European alternatives to Internet services—hosting, VPNs, mailing lists, etc.
With open source alternatives that can be run anywhere.
Most of them really care about privacy in contrast with US services.
european-alternatives.eu/cat…
Americans live with the constant threat of being fired if they don't work hard enough. During times of crisis, as here ~2008 and ~2020, the screws are tightened, the goalposts are moved, and even more "productivity" is squeezed out of them
Lu Nelson retweeted
Replying to @kentcdodds
Before anyone gets upset, yes, we all know there is a big difference between the Book of Mormon and a React conference.
One is the testimony of devoted followers preaching the true path to salvation through a single way of thinking, and the other is a book.
Lu Nelson retweeted
The Netanyahu regime now pulling off the rare feat of violating both the Geneva Conventions and the Vienna Convention—at the same time. You're living through history, folks.
How can one type a function in TypeScript, such that it takes a Record where keys must follow a pattern of `${'foo'|'bar'}_${string}`; but *cannot have a mix 'foo' and 'bar' substrings among all keys of the object*?, e.g.:

ALT TypeScript code: // this is OK myFunction({ bar_1: 1, bar_2: 2, }); // this is OK myFunction({ foo_1: 1, foo_2: 2, }); // this is NOT OK, because it uses both 'bar' and 'foo' myFunction({ bar_1: 1, foo_2: 2, }); // this is NOT OK, because they substring is neither 'foo' nor 'bar' myFunction({ fob_2: 2, });
Curiously, even writing it as an explicit discriminated union doesn't seem to work
![typescript code:
type AllowedRecord =
| {
[K in `foo_${number}`]: unknown;
}
| {
[K in `bar_${number}`]: unknown;
};
function myFunction2(obj: AllowedRecord) {
// implementation
}
myFunction2({ foo_1: 1, foo_2: 2 }); // OK
myFunction2({ bar_1: 1, bar_2: 2 }); // OK
myFunction2({ bar_1: 1, foo_2: 2 }); // should not be OK !](https://pbs.twimg.com/media/GJrL-PpXwAEzzeh.jpg?name=small&format=webp)
ALT typescript code: type AllowedRecord = | { [K in `foo_${number}`]: unknown; } | { [K in `bar_${number}`]: unknown; }; function myFunction2(obj: AllowedRecord) { // implementation } myFunction2({ foo_1: 1, foo_2: 2 }); // OK myFunction2({ bar_1: 1, bar_2: 2 }); // OK myFunction2({ bar_1: 1, foo_2: 2 }); // should not be OK !
This color picker deserves your attention: OKHSL and OKHSV (based on OKLAB; all by @bjornornorn) are such simple and pragmatic ways to pick colors and build palettes—much more intuitive than LCH, while retaining the same advantages
I created a color picker that better matches human perception. It uses two new sRGB gamut color spaces based on Oklab called Okhsv and Okhsl. ok-color-picker.netlify.app/
Lu Nelson retweeted
I could teach a day or two worth of workshops teaching how react-aria accomplishes all the power and flexibility just from what's on this page: react-spectrum.adobe.com/rea…
Really awesome patterns!
Finally logged in to @withgraphite again after probably more than a year — I use the CLI every day all day; but still waiting on GitLab integration, to get back on the platform 😐😬... 🙏
app.graphite.dev/launch/prof…
In my TypeScript nerd journey this past year, one frustration has been that I never manage to do quite as much with generic functions as I can with types, when it comes to inferring and transforming
I end up doing the wizard stuff on the type layer with a separate parametric type, and then writing a runtime implementation annotated with `unknown`s and/or `any`s, and then asserting `as TransformedType<T>` on the `return` statement























