.NET and C# are in trouble. Here is what I'd do.
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 100%

    Dude says LTS dot net releases should have another 3 years minimum of security updates. I agree with this, can down voters please share your reasons for down voting?

    2
  • The Benefits of World Hunger
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 33%

    I think "describing it as if it were normal" only helps the people who support this arrangement because it gets normalized. That's where the accusation of conservatism came from, that and the way they tried to shut me down with insults.

    Edit: given that there are likely to be a lot of people that agree with this argument unironically, doesn't it seem irresponsible to play some game where you pretend like you support it? Without ever coming out against it at the end?

    Really, it's just naked approval, with any disapproval left as an exercise to be performed by the reader.

    -1
  • The Benefits of World Hunger
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 50%

    Who would build any sort of factory if they did not know that many people would be available to take the jobs at low-pay rates

    Much of the hunger lirerarure talks about how it is important to assure that people are well fed so that they can be more productive. That is nonsense

    No one works harder than hungry people.

    [...]well-nourished people are far less willing to do that work

    For those of us at rhe high end of the social ladder, ending hunger globally would be a disaster.

    I guess the irony is lost on me. Nothing here indicates that it's wrong or should change. Also, you're a huge asshole.

    Edit: in fact I know people (conservatives) who are totally fine with this arrangement. They are huge assholes too, huh isn't that weird.

    0
  • Looking for a system/application language that is better than C/C++
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 90%

    C# is a great language, I don't know much about game dev but I know unity and godot game engines have good support for c#. You can target Windows/Linux/Mac on all the common architectures. All the build tools are available on the command line if that's your thing.

    8
  • Introducing Zed AI
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 71%

    Problem is, programmers don't want AI. We want better tools that address the issues of complexity and abstract requirements management.

    3
  • Option Result library for c#
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 100%

    I very much disagree with this, Null Reference Exceptions have been a huge problem in c#. Nullable reference types are a partial fix, but the question of "how do I 'return' an error from a statically typed method" is not answered there.

    2
  • Option Result library for c#
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 100%

    The operator being applied to the ResultObject will always resolve to the Generic type that was specified as 'T in IResult<T>. If the function is not successful the resolved value will be whatever value was supplied to the ResultObject constructor, the opt.None property will true and the opt.Some property will be false.

    1
  • Option Result library for c#
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 100%

    The example is simplified, but I dislike returning null in my own code. The function will always execute, left or right doesn't matter it's mapped across in the ResultObject class.

    The function must return an IResult<T>, the ResultObject analyzes the IResult<T> checking for IFail or IOk. If it's IOk the value of type T is retrieved from the Value property of the IOk<T> object and returned, the Some property defaults to true. If the IResult<T> is an IFail, Some is set to false, it copies the message from the IFail object into the ResultObject, and returns the value the was supplied to its constructor.

    I'm just sharing something I find useful, and I hope I can make it useful for others as well. Thanks for the questions.

    2
  • A collection of tools for dealing with nulls, failures and the generic type issues that arise in this domain. https://github.com/Andy3432344/SafeResults I'm the author, let me know what you think! *Edit: updated to show GitHub link, sorry!

    17
    13
    Question regarding generic type and Type
  • "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    DrDeadCrash
    Now 100%

    Here's a real world side project example of how I handle this situation:

     public IResult<T> GetResourceValue<T>(string path)
        {
            string err = $"{typeof(T).FullName} is not available from this Resource ({nameof(FileSystemResource)})";
    
            switch (typeof(T))
            {
                case Type t when t == typeof(DriveInfo):
                    return (IResult<T>)new Ok<DriveInfo>(BackingValue);
                case Type t when t == typeof(DirectoryInfo):
                    err = $"Directory path invalid: {path}";
                    var dir = new DirectoryInfo(path);
    
                    if (dir.Exists)
                        return (IResult<T>)new Ok<DirectoryInfo>(dir);
                    break;
                case Type t when t == typeof(FileInfo):
                    err = $"File path invalid: {path}";
                    var file = new FileInfo(path);
    
                    if (file.Exists)
                        return (IResult<T>)new Ok<FileInfo>(file);
                    break;
            }
            return new Error<T>(err);
        }
    

    You said elsewhere that it feels like you're doing something wrong if you have to check for every type just to use a Generic. I think you're right in thinking along those lines. There should be a minimal number of types to check, and Ideally limited via a type constraint.

    Here's example that includes a constraint:

        public IResult<T> GetValue<T>() where T : struct =>
            typeof(T) switch
            {
                Type t when t == typeof(int) && value <= int.MaxValue =>
                 (IResult<T>)new Ok<int>((int)value),
                Type t when t == typeof(uint) && value <= uint.MaxValue && value >= uint.MinValue =>
                 (IResult<T>)new Ok<uint>((uint)value),
                Type t when t == typeof(byte) && value <= byte.MaxValue && value >= byte.MinValue =>
                 (IResult<T>)new Ok<byte>((byte)value),
                Type t when t == typeof(sbyte) && value <= (int)sbyte.MaxValue =>
                 (IResult<T>)new Ok<sbyte>((sbyte)value),
                Type t when t == typeof(short) && value <= (int)short.MaxValue =>
                 (IResult<T>)new Ok<short>((short)value),
                Type t when t == typeof(ushort) && value <= ushort.MaxValue =>
                 (IResult<T>)new Ok<ushort>((ushort)value),
                Type t when t == typeof(long) && value <= long.MaxValue =>
                 (IResult<T>)new Ok<long>((long)value),
                Type t when t == typeof(ulong) => (IResult<T>)new Ok<int>((int)value),
                _ => new IntegerError<T>()
            };
    
    1
  • I work for a services company, and we're not getting much right now. Just wanted to ask about work availability across the board.

    13
    7

    ![error no posts](https://programming.dev/pictrs/image/08a7646f-463d-433a-9bed-f9eb34e83aa2.png) I have an active post in vscode right now, which I made in browser, but cannot see anything when viewing the community with Connect. Any ideas?

    4
    2

    Hi everyone, I'm trying to try out F# via FSI in VS Code (Windows 10) I have Ionide for F# installed, and have used it before, but now every time I try to start it I get a message "FSI :Start resulted in an error", it goes on to helpfully report "the option has no value". dotnet is in path, dotnet works great. FSI? nothing. I also have the .net workload installed for visual studio 2022 (if that matters). I started up my Linux VM (KDE Neon) fired up vs codium and tried FSI Start...same error! So no tinkering in f# for me tonight. Does anyone have an idea what's happening, across two environments? Google is no help...

    4
    6
    "Initials" by "Florian Körner", licensed under "CC0 1.0". / Remix of the original. - Created with dicebear.comInitialsFlorian Körnerhttps://github.com/dicebear/dicebearDR
    Now
    4 229

    DrDeadCrash

    programming.dev