RonSijm

joined 1 year ago
[–] RonSijm 36 points 9 months ago

So the full story would be that Elon stayed up until 5:30 a.m playing Elden Ring in a Vancouver hotel - was very stressed, saw on Twitter that people knew he was raging in Vancouver based on the Jet Tracker - stressing him out even more -
Though "Fuck it, maybe I can't beat Malenia, but at least I can beat this asshat on Twitter tracking me!"

...If only FromSoftware had added some pay-to-win elements... Like "For A Small $1 billion Micro-Transaction you get the uber Malenia slayer sword!" -
We would be living in a totally different timeline

[–] RonSijm 9 points 9 months ago* (last edited 9 months ago) (1 children)

"b. You may not use the Software Products or Derivative Works to enable third parties to use the Software Products or Derivative Works as part of your hosted service or via your APIs"

I suppose it's not allowed them. That kind of sucks, it is pretty convenient to just use a replicate.com machine and use a large image model kinda instantly. Or spin up your own machine for a while if you need lots of images without a potential cold-start or slow usage on shared machines

I wonder why they chose this license, because the common SD license basically lets you do whatever you want

[–] RonSijm 1 points 9 months ago (3 children)

Well I have Copilot Pro, but I was mainly talking about GitHub Copilot. I don't think having the Copilot Pro really affects Copilot performance.

I meanly use AI for programming, and (both for myself to program and inside building an AI-powered product) - So I don't really know what you intend to use AI for, but outside of the context of programming, I don't really know about their performance.

And I think Copilot Pro just gives you Copilot inside office right? And more image generations per day? I can't really say I've used that. For image generation I'm either using the OpenAI API again (DALL-E 3), or I'm using replicate (Mostly SDXL)

[–] RonSijm 10 points 9 months ago (3 children)

This model is being released under a non-commercial license that permits non-commercial use only.

Hmm, I wonder whether this means that the model can't be run under replicate.com or mage.space.

Is it commercial use if you have to pay for credits/monthly for the machines that the models are running on?

Like is "Selling the models as a service" commercial use, or can't the output of the models be used commercially?

[–] RonSijm 4 points 9 months ago

But isn’t that a choice made by AWS (rather than Microsoft).

Well it's both, though my comment wasn't to blame Microsoft on this. But LTS is a relative, non-defined term. AWS has a policy to only support LTS versions because they (understandably) don't want to deal with new versions every couple of months. Within Microsoft terminology STS (Standard TS) is 18 months of patching, LTS is 36 months of patching.

So it's just semantics. dotnet-STS is not some goofy hobby language that gets new versions every couple of months. 18 months from a massive team with a massive userbase is pretty long term compared to some other frameworks.

So either AWS could not be so nitpicky about it not being labeled LTS - or Microsoft could just label one version (dotnet7, dotnet9) as LTS, and the 36 months version as Extra-LTS or whatever lol. And all the dotnet versions would fall within the AWS native-support parameters

[–] RonSijm 5 points 9 months ago* (last edited 9 months ago) (7 children)

I use Copilot, but dislike it for coding. The "place a comment and Copilot will fill it in" barely works, and is mostly annoying. It works for common stuff like "// write a function to invert a string" that you'd see in demos, that are just common functions you'd otherwise copypaste from StackOverflow. But otherwise it doesn't really understand when you want to modify something. I've already turned that feature off

The chat is semi-decent, but the "it understands the entire file you have open" concept also only just works half of time, and so the other half it responds with something irrelevant because it didn't get your question based on the code / method it didn't receive.

I opted to just use the OpenAI API, and I created a slack bot that I can chat with (In a slack thread it works the same as in a "ChatGPT context window", new messages in the main window are new chat contexts) - So far that still works best for me.

You can create specific slash-commands if you like that preface questions, like "/askcsharp" in slack would preface it with something like "You are an assistant that provides C# based answers. Use var for variables, xunit and fluentassertions for tests"

If you want to be really fancy you can even just vectorize your codebase, store it in Pinecone or PGVector, and have an "entire codebase aware AI"

It takes a bit of time to custom build something, but these AIs are basically tools. And a custom build tool for your specific purpose is probably going to outperform a generic version

[–] RonSijm 8 points 9 months ago (6 children)

They keep saying "Cloud-Native Developers" in a bunch of titles and the text, but I'm pretty sure this is mostly going to be Azure-cloud focused.

Since AWS only supports LTS versions, a lot of things have been stuck on dotnet6 there. (Unless you install your own frameworks or docker or own ec2 images or something) - But no proper native cloud support for a lot of dotnet7 from AWS

For example, Lambdas don't natively support anything besides dotnet6, and dotnet8 is still scheduled to be released (Mentions February 2024, but used to mention January 2024, so who knows when it's actually going to be released)

Since dotnet6 and dotnet8 were LTS, I doubt dotnet9 is going to be as well, and is going to be STS again. So all the Cloud-Native stuff in dotnet9 is pretty much going to be Azure

[–] RonSijm 16 points 9 months ago (3 children)

This situation is due to npm's policy shift following the infamous "left-pad" incident in 2016, where a popular package left-pad was removed, grinding development to a halt across much of the developer world. In response, npm tightened its rules around unpublishing, specifically preventing the unpublishing of any package that is used by another package.

This already seems like a pretty strange approach, and takes away agency from package maintainers. What if you accidentally published something you want to remove..? It kind of turns npm into a very centralized system.

If they don't want to allow hard-removals because of this, why not let people unpublish packages into a soft/hidden state instead? Maybe mark them with the current dependencies, but don't allow new ones - or something

I prefer the approach of Azure DevOps more. When you publish any nuget, or npm into their system, the entire package dependency tree is pulled in and backed up there. So you don't rely on NPM anymore to keep your referenced packages safe

[–] RonSijm 8 points 9 months ago (1 children)

It's been way too long since we had some good Real Time Strategy games.

Hope Stormgate is gonna be good

[–] RonSijm 7 points 9 months ago (1 children)

The microsoft way is probably still WPF, yea. Though there are some articles every once in a while asking "Is WPF dead?" etc

A good alternative is Avalonia, syntax wise pretty close to WPF, but more community driven and cross-platform

[–] RonSijm 20 points 9 months ago (1 children)

I use it to backup my save games. Not sure if that's conventional.

For example, I'd MKLink %appdata%/Local/Pal/Save/ to a folder in my save repo, and commit that every once in a while.

[–] RonSijm 3 points 9 months ago* (last edited 9 months ago) (1 children)

The current answers using a Func or an Action are correctish, but with that approach you will have logging cross-cutting hard-wired into all your classes before invoking the methods.

If you want true AOP or decorators, you probably want to use Type Interceptors. And Castle DynamicProxy. See: https://autofac.readthedocs.io/en/latest/advanced/interceptors.html https://blog.zhaytam.com/2020/08/18/aspnetcore-dynamic-proxies-for-aop/

A dynamic proxy will give you a method like this:

public void Intercept(IInvocation invocation)
{
  _output.Write("Calling method {0} with parameters {1}... ",
    invocation.Method.Name,
    string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray()));

  invocation.Proceed();

  _output.WriteLine("Done: result was {0}.", invocation.ReturnValue);
}

Intercept is called before invoking a method, you can do stuff before the method starts, then you call invocation.Proceed(); - that invokes the method, and then you can log the result.

Note that your class methods either need to be virtual, or it needs to have an interface, I'd suggest an interface.

This way you can wire the logging part in through dependency injection in your container, and your classes itself don't contain logging cross-cutting logic


Logging wise, I'm not sure how familiar you are with dotnet, as you're saying you're just starting, I'd suggest inside your classes you stick with Microsoft.Extensions.Logging.Abstractions - so your classes - lets say a class MyService - would be

public class MyService(Microsoft.Extensions.Logging.ILogger<MyService> logger) { }

Then I'd suggest Serilog to use as concrete logger. You'd wire that in with:

     var configuration = new ConfigurationBuilder()
        .SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!)
        .AddJsonFile("appsettings.json")
        .Build();

    services.AddLogging(loggingBuilder =>
    {
        var logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();

        loggingBuilder.AddSerilog(logger, dispose: true);
    });

Sirilog is a very extendable framework that comes with 100s of different Sinks so you can very easily wire in a different output target, or wire in different enrichers without modifying any of your existing code

view more: ‹ prev next ›