pondfrog's recent activity

  1. Comment on How is your experience with various programming ecosystems? in ~comp

    pondfrog
    (edited )
    Link Parent
    Fully agree with your thoughts on F#. I love this language and all the cute little features it has, but it's really let down by the package ecosystem and poor tooling. I love how it's a functional...

    Fully agree with your thoughts on F#. I love this language and all the cute little features it has, but it's really let down by the package ecosystem and poor tooling.

    I love how it's a functional language that has a focus on "getting stuff done". Languages like Haskell are cool and all, but I can't help but feel like they're too academic for my tastes. F# fits really nicely into a sweet spot that I've not seen much in other languages. The designers did an excellent job of making it functional, powerful, and yet practical.

    Even though it's functional-first, the OOP support is surprisingly good in F#. OOP so much more terse compared to C# and honestly there's an argument that F# does OOP better than C#, at least for the features it supports. It's a great experience to be able to use whatever paradigm fits the problem the best. Easily dropping down to imperative code to improve performance is also great. Somewhat ironically, the way F# pushes you towards functional code makes it really easy to swap out FP code with imperative code to improve performance.

    I know other languages are starting to catch up, but F# also has a pretty good REPL experience. Getting immediate feedback while programming makes it so nice to experiment with code and understand how you wanna approach the problem. It's great that Rider has something similar for C# in the form of C# Interactive.

    I wish units of measure would make their way into more languages, because it's so damn useful for domain modelling. Active patterns are great too - having logic to transform data into a sum type is amazingly useful for pattern matching. Also, type providers feel like a magical experience when you first try them out; it's a real eye-opener when you get autocomplete for your CSV or JSON.

    There's a lot to really like about the language design for F#. Even though I'm a massive simp for ML-style language design and I might be a little biased, I genuinely do believe a lot of the features fit together so well. You can tell there's a lot of thought that has gone into making this language.

    But at the same time, every time I use it for a larger project, I remember why it's such a pain to work with. The community is really small so you get way fewer high-quality packages, tooling, resources, documentation, and general support. You can count the number of high-quality packages for F# on one hand, and the tooling isn't great either.

    I've had really shaky experiences with documentation for F# libraries. Saturn is a pretty popular web framework for F# but the documentation feels really limited for the tutorials. There are just 3 pages of tutorials and no full example project.

    Rider is always improving with F# support but there's a night-and-day difference between Rider's refactoring tools in C# and F#. C# refactoring tools and IDE suggestions are so intelligent and have a very good understanding of code, meanwhile F# suggestions are so shallow and naive. I've not tried VSCode with F# so I don't know what the experience is like Ionide, but I can't imagine it's much better.

    Fantomas, the F# community's preferred formatter, has so many issues and I've run into bugs a few times where reformatting a file changes the code's semantics or removes comments. For any formatter (and the community-preferred one especially), that's completely unacceptable behaviour. There's also a lack of certain features like being able to disable formatting for a section of code. Even just being able to tune what formatting gets applied is mostly missing, which is so frustrating because I hate the way it forces some formatting (e.g. sum types always get formatted to be on one line if the character limit isn't reached).

    The interop with C# is great since you can use high-quality libraries and frameworks, but that should be a fallback option for when you can't F#-specific packages, and yet sometimes it feels like it's the default option. A lot of the time, you're expected to rely on C# packages and use the interop, which introduces some annoyances you wouldn't normally have with just F# (e.g. you have to deal with null now, yayyyy!).

    In terms of language design, after getting a taste of Rust traits and Haskell typeclasses, I really wish F# had something similar. The language designers have said that's not happening and I understand their concerns, so oh well.

    It's such a shame because this language deserves better and it can't really get there without community support, but Microsoft treats it like a second-class citizen and does a poor job of promoting it so it's unlikely things get much better for F#. I might give OCaml a try in the future for larger projects and see if it fares any better, but it would be hard to cheat on F# eheheh.

    2 votes
  2. Comment on I've been looking into self-hosting, what's the best cost-efficient option? in ~tech

    pondfrog
    Link
    Oracle Cloud has a really nice permanent free tier. It gives you 4 compute cores, 24GB of memory, and 200GB of storage, which is more than enough for a lot of hobby projects. I use it to self-host...

    Oracle Cloud has a really nice permanent free tier. It gives you 4 compute cores, 24GB of memory, and 200GB of storage, which is more than enough for a lot of hobby projects.

    I use it to self-host my photo backups with Immich (a Google Photos alternative) and to occasionally host a private Minecraft server for me and my friends. Works pretty well.

    6 votes
  3. Comment on Any idea on running a (very) small silent disco system? in ~tech

    pondfrog
    Link
    I've had the same issue with Bluetooth headphones on Windows but there are ways to fix this. In the settings you can switch to a non-microphone version of the device and it'll stream audio without...

    The trouble is bluetooth does not have enough bandwidth for speakers and a microphone. So - those with wired headphones it worked perfectly, but with bluetooth headphones the audio drops to landline phone quality, far below what's listenable.

    I've had the same issue with Bluetooth headphones on Windows but there are ways to fix this. In the settings you can switch to a non-microphone version of the device and it'll stream audio without any microphone input, which fixes the low-quality output issue.

    If you have a separate microphone, you could turn off the headphone microphone through the settings. Might be a solution?

    7 votes