HN user

Okx

76 karma
Posts0
Comments23
View on HN
No posts found.

maybe it would be a little better to use ints rather than longs, as Java lists can't be bigger than the int max value anyways. Saves you a cache line or two.

The code:

  public int parseOrDefault(String value, int defaultValue) {
      if (value == null || value.isBlank()) return defaultValue;
      for (int i = 0; i < value.length(); i++) {
          char c = value.charAt(i);
          if (i == 0 && c == '-') continue;
          if (!Character.isDigit(c)) return defaultValue;
      }
      return Integer.parseInt(value);
  }
Is probably worse than Integer.parseInt alone, since it can still throw NumberFormatExceptions for values that overflow (which is no longer handled!). Would maybe fix that. Unfortunately this is a major flaw in the Java standard library; parsing numbers shouldn't throw expensive exceptions.
    You’ve got a monopoly on lemonade because you pay all the grocery stores to be the default lemonade.

    So we’re going to force you sell your car.
I don't think this is an accurate anaology. It's more like, you own the vast majority of grocery stores, and you make lemonade, and you force all the other grocery stores to only sell your lemonade.

To put it another way, the problem is not so much that Google shouldn't be paying to be the default search engine, but that it shouldn't own both the browser and the search engine.

I think this harkens back to the anti-trust court case, United States v. Paramount Pictures, where the court ruled that the film studios cannot hold monopolies over the movie theatres, and that theatres must remain independent.

Similarly, browsers and search engines being independent is good for competition because the internet is too important to let a single company dictate how it is used.

The above code is simple and correct

Unfortunately not:

Using notifyAll and wait in Java is tricky to do correctly, you'd have a much easier chance using concurrency primitives that wrap these functions, like CountDownLatch[1] for one offs, or Condition[2].

System.currentTimeMillis is also not guaranteed to be monotonic, and System.nanoTime should be used instead. This would of course be obviated if a better concurrency primitive were to be used.

[1] https://docs.oracle.com/en/java/javase/21/docs/api/java.base...

[2] https://docs.oracle.com/en/java/javase/21/docs/api/java.base...

GnuCash 5.9 2 years ago

GnuCash and KDE Money always seemed very similar to me. Why should I use GnuCash over KDE money?

Not only that, but it makes the pronunciation difficult. Should this be pronounced like the English word "love", or interpreted more like a German word (which actually has this letter in the alphabet, and guess what, it isn't the same as o) and more like "loeve"? The umlaut isn't just a graphical stylisation, it's a real thing.

It's only a disincentive to ask for a raise if you don't know what it means. You only pay back student loans based on the percentage of money you earn above a certain amount.

If you earn £21,000 and the threshold is £20,000, you only pay back a portion of £1,000, not all of the £21,000.

0.999...= 1 6 years ago

I usually say "If and only if two numbers are different, then you can find a number between them". People often accept this axiom. Then, I offer them to find a number between 0.999... and 1.