43 karma · joined May 2, 2022
virtual threads (stackful coroutines) in Java is most of the reason why I’m defaulting to it nowadays instead of C#, Rust, etc
The opposite approach is starting with some tech and then trying to find a use for it, e.g. folding phones, second 1/2 screen on laptop, etc, instead of trying to actually create a usable, quality trackpad for instance.
The critique is still valid: Apple, for their software, seem to not have the same focus on quality as Jobs once insisted on. Their physical products are very much still top notch, and the products on the whole are still developed with this mindset as far as I’m concerned. It’s just the software quality that has taken a hit for some reason.
Yeah, no.
The Candy crush and other crappy apps/games in combination to being a full fledged spyware OS with adware on top is already enough to make me run away screaming.
Oh okay, so it’s the best sub-tier laptop on the market. MacBooks still on top, got it.
And as most people with laptops, we own them due to convenience ;) -- that's why I believe they are usually better consumer grade computers than desktops.
A Windows laptop that you convert to a Linux laptop is simply a inferior machine in my eyes and my metrics: worse trackpad, way worse battery life, worse build quality in general (although Razor's laptops are quite good), worse hardware integration (biometric auth). It's a tinkerer's dream, but not the optimal productivity machine.
Linux belongs on the server, maybe desktops, but certainly not on a laptop IMHO.
I say this not to be a Apple fanboy, but rather to acknowledge that Apple's products are not the cancer that some people make it out to be.
And then a very specific problem that has annoyed the crap out of me: extension windows close if Firefox loses focus! That means that using Bitwarden to do this: 1) open Bitwarden and find some login details 2) alt tab to the program you’re trying to sign in to 3) paste the username 4) alt tab back to Firefox/Bitwarden and there you go, the Bitwarden window was closed due to Firefox losing focus and you now have to open it again, search and find the credentials again and then paste the password 5) open Bitwarden a third time and search yet again for the OTP code… A huge pain in the ass that makes me want to use another browser just because of that.
Also I’ve experimented with azure since it’s of course very well integrated with the .NET environment, and I think I’ll use that too instead of digital ocean which I’ve defaulted to before. I thought azure was too expensive, but re-evaluating now, it is actually very generous by giving free tiers which lets you launch without paying a dime.
It's not really a popular tool for the job: Python, which is a simpler language, has a much larger community of gamedev noobs. Or maybe better yet: start with Godot and GDScript
After looking around at the current popular solutions, I've yet to find something that is as ergonomic and productive as the .NET stack in regards to creating a web-based product. You have one of the most solid backend frameworks (ASP.NET) with lots of great tools like EF Core for ORM, SignalR for real-time, now Blazor for frontend, easy authentication and authorization, etc. That just makes everything so performant.
However, that is a very high level focused development path, while I feel Go is slightly lower level where you still have pointers and such. I see it as great for CLI apps and very specific server needs where you'd want great performance and CSP threading in combination with a very easy syntax for new developers, but I don't think that's a very common use case to be honest. Even though I love Go for its focus on simplicity, it just isn't the most suitable lang for high-level work, nor is it very suitable for low-level work at the same time.
Regarding your switch from C# to TS, I understand it made sense in the last couple of years. It simplified the stack via reducing language context switching, which can be a good productivity boost depending on your team and team size. However, if you would've tested Blazor today and found it would have satisfied your frontend needs, I actually think a full C# stack will be better than TypeScript to be honest, due to the better tooling and better runtime that exists for C# compared to Node.js/Bun/Deno. I still think TS is better in the frontend department than Blazor, but that's simply because JS/TS has been the only language for frontend in a long time. I hope Blazor will gain traction as a real alternative.
And then the language itself forces class based programming (which isn't really OOP), which I heavily dislike due to it only over-complicating things in the long run. C# provides largely the same, but MS is actually way more open than Oracle as in it's easy to get documentation and the dev environment set up, and they provide newer and more modern features than Java. Which is surprising given it's Microsoft and their fetish for providing counter-intuitive and user-unfriendly products. When it comes to the JVM / .NET CLR, the only place I find it acceptable is on the server side IMO. The downgrade in performance (which means higher resource usage) side is not worth the "everything is an object" vision for me, at all. Not even close. Client side devices often run on battery power, so that has real consequences there.
So that's why I'm personally not the biggest Java fan. In fact, if anything on harmful.cat-v.org is true, it's "Java is write once, run away" for me... sorry. If only Oracle could provide the same user-friendliness that Microsoft is showing with .NET, ditch class-based programming (which means rewrite the entire language, not very realistic) then maybe it could be interesting, but most likely not better than Go or Node.js, in my experience anyways.
And by the way, what do you mean by threads that really work? It's cool that Java gives you the power of having system threads and green threads in the same environment, but when is that realistically needed? Only time I can think of is writing client-sided code where you want performance to be highly optimized and not wanting to waste time on organizing a new green-thread, but as I've mentioned I believe Java on the client side is nothing but a sin.
Regarding your experience with readability in Go, I have to agree in some way because the known (and controversial) explicit error handling, but what you may realize sooner or later is that handling both the happy path and erroneous path is actually a net positive. That's the difference between seeing `if err != nil {` as code pollution or actual logic. I've realized the latter.