6,554 karma · joined February 25, 2012
views my own (if that), etc.
previous:
- founder, stainless.com
- engineer, stripe
https://linkedin.com/in/alexrattray
I've been thinking of GPT as an incredibly well-read 8-year-old. Smart, but sometimes wildly silly and not yet developed in a sound understanding of the world (but getting there!)
You might consider behavior more like Stripe's here (disclaimer, former member of the stripe API platform team).
As you're likely aware, Stripe defaults to the latest version for each user, and then stores that as the user's default API Version until they upgrade it at the account level.
This works pretty well, and overall I'd recommend it. It may be better to give each API Key its own default API version, since different applications may expect different versions, and API keys can be a simple way to differentiate applications.
Some of Stripe's client libraries also enforce sending a specific API version header to ensure the types are correct; my guess is that in practice, this is how most requests have their version dictated now, making the account-level setting a little anachronistic.
Everything gets trickiest when it comes to webhook bodies, since the way the payload is rendered may be different across versions, so you can have one app create an object on version A and then a different app consume the webhook under version B and see the created object with a different shape. I'm not familiar enough with GitHub's API to know how best to handle this sort of thing.
Anyway, good luck and happy to chat more.
My impression -- no firsthand experience -- is that the ser/des costs associated with FFI between node and rust when dealing with large objects like ASTs can eliminate most wins, especially if you have to go back and forth multiple times.
Related: https://zaplib.com/docs/blog_post_mortem.html
I'm also under the impression that most of the gains from rewriting Node into Go or Rust come from getting access to multithreading, which I can't imagine working well in this context if the ESLint plugins themselves are still written in JS (which, IMO, they certainly should be). A single file will still need to run on a single thread.
(Of course, you can run different files on different cores with Workers or just subprocesses, but I assume ESLint does this already)
Choosing to use JS without TS at this point has become a dogmatic statement of purism that, while beautiful in a sense, is so unpragmatic as to appear a little foolish.
It's like insisting on using the pre-electronics version of a powerful, dangerous machine even though the new version gives you just as much control, greater precision, and much better safety, because of a romantic notion of purity in the way things should be done. Admirable and not at the same time.
https://www.arthurkoziel.com/replacing-docker-desktop-for-ma...
According to this article, file sharing between the container and the host is about 80% faster in Colima than Docker Desktop for Mac, but still much slower than native:
# Docker Desktop for Mac
IOPS: 1545
Bandwidth: 6.3MB/s
# Colima
IOPS: 2786
Bandwidth: 11.4MB/s
# Native
IOPS: 28.6k
Bandwidth: 117MB/s
Colima doesn't have all the annoying popups, telemetry, and other commercial aspects that turn off many developers from Docker Desktop for Mac. It sounds like a drop-in replacement otherwise. Terrific!I'll still try to keep as much development native as possible for now, but if it ever gets to be a real pain I'll give Colima a try before mixing docker entirely.
I think it could be interesting to see Linear add personal/private TODO support of some kind… like everyone gets a TODO list that is mostly a view of your linear tickets with each as a bullet point in a document (similar to when you mention them in a Notion checklist doc) but where you can also add other items which are just text (and/or entries in a personal/private linear space)
Stainless is building the platform for high-quality, easy-to-use APIs.
Our first product is SDKs as a service – you send us your OpenAPI spec, and we generate pacakges in all the major languages and publish them to npm/pypi/etc (think `npm install your-company`). These SDKs are world-class: you get an idiomatic wrapper with autocomplete, types, etc. (I built a version of this at Stripe for their SDKs, and am now building a better version for everyone.)
Next, we want to make it easy to build amazing REST APIs. REST is simple and ubiquitous, but right now it’s messy, chaotic, and hard to get right. We’re going to build great open-source standards and tooling that bring the benefits of GraphQL (types, field selection/expansion, standards) and gRPC (types, speed, versioning) to REST.
From there, we plan to build out a rich family of developer platform products – everything an API team would need to deliver a terrific DX to their partners and/or customers.
We’re about 8 months old, around 5 people, have strong revenue, and are selling to companies you interact with every day. We’re backed by Sequoia; founders of Next.js, Prisma, and Segment; and a bunch of (ex-)Stripe employees.
As a founding engineer, you’ll get autonomy to build great products, skilled peers, opportunity for tremendous impact, competitive salary, and a very competitive ownership stake.
We’re looking for exceptionally productive, thoughtful, tasteful, and kind people with a passion for making software development better for everyone. Want to build the future of API tooling? Say hi: alex at stainlessapi.com
> We're planning on making Turbopack very flexible and extensible, but we're not planning 1:1 compatibility with Webpack … most Webpack plugins won't work out of the box with Turbopack. However, we're working on porting several of the most popular Webpack plugins to Turbopack.
And the github link at the top of the page links here: https://github.com/vercel/turbo but, despite being called "turbo", that seems to actually be the repo for Turbopack (the webpack alternative) not "Turbo" the library.
Even digging a bit into the crates, I'm not sure where this supposed library lives: https://github.com/vercel/turbo/tree/main/crates
Plugins are the big differentiator between Webpack and existing "webpack but faster" tools, and presumably the reason most people still use webpack. What's the plan here?
Java has adopted maybe 20% of the things that make Kotlin better, but due to backwards compatibility it'll never catch up.
Personally I think it'd almost never make sense to adopt Java over Kotlin for any greenfield JVM project, unless the devs you hire are truly so low-skill they can't pick it up.
We had a similar story – after looking at the OpenAPI Generator and other options, we ended up making our own in JS from the ground up, more or less (it used the internals of prettier to generate pretty code, especially example snippets for docs, across languages).
I'm now starting a company (https://stainlessapi.com, mentioned by OP elsewhere on this thread) to solve this problem more generally. If you ever get tired of maintaining this system (which may not happen, it does sound fun/interesting) or want broader language support, and are open to a commercial solution, drop me a line: alex at stainlessapi.com
(open invite of course – and also always happy to just chat codegen things, it's a neat little niche)