HN user

ethegwo

180 karma

Founder of https://tonbo.io/

Posts22
Comments52
View on HN
harness.tonbo.dev 5mo ago

Show HN: Agents that save explore recover on their own

ethegwo
2pts0
harness.tonbo.dev 5mo ago

Reversible runtime agents can actively control

ethegwo
1pts0
tonbo.io 7mo ago

Agent workloads change the shape of data systems

ethegwo
1pts0
github.com 7mo ago

Show HN: Tonbo – an embedded database for serverless and edge runtimes

ethegwo
56pts17
github.com 11mo ago

Show HN: Typed-arrow – compile‑time Arrow schemas for Rust

ethegwo
48pts8
github.com 11mo ago

Typed-arrow: provides compile‑time Arrow schemas for Rust

ethegwo
3pts0
tonbo.io 1y ago

Exploring better async Rust disk I/O

ethegwo
4pts0
tonbo.io 1y ago

Threads with WebAssembly

ethegwo
3pts0
github.com 1y ago

Show HN: TonboLite – Scale SQLite with S3, Minimize ETL

ethegwo
6pts0
github.com 1y ago

Show HN: Tonbo 0.2.0-Durable Objects on S3 and Local Disk with Python

ethegwo
3pts0
tonbo.io 1y ago

Async Rust is not safe with io_uring

ethegwo
212pts147
github.com 1y ago

Show HN: Fusio – using io_uring on both local disk and S3

ethegwo
1pts0
github.com 1y ago

Fusio: Unlock io_uring-based disk and S3 storage in async Rust

ethegwo
2pts0
tonbo.io 1y ago

Show HN: Tonbo - Embedded DB for structured data storage

ethegwo
2pts0
tonbo.io 1y ago

Tonbo: Embedded DB for structured storage, written in Rust

ethegwo
5pts1
dora-rs.ai 1y ago

Dora-rs: making robotic applications fast and simple

ethegwo
1pts0
github.com 1y ago

Thriftpy2 – Pure Python implementation of Apache Thrift

ethegwo
1pts0
github.com 1y ago

A minimal Python implementation of Hindley-Milner type inference

ethegwo
2pts0
github.com 1y ago

Rust2go: Simple and efficient way to call Golang from Rust with async support

ethegwo
1pts0
pygraphy.org 2y ago

Show HN: Pygraphy – A modern pythonic GraphQL implementation

ethegwo
4pts0
ethe.github.io 2y ago

Structured Logs Are Useful, And GPT Make It Easier

ethegwo
4pts6
github.com 2y ago

Show HN: log2row - a tool that detects, extracts templates, and structures logs

ethegwo
5pts3

Yes, I think VCs have already switched to using other metrics that are less easy to fake, such as download per month or customer interviews (or more direct, ARR, even for really early stage startups). I just want to explain the background reason of it.

When a partner decides to recommend a startup to the investment committee, he needs some explicit reasons to convince the committee, not some kind of implicit vibe

Many VCs are only doing one thing: how to use some magical quantitative metrics to assess whether a project is reliable without knowing the know-how. Numbers are always better than no numbers.

I previously worked at Bytedance and we've maintained a Rust zero-copy gRPC/Thrift implementation for 4 years: https://github.com/cloudwego/volo, it is based on Bytes crate (reference counting bytes, for folks don't familiar with Rust ecosystem). A fun fact: when we measuring on our product environment, zero-copy isn't means higher performance in lots of scenarios, there are some trade-offs:

1. zero-copy means bytes are always inlined in the raw message buffer, which means the app should always access bytes by a reference/pointer

2. You cannot compress the RPC message, if you want to fully leverage the advantages from zero serdes/copy

3. RC itself

CGI/PHP treated database connections as something that's always available. That pushes a lot of hidden complexity onto the database platform: it has to be reachable from anywhere, handle massive fan-out, survive bursty short-lived clients, and remain correct under constant connect/disconnect.

That model worked when you had a small number of stable app servers. It becomes much harder when compute fans out into thousands or millions of short-lived sandboxes.

We're already seeing parts of the data ecosystem move away from this assumption. Projects like Iceberg and DuckDB decouple storage from long-running database services, treating data as durable formats that many ephemeral compute instances can operate on. That's the direction we're exploring as well.

Owner of Tonbo here. This critique makes sense in a classic web-app model.

What's shifting is workloads. More and more compute runs in short-lived sandboxes: WASM runtimes (browser, edge), Firecracker, etc. These are edge environments, but not just for web applications.

We're exploring a different architecture for these workloads: ephemeral, stateless compute with storage treated as a format rather than a service.

This also maps to how many AI agent service want per-user or per-workspace isolation at large scale, without operating millions of always-on database servers.

If you're happy running a long-lived Postgres service, Neon or Supabase are great choices.

Request the source? I researched and calculated the cumulative percentage of global carbon emissions from major economies since the industrial revolution: - United States: 24% - China: 15% - Russia: 6.7% - Germany: 5.2% - United Kingdom: 4.4% - Japan: 3.8% - India: 3.5% - France: 2.2% - Canada: 1.9% - Ukraine: 1.7%

source from Global Carbon Project, is this reliable?

Tonbo IO | Product Engineer | Remote | https://tonbo.io/careers/product-engineer

Tonbo IO | Product Engineer | Remote | https://tonbo.io/careers/database-engineer

We are a startup founded in the fall of 2023, working on offering "headless" real-time data analytics under Postgres. We have released several open-source projects that you can check out at https://github.com/tonbo-io.

Back-End Core Stack: Rust, Apache Arrow/Parquet, Open Telemetry

Front-End Core Stack: Python/JavaScript, NodeJs/Deno, Next.js/React, Drizzle, D3.js, WebAssembly

the post only talks about "future state", maybe I'm not clearly to point out this. with epoll, accept syscall and future state changing is happened in the same polling, which io_uring is not. Once accept syscall is complete, future has already advanced to complete, but actually it is not at that moment in the real world Rust.

if the accept completes before the SQE for the cancellation is submitted, the FD will still be leaked.

If the accept completes before the cancel SQE is submitted, the cancel operation will fail and the runtime will have a chance to poll the CQE in place and close the fd.

I apologize for not using a good title, but I think the issues I listed (especially my argument that we should break issues down to bugs in runtime and the limitations of Rust abstractions) are worth discussing, even if there are many people who argue otherwise

I don't think the operation that completes after cancellation failed is "mistakenly-accepted," it should be handled in the normal way, but I admit that there are lots of people don't agree that

Continuing process after cancellation failure is a challenge I face in my actual work, and I agree that "halt-safety" lacks definition and context. I have also learned and been inspired a lot from your blogs, I appreciate it.

The rest of this blog discusses how to continue processing operations after cancellation fails, which is blocked by the Rust abstraction. Yes, not everyone (probably very few) defines this as a safety issue, I wrote about this at the end of the blog.