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

> Your engineers who all have to possess AWS or similar certs

If you're using managed services that are so complex you need certified people then you're doing it wrong


> String, which is literally (under the hood, you can't poke this legitimately) Vec<u8>

`String::as_vec_mut` kinda implies that, since it gives you access to that underlying `Vec` which must then exist somewhere.


I looked it up: https://doc.rust-lang.org/std/string/struct.String.html#meth...

In case anyone else was wondering it, yes, it's "unsafe".


The thing they were gesturing at, correctly, is the naming. This is of course a convention and not a promise, but by convention Goose::as_crow would be a function that is cheap and gets you say &Crow instead of the &Goose you might have now, whereas Goose::to_donkey suggests that although we can have a Donkey instead of this Goose it's expensive to do that.

Commonly as... conversions are actually no-ops at runtime (the type changes but the data does not, no CPU instructions are emitted) whereas to... conversions might do quite a lot, especially if they bring into existence an actual thing at runtime -- maybe Goose::to_donkey actually needs to go allocate memory for a Donkey and destroy the Goose.

Yes it's unsafe because the Vec doesn't enforce the promise we made about this being UTF-8 text whereas String did, so now that promise is ours to keep and `unsafe` is how we signify that you the programmer took on the responsibility for safety here.


Yes, naming does play a role here, but the biggest hint is `as_vec_mut` returning a reference. For that to work a `Vec<u8>` needs to exist somewhere, and continue to exist after this function returns. For comparison, `to_` conversions generally just return the new data, so this reasoning doesn't apply to them.

You can definitely have a race condition in JS. Being single-threaded means you don't have parallelism, but you still have concurrency, and that's enough to have race conditions. For example you might have some code that behaves differently depending on which promise resolves first.

> Why do we still put up with GNOME?

Because maybe not all people have the same preferences as you?


Preferences don't form in a vacuum though. There's a perception that GNOME is the "good environment" which means its decisions get treated as more important than other DEs' when things change: and that's somewhat self-reinforcing.

Distro: "The most used DE needs first class support, we should probably bend to it" → Distro: "We should probably make this DE the default since it's so widely used and supported" → User: "I choose the default" → Distro: "The most used DE…"

So yes, people have different preferences; but if your preference is GNOME today, it might not be GNOME tomorrow, and "I picked the default" isn't quite the neutral signal it looks like.


I'm not sure about this. In general I see more criticism of GNOME than praise, so if anything the perception would be that GNOME is not a good DE.

A desktop/workstation/whatever should have a graphical user interface. If you want another GUI you can choose another distro (like Kubuntu etc).

where exactly did I say anything contrary to what you said.

Are you implying that GNOME is the only thing that should be considered graphical? That everything else has to be an alternative? That GNOME, by virtue of existing has infinite reprieve to change the definition of user interfaces at their leisure; even if it means breaking muscle memory hundreds of thousands of times over decades.

I don’t follow the point of what you said.


Ubuntu can have one GUI and Kubuntu can have another. Every distro can't be everything for every person.

Lets put KDE as the default for Ubuntu and have GNOME available on Gnubuntu instead. :)

If you run Ubuntu you are free to do what you want with it.

There's much more to the story. GNOME is a sort of authoritarian organization known for their antisocial behavior: https://igurublog.wordpress.com/2012/11/05/gnome-et-al-rotti... (and there's much, much more).

Since GNOME is the default Ubuntu DE, they have a certain responsibily to listen to the users/devs and leave the system open (to an extent). But their direction is the opposite:

https://web.archive.org/web/20210901171117/https://twitter.c...

They've been doing massive reduction in functionalities, really insane like limiting copy/past of terminals just to the current screen (which hurts any sysadmin), generally without any way to enable them back.

I haven't heard of any other OSS organization trying so hard to limit freedom of their users/devs, and this is an explicit goal - they don't want to weaken their brand.

GNOME is nothing short of the Oracle of open source.


A distro making your project the default doesn't give you any responsibility.

I fundamentally agree with you. I don't think responsibility is quite the right word. But if they don't seem to care about a massive portion of their users, why are they building gnome at all?

I agree that responsibility is the wrong word, but I've also noticed there's certainly some form of expectation, social responsibility, or care that other projects have and gnome has always lacked. When I started using Linux it was the desktop I liked the most, but some of the choices seem almost hostile or intentionally designed to drive current users away, and unlike most other projects I've used, I've never seen them listen or make improvements based on any feedback from users.

> I guess if you run the source code through the model a 10,000 times, some useful stuff falls out.

But you might also get a lot of non-useful stuff which you'll need to sort out.


Stripe's fees are well above interchange fees (especially in Europe). On top of that Stripe's pricing for other features (e.g. invoicing and subscriptions) is also a percentage, so you end up paying a ton for those features.

And other payment processors don't charge a fee for invoicing and subscriptions?

I'm not sure if they all charge a percentage of your money transfers for that. At work we decided to migrate that part to an internal system anyway.

If you use them for subscriptions you are effectively locked with them. The cost of migrating to a different provider (including existing subscriptions AND payment methods) plus the risk of something breaking the renewals is too high for most companies.

Maintain two billing providers and migrate new subscriptions as they onboard. Then slowly migrate existing subscriptions.

It's also a good bargaining chip.


Expanding the logic to union of intervals looks cool, but what is the complexity of that? Since you introduce the the possibility of an operation on an interval producing two intervals I suspect executing N operations might have an exponential complexity, which unfortunately makes this unfeasible to use for some common intervals applciations like abstract interpretation, unless you start introducing approximations once you have enough intervals.

Yes, this is well-known (eg. in abstract interpretation). As you said, usually you can set a "cap" to the size of these objects, and start merging intervals when you hit the cap. But at least in abstract interpretation it seems that they simply consider more sophisticated domains than intervals.

Isn't that just the definition?

I think they're making a joke

> Instead they expected humans to parse hex, which no one does

Of all aspects of IPv6 you took the only one that doesn't complicate implementations and can easily be swapped if you wanted.


Wait til you’ve got to copy & paste em, or see em comingled with hw addresses

Wait till you find an application that accepts 1.65793 as an IPv4 address. Or 134744072.

  $ ping -c 1   1.65793
  PING 1.65793 (1.1.1.1) 56(84) bytes of data.
  64 bytes from 1.1.1.1: icmp_seq=1 ttl=54 time=1.56 ms
  
  --- 1.65793 ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 1.560/1.560/1.560/0.000 ms
(by the way, this was way less of a dumb peculiarity back when IPv6 was designed)

I damn near have a stroke every time I try to reason about IPv4 addresses as an integer. But hey, I guess four bytes is four bytes no matter how you read them.

I'm not disagreeing that's a bad aspect of IPv6, I'm just saying that it's not that big of a issue for its adoption.

I think it’s one of many that indicates the underlying issues for its adoption. It’s a 90s technology, not as much thought was given about how it would be used.

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: