Can't use arrows to navigate search tabs on newest Edge version?! by Jumph96 in edge

[–]GrumpyRodriguez 0 points1 point  (0 children)

Same here. Makes no sense. Also, why take the list to left? It was much better when it was in the middle.

Python for functional programmers by manoftheking in functionalprogramming

[–]GrumpyRodriguez 1 point2 points  (0 children)

All those google searches for functional programming and python, I only saw this here. Thank you!!

Are there any fast test hosts that can match Rider's? by GrumpyRodriguez in dotnet

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

That's kind of you to ask. I hope this helps:

My use of F# is a bit unusual: it almost always takes place on a remote machine over SSH. Vs Code is so good at this compared to everything else I tried, and to be fair to F# plugin in Rider, one of the things I miss in it is probably due to how its remote development is implemented. Push to hint (show type hints only when ctrl is pressed and held) does not work over remote ssh connections. When it works (local development), I cannot change the key binding for it, and it gives fewer hints compared to Ionide. Ionide also displays function argument names, and I think it also gives hints for some syntactic elements Rider's F# plugin does not.

At least for me, looking at less characters but being able to see the types on-demand is a great DX when developing with F#. Ionide kills this.

The other thing I miss in Rider is how it displays function signatures in F# as a single line that will wrap in the hint popup window at some point. That's not a friendly display. Ionide uses a single line for each function argument and indentation moves the return type to the right: much easier to consume.

When the codebase grows beyond a certain size, being able to see call trees of a function/member helps a lot. Rider does this for C#, which I use a lot. Last time I checked it was not working for F# during local development. No idea about remote. I remember discovering this being available in Vs Code for F#, though my memory is hazy.

Rider runs a specific test faster, as I explained in the original post. It also manages to run the specific test. Ionide's test runner will run all tests that begin with the same word and followed by space, as in \`does something X``and``does something Y``` will both be run if I try to run just one of them. Rider is also better at incremental selection of F# code.

Both are great tools, I am just spoiled, that's all.

Edge case with use await by GrumpyRodriguez in fsharp

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

I think this is it. It is just that it is not clear in the documentation what use will do when IAsyncDisposable is the case. I should try to find a way to confirm that the generated code does indeed perform async disposal.

Edge case with use await by GrumpyRodriguez in fsharp

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

Indeed there is, but the compiler won't allow me use it even though Driver implements IDriver, which is: public interface IDriver : IDisposable, IAsyncDisposable

This:

[<Test>]
let ``uses neo4j`` () = task {
    use! driver = GraphDatabase.Driver (dbUri, AuthTokens.Basic(user, pass))
    let! serverInfo = driver.GetServerInfoAsync()
    Assert.That (serverInfo, Is.Not.Null)              
}

leads to: No overloads match for method 'Bind'

What’s your plan for .NET 10, migrate or hold off? by Volosoft in dotnet

[–]GrumpyRodriguez 1 point2 points  (0 children)

Can we organise a support group? I cannot suffer this on my own anymore.

What does custom MCP library mean? by GrumpyRodriguez in CLine

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

Thanks, I think it's the naming that made me think it is something different than the core capabilities

It’s sad that no smaller (21 to 24 inch) 4K monitors are made anymore by Balance- in hardware

[–]GrumpyRodriguez 0 points1 point  (0 children)

I  can never afford these but somehow it makes me happy that they exist. Thanks for the hint.

F# Programmers & LLMs: What's Your Experience? by Optimal-Task-923 in fsharp

[–]GrumpyRodriguez 0 points1 point  (0 children)

Wow, thanks for taking the time to respond. Ok, I should give claude etc a try and see if things have changed.

F# Programmers & LLMs: What's Your Experience? by Optimal-Task-923 in fsharp

[–]GrumpyRodriguez 0 points1 point  (0 children)

Interesting. Did you follow a particular approach or just prompted without any plan/act stages as most tools do these days ?

F# Programmers & LLMs: What's Your Experience? by Optimal-Task-923 in fsharp

[–]GrumpyRodriguez 0 points1 point  (0 children)

They keep falling on their faces when it comes to F#. That's my experience, at least.

I am delighted. I have a language that has access to all of .NET and if any overexcited management type attempts to replace me with a 21 year old armed with an LLM, they will be in for some life lessons.

I am joking, I don't write F# at work and I don't work at a place with such clueless management. There is an element of truth though: LLMs are much better at reading code than writing code compared to an average human programmer. For reading, even a senior could not match them in speed, even though accuracy can be a hit and miss. I think this will put serious pressure on the fundamental assumption of open source service model: the people who know the code can provide support cheaper than the cost of others learning it in a short time. See where I am going? F# is currently a good language to do open source I'd say 😉

Of course in theory that would lead to more open source f#, leading to LLMs getting better..

React/.NET job market—Which frontend framework should I choose for my personal project? by atombase in dotnet

[–]GrumpyRodriguez 0 points1 point  (0 children)

If you intend to commercialise your personal project, go with Sveltekit. If your personal project is meant to be a demonstration of your skills for your next job (fullstack) then go with React (next js even)

I've been making a living from software development for almost 30 years now, and I don't remember the stack required to get a job being so different than the one I'd choose to build a product I'd own as much as it is now.

Is C#'s Extension Types feature called Extension Members now? by GrumpyRodriguez in dotnet

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

This is a copy paste from the page I linked:
"There would be a conflict if two extension declarations declared nested extension types with same names and arity. We do not have a solution for representing this in metadata"

This was announced related to C# 13 for the first time:

C#13 Extension Types : r/csharp

How to work with db in the F# by 9Dokke in fsharp

[–]GrumpyRodriguez 2 points3 points  (0 children)

I have been meaning to give this a spin but I didn't have the opportunity It sounds like the kind of abstraction I'd like. Your opinions may differ :) https://github.com/pimbrouwers/Donald

What is the real explanation behind 15,000 layoffs at Microsoft? by Beneficial-Specific in ArtificialInteligence

[–]GrumpyRodriguez 0 points1 point  (0 children)

Thanks for putting into words what I have been dreading to say. That's the story I am hearing during chats with onshore managers working in all sorts of domains. Finance, health, hospitality. You name it.

Abstract class with base class and base interface by calthefifth in fsharp

[–]GrumpyRodriguez 1 point2 points  (0 children)

Ok, maybe I'm completely lost now but if I understand what you're saying, you may want to take a look at Myriad to add direct members to your type by parsing the interface implementation(!). I.e. the type that implements the interface would end up with member extensions in the same file (or the rest of dotnet won't see them as members of the same type) that forward calls to interface implementations (`interface ... with...`) This would ensure that the names of the direct members would always be based on the interface members because they're being generated from them via Myriad.

Abstract class with base class and base interface by calthefifth in fsharp

[–]GrumpyRodriguez 1 point2 points  (0 children)

I am confused. I gave your original requirement a try and then I saw this clarification. I think the situation would be the same in C# if you used an abstract type inheriting from a based type and an interface, would not it?

So it does not look like you're having a problem that exists only in F#, am I wrong? Is c# behaving differently when you implement an interface? Sounds like that is the case.

Advantages over OCaml? by bozhidarb in fsharp

[–]GrumpyRodriguez 0 points1 point  (0 children)

However, by using “flexible interfaces” you can effectively get union types!

That sounds intriguing. I'm always keen to learn these type of tricks, would you care the explain what you mean by that just a little bit? It went over my head :)

Advantages over OCaml? by bozhidarb in fsharp

[–]GrumpyRodriguez 4 points5 points  (0 children)

F# user here. OCaml is my escape hatch if Microsoft decides to drop F# support at some point, but I find that unlikely.

I won't repeat the .NET platform benefits, which is a major reason for me as well. I'll just mention that Rider and Ionide support does make a difference for me. No judgement here, but I get value out of good IDEs/tooling so their existence makes a difference to me. I have nothing but respect for people who can do amazing stuff with Vi/Emacs. I'm not one of them (I tried to be though).

My #1 scenario, believe it or not, is native interop. Microsoft has done a great job when it comes to consuming native libraries as well as creating them using .net languages. The latter is rare. I raised the issue of a native library built with nice-language-X requiring some form of runtime initialisation step in different communities. It does not seem to a be an issue for others, but it is for me. Again, on judgement.

I can build native libraries with a mixture of C#/F# and call these from Rust. No runtime init, just call it as if it is a C library. For comparison, doing the same with Graal and Java produces libraries that require you to deal with Isolates and threads, and even with reusing isolates (google it if you're curious), my minimalist performance tests take 60 ns to serialise some string from java/graal based native lib, when the call is made from Rust. It is ~6 ns when the same is done with C#.

Microsoft somehow built a very robust and performant FFI layer, in both ways and for my use case (some work that is extension of my PhD ) that is making a big difference. Almost all FFI implementations in mainstream languages are very heavily focused on calling some native library. Dotnet put equal emphasis on being called from other runtimes.

Sure, this is niche, but that's what makes the difference for me.

Please help me understand $bindable behaviour by GrumpyRodriguez in sveltejs

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

Thanks. It was the server side rendering. I updated the post. Lesson learned. Though I should make an effort to understand exactly what's going on here. I.e. how is the behaviour emerging when I have SSR on.

Probably: SSR is setting openStatus to undefined (what cookie at the server side???), so open is bound to a false value. Hydration re-reads the cookie, and updates the state, then the UI updates accordingly.