Hacker Newsnew | past | comments | ask | show | jobs | submit | travis86's commentslogin

Kudos for going hard core into safety, error checking and designing from first principles. How do you plan on making money from all of your work, given this is an open source product?


Thanks!

I think there's an assumption (that I used to have) that open source is somehow inversely related to business model.

However, before TigerBeetle was founded, I came around to the understanding that, in fact, "open source and business model are orthogonal".

What I mean by this is that startups might say that open source is too expensive (who will manage it for them?) and that enterprise might say that open source is too cheap (who will scale and support it and connect it to all their other systems for them?).

So the business model is what solves both these problems: providing a valuable product around the open source that serves a real need, honorably at a profit, that customers want to pay for, because the alternative is either too expensive or too cheap.


How have you liked using zig? What are three things that you love about zig? What are three things that annoy you about zig?


We had been following (and sponsoring) Zig since 2018, for 2 years before I chose Zig for TigerBeetle in 2020.

At TigerBeetle, we have a technical value called "Edge", which refers to "the ability to make quality technical decisions from first principles without regard to popularity". We don't adopt technology on the basis of popularity or quantity (that's an anti-pattern for us, in fact, as a logical fallacy), but rather on the basis of quality (does the technology merit the choice?).

In other words, we see choosing a technology a lot like surfing. If technology moves in waves, then the time to paddle out is not when you see thousands of surfers on a wave, but rather before, you need to spot quality swell before it breaks. If you can do that, then you tend to meet surfers at the backline who can also spot good swell, and counter-intuitively, that has the 2nd order effect of also being good for hiring.

There are many reasons why Zig makes perfect sense for TigerBeetle, in TigerBeetle's context, as summarized well by matklad: https://matklad.github.io/2023/03/26/zig-and-rust.html

I'm happy we made the call. It's delighted us many times over. Andrew Kelley's taste and leadership of Zig is :chefskiss.


You mention in your post that you apply model checking on the actual code. Have you posted something where you go into more detail on that technique?


TB's simulator is called the VOPR, standing for “Viewstamped Operation Replicator” (and a tribute to War Games' WOPR).

You can read the code here: https://github.com/tigerbeetle/tigerbeetle/blob/f8a614644dcf...

This does things like:

- Abstract time (all timeouts etc.) in the DBMS, so that time can be accelerated (roughly by 700x) by ticking time in a while true loop.

- Abstract storage/network/process and do fault injection across all the storage/network/process fault models. You can read about these fault models here: https://docs.tigerbeetle.com/about/safety.

- Verify linearizability, but immediately as state machines advance state (not after the fact by checking for valid histories, which is more expensive), by comparing each state transition against the set of inflight client requests (the simulator controls the world so it can do this).

- But not only check correctness, also test liveness, that durability is not wasted, and that availability is maximized, given the durability at hand. In other words, given the amount of storage/network faults (or f) injected into the cluster, and according to the specification of the protocols (the simulator is protocol-aware), is the cluster as available as it should be? Or has it lost availability prematurely? See: https://tigerbeetle.com/blog/2023-07-06-simulation-testing-f...

- Then also do a myriad of things like verify that replicas are cache-coherent at all times with their simulated disk, that the page cache does not get out of sync (like what happened with Linux's page cache in Fsyncgate) etc.

- And while this is running, there are 6000+ assertions in all critical functions checking all pre/post-conditions at function (or block) scope.

See also matklad's “A Deterministic Walk Down TigerBeetle's Main Street”: https://www.youtube.com/watch?v=AGxAnkrhDGY

And please come and join us live every Thursday at 10am PT / 1pm ET / 5pm UTC for matklad's IronBeetle on Twitch where we do code walk throughs and live Q&A: https://www.twitch.tv/tigerbeetle


I am very curious how you would define 'reasoning'.


I am curious about the country mentioned that has instant payments between banks, and thus Wave pulled out. What's the country's name and why aren't more countries like that? What's their secret?


He won't tell you obviously because he's a selfish person who dosen't want to aid the competition.


It's possible with Paylib here in France.


I also find this interesting. Should the data structure really the primary entity though? One can imagine the same data being organized in different data structures with different performance characteristics, functionality, etc. What if an App node wants to alter the data structure. Any other App node that is dependent on the data from a different node will then have to be rewritten.

What one wants is the ability to query the data of another program and send external commands to that program to alter the data. The data structure itself is somewhat irrelevant, don't you think?


Kind of why everything was a text file in good old Unix?


Your company sounds like somewhere I'd like to work. If you are comfortable with it, could you email me the name? My email address is in my profile.


I've never been on the darknet. Where are all these reviews? Are there different drug selling sites where the sites are trusted enough not to remove negative reviews?


The big ones don't seem like they remove negative reviews. That would be fairly easy to spot by the reviewer and would hurt the markets reputation, which is worth a lot more than one dealer.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: