Chris Waters

13 posts

Chris Waters banner
Chris Waters

Chris Waters

@k1w1

Serial founder, bootstrapped from 0 to 100M ARR. Mostly I get my kicks writing Typescript and Ruby, with a bit of aviation throw in.

Katılım Temmuz 2008
21 Takip Edilen9 Takipçiler
Chris Waters
Chris Waters@k1w1·
Working on some pure node code for a change. I am really missing Rails. I want someone else have made all of the hard choices about directory structure and conventions for me. AdonisJS looks like it might provide what I am missing. adonisjs.com
English
0
0
0
30
Chris Waters
Chris Waters@k1w1·
"I flew too close to the sun right before this demo" The sadness of breaking your code right before demoing it to the team.
English
0
0
2
28
Mitchell Hashimoto
Mitchell Hashimoto@mitchellh·
Ghostty is leaving GitHub. I'm GitHub user 1299, joined Feb 2008. I've visited GitHub almost every single day for over 18 years. It's never been a question for me where I'd put my projects: always GitHub. I'm super sad to say this, but its time to go. mitchellh.com/writing/ghostt…
English
549
1.6K
16.8K
2.9M
Chris Waters
Chris Waters@k1w1·
It turns out we are not the only people to see crazy growth over the last few months. Github is seeing it too [1]. Not having usage caps (unlimited repos, unlimited commits, unlimited PRs) no longer works when those things are all being done by agents at scale, rather than by humans. [1] github.blog/news-insights/…
Chris Waters tweet media
English
0
1
3
152
Chris Waters
Chris Waters@k1w1·
Heroku was always the obvious choice for quick hosting. Then there was this announcement [1]. Whatever that means ... don't use us for new projects? So I thought I would try fly.io. A lot of similarities with the CLI, but just not quite as polished: cryptic errors and a couple of calls that didn't work the first time. [1] heroku.com/blog/an-update…
English
2
0
1
107
Chris Waters
Chris Waters@k1w1·
Here is the email subject to use if you want me to read your random marketing email: > you just gave your coworker the passwords Mission accomplished. I was very confused reading the email since it was nothing to do with passwords.
English
0
0
0
34
Chris Waters
Chris Waters@k1w1·
Recently I came across github.com/carderne/upid which is really intriguing. It has the same advantages I described above, plus some more: * It also encodes the record type into the ID. This is great for debugging, and allows simpler polymorphic relationships. * It has 64-bits of randomness, significantly reducing the risk of collisions. It is enough to be able to treat IDs as unguessable ... but not quite enough to satisfy cryptographic level unguessability. * It has a pretty and compact textual form when users see IDs, e.g. `user_2accvpp5guht4dts56je5a` * A small, but meaningful benefit: double clicking a UPID in an editor selects the whole thing. Unlike UUIDs which use dashes and are not selected on double click 😡
English
0
0
0
27
Chris Waters
Chris Waters@k1w1·
Choosing the primary key type for a database is a choice with so many implications. The default choice: auto-incrementing sequence numbers is my least favorite approach. It makes it impossible to allocate sequence numbers in separate systems. In my last big project I used a 64-bit integer divided up into 42-bits for a timestamp (~4ms resolution) and a 22-bit random number. This type of approach has some advantages: * IDs can be allocated in a distributed way, independently of each other (e.g. in front-end code). * IDs still provide creation ordering which can be useful for things like stable sorts and batch scripts. Though this order is not perfect because of the 4ms resolution. e.g. an UPDATE, DESTROY audit record could end up with IDs that make it appear like the DESTROY happened before the UPDATE. * 64-bits are good for DB storage, and the creation-ordering makes efficient use of the index block cache. * 64-bits are bad for Javascript. Treating record IDs as numbers in JS causes them to be truncated to 53 bits. So they need to be strings. More in thread:
English
1
0
0
35
Chris Waters
Chris Waters@k1w1·
Normally I use Claude models through Google Vertex, but this morning I made the mistake of using claude.ai ... now Claude is down and I can't even get my chat history. Ouch.
English
0
0
0
150
Chris Waters
Chris Waters@k1w1·
If my brain contains a hundred trillion synaptic connections. And an 1T weight LLM can encode the whole Internet and every book ever written. Why can’t I remember more stuff?
English
0
0
1
35