HN user

vbsd

34 karma
Posts1
Comments25
View on HN

Even if we accept this metaphor of English as a programming language, it’s used in a highly unusual way.

With regular programming, you have a full specification of the program (the code) and it gets turned into an executable. When you want to change some behavior, you change the code parts that relate to the behavior and the whole thing is compiled again.

With agentic programming, there’s no full spec, no “codebase in English”. You write instructions but they are discarded as soon as you close your session, and what’s left is this lower level thing (the code written in a traditional programming language).

It’s almost like a difference between declarative and imperative paradigm for the process of creating software.

When 1+1+1 Equals 1 8 months ago

A simple example where 1 + 1 + 1 = 1 is ℤ₂, the group of integers modulo 2 under addition.

That’s a good example of an algebra where 1 + 1 + 1 = 1, but the article is specifically about systems where in addition to that condition, this second condition is also true: 1 + 1 != 0 (not equal!). ℤ₂ is not an example of that.

Huh, you're right about this, thanks.

On the other hand, I maintain that this is an incidental rather than essential reason for the program finishing quickly. In that benchmark code, we can replace "sleep" with our custom sleep function which does not record start time before execution:

  async fn wrapped_sleep(d: Duration) {
      sleep(d).await
  }

The following program will still finish in ~10 seconds.
  #[tokio::main]
  async fn main() {
      let num_tasks = 100;
      let mut tasks = Vec::new();
      for _ in 0..num_tasks {
          tasks.push(wrapped_sleep(Duration::from_secs(10)));
      }
      futures::future::join_all(tasks).await;
  }

because `tokio::time::sleep()` keeps track of when the future was created, (ie when `sleep()` was called) instead of when the future is first `.await`ed

I’m not a Rust programmer but I strongly suspect this updated explanation is erroneous. It’s probably more like this: start time is recorded when the task execution is started. However, the task immediately yields control back to the async loop. Then the async loop starts another task, and so on. It’s just that the async loop only returns the control to sleeping task no earlier than the moment 1s passes after the task execution was initialy started. I’d be surprised if it had anything to do with when sleep() was called.

This is true but you’ll have these risks with any paid service/dependency that has non-zero migration cost. Startups still use such products all the time, assuming that a huge price spike is not that likely or that there’s going to be some viable alternative with a migration path. I’d say it’s quite different when you can’t even guess what your starting point is going to be once you hit those $10M.

But I do agree with the general argument that lock-in as this for your core technologies (a database certainly counts) should be avoided.

Yes, and this is probably a common issue with these “pricing on request” schemes. Unpleasant, yes, but this unpleasantness can still be worth it if you’re running a big business and you need the database with the properties that CockroachDB has. But for an early stage startup, there’s nothing to even talk about. I doubt they are going to give you a quote for some hypothetical future where your annual revenue beats $10M.

Maybe they actually just don’t care about attracting startups, the whole “free license for small players” thing is just so that developers can check it out, not for actual use.

There’s one problem with this model. Let’s say I’m running a pre-revenue startup and I want to use the self-hosted version of CockroachDB. The license allows me to do it for free until I get to $10M annual revenue. Well, that’s great and all but I’d like to know how much I’ll pay once I do reach those numbers. However, the pricing for self-hosted offering is a secret, it’s “pricing upon request” – I have no way to estimate these expenses and thus no way to estimate if CockroachDB is a reasonable choice for my startup in the long term.

I got a subscription and the problem is gone. There are still other issues though, for example, the instant reminder feature doesn’t seem to work, the partner doesn’t get a notification.

On an unrelated note, do you accept feature suggestions? Task deletion would be nice to have.

You are invoking an argument that's called "group selection" [1], it's the idea that genes propagate based on whether they benefit the species as a whole. This argument has been heavily criticized and it is not used much in the mainstream evolutionary science. Perhaps group selection has some effect in some niche, limited circumstances but it doesn't seem to be a significant driving force of evolution.

You don't need to invoke group selection to explain dying though. Dying might be an evolutionary advantage, not to you, but to the genes that make you. Which is not the same as the species, at all [2]. Organisms die not to make space for others but because building the mechanisms to keep young indefinitely is not worth the price compared to spending these resources on reproduction mechanisms. Or because the right combination of genes that allow you to have free lunch just wasn't reached yet. If there was a magic mutation that prevents mammals from ageing without any other effects, I'm pretty sure that gene would spread. Quite possibly to the detriment of the species.

(Beware, not an evolutionary biologist, just somewhat interested in the topic.)

[1] https://en.wikipedia.org/wiki/Group_selection

[2] https://en.wikipedia.org/wiki/Gene-centered_view_of_evolutio...

This Django example is more of a "[one or zero] to [one or zero]" relationship, that's likely what the grandparent post means. I doubt any of the mainstream relational databases have a way to enforce exact one-to-one correspondence between two tables. You could use triggers that execute at the end of transactions or something like that - but that's not part of the relational model.

I was curious what 6th leading cause of death means in terms of percentages. From the annual report on MAID (medical assistance in dying) in Canada:

In 2021, there were 10,064 MAID provisions reported in Canada, accounting for 3.3% of all deaths in Canada.

The number of cases of MAID in 2021 represents a growth rate of 32.4% over 2020. All provinces continue to experience a steady year over year growth.

https://www.canada.ca/en/health-canada/services/medical-assi...

You can scroll by holding down the middle trackpad button with your thumb and pushing the trackpoint in one direction or the other. You can even scroll horizontally this way. This is the main reason for the complaint about the missing middle button.

I’ve first read posts about your website many months ago, and I’ve been intrigued ever since. Could you share a planned release date, even if approximate and preliminary?

Also, it’s seems that your product has been “almost ready” for some time now, just out of curiosity, what are the main blockers?