Jonas Templestein

4.9K posts

Jonas Templestein banner
Jonas Templestein

Jonas Templestein

@jonas

CEO https://t.co/7dJOmc0va5, prev. cofounder/CTO Monzo, dad of three

Katılım Ekim 2009
2.7K Takip Edilen8.3K Takipçiler
Sabitlenmiş Tweet
Jonas Templestein
Jonas Templestein@jonas·
2025 will be the year we see the first self-driving startups. Level 0: No AI People do everything. They come up with ideas, build products, and run operations. Many legacy businesses still work this way. Level 1: People use AI tools ⬅︎ we are here People might use ChatGPT to help write copy or Cursor to help write code. This is where most startups are today. Level 2: AI agents complete tasks based on human instructions People might ask AI agents to write software from a plain-English spec or tell it execute well-defined customer service processes. At this point entire departments (like support or QA) get largely replaced by AI. No startups I know of operate at this level yet—but if yours does, let me know. Level 3: AI agents propose changes to their own instructions They might propose new customer service processes and product changes in response to customer feedback. Humans would still approve each of those changes. Just a few people could run a large company this way. Level 4: AI agents autonomously change their instructions At this point startups become self-improving. Humans would only be involved as an escalation point or where required by the real world (e.g. to raise capital or to incorporate). At this point many startups would only have one human. Level 5: No humans AI agents decide which businesses to start, raise capital (through crypto tokens or other means), build and run them. No humans required. This would require major reforms in the legal and financial system.
English
19
21
216
75.1K
Jonas Templestein
Went camping for three nights with 8 adults and 12 kids six and under. I have never been more happy and tired in my life 😴
English
0
0
12
470
Jonas Templestein retweetledi
Misha Kaletsky
Misha Kaletsky@mmkalmmkal·
Yesterday: saw @samgoodwin89's new alchemy-v2 docs site Today: burned about 91 million tokens on sqlfu.dev
Misha Kaletsky tweet media
English
3
2
21
1.4K
Jonas Templestein
TBH I think you can scratch this requirement. It's basically "get an actually durable task with key, old value, new value, to be processed when the key changes" But I think the KV store doesn't need to do that for me. I only need this in very few places, where I can just wrap the write in a durable workflow on the outside
English
1
0
2
32
Lambros Petrou
Lambros Petrou@LambrosPetrou·
@jonas Yeah, the eventual consistency of KV scarred me too a couple of times. :) By subscriptions, what are you thinking? Full CDC with OLD/NEW values, or a notification of every single write on key X, or just "X writes occurred in oast 5 minutes", or what exactly?
English
1
0
0
49
Lambros Petrou
Lambros Petrou@LambrosPetrou·
How much do you need a bottomless KV strongly consistent database for your apps on Cloudflare Workers? Store as much data as you want. API requires partition and range keys. Automatically scales out.
English
4
1
21
5.5K
Jonas Templestein
@LambrosPetrou DB story is definitely one of the weaker points at CF. And this sort of “Cassandra but better” product fits CF better than a beefy metal hosted Postgres imo
English
1
0
3
229
Jonas Templestein
Great idea! The local KV caches are definitely a bit annoying. Where I have to wait a minute for my write to be readable globally if the reader has a local cached value Maybe this could be expressed as cache tuning knobs, rather than a whole new product? Like I could say “I want to pay extra to go delete all locally cached values for this write”. Or when reading “I want to pay extra time and money to skip caches”. I’d use this code path on retries when I got to an error condition in my program after reading KV A few other things I’d love in a product like that - write multiple values atomically (e.g. update both a value and several indexes to the value) - subscribe to change notifications
English
1
0
7
539
Jonas Templestein
Everything is an event! And the messages the LLM sees are literally just "you just got this webhook" There is no user message / assistant message in my system. the only thing the LLM can do is write call It just puts it between ``` - no need for "tool calling" even
English
0
0
3
189
Jonas Templestein
Why make a normal agent harness when you can make a weird one?!
Jonas Templestein tweet mediaJonas Templestein tweet mediaJonas Templestein tweet mediaJonas Templestein tweet media
English
1
0
7
580
Misha Kaletsky
Misha Kaletsky@mmkalmmkal·
Per @jonas' request, making the UI embeddable in the next version of sqlfu You can embed in your site, add auth, or even serve a separate UI for individual durable objects
Misha Kaletsky tweet media
English
2
0
1
229
Chris Tate
Chris Tate@ctatedev·
In the next version of Portless Tailscale sharing Share any local dev server with your tailnet or the public internet Works with zero-arg mode, monorepos
Chris Tate tweet media
English
59
61
1.3K
53.8K
sunil pai
sunil pai@threepointone·
@jonas shell should be fine, but I can't answer to whether I'll have better ideas in the future 🤣 maybe! who knows!
English
1
0
1
45
sunil pai
sunil pai@threepointone·
in the Think post, I proposed this idea of an execution Ladder. Where the LLM (or even the user) _chooses_ to escalate the execution environment based on what it's trying to do at the moment. I'll make it so this isn't cloudflare specific, you can bring your own browser/sandbox/memory service. but it implies an impending feature/capability: those execution environments might have their own harnesses, and Think will have to communicate/work with them. indeed (I mentioned this in my code mode talk) _users_ will be communicating to Think (and other apps) with _their_ own harnesses, running on their phones and whatever. I suspect some form of standard will arise for cross-harness communication/collaboration. blog.cloudflare.com/project-think/
sunil pai tweet media
English
9
10
106
10.3K
Jonas Templestein
@threepointone If I wanted to start investing in this direction, shall I just use cloudflare shell’s workspace everywhere for now or do you think the API will change a lot later?
English
1
0
1
56
sunil pai
sunil pai@threepointone·
@jonas yeah if you're all in on cloudflare we'll get the filesystem sharing done right. otherwise there's going to be a lot of back and forth. some people will want that, we'll try to make it easy, but they'll have to figure out what they can
English
2
0
2
188
sunil pai
sunil pai@threepointone·
now that the basics are falling into place, the thing I'm really struggling with is UI. every "coding agent" kinda sucks on laptop/mobile, and everyone punts on it by just hiding the details "you don't need to see the code anymore". balderdash. we need to rethink it all.
sunil pai@threepointone

working on subagents / agents-as-tools for single threads, and it's so very satisfying with Think because it's just nested chat all the way down, persistence/streaming/resumption all ootb landing this week

English
17
2
65
5.8K
Jonas Templestein
Jonas Templestein@jonas·
@LambrosPetrou @_ashleypeacock 👍 and synchronous writes to SQLite are fine in the constructor, right? In that case I’d def update the docs They make it look like 1) async IO guarded by blockConcurrencyWhile in constructor is best practice and 2) synchronous SQLite writes benefit from blockConcurrencyWhile
English
1
0
2
28
Lambros Petrou
Lambros Petrou@LambrosPetrou·
@jonas @_ashleypeacock My guideline, you should never do any remote IO in the constructor. It delays the object creation/boot and I cannot think of anything that cannot be done in normal handlers. Yeah, it needs an extra line per handler but it's better.
English
1
0
2
26
Ashley Peacock
Ashley Peacock@_ashleypeacock·
Every AI coding assistant typically handles SQL initialization in Durable Objects totally wrong ✅ Initialize state in the constructor, wrapped by blockConcurrencyWhile This ensures your schema is ready and prevents race conditions during initialization
Ashley Peacock tweet mediaAshley Peacock tweet media
English
6
4
69
5.5K
Jonas Templestein
Jonas Templestein@jonas·
@KentonVarda How would you deal with backwards incompatible changes? It would be the only CF binding that might just break without the user changing anything, right?
English
0
0
0
213
Jonas Templestein
Jonas Templestein@jonas·
The cloudflare “bindings instead of env vars” thing is so good that I sometimes wonder why they don’t have wrappers for popular third party APIs env.STRIPE - that sort of thing
English
20
4
239
28.1K
Jonas Templestein
Jonas Templestein@jonas·
@AdamAutomates From the website it isn’t super clear - we deploy a worker in our infra for each binding - but does that talk to your service? Or is it self contained?
English
1
0
1
69
Jonas Templestein
Jonas Templestein@jonas·
This looks cool! Weird requirements from my side 1) ship an alchemy.run.ts resource for each 2) we currently have MANY sets of env vars with associated stripe and slack and gmail accounts/oauth clients (for each dev or staging environment, prod, etc) - A system like this should let me create different configuration sets like “prd” and “stg-1” and “dev-Jonas”. We currently use Doppler configs for our (large) bags of env vars 3) it needs to somehow deal with versioning. What happens when an api gets a backwards incompatible change?
English
2
0
2
410