Hacker News new | past | comments | ask | show | jobs | submit | ackfoobar's comments login

Saw the title and thought "Didn't I just see C sum types in HN recently?"

https://news.ycombinator.com/item?id=40307098

> Inspired by datatype99, but consisting of one small standard-conforming C99 macro-only header that is fast to compile.


"Getting through chat bots to get to a human" is the new "getting through tech support to get to an engineer".

https://xkcd.com/806/


I think the path is now Chat bot -> Help Desk -> Engineer.

I just went through that recently, chat bot responded instantly to the mail with the same reply as the FAQ help, then the human responded after an hour asking for screenshots to see that showed I actually tried, then after a day an engineer fixed it.

"Azure Active Directory" (now "Entra ID") and "Active Directory" caused me a great deal of confusion.

"Active Directory" / "Active Directory Domain Service" / "Active Directory Application Mode" / "Active Directory Lightweight Directory Services" / "Azure Active Directory" / "Entra Id" / "Active Directory Federation Services" / "Active Directory Certificate Services" / "Active Directory Rights Management Services"

Ugh... and don't even get my started about the pronunciation of "Azure" (or the fact that, somehow, they took a project code-named "Red Dog" and named it after the color blue. Then there's the JEt Red and Jet Blue database engines, one of which was used by Active Directory...)


You're forgetting Azure Active Directory Domain Services, which is presumably now named Entra AD Domain Services which is different from Azure AD/Entra AD because it's a managed domain controller in Azure...

Don't forget "Azure Active Directory B2C".

Without your example, I would've bet that TS uses structural typing for interfaces and nominal typing for classes.


I thought so too originally, was very surprised.



I tried it (with short/full commit hash). GitHub gives a warning:

> This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.


From the same author: https://github.com/not-an-aardvark/lucky-commit a tool for generating commits with specific shorthashes.


> kind of nicer than Kotlin's, because you can automatically "destruct" records in your matches.

I find positional destructuring of records a bad idea.

https://news.ycombinator.com/item?id=31399737


It might be obvious but I have to ask, is that a stomach problem?


Not the person you are asking, but I do have GI issues due to the acidity with coffee. It can cause reflux, ulcers, and more for people if they are sensitive to the added acidity.


Not for me, but it is for some people. My current issue is more esophageal, my throat gets inflamed with too much acid then it feels like I have food stuck and can’t swallow it. Other people have stomach issues, ulcers, etc. but still want to enjoy coffee, so I think there’s plenty of reasons for cold brew served hot to exist.


Have you checked other clothing as well? E.g. a lot of my T-shirts are a blend of cotton and polyester. I hate how much I like them (a lot).


Not OP, but I've avoided those when possible too (except some company issued tees), etc.

Full cotton/wool are the best.


Yeah, that realization led me to re-evaluate my textiles and to basically move to natural fibers as much as possible.


> Let exceptions propagate, catching them at as high a level as possible.

This can't be done cleanly in Java.

Checked exception can encode union types, but this extra power is not complemented anywhere else in Java's type system. E.g. in a `Consumer` lambda passed to `forEach`, Java's checked exception forces you to convert that to a RuntimeException.


I'd say it is due to a lack of variadic type parameters. You can write something like this:

    <T, X extends Throwable> void forEach(ThrowingConsumer<T, X> f) throws X;
But the only way to have multiple exception types without losing static type checking is to have multiple X parameters, like X1, X2, X3... (with unused parameters being set to some subtype of RuntimeException so that they do not participate in checked exception handling).

Whether or not it is worth to write this madness just to satisfy one's OCD is up to the reader.


> it is due to a lack of variadic type parameters

To be pedantic, it is due to union types "not complemented anywhere else in Java's type system". Adding variadic type params is a way to solve this. Another way is, of course, to support union types.

> with unused parameters being set to some subtype of RuntimeException

Or the `Nothing` type (`never` in TypeScript), where `A | Nothing = A`.


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

Search: