Readit News logoReadit News
badhombres commented on What .NET 10 GC changes mean for developers   roxeem.com/2025/09/30/wha... · Posted by u/roxeem
CharlieDigital · 2 months ago
This is raw OpenFGA code:

    await client.Write(
        new ClientWriteRequest(
            [
                // Alice is an admin of form 123
                new()
                {
                    Object = "form:124",
                    Relation = "editor",
                    User = "user:avery",
                },
            ]
        )
    );

    var checkResponse = await client.Check(
        new ClientCheckRequest
        {
            Object = "form:124",
            Relation = "editor",
            User = "user:avery",
        }
    );

    var checkResponse2 = await client.Check(
        new ClientCheckRequest
        {
            Object = "form:125",
            Relation = "editor",
            User = "user:avery",
        }
    );
This is an abstraction we wrote on top of it:

    await Permissions
        .WithClient(client)
        .ToMutate()
        .Add<User, Form>("alice", "editor", "226")
        .Add<User, Team>("alice", "member", "motion")
        .SaveChangesAsync();

    var allAllowed = await Permissions
        .WithClient(client)
        .ToValidate()
        .Can<User, Form>("alice", "edit", "226")
        .Has<User, Team>("alice", "member", "motion")
        .ValidateAllAsync();
You would make the case that the former is better than the latter?

badhombres · 2 months ago
In the first example, I have to learn and understand OpenFGA, in the second example I have to learn and understand OpenFGA and your abstractions.
badhombres commented on What .NET 10 GC changes mean for developers   roxeem.com/2025/09/30/wha... · Posted by u/roxeem
CharlieDigital · 2 months ago
Would you rather a team move faster and be more productive or be a purist and disallow abstractions to avoid some potential runtime tracing challenges which can be mitigated with good use of OTEL and logging? I don't know about you, but I'm going to bias towards productivity and use integration tests + observability to safeguard code.
badhombres · 2 months ago
Disallow bespoke abstractions and use the industry standard ones instead. People who make abstractions inflate how productive they’re making everyone else. Your user base is much smaller than popular libs, so your docs and abstractions are not as battle tested and easy to use as much as you think.
badhombres commented on What .NET 10 GC changes mean for developers   roxeem.com/2025/09/30/wha... · Posted by u/roxeem
CharlieDigital · 2 months ago
I disagree on this.

I am at a (YC, series C) startup that just recently made the switch from TS backend on Nest.js to C# .NET Web API[0]. It's been a progression from Express -> Nest.js -> C#.

What we find is that having attributes in both Nest.js (decorators) and C# allows one part of the team to move faster and another smaller part of the team to isolate complexity.

The indirection and abstraction are explicit decisions to reduce verbosity for 90% of the team for 90% of the use cases because otherwise, there's a lot of repetitive boilerplate.

The use of attributes, reflection, and source generation make the code more "templatized" (true both in our Nest.js codebase as well as the new C# codebase) so that 90% of the devs simply need to "follow the pattern" and 10% of the devs can focus on more complex logic backing those attributes and decorators.

Having the option to dip into source generation, for example, is really powerful in allowing the team to reduce boilerplate.

[0] We are hiring, BTW! Seeking experienced C# engineers; very, very competitive comp and all greenfield work with modern C# in a mixed Linux and macOS environment.

badhombres · 2 months ago
The trade offs are though that patterns and behind the scenes source code generation is another layer that the devs who have to follow need to deal with when debugging and understanding why something isn’t working. They either spend more time understanding the bespoke things or are bottle necked relying on a team or person to help them get through those moments. It’s a trade off and one that has bit me and others before
badhombres commented on Amazon says workers must be in the office. The UK government disagrees   bbc.co.uk/news/articles/c... · Posted by u/thunderbong
paulsutter · a year ago
Of course it’s great to work part time and get paid for full time (“remote work”). But you can see why employers might not love it.
badhombres · a year ago
The implication is that all remote work is part time effort for full time pay?
badhombres commented on Interning in Go   medium.com/google-cloud/i... · Posted by u/todsacerdoti
pjmlp · a year ago
Interestingly enough, by following up some references of the article I discovered that Go is also following up on Java and .NET design decisions, that maybe could be there early on.

- Deprecating finalizers and using cleaner queues (https://openjdk.org/jeps/421)

- Weak references (https://learn.microsoft.com/en-us/dotnet/api/system.weakrefe..., https://docs.oracle.com/javase/8/docs/api/java/lang/ref/Weak...)

Related tickets,

"runtime: add AddCleanup and deprecate SetFinalizer" - https://github.com/golang/go/issues/67535

"weak: new package providing weak pointers" - https://github.com/golang/go/issues/67552

One day Go will eventually have all those features that they deemed unnecessary from "complex" languages.

badhombres · a year ago
I think that’s a bit of a stretch to say go will implement all the features of c# and Java because of a few new features. Go isn’t a frozen language, they just take a lot of time and discussion before committing to a major change.
badhombres commented on AI teaches itself to use an API   twitter.com/DYtweetshere/... · Posted by u/dyyy
badhombres · 3 years ago
I have a feeling that in the future developers are still going to be needed, but in an architecture and debugging/optimization fashion. Not in a writing boilerplate code aspect. There is also an issue with validating the output before it gets released to production.
badhombres commented on Tell HN: Confluent laying off 8% of staff    · Posted by u/cfltlayoffs
badhombres · 3 years ago
Not surprising. Every company is going to take the opportunity to trim costs when it doesn't affect their PR as much as it would any other time.
badhombres commented on Natives in Tech asks Apache Software Foundation to change name   blog.nativesintech.org/ap... · Posted by u/jeremiahlee
badhombres · 3 years ago
It's going to take a little more than a sed statement to make this change
badhombres commented on When nil is not nil   bitmaybewise.substack.com... · Posted by u/bitmaybewise
kerblang · 3 years ago
Reading the original FAQ: Am I wrong or is this (yet another) abstraction leak even more confusing than C? How much longer does everyone cling to the "What I like about Go is that it's so simple!" mythology? Bah, here comes the downvotes...
badhombres · 3 years ago
I think this one difficult subject does not take away from the common feeling that overall Go is simple. This is like looking at a small scratch on the car and claiming the entire car is damaged.
badhombres commented on Software component names should be whimsical and cryptic   medium.com/@histocrat/sof... · Posted by u/honoredb
khazhoux · 3 years ago
Do products/components really evolve so much that the name frequently become outdated?

Half the article is like, "There was a component called YamlParser, which is now a browser-based stable-diffusion renderer!"

badhombres · 3 years ago
Yep, enough that they need a caveat every time someone new is told of the product. It happens, and it's gotten worse due to Agile.

u/badhombres

KarmaCake day127November 2, 2017View Original