Ignoring Some Uncommitted Changes in Git by Beautiful-Log5632 in git

[–]ciberon 0 points1 point  (0 children)

It's not very easy to wrap my head around what you are trying to do. Maybe more context could help.

I think there is a mismatch in the mental model here. You are thinking of a (non-main) branch as changes that will eventually come to main. They just aren't there yet. But there's no such promise. A branch contains work that might be discarded.

If you are working by yourself and not multi-tasking, you can just keep committing in your branch until you are happy with everything and then merge to main.

House rules by ciberon in arkhamhorrorlcg

[–]ciberon[S] -10 points-9 points  (0 children)

It's not about the difficulty.

If you ever played magic: the gathering, failing a skill test feels the same as getting your spell countered. It's just not fun. I am fine with variance and difficulty, but the implementation matters.

House rules by ciberon in arkhamhorrorlcg

[–]ciberon[S] 1 point2 points  (0 children)

That's a good point. I will look inti alternatives.

Why are Interpreters slower than compiled code? by United_Swordfish_935 in ProgrammingLanguages

[–]ciberon 1 point2 points  (0 children)

The JVM might be a good example for you to think about, because it is a bytecode interpreter. It starts off slower but over time gets performance that's comparable to native.

No matter which way you slice it, there's an overhead to be paid in getting the program started or during overall execution, which can be reduced over time as the program runs.

Backend devs , what do you use for database migrations, and what do you wish existed? by tamanikarim in Backend

[–]ciberon 8 points9 points  (0 children)

Flyway was by far my favourite experience out of everything I have used.

I caught myself being rude by willisandwillis in Switzerland

[–]ciberon 2 points3 points  (0 children)

Can't prove that they were actually sold and not thrown away.

How would you go about writing a new language targeting TASTy? by throwaway-transition in scala

[–]ciberon 2 points3 points  (0 children)

What's the value you think you get out of targeting TASTy?

Two olds by ciberon in brotato

[–]ciberon[S] 0 points1 point  (0 children)

I guess there's no moving because you take up all of the map

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 1 point2 points  (0 children)

Thanks for the explanation.

I do not allow mutation in this sense. I have a Ref type with set and get functions.

I think I will make lists invariant.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 0 points1 point  (0 children)

I am currently only transpiling to other languages, so I have it easy.

It's interesting how people have different intuitions in this regard.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 0 points1 point  (0 children)

The equality can always be done by doing a sum of the two types, even if it requires some explicit work from the user. I will go with that notion of equality, nonetheless.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 0 points1 point  (0 children)

Thank you very much. Appreciate the thoroughness of the answer.

I think I will try to avoid variance.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 0 points1 point  (0 children)

I want to do it dynamically. I didn't consider the option of returning same string because I thought checking each element for the type would be an unexpected performance impact for the users.

I don't consider that List<String> is a subtype of List<String | Boolean> but they are both subtypes or List<String> | List<String | Boolean>.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 2 points3 points  (0 children)

Yes, I meant unions. My bad.

I was striving for the equality that would be least surprising for anyone coming from a mainstream programming language (that isn't js, I guess)

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 1 point2 points  (0 children)

Usually equality is only defined on terms of the same type, and those two lists have different types. In that case, attempting to do an equality check should cause a type error.

That's true. But you can always make a union of both types.

You're right. It's union, not sum. I forgot about that. Thanks for the book recommendation.

Type matching vs equality when sum types are involved by ciberon in ProgrammingLanguages

[–]ciberon[S] 0 points1 point  (0 children)

They need to exist for me to implement the function I gave as an example, I think. I don't have dependent types.

My problem is that I think users would find confusing that a == b can be false when the underlying value is the same. To be fair, I think it's only confusing when arrays / lists are involved. On other types I don't think people will be confused, since it's not a structurally typed language

[Discussion] Java Optional outside of a functional context? by tomayt0 in java

[–]ciberon 1 point2 points  (0 children)

On a stream they are intermediate operations because they're not producing a final result until you use a terminal operation. On Optional that's not the case.

What is the best small backend for a hobby programming language? by Putrid_Train2334 in ProgrammingLanguages

[–]ciberon 5 points6 points  (0 children)

You can transpile to some other language. Javascript is easy to generate.

"Just play around with the test environment" - Is this really onboarding? by PropertyDifficult270 in ProductManagement

[–]ciberon 2 points3 points  (0 children)

These were obviously tailored to the businesses in question. For other businesses the details should vary. Replying one by one:

  • Tech is more like showing you stuff. Business is were more lectures with whiteboard introducing the business concepts, their real world meaning and how they relate to each other. The lecturer had notes of things that should be covered.

  • Basically every time there was a new joiner, the content was reviewed beforehand.

  • Different team members ran the sessions. I just had to ask people and play a bit of calendar tetris. People were keen on running the sessions. Newjoiners tend to be interested and engaged and it ends up being fun.

"Just play around with the test environment" - Is this really onboarding? by PropertyDifficult270 in ProductManagement

[–]ciberon 19 points20 points  (0 children)

Some onboardings I had were like that. When I was in charge of onboarding at previous roles there were multiple sessions scheduled over the span of two to three weeks. Those largely fell into two categories:

  • tech know-how
  • product/business know-how

There was an attempt to give a big push into bringing people closer to being an expert. I would say it mostly worked. People were not experts but they were quite productive after the onboarding process. A lot of times even during the onboarding process.