Most active commenters
  • tracker1(9)
  • (9)
  • SideburnsOfDoom(8)
  • mrsmrtss(7)
  • Xelbair(6)
  • masfoobar(6)
  • sfn42(6)
  • banashark(5)
  • mexicocitinluez(5)
  • thiago_fm(5)

.NET 10

(devblogs.microsoft.com)
452 points runesoerensen | 402 comments | | HN request time: 3.393s | source | bottom
1. jitbit ◴[] No.45888669[source]
For us, every .NET upgrade since .NET 5 has gone surprisingly smoothly and reduced CPU/RAM usage by 10–15%.

We were even able to downgrade our cloud servers to smaller instances, literally.

I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.

replies(26): >>45888799 #>>45888804 #>>45889332 #>>45891939 #>>45896032 #>>45898279 #>>45898305 #>>45898358 #>>45898503 #>>45898877 #>>45899062 #>>45899235 #>>45899246 #>>45899326 #>>45899445 #>>45899481 #>>45899858 #>>45900544 #>>45900791 #>>45900829 #>>45903218 #>>45904345 #>>45904435 #>>45905041 #>>45906073 #>>45907122 #
2. oaiey ◴[] No.45888799[source]
Can only confirm that. Such a smooth platform overall for web and API development. We use it with several 100 devs on it and the choice never failed us, neither in technology or hiring. And it is not that we have .NET gurus or anything.
replies(3): >>45898379 #>>45898446 #>>45903937 #
3. catlover76 ◴[] No.45888804[source]
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.

There's that, but there's also the developer experience and functionality for people to run it on Mac and Linux.

We have a small C# service that we run locally via Docker (which I think is usually the optimal setup anyways) and develop with VSCode. Since it's small, it has worked well. Would it work well if that was our main backend? Not sure.

Wish I had the option of full Visual Studio on Mac for it regardless.

replies(6): >>45889972 #>>45890682 #>>45891057 #>>45892093 #>>45898134 #>>45901137 #
4. leetharris ◴[] No.45889332[source]
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.

Too hard to ignore the benefits of cross-stack gains in Typescript/Python. The C# native phone, Blazor, etc just isn't quite there yet. Tried it at the last company, and full stack TS was just so much easier to do.

The reality is that the vast majority of startups don't make it. The #1 thing startups should be focusing on is hiring the right people and product velocity. TS just makes that easier in my experience.

replies(3): >>45890709 #>>45898233 #>>45898434 #
5. mrsmrtss ◴[] No.45889972{3}[source]
You can run .NET natively on Mac, if you wish. I would also recommend JetBrains Rider over VSCode; it works on Linux, Mac, and Windows and, in my opinion, is better than Visual Studio anyway.
replies(1): >>45890248 #
6. nozzlegear ◴[] No.45890001[source]
As a daily user of F#, I'm most looking forward to the support for "and!" in computation expressions. There are a few performance-critical pieces of code I can think of that are currently wrapped up in "Task.WhenAll" / "Parallel.ForEachAsync" that I'd like to extract back into "native" F# task computations.
replies(2): >>45898152 #>>45898201 #
7. nozzlegear ◴[] No.45890248{4}[source]
I use Rider† daily to write F# and C# on my Mac. It works great, I have no issues with it. It even handles the .NET Framework 4.8 code‡ that I maintain without any issues thanks to Mono.

† And Neovim occasionally, but I mostly use it for Typescript or anything that isn't F#/C#.

https://github.com/nozzlegear/shopifysharp

8. phillipcarter ◴[] No.45890682{3}[source]
Rider is your option there, it's better than Visual Studio (I used to work on VS).
replies(2): >>45898213 #>>45898330 #
9. phillipcarter ◴[] No.45890709{3}[source]
Is it though? Backends can be any language and there's a lot more variety there -- TS+node, Go, Python, Java. It's just .NET that's largely ignored for no real technical basis.
replies(4): >>45896164 #>>45898627 #>>45898862 #>>45904484 #
10. jitbit ◴[] No.45891057{3}[source]
I'm founder of a 100% .NET based company (15 years, 1mil LOC), all development happens on Macs, production servers run linux. No issues so far.

No, really, I'm facing more issues from Cursor based based on a year-old upstream version of VSCode than from this, heh...

11. vintagedave ◴[] No.45891939[source]
.Net is also good as a platform for other languages. I recently started working with RemObjects, and you can compile languages like Java, Swift, Go and more (VB, Pascal) to .Net. Then, the whole framework and ecosystem is available. I'm liking it a lot.

They have customers who are startups and the 'got to have tools' folk like having lots of languages since they can onboard people who know anything-not-C# and benefit from the .Net library.

replies(1): >>45898267 #
12. clintmcmahon ◴[] No.45892093{3}[source]
There used to be a Visual Studio for Mac (since retired) but they never could get it right in comparison to the Windows version.

VS Code on a Mac works great and with the ability to run SQL Server in Docker you can have the old stack right there on your Mac.

replies(1): >>45898293 #
13. randyburden ◴[] No.45896032[source]
For what it's worth, the startup I currently work for is built entirely in C# and .NET, as was my previous employer. Both startups are based in the Dallas, TX area. Across both companies, applications were hosted on Azure and AWS using a mix of PaaS services and virtual machines running Windows and Linux. We've consistently found this stack to enable strong productivity and high-velocity release cadences.
replies(2): >>45898225 #>>45898329 #
14. cebert ◴[] No.45896164{4}[source]
You can easily use the same types and libraries in your backend and frontend with TypeScript. It’s not at easy with dotnet.
replies(3): >>45898128 #>>45898236 #>>45898276 #
15. jve ◴[] No.45897644[source]
How come this quickly fell off main page and is ranked 395 right now?

Don't know how trustworthy is this but it seems like it never was on top30: https://hnrankings.info/45888620/

This has 74 upvotes and posted 16hrs ago.. @dang?

replies(2): >>45898112 #>>45898166 #
16. tomhow ◴[] No.45898112[source]
It looks like it was hit by some software penalties that lowered it in the rankings more than it should have been, then it just continued dropping.

I've restored it to the front page and wound back the clock so it gets its rightful dose of front page time.

17. phito ◴[] No.45898128{5}[source]
OpenAPI and client generators solve this issue easily.
replies(4): >>45898168 #>>45898177 #>>45898181 #>>45898458 #
18. phito ◴[] No.45898134{3}[source]
I have a much better dev experience on Linux/Rider than on Windows/VS.
19. ◴[] No.45898152[source]
20. DeathArrow ◴[] No.45898160[source]
>I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.

I love C# and .NET and I use them extensively but I dislike the fact that the framework still kind of forces you into OOP.

If you like to have a more functional workflow you have to roll your own stuff or wrap objects in functional constructs.

But .NET is excellent for startups because:

-it is very fast to develop in

-has excellent tooling

-it is batteries included

-generally you have ONE way to do things that is accepted by most developers

-documentation is very good

-it supports large codebases with ease

-community is large enough

-you can use it for many areas, from embedded, to high performance computing, to desktop, mobile, web backend and web frontend

-it is performant

replies(1): >>45898487 #
21. aeonfox ◴[] No.45898166[source]
Literally just got yoinked up from rank 199 to 2.

https://hackernews.life/?s=top&id=45888620&t=1762939537

It arrived at rank 86:

https://hackernews.life/?s=top&id=45888620&t=1762876085

22. robertlagrant ◴[] No.45898168{6}[source]
No, that's not true. If you share code like this then you can do things like put the same validation code in the frontend and the backend: frontend to give a nice user experience, and backend to protect the endpoint.
replies(1): >>45898510 #
23. cies ◴[] No.45898177{6}[source]
Or GraphQL.

Still one lang on both ends is nice: there are some bits of code you want to run on both ends (like templating for SSR/SEO/caching; but also using them in the browser).

24. josephg ◴[] No.45898181{6}[source]
Still more work than just running the same code everywhere.
25. high_na_euv ◴[] No.45898190[source]
C# has the best ecosystem out there.

I wish CPP development was as robust as C# development is

replies(1): >>45898531 #
26. cies ◴[] No.45898201[source]
I really like F# (as I like OCaml, Elm and Haskell); but I'm always afraid MS will kill it one day.

It helps that now most (if not all) parts of the stack are open source and run on Linux.

replies(2): >>45898239 #>>45898319 #
27. cies ◴[] No.45898206[source]
That's a lot of goodies in a new release! It seems it is outpacing the JVM's development...
replies(1): >>45898403 #
28. starvar ◴[] No.45898213{4}[source]
How is it so different than Visual Studio that you think it is "better"?
replies(6): >>45898247 #>>45898249 #>>45898322 #>>45898354 #>>45898716 #>>45899595 #
29. DeathArrow ◴[] No.45898225{3}[source]
At my current workplace we use a mix of on premise servers and Azure but at former workplaces we deployed to Google Cloud and AWS.
30. pif ◴[] No.45898233{3}[source]
I wish people stopped conflating web programming with the whole realm of software development.
replies(1): >>45898255 #
31. pjmlp ◴[] No.45898236{5}[source]
While suffering the performance loss of V8 versus CLR, JVM or any compiled language.

One of the reasons I am back to writing more C++ code is C++ addons for node.js, as several SaaS products now only care about Next.js as extension SDK.

replies(1): >>45898384 #
32. vintermann ◴[] No.45898239{3}[source]
C# Dev Kit, which VSCode pressures you to install, is a core very non-free component.
33. kurokawad ◴[] No.45898241[source]
To me, it's pretty much unbelievable that Microsoft introduces an agent framework while for JSON serializing third-party Newtonsoft is still the go-to.

Edit. I was not aware that the gap between System.Text.Json and Newtonsoft narrowed, take my comment with a grain of salt, please!

replies(5): >>45898252 #>>45898257 #>>45898281 #>>45899376 #>>45904557 #
34. Deukhoofd ◴[] No.45898247{5}[source]
I switched over entirely to Rider as well, in my experience it's far more performant, has a far smoother UX, has a lot more functionality for power users, and includes Resharper by default, giving you access to a bunch more powerful inspections and refactoring.
35. Semaphor ◴[] No.45898249{5}[source]
Offers essentially everything VS does + everything ReSharper does. I switched after years of using VS + R#, and have never looked back.
36. vintermann ◴[] No.45898252[source]
What's wrong with System.Text.Json?
replies(1): >>45901281 #
37. charcircuit ◴[] No.45898255{4}[source]
If you ignore Android / iPhone, where language choice is limited, practically all other development is web.
replies(6): >>45898315 #>>45898399 #>>45898489 #>>45898491 #>>45898508 #>>45898537 #
38. Deukhoofd ◴[] No.45898257[source]
Is it? We've switched over to System.Text.Json entirely.
39. sfn42 ◴[] No.45898267{3}[source]
> they can onboard people who know anything-not-C# and benefit from the .Net library

I don't get this mindset. I'd much rather have the new guy spend a few months getting used to a new language, than have an organization where everyone uses different languages. It's a nightmare a few years down the road when you have 20 different projects in 15 different languages and the people who built them are mostly gone.

People are way too lenient with this stuff IMO. The goal of an organization should be to have one solution to each problem. For example we use .NET for backend and React for frontend. You don't need anything else. People love to talk about the right tool for the job, it's all BS. You can make pretty much any kind of website using react and pretty much any kind of backend using C#. The only reason to choose anything else is preference.

And sure maybe you have some data science people who need python, thats fine. Just don't have one guy using Py, another using R and yet others using Matlab. That's just asking for trouble. Pick one, stick to it. If you're going to make a change then migrate everything. If it's not worth that then the new tool probably isn't such a big deal after all.

replies(5): >>45898705 #>>45898855 #>>45898990 #>>45899707 #>>45900509 #
40. DeathArrow ◴[] No.45898276{5}[source]
>You can easily use the same types and libraries in your backend and frontend with TypeScript. It’s not at easy with dotnet.

You can do that in .NET, too if you use Blazor for frontend.

41. tinyspacewizard ◴[] No.45898279[source]
Start-ups should strongly consider F#.

It's a force multiplier when you have a small team of strong developers.

replies(3): >>45898460 #>>45898811 #>>45900520 #
42. monerofglory ◴[] No.45898281[source]
The go-to nowadays is System.Text.Json, developed by the same person as Newtonsoft.Json, built in to .NET.

Newtonsoft.Json as the primary JSON serializer (at least in every place I've worked) has NOT been the case versus System.Text.Json for years. Though it certainly used to be the case.

replies(2): >>45898298 #>>45902502 #
43. EdNutting ◴[] No.45898289[source]
It’s exciting to see so much deep computer science that’s gone into optimising the language / JIT / GC / etc (inc. utilising hardware advances).

In a world obsessed with AI and web tech, this is a refreshing read!

44. debugnik ◴[] No.45898293{4}[source]
They couldn't get it right because Visual Studio for Mac was actually a rebranded MonoDevelop, an entirely different IDE than Visual Studio.
45. kurokawad ◴[] No.45898298{3}[source]
Uh okay! I was not aware of this. Thanks for pointing that out. Why is there so much difference in the NuGet downloads between both libraries tho?
replies(4): >>45898424 #>>45898540 #>>45898548 #>>45905845 #
46. olavgg ◴[] No.45898305[source]
As a startup, what is it in for me to switch from Java, Spring Boot, Hibernate, Beam, Flink, Pulsar, Vault, KeyCloak ecosystem to C#.Net? Is the documentation better? Do I get better performance? Is the community larger and more stable?
replies(4): >>45898404 #>>45898520 #>>45899801 #>>45900264 #
47. bob1029 ◴[] No.45898306[source]
These improvements are really making me look forward to Unity finishing their CoreCLR conversion. I think this will be one of the more disruptive announcements once it's complete.
48. forrestthewoods ◴[] No.45898315{5}[source]
> practically all

Define “practically all”. I would accept “clear majority”.

But practically all? Nah. I mean the hot new areas for funding right now are AI and robotics neither of which are web!

I’m coming up on 20 years professional experience. Exactly none of it has been mobile or web! The programming field is so much bigger than HN likes to pretend.

replies(2): >>45898496 #>>45898499 #
49. madarcho ◴[] No.45898319{3}[source]
Where is this worry coming from? (I'm curious, not shutting it down)

I might be biased from having worked with production F#, but it feels more like functional is making its way into C#, as the general industry sees value in functional principles. So F# feels like its more here to stay?

replies(2): >>45898584 #>>45904656 #
50. cyptus ◴[] No.45898322{5}[source]
performance!
51. miki123211 ◴[] No.45898329{3}[source]
> Both startups are based in the Dallas, TX area.

Aah that explains it.

For some reason, .NET is extremely popular outside of major tech hubs (notably in Europe), where you're much more likely to work for (without loss of generality) Ikea than for Google.

replies(1): >>45899593 #
52. whstl ◴[] No.45898330{4}[source]
Yep.

VSCode gets you 90% there.

But IMO Rider gets you over 100%.

53. throwuxiytayq ◴[] No.45898354{5}[source]
Pick literally any Visual Studio feature. Rider does it better.
54. jgilias ◴[] No.45898358[source]
Startups typically have the tech stack that the one man army tech co-founder set up on no budget. Apparently then .NET isn’t too popular for that!
replies(1): >>45904950 #
55. balamatom ◴[] No.45898379{3}[source]
I'm sorry, I just remembered the few .NET maxis I've shared hours with and tried to extrapolate a whole company full of them. I'm sure they must work great with each other.

Which I guess was the whole premise of the .NET ecosystem, so score one for Redmond, I guess!

Apropos, what do they do for fun? I'll probably never meet 100 .NET devs in my life so honest question.

replies(2): >>45899475 #>>45903962 #
56. petesergeant ◴[] No.45898384{6}[source]
> While suffering the performance loss of V8 versus CLR, JVM or any compiled language

The number of startups for whom that performance differential matters more than developer output is tiny.

replies(1): >>45898590 #
57. frenzcan ◴[] No.45898396[source]
At last, extension properties in C#. I’ve been waiting for these for years.
58. gishh ◴[] No.45898399{5}[source]
Sure isn’t.
59. lolive ◴[] No.45898403[source]
Apart from [the equivalent of] records, I see nothing big.

Except...

this '''let! a = fetchA() and! b = fetchB()''' really puzzles me. Does C# have a high-level syntax for concurrency timing? [something that Java is strongly lacking, and that Typescript did solve with Promise.all(), which is an ugly syntax, from my perspective]

Any elaboration on this is very welcome.

replies(5): >>45898449 #>>45898472 #>>45898482 #>>45898872 #>>45900126 #
60. littlecranky67 ◴[] No.45898404{3}[source]
Yes.
61. Hawxy ◴[] No.45898424{4}[source]
> Why is there so much difference in the NuGet downloads between both libraries tho?

Because there's a boatload of older .NET apps that have been using Newtonsoft for over a decade already and aren't in a rush to switch. Anything built on .NET Framework is likely to still use Newtonsoft.

62. vswaroop04 ◴[] No.45898432[source]
I hope .NET will become more popular
63. greener_grass ◴[] No.45898434{3}[source]
What are the cross-stack gains of Python?

Running TypeScript on the server is a well trodden path. It can be pretty fast too. Python on the client, not so much.

64. thiago_fm ◴[] No.45898436[source]
Changed from Ruby to .NET and loving it.

C# is a great language, it's now very modern and has the best parts of Typescript, while leaving out the bad ones.

It's also extremely fast and multi-platform.

It also doesn't have the fragmentation that Java or JVM langs has.

And it's also open source nowadays. I think Sillicon Valley hasn't caught up with those recent changes, I bet more startups would be using C# if they knew.

replies(2): >>45899085 #>>45902527 #
65. ◴[] No.45898446{3}[source]
66. JaggerJo ◴[] No.45898449{3}[source]
The code snippet is in F#. And F# has so called "computation expressions".
67. ralferoo ◴[] No.45898459[source]
> Today, we are excited to announce the launch of .NET 10, the most productive, modern, secure, intelligent, and performant release of .NET yet.

It looks like they got someone from Apple to write their press release.

68. Xelbair ◴[] No.45898460{3}[source]
>startups should consider niche language with extremely limited hiring pool.

sure, but only if you're doing something that actually demands it - and actual innovation - instead of usual 'lets repackage XYZ as SaaS and growthhack' strategy.

replies(2): >>45898567 #>>45899181 #
69. littlecranky67 ◴[] No.45898458{6}[source]
I would love this to be true, but it isn't. I've done generating types for the frontend multiple times, sometimes from C# (around 2016, using typelite), Java (openapi template generator) and most recently straight from OpenAPI spec files (.yaml) using Orval.

It always has been a shitshow. It works well for the 90% cases, but in the 10% edge cases, things break. It becomes impossible to fix generation issues, you will often resort in working around issues in your backend/openapi code. Sometimes you report bugs upstream and hope it gets fixed. In the current project we are stuck on a ~2year old Orval version (a typescript generator from openapi) because some features broke or were removed in the latest version, and the entire monorepo (15+ LoB apps) wouldn't compile and would require major changes. This simply because a never version of the generator was broken/removed features previously present.

70. codeulike ◴[] No.45898472{3}[source]
I think thats F# not C#
71. greener_grass ◴[] No.45898482{3}[source]
Here `a` and `b` can have different types:

    let! a = fetchA() and! b = fetchB()
Whereas `Promise.all` usually requires all promises to have the same type (returning a `List<T>` or even a `List<obj>`) .

See https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fs...

replies(1): >>45899594 #
72. thiago_fm ◴[] No.45898487[source]
There's F# if you want to go fully functional.

Why C# doesn't have first class functions and can't go fully functional (and likely never will): Scala tried and its compiler is slow, even after so many iterations and new novel compiler ideas.

I like the way it is, and hope it doesn't change. Unless they could make this possible without making the compile process extremely slow.

73. adastra22 ◴[] No.45898489{5}[source]
Get out of your bubble.
74. fuy ◴[] No.45898491{5}[source]
It's web in a (limited) sense that there's probably a web frontend somewhere, but this "somewhere" is usually pretty far away from where most of the code is developed.

Most of the backend logic is not related to serving data for the browsers, it's doing actual backend stuff - communicating to databases, APIs, etc.

Is Google search backend a web app? I think it's really stretching the term.

75. adastra22 ◴[] No.45898496{6}[source]
The majority of software is probably Excel macros.
replies(1): >>45900281 #
76. charcircuit ◴[] No.45898499{6}[source]
>I mean the hot new areas for funding right now are AI and robotics

Most developers are not in such startups. There is a lot of boring software out there which is a website. Even for AI, the first company that comes to mind OpenAI is known for ChatGPT, a web product. Most of the AI companies are building web products.

replies(1): >>45898586 #
77. defraudbah ◴[] No.45898503[source]
agree, but it lost the battle when windows was an exclusive platform for it, even when mono was rising in popularity
78. egeozcan ◴[] No.45898508{5}[source]
Most of your electronic devices work with embedded software. Production lines, transport gates, cranes, computer hardware, ships, planes, rockets, cars, e-bikes, smart lights...

There is also scientific programming, that feeds research and analysis. Weather reports? Statistics, etc.

And there is gaming.

Devops, infrastructure? Databases? Tools for artists? Most of those aren't web. And yes I've heard of Figma.

There are probably tens of categories I'm missing.

Web is still bigger probably, but I have a problem with the saying "practically all other development is web".

replies(1): >>45898794 #
79. littlecranky67 ◴[] No.45898510{7}[source]
OpenAPI does support patterns for fields and nullables/non-nullables - that already gets you very far regarding validation. A decently sophisticated generator (which don't exist IMHO) would generate the validation code for your respective language.
replies(1): >>45898922 #
80. Xelbair ◴[] No.45898520{3}[source]
Vault, Keycloak, Flink are language agnostic or there exist bindings for most popular languages.

Documentation is vastly better compared to Java ones, it's like day and night, LINQ is vastly superior to anything that Java offered - but i haven't used java in a very long time. And every time i had to write java it felt like i went backwards in time by 5-10 years.

If i remember right Java's webserver beats ASP.NET in performance benchmarks but .net's one performance is good enough that it does not matter until you hit really big usercount - and at that point you usually have to rethink your architecture anyways.

But frankly .net is still mostly Microsoft Java but with better developer ergonomics in my opinion. It did shed a lot of overengineered OOP legacy from .net framework days though and we're seeing major performance improvements with every version.

replies(3): >>45898814 #>>45901216 #>>45902154 #
81. Arisaka1 ◴[] No.45898530[source]
Every time I read about new .NET version improvements I always remember my attempt to get a job using this stack in my local job market (Greece), where .NET Framework is super prevalent, majorly used by classic companies that don't even give you a fair technical chance if you lack a degree, and the devs are considered to be a cost center.

I really, REALLY wish I was in another timeline where I could say in an interview "yes, I use Linux on my desktop and Rider for my IDE" without being seen as a traveler from outer space.

I enjoy working with modern C# way more than node.js but... that's it.

replies(4): >>45898684 #>>45898841 #>>45901354 #>>45904058 #
82. bilekas ◴[] No.45898531[source]
They are very different beasts.. What problems are you having with CPP that you're not with C# ? Funny enough a lot of the 'ecosystem' is on the back of cpp..
replies(2): >>45898555 #>>45899482 #
83. delta_p_delta_x ◴[] No.45898537{5}[source]
> practically all other development is web

This is a pretty ignorant take.

84. akoeplinger ◴[] No.45898540{4}[source]
System.Text.Json ships as part of the shared framework in recent versions of .NET so for most users it won't be restored from nuget.org
85. xnorswap ◴[] No.45898548{4}[source]
System.Text.Json isn't needed as a nuget library for newer development, the library is only needed for older stuff.

Those older stuff are likely running newtonsoft.Json anyway.

There's also a load of .NET Framework applications still running Newstonsoft.

86. high_na_euv ◴[] No.45898555{3}[source]
Evaluating complex expressions during debugging.

In c# I can evaluate complex linq data transformation in watch window in visual studio during debug, at fly.

In cpp I cannot. Not even nested evaluation is working.

replies(1): >>45898778 #
87. dude250711 ◴[] No.45898567{4}[source]
It's good for, and I am not being sarcastic or snarky, justifying high pay and gate-keeping. Developers should set up more barriers for entry - look at doctors and lawyers.
replies(2): >>45899728 #>>45899909 #
88. azertify ◴[] No.45898584{4}[source]
Doesn't it feel like the functional stuff is coming into C# so that F# can disappear? Pure speculation on my part but doesn't seem unreasonable.
replies(3): >>45898753 #>>45899526 #>>45905757 #
89. johannes1234321 ◴[] No.45898586{7}[source]
That is software with a web interface. Only a small part of OpenAI's work deals with web related things.
replies(1): >>45898713 #
90. pjmlp ◴[] No.45898590{7}[source]
Yeah, except plenty of them are probably using Kubernetes and NoSQL, because everyone dreams to be Google.
91. SparkBomb ◴[] No.45898627{4}[source]
It really depends where you are. In the UK half the places seem to use .NET in some form or another.

I am pretty language agnostic and I am reasonably competent programming in C# (I worked with C# and VB.NET for about 15 years), Go, Python, TypeScript and C++ these days.

The issue with a lot of places that do C#/.NET stuff is that they will typically ignore new tech until it is officially blessed by Microsoft. You can have a piece of tech that everyone is using and works really well and it will be ignored if it isn't blessed by Microsoft.

The other issue with .NET is all the Microsoft gumpf that tends to come with it even with the newer versions of .NET.

I am also in the weird place of being a Linux user. I've had job interviews that wanted to do live coding exercise/take home code exercise and they expect you to do everything in Visual Studio with SQL Server.

replies(1): >>45898707 #
92. kopirgan ◴[] No.45898682[source]
Does this version improve or streamline the numerous options for web dev like Razor, Blazor etc? Anyone can comment on which is actually being popular
replies(1): >>45906165 #
93. netdevphoenix ◴[] No.45898684[source]
> I really, REALLY wish I was in another timeline where I could say in an interview "yes, I use Linux on my desktop and Rider for my IDE" without being seen as a traveler from outer space.

Could you please elaborate? Are you referring to most .NET shops not straying away from Windowsland?

replies(1): >>45898821 #
94. netdevphoenix ◴[] No.45898705{4}[source]
> People love to talk about the right tool for the job, it's all BS

This sounds very close minded to me. It is certainly true that there exist tasks if not subdomains where some ecosystems are better than others. Using a hammer for everything might work for you if all your problems are nails. But that doesn't mean that all problems out there are nails

replies(2): >>45898795 #>>45899021 #
95. mrsmrtss ◴[] No.45898707{5}[source]
Why would they insist on using Visual Studio? At least you can run SQL Server easily on Linux using docker.
replies(1): >>45898835 #
96. defraudbah ◴[] No.45898713{8}[source]
how dare you, i summon 10 js engineers from openai to downvote you (they have 6 only)
97. SparkBomb ◴[] No.45898716{5}[source]
I've used Rider for several years now on and off. Generally I would put these at the top of the list.

- Integrated ReSharper.

- Far better performance (it isn't even close)

- Doesn't take 30GB of disc space up. Visual Studio has been a massive disc space hog since forever. Rider is a few hundred megabytes IIRC.

- Less bugs (Visual Studio has been progressively getting worse).

- There was better tooling IMO around NuGET.

replies(1): >>45898954 #
98. kfuse ◴[] No.45898738[source]
Updated a pet project of mine and got a minor break:

  var pixels = new uint[renderers.width * renderers.height];
  var pixels2 = MemoryMarshal.Cast<uint, ulong>(pixels);
  pixels2[idx] = ...
In NET9.0 pixels2 were Span<ulong>, but in NET10.0 a different MemoryMarshal.Cast overload is used and it is ReadOnlySpan<ulong> now, so the assignment fails.

Spans is such a fundamental tool for low level programming. It is really unfortunate they were added relatively late to the language. Now every new version includes a slew of improvements related to them but they will never be as good as if they were there from the start or at least as early as generics were.

99. pizza-wizard ◴[] No.45898753{5}[source]
Microsoft is still supporting VB.NET, Windows Forms/WPF, and to a lesser extent VBA. I doubt F# is going away anytime soon.
replies(1): >>45899389 #
100. bilekas ◴[] No.45898778{4}[source]
Ah okay, yes, debugging tools are a bit more friendly with C# but it's again the nature of the beast of cpp, but to nitpick this is a compiler area moreso than a tooling issue . CPP will compile direct to binary, whereas C# will compile to machine Lang iirc, an intermediary step anyway, so you can imagine it makes debugging much easier.
replies(1): >>45900058 #
101. hshdhdhj4444 ◴[] No.45898794{6}[source]
I really doubt you’re using .NET (it literally is named in the dotcom style and refers to the interNET) in embedded software.

In an article about .Net its fair to talk primarily about creating APIs and other internet focused uses.

replies(1): >>45899097 #
102. mhfu ◴[] No.45898795{5}[source]
If your organization has one API written in Node, another in Java and third in Python without any reason, then yes, all the problems are nails. And sadly, I've seen this a lot.
103. ikety ◴[] No.45898811{3}[source]
F# seems really awesome. Used it briefly for an internal tool. Are you at a startup working with it?
replies(1): >>45900479 #
104. mrsmrtss ◴[] No.45898814{4}[source]
>If i remember right Java's webserver beats ASP.NET in performance benchmarks

That's not the case anymore. Kestrel is one of the fastest servers there is, and it beats every Java server out there.

replies(3): >>45898948 #>>45899678 #>>45899712 #
105. Arisaka1 ◴[] No.45898821{3}[source]
It's not about what the company uses, but how informed the technical people responsible for hiring candidates are around the ecosystem they claim they work with.

Example:

Expected: "Oh, you're on Linux? I heard about Rider. We use Windows and Visual Studio here for parity. You're okay with that, right?" (me: Obviously, tools are tools)

Actual: "Does .NET run on Linux? What is Rider?"

I mean, .NET has been running on Linux since forever now (11 years according to https://news.ycombinator.com/item?id=9459513, let's say about 9 for stability because I feel generous). How do they not know about it?

replies(1): >>45900022 #
106. SparkBomb ◴[] No.45898835{6}[source]
> Why would they insist on using Visual Studio?

They don't even know Rider exists a lot of the time. It is also quite different visually compared to Visual Studio code.

A lot of places have never used Linux at all and if they have they have it would be WSL or some RHEL box. So if you are screen sharing Gnome and with a totally different IDE and Terminal the person assessing you might not actually understand what you are doing.

> At least you can run SQL Server easily on Linux using docker.

1) They normally want you to use something like SQL Server Compact or SQL Server Express and a specific version. TBH I just don't bother anymore with these interviews because it takes like a couple of hours to get all this stuff working on Windows.

2) SQL Server Projects can only be used on Windows with Visual Studio. Some places do a lot of stuff "old school" and they want you to use that.

107. metadata ◴[] No.45898841[source]
A bit off-topic, bit hiring exceptional .NET developers is like searching for a needle in a haystack. Way more people have a ton of experience with JS and marginal experience with .NET, just writing very basic API endpoints - yet claiming serious experience.

If you came to me for an interview, your story would have been a breath of fresh air. So maybe try to mention it anyway, someone will be interested.

108. Razengan ◴[] No.45898855{4}[source]
Do you also make everyone wear the same clothes, drive the same vehicle, order the same food
replies(2): >>45898889 #>>45899291 #
109. hshdhdhj4444 ◴[] No.45898862{4}[source]
> It's just .NET that's largely ignored for no real technical basis.

As someone who has been developing primarily on .Net for the past decade this is absolute bullshit.

1. It’s only very recently that .Net became open source. Until then you would frequently hit issues where the only option was to rely on the few support calls you got with MS engineers with your $1000+ Visual Studio subscription to move forward. And believe me, this isn’t a pleasant way of debugging. 2. It’s only recently that .Net became cross platform. Until recently .Net meant you had to pay far more money for windows servers, get far less performance, and open your application to way more security issues. And when things broke they broke in highly inscrutable ways. 3. It’s still not a great platform. If you’re deploying on Windows, there are still things you will want to do that will require windows registry changes. 4. It’s only recently that the transition to an open source/cross platform framework has stabilized. Until now you had to deal with MS alphabet and naming goop, an absolutely muddy roadmap, and if you ever got thrown into a project you’d end up finding yourself in a mess of varying conventions, project types, incompatibilities, etc. 5. You know all those performance improvements they’re delivering with every release? There’s a reason for that. Until recently performance was so bad. Kestrel alone provider at least an order of magnitude of improvement. 6. Thank the lord for Jetbrains but other than them, to do proper .Net development you need to use Visual Studio. And Visual Studio is not a pleasant IDE or development environment at all.

There were a lot of technical reasons to not adopt .Net. Even today there’s the problem of MS losing interest or making the wrong choices and there being basically no alternative, because unlike even Java, the .NET ecosystem is completely dependent on what MS does.

replies(2): >>45898963 #>>45907010 #
110. adgjlsfhk1 ◴[] No.45898872{3}[source]
The inlining and escape analysis changes are fairly big from a performance perspective.

Also, C# doesn't need nearly as many massive changes like project Valhalla because they got a lot of those design choices right from day 1 (mostly by looking at what Java did that was dumb and avoiding it).

111. netol ◴[] No.45898877[source]
The XML/config side of things just isn't for everyone. Sometimes Go's simplicity wins out.
replies(2): >>45898943 #>>45899177 #
112. thw_9a83c ◴[] No.45898888[source]
Related and useful (work in progress): Breaking changes in .NET 10 [1]

[1]: https://learn.microsoft.com/en-us/dotnet/core/compatibility/...

113. SideburnsOfDoom ◴[] No.45898889{5}[source]
> Do you also make everyone drive the same vehicle

Good analogy. If, say, your organisation maintains a fleet of cars - it needs to keep them on the road, get them serviced, replace parts, refresh individual cars regularly etc.

How many different makes and models do you support? A small org might decide that it only makes sense to support one. A larger org might have the resources for 3 or 4, so that there is 1 or 2 "general purpose" models, and then other ones suited to specialised tasks.

replies(1): >>45899086 #
114. robertlagrant ◴[] No.45898922{8}[source]
True, but you can get all the way to zero duplication if you write it directly and share that code.
replies(1): >>45901344 #
115. neonsunset ◴[] No.45898943{3}[source]
It is as simple as what you get with Cargo, and possibly even more readable.

.NET, unlike Go, has all needed management commands built into its CLI too: dotnet new {template}, dotnet add/remove package, dotnet sln add/remove, etc.

116. hans0l074 ◴[] No.45898948{5}[source]
I do not have any benchmarks other than this[1] to refer to, but I work with Quarkus[2] and Java 25 LTS (just recently released) services deployed on AWS EKS and we are very happy with the performance (for mobile game backends)

[1]: https://sharkbench.dev/web [2]: https://quarkus.io/

117. dahauns ◴[] No.45898954{6}[source]
>- Less bugs (Visual Studio has been progressively getting worse).

Eeeeeeh...it's not quite roses and rainbows on the Rider side either, and that's coming from a Jetbrains fanboy. (Although admittedly, I'm not really up-to-date on the current state of VS in day-to-day work)

But yeah, the coding/refactoring support (Resharper et al) and general quality and integration of tooling (database tools, package managers, version control, debugging (esp. multi-process) etc.) is the big one for me.

replies(1): >>45899168 #
118. ourmandave ◴[] No.45898990{4}[source]
It's bad enough when you've got constantly changing "best practices" from MS so the thing you wrote last year doesn't look anything structurally like what you're doing now.

And all the 6-month-old on-line docs and tutorials aren't only useless, but time wasting.

replies(1): >>45899070 #
119. sfn42 ◴[] No.45899021{5}[source]
If you can justify with good reasons why you absolutely need this other tool then that's fair game - hence the data science example where I allow for specialists to use specialized languages for specialized tasks.

I'm talking about general software development and web dev in particular. There's a trend where you'll see one org has or web app using .net ad react, another using next.js, another using Java and Vue, one djnago and htmx, and so on.

And there is literally no reason for any of these choices, they're all fairly basic web applications that could have all been made in literally any half decent web stack. So whether the devs who made these choices knew or not, they made them based on preference not any kind of reason or need, they're all nails and any hammer would have done the job just fine.

replies(1): >>45900628 #
120. lol768 ◴[] No.45899046[source]
What is the deal with Ubuntu and this version of .NET?

Every since they got rid of the Microsoft packages feed, it's just been a complete mess.

Ubuntu's own documentation states:

> .NET 10 will be available in the Ubuntu archive for Ubuntu 24.04+ and included in main upon its official release

But it isn't available?

replies(1): >>45907225 #
121. brainzap ◴[] No.45899062[source]
too much microsoft
122. sfn42 ◴[] No.45899070{5}[source]
So you don't like .NET, that's fine. I'm not saying everyone needs to use .NET. I'm saying pick one thing and stick with it.

That said I think you're exaggerating those complaints, the docs for C# are quite good imo and I've been working with ASP.NET web apps for half a decade so far and I'm not seeing any problems like you're describing.

Maybe you're miffed about the Framework to Core/.NET switch? That was a bit of a doozy but the ecosystem is so much better for it I'd say it was worth it.

replies(1): >>45899165 #
123. dahauns ◴[] No.45899085[source]
>and has the best parts of Typescript

I really like C#, but I wouldn't go that far - unions are at least on the horizon, but I've sometimes come to miss the power and flexibility of TS's structural typing...(And so has Hejlsberg, apparently, seeing his reasoning for choosing go over C# for tsc :) )

replies(3): >>45901079 #>>45903991 #>>45905533 #
124. Razengan ◴[] No.45899086{6}[source]
But different tasks require cars, other tasks require trucks, vans, bicycles, motorcycles..
replies(4): >>45899147 #>>45899347 #>>45899483 #>>45902989 #
125. master-lincoln ◴[] No.45899097{7}[source]
And you just deduct that from the name? Was .NET created with a focus on web? It seems to me like a generic application framework.

ASP.NET is the web part, no?

126. martijn_himself ◴[] No.45899123[source]
I usually feel ambivalence with announcements of new C# versions.

Yes, a lot of great features have been added over the years. But it also introduces some amount of cognitive load and confusion. Take the first new feature in the example:

> Field-backed properties simplify property declarations by eliminating the need for explicit backing fields. The compiler generates the backing field automatically, making your code cleaner and more maintainable.

Huh, I thought we have had this for years, what were they called, ah Auto-Implemented Properties- so why is there a need for this? In this example:

  // Automatic backing field with custom logic
  public string Name
  {
      get => field;
      set => field = value?.Trim() ?? string.Empty;
  }
Ah so it's a way to access the backing field of Auto-Implemented Properties if you need more logic. And in the above can we just say:

  get;
or do you need to refer to the field keyword explicitly in the getter if we use it in the setter?

I feel like the documentation is always somewhat lacking in explaining the reasoning behind new features and how it evolves the language from earlier versions.

replies(3): >>45901384 #>>45902293 #>>45906217 #
127. ethin ◴[] No.45899130[source]
How is .NET debugging on the command line? I don't use IDEs that often and last time I tried making something serious with .NET I couldn't find any kind of reliable debugger that I could just spin up and get to grips with. And I wasn't exactly very keen on switching from VS build tools to full VS just to debug .NET apps.
replies(2): >>45899180 #>>45903455 #
128. sfn42 ◴[] No.45899147{7}[source]
Yeah, .NET is a truck and React is a bicycle. Nobody sad you can't use different tools for different tasks.

I'm saying use one tool for one task. One type of truck. One type of bicycle. Maybe some companies need both a small and a large truck. That's all fine as long as you actually need it.

Just don't let every dev choose their own because you're gonna have a hell of a time maintaining that fleet.

replies(3): >>45899505 #>>45899924 #>>45900756 #
129. SideburnsOfDoom ◴[] No.45899165{6}[source]
> the thing you wrote last year doesn't look anything structurally like what you're doing now... all the 6-month-old on-line docs and tutorials aren't only useless, but time wasting.

This is indeed a complete exaggeration.

replies(1): >>45899314 #
130. SparkBomb ◴[] No.45899168{7}[source]
> Eeeeeeh...it's not quite roses and rainbows on the Rider side either, and that's coming from a Jetbrains fanboy

Obviously. IME it is better than Visual Studio.

> But yeah, the coding/refactoring support (Resharper et al) and general quality and integration of tooling (database tools, package managers, version control, debugging (esp. multi-process) etc.) is the big one for me.

I rarely use any of these tools tbh. I just want Resharper and something that works reliably on Linux. I would transition to using vim entirely but half the vim stuff I like using I can't use with Windows (work is never not going to use Windows).

131. loldot_ ◴[] No.45899177{3}[source]
One of the big features in .net 10 is the ability to do `dotnet file.cs` to run an application, with package import and assembly attributes directly in the file.
132. formerly_proven ◴[] No.45899180[source]
Isn't the official .NET debugger only allowed to be used from Visual Studio and VSC? I recall Jetbrains had to remove debugging support from their IDE for a while due to that license. Also the whole kerfuffle around hot reloading first being added to .NET (Core) and then the code being deleted because it was supposed to be a VS-only feature.

These things to me seem like one faction in MSFT wants .NET to be an open platform and another faction wants it to be a sales funnel for Visual Studio.

replies(1): >>45900342 #
133. bonesss ◴[] No.45899181{4}[source]
F# is less popular, but it’s a first class .Net language with full MS support and integration onto .Net (VM and ecosystem). C# has been tracking F# and aiming for language parity for years (ie all your modern C# devs should be learning the same language facilities). F# is multi-paradigm so C# devs can write idiomatic C# with minor forced changes. And as a .Net language you can always decompile it into C# and keep going from there.

That’s a radically different proposition than, say, raw OCaml and not particularly niche. It also impacts hiring pools differently since competent functional C# devs are viable, but it tends to appeal to a certain calibre of dev.

Moving faster with fewer errors and more talented candidate pool are relevant to repackaged SaaS startups too. Leaves more time for the other stuff and scales better.

replies(2): >>45899232 #>>45899743 #
134. jcmontx ◴[] No.45899182[source]
I've worked with .NET for over 10 years and we built our startup on top of it. Here are my thoughts:

Pros:

* Stability

* Very decent standard library

* Good balance between productivity and robustness

* Great package management

* Extremely easy to upgrade, so essentially free goodies (performance) every year or so

Cons:

* Very MSFT dominated (obviously)

* Subpar tooling outside of Windows (I'm looking at you C# Dev Kit)

* C# has way to many features, it feels bloated

* Culturally, it feels like .NET devs are less "passionate" about their work

* The freaking stigma of being a .NET dev: you will never be as cool as the guys who work with Node/Python/whatever

Edit: Also I'd like to add EFCore as one of the pros of the ecosystem. Hands down the best ORM. Others don't come close.

replies(7): >>45899274 #>>45899472 #>>45899662 #>>45899834 #>>45899898 #>>45900262 #>>45904735 #
135. igravious ◴[] No.45899228[source]
Anybody remember IronPython, IronRuby, etc?
replies(3): >>45900364 #>>45901048 #>>45905585 #
136. Xelbair ◴[] No.45899232{5}[source]
don't get me wrong - i want F# features in C#! I like the ecosystem and both languages.

I'm just pointing out that no matter how cool the language is if it doesn't serve business needs(hiring, onboarding ,ease of replacing staff, target market) it won't be picked.

replies(1): >>45899692 #
137. masfoobar ◴[] No.45899235[source]
I think the "confusing" aspect with C#, being part of the Microsoft eco-system, is that there are many smaller companies (and startups) that may have concern paying for such tools.

To the uneducated, C# is linked to Visual Studio.. the IDE.. and the Community edition if free as long as you are a student, open-source, and individuals. Professional and Enterprise are paid.

(Yes - there is Visual Studio Code)

Again, I am looking at this from the uneducated. With the above, as well as "going with other Microsoft products" things start to get more expensive. Need a database - should it be SQL Server? Should it be Windows Servers? etc.

Because of the above, I would not be surprised if Go is more popular especially for startups... alongside Linux, MySQL/Postgres, as well as other IDE or text editors. Sure.. I might agree that Visual Studio Code is suited for various programmers today.

Not suggesting you are wrong in any way. It's just the amount of money spent on Windows/Microsoft for small companies is rather large, compared to other alternatives that are just as good.

replies(6): >>45899296 #>>45899324 #>>45900334 #>>45900401 #>>45900994 #>>45905121 #
138. CharlieDigital ◴[] No.45899246[source]
I'm at a series-C, YC startup. We made a switch from TypeScript to C# two months back. Now we have a team of over a dozen backend engineers working on C# transitioning from TypeScript. 90% are working with C# for the first time. (We are still hiring backend C# engs!)

I can say that it has gone waaaaaay smoother than anyone would have thought. This is a decision (language switch) that the team has been putting off for a long time and simply suffering through some big time jank and complexity with TypeScript (yes, TS at scale becomes complex in a very different way from C# because it becomes complex at the tooling layer in an "unbounded" way whereas C#'s language complexity is "bounded").

Indeed, I think more teams should give C# a shot. My own experience is that C# and TypeScript at a language level are remarkably alike[0] that if you know one well, you can probably quickly learn the other. But the C# ecosystem tooling is more cohesive, easier to grok, and less fickle compared to JS/TS (as is the case with Go, Java, etc. as well).

There still remains a lot of mis-perceptions about C# and .NET in general and I think that many startups should spend the time to give EF Core a shot and realize how every option in JS-land ends up feeling like a toy. EF Core itself is worth the price of admission, IMO.

[0] https://typescript-is-like-csharp.chrlschn.dev/

replies(2): >>45899925 #>>45900096 #
139. duxup ◴[] No.45899274[source]
Anecdotal opinion , but as someone who works in Node and JS land a lot of the time. I think .NET is pretty cool.
replies(1): >>45903499 #
140. locknitpicker ◴[] No.45899291{5}[source]
> Do you also make everyone wear the same clothes, drive the same vehicle, order the same food

I don't think this is an valid comparison. There's a problem called technology sprawl, which is characterized by needlessly increasing maintenance needs and cognitive load and lower development speeds caused by the need to juggle multiple programming languages or frameworks. There is a fixed cost in maintaining each tech stack and even development environment, and you multiply that cost each time you think it's a good idea to introduce yet another programming language or framework.

141. CharlieDigital ◴[] No.45899296{3}[source]

    > It's just the amount of money spent on Windows/Microsoft for small companies is rather large, compared to other alternatives that are just as good.
This is a complete mis-perception about the modern ecosystem.

We have a full team using C# at a series-C, YC startup with every developer on Macs (some on Beelinks and Linux). The team is using a mix of VS Code, Cursor, and Rider. We deploy to Linux container instances in GKE on Google Cloud running Postgres.

There is no more tie in to Microsoft licensing than there is say for TypeScript. Yes, C# DevKit is licensed like VS, but if you don't need the features, then you can also use DotRush or just use the free C# Extension.

replies(2): >>45899403 #>>45900672 #
142. ourmandave ◴[] No.45899314{7}[source]
Sorry, I love .NET and have used it from it's rollout back in 2002.

I'm just fondly remembering the ASP.NET MVC churn or more recently, Azure API whiplash.

replies(1): >>45906818 #
143. lou1306 ◴[] No.45899324{3}[source]
> Need a database - should it be SQL Server?

"I am using Java. Need a database - should it be Oracle?"

.NET Core 1.0 was released almost a _decade_ ago.

replies(1): >>45900819 #
144. christophilus ◴[] No.45899326[source]
I really liked working with C#. I spent 15 years or so with it and found it very productive. But no; I don’t miss the culture of C# / Microsoft shops at all.
replies(1): >>45899411 #
145. locknitpicker ◴[] No.45899347{7}[source]
> But different tasks require cars, other tasks require trucks, vans, bicycles, motorcycles..

No, they don't. You may believe that some frameworks or programming language are ideally suited for some particular tasks, but that is mainly dictated by your prior experience (or lack thereof). The truth of the matter is that a van can very well do the tasks you conceive for a car, trucks, bicycles, motorcycles, etc. If you go with a van, you avoid the problems of having to maintain car, trucks, bicycles, motorcycles, etc. This is called software engineering.

146. BatteryMountain ◴[] No.45899376[source]
Haven't touched the newtonsoft package since .net core 3 / or about 5 years go? Something like that. Its not really getting updates and its huge/slow compare to built in one. The built in one is much better these days and plays well with other subsystems in aspnet.
147. debugnik ◴[] No.45899389{6}[source]
Supporting as in maintenance mode, at least VB.NET. Thankfully F# is more community driven, but the CLR ecosystem is definitely getting C#-centric in the use of idioms and features from newer C# versions, which increasingly affects F# interop while they catch up.
replies(1): >>45901350 #
148. martinald ◴[] No.45899403{4}[source]
Totally agree.

Ironically dotnet runs better on Linux/Mac systems in my experience. All our devs who use Windows for dotnet dev now use WSL2 as it matches production. We don't use any other 'commercial' Microsoft products like SQL Server or Azure. All postgres/redis/etc and deploy onto docker containers.

replies(1): >>45900878 #
149. mexicocitinluez ◴[] No.45899411{3}[source]
> culture of C# / Microsoft shops at al

What do you mean?

replies(2): >>45900142 #>>45900245 #
150. theshrike79 ◴[] No.45899445[source]
C# is massive in (mobile) gaming because of Unity.

And when the front-end is C#, it only makes sense to do the backend in .NET too so you can share classes easily.

replies(1): >>45905072 #
151. theshrike79 ◴[] No.45899472[source]
> * Culturally, it feels like .NET devs are less "passionate" about their work

Only in the "stove pipe industry" as we say here. Mobile gaming is massively C#-based for example and the people are really passionate about what they do.

And for a backend dev, the scale of stuff you get to work with is cool.

152. LandR ◴[] No.45899475{4}[source]
> Apropos, what do they do for fun?

Odd question, but as a .NET developer myself

Mountaineering, climbing, bouldering, going to gigs, playing pool, running, music festivals, gaming, photography, watching F1, watching NBA, eating out with friends...

I'm not sure what the point of the question was ?

153. parliament32 ◴[] No.45899481[source]
I think the key problem is that a large number of startups are shipping software in containers, and dotnet requiring a CLR is not particularly well-suited for containerization. It's like the old school Java JVM model. You have to ship a copy of the runtime with every container, and if you're doing proper microservices it's an awful lot of overhead.

Yes I'm aware MS makes it easy to build containers and even single executables, but languages that compile down to an ELF are pretty much a requirement once your deployments are over the 10k containers mark.

replies(11): >>45899527 #>>45900963 #>>45901005 #>>45901024 #>>45901026 #>>45901133 #>>45901711 #>>45901752 #>>45903133 #>>45904968 #>>45905736 #
154. theshrike79 ◴[] No.45899482{3}[source]
With C# (.NET) I can click on "install package" in my editor and within seconds it's downloaded and in my project.

With C++ it's a whole different thing.

155. SideburnsOfDoom ◴[] No.45899483{7}[source]
I think that question is more "how many different makes of van can your delivery company afford to maintain?"

Which is an analogy for "how many different programming languages for the same task of serving a web api can you company afford to support?"

The majority of programming languages (c# definitely included!) are "general purpose", i.e. they can be used well enough for almost all tasks. They're not so different as a truck vs. a bicycle.

The issue is not so much "we need firmware in Rust and statistical analysis in R" - that's fair! The issue is more, as others have said, web apps or similar in multiple equivalent languages. This is an overhead. If you take on that overhead, recognise that 1) it has definite drawbacks and 2) for mundane tasks, the advantages aren't large. and 3) chances are your organisation is like most orgs - you don't do all of firmware, statistical analysis and web apps, in house.

replies(1): >>45900681 #
156. SideburnsOfDoom ◴[] No.45899505{8}[source]
> Just don't let every dev choose their own because you're gonna have a hell of a time maintaining that fleet.

Yes, this.

> I'm saying use one tool for one task.

I saw an article ages ago arguing that the number of supported languages should scale with the size of the organisation. Which makes sense to me. The threshold was larger than we might expect though, it was something large like "one fully supported language per 500 devs". In other words, small-medium orgs will have a better time supporting 1 language only.

157. bonesss ◴[] No.45899526{5}[source]
C# has incomplete and often compromised versions of the constructs F# mostly took from OCaml, and as you extend those exhaustive guarantees towards formal verification you bump into F*.

C#s adoption of language features shows their utility but they’re not a replacement, per se. Without a clear functional answer in certain language and parallel computing scenarios MS would be ignored. Scala and Kotlin are comparable answers to comparable pressures on the JVM, and even keeping pace there with new and exciting tools/libraries requires some proper functional representation on the .Net platform.

F# will disappear when/if those other languages do, and already has lots of what C# is chasing with a more elegant syntax. It inherits VM and project improvements from C#, so the biggest threat to long term investment is something like the crippling changes made to FSharp Interactive (FSI), during the .Net Core transition. Otherwise it seems to be in a safe place for the foreseeable future.

158. paride5745 ◴[] No.45899527{3}[source]
Exactly this point.

Go and Rust produce native binaries, I wish C# had an official native compiler without the big runtime needs of .Net.

replies(2): >>45899644 #>>45899673 #
159. cheschire ◴[] No.45899593{4}[source]
The Dallas area is a major tech hub. It’s just an older hub of major enterprisey type companies with major tech divisions there like Texas Instruments, AT&T, Bank of America, defense contractors like Lockheed, etc.

Office Space took place there before the dotcom bust.

Less enterprisey, but John Carmack and id Software also started there.

replies(1): >>45900486 #
160. ajifurai ◴[] No.45899594{4}[source]
Actually, TypeScript's `Promise.all` can handle different types too.

    const [a, b] = await Promise.all([fetchA(), fetchB()]); // => a: A, b: B
replies(1): >>45899723 #
161. zigzag312 ◴[] No.45899595{5}[source]
Much better UX and integrated ReSharper.
162. cachius ◴[] No.45899644{4}[source]
You might want to read https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...

Publishing your app as Native AOT produces an app that's self-contained and that has been ahead-of-time (AOT) compiled to native code. Native AOT apps have faster startup time and smaller memory footprints. These apps can run on machines that don't have the .NET runtime installed.

replies(4): >>45900365 #>>45900449 #>>45900617 #>>45907144 #
163. threetonesun ◴[] No.45899662[source]
It’s funny, I came up in my career working in places mixed with .NET and PHP/JavaScript devs and the .NET developers all felt the PHP/JS teams were clown cars. IMO had .NET Core come out a few years earlier it would have a much bigger marketshare today, but when you had Ruby/PHP/Node/Python devs primarily using Macs, no one wanted to touch the thing.
164. synergy20 ◴[] No.45899673{4}[source]
rust and go are only good at single binary. when you need a few their size adds up quickly, because they don't really do shared libs.
165. Xelbair ◴[] No.45899678{5}[source]
the famous benchmark that put ASP.NET in #1 spot was hyperoptimzied to hell while competing with normal implementations of other systems. https://web.archive.org/web/20250330225652/https://dusted.co...

archived version becasue original one gives 404

currently according to techempower benchmarks ASP.net is 55th overall in minimal variant, while being 83 in normal one in Fortunes benchmark which is basically a normal usecase.

While most java framworks oscillate between 10-30

https://www.techempower.com/benchmarks/#section=data-r23

EDIT: there's also an entry for aspnetcore at 35th

replies(3): >>45899997 #>>45900187 #>>45905107 #
166. ◴[] No.45899692{6}[source]
167. jelder ◴[] No.45899707{4}[source]
Using the right language for the problem domain is a good thing, but what I can't stand is when people self-identify as the one language they are proficient in. Like, "I'm Staff JavaScript developer" no buddy, you aren't "Staff" anything if you only know one language.
168. dustedcodes ◴[] No.45899712{5}[source]
That's not what Microsoft's own sponsored benchmarks say:

https://www.techempower.com/benchmarks/#section=data-r23

replies(1): >>45899847 #
169. greener_grass ◴[] No.45899723{5}[source]
I am talking about C# / F# context where the lists must have homogeneous types.

That TypeScript supports this is yet more complexity introduced to cover usages of an API not designed around types.

170. stiiv ◴[] No.45899728{5}[source]
I think I agree with you. When I was part of a growing F# team a number of years ago, everyone we hired was an enthusiast who just loved coding in F# and wanted an opportunity to do it professionally. It turned out that this love, combined with the constraints of the language, led to a super-clean and legible code base. The quality was (in my estimation) outstanding, and I was sad to leave it.
replies(2): >>45901742 #>>45903584 #
171. stiiv ◴[] No.45899743{5}[source]
Last I knew, Rider was pretty much the only IDE available for a large codebase when you weren't on Windows. Much love for Ionide, but it was a serious struggle.

Is this any better now?

replies(1): >>45900873 #
172. troupo ◴[] No.45899801{3}[source]
Most of that ecosystem is language agnostic, or offer much more ergonomically sane APIs in dotnet. This is especially true for anything coming out of Google (e.g. Dataflow which runs on top of Apache Beam).

C# itself has way better DX (object initializers alone are worth the switch), and most language features don't feel bolted on like with Java (anything from functional programming to extension methods to whatever).

And at least 6 years ago .net with default settings required significantly less resources (RAM, CPU) and yad significantly faster startup than comparable Java code.

C# is also significantly more consistent. You might not use LINQ, but since everything is IEnumerable, you will use the same set of methods on everything. None of the Lis.of...Collectors.collect idiocy from Java.

I also found Asp.net to have significantly less undebuggable magic than Spring.

replies(2): >>45900211 #>>45902190 #
173. deburo ◴[] No.45899834[source]
* C# has way to many features, it feels bloated

Most of the newer features make C# less cumbersome to use. I can't imagine using the language from ten years ago, in fact the first thing I do when working on a legacy app is to set langVersion=latest.

replies(2): >>45900144 #>>45900182 #
174. mrsmrtss ◴[] No.45899847{6}[source]
Look at plaintext benchmark, if you want to compare just servers. Also look at Spring score in fortunes, which is the more common Java stack and I think a more suitable comparison.
175. dijit ◴[] No.45899858[source]
> I wish .NET was more popular among startups

C# is extremely popular in Western/Northern Europe. (Sweden/Denmark/Germany ironically in particular).

These are real Microsoft strongholds.

replies(1): >>45904876 #
176. maccard ◴[] No.45899898[source]
I use rider on Mac (and windows to be fair) and i think the experience is better than visual studio on windows.

My biggest gripe with dotnet tooling is dotnet format. It’s not quick enough to use on a pre commit hook, so people don’t run it regularly and we get failures for it.

It’s such a small nit, dotnet is a great environment to work in

177. Xelbair ◴[] No.45899909{5}[source]
Sure, but that's a 'need' from programmers side - not from business side.
178. SideburnsOfDoom ◴[] No.45899924{8}[source]
> Yeah, .NET is a truck

I know one person who was good at python, and who looked at the "classic" .NET hello world app with usings, namespace, class, main method etc containing the "Console.Writeline" payload, and noped out immediately, saying "if it's that verbose that it takes 10 lines to do what's 1 line in python, imagine how terrible real code must be!"

Personally I think they were wrong about that - it was optimised for larger programs, not trivial ones.

But also it helps me understand the ongoing push towards the point now where "hello world" is is 1 line in 1 .cs file only. And `dotnet tool exec` means you don't even need to install a utility to use it, etc.

In other words, .NET started life as a truck, with many features to support large codebases - usings, namespace, class, method etc. but is also general purpose enough that you can now also write a "bicycle" program.

179. fud101 ◴[] No.45899925{3}[source]
So should I learn C# by learning Typescript? Does that make sense?
replies(2): >>45900330 #>>45901326 #
180. mrsmrtss ◴[] No.45899997{6}[source]
Look at plaintext results if you want to compare just servers. Fortunes benchmark has too many variables (including db queries etc) to say anything about server performance. As for fortunes benchmark, for more realistick Java performance numbers I would look at Spring. Also there are many shady things on those Java bencmarks.
replies(1): >>45904056 #
181. whoisthemachine ◴[] No.45900022{4}[source]
There's still a lot of folks who consider themselves .Net experts who don't know how to program with async/await, so knowing about a niche IDE (which I also exclusively use) is asking a lot for those people.
182. maccard ◴[] No.45900058{5}[source]
> to nitpick this is a compiler area more so than a tooling issue

If there’s one thing c++ is good at it’s bikehsedding where the responsibility for fixing this stuff is. When I started programming in c++ 16 years ago, modules were “imminent” and reflection was coming soon.

Modules are still unusable because what we’ve standardised is insanity and the standards committee refuse to make a decision to support the backwards compatibility of tooling and code that will never be upgraded or even used in a modern setting.

The compiler vendors blame the standards committee, the committee say that tooling isn’t their problem,and standardise something that has no theoretical objections but in practice requires deep concessions to the spirit of the idea. At the same time, they’re perfectly content to assume that everything is developed the way they imagine - adding ranges to algorithm and forcing the compile time because modules technically exist.

183. loldot_ ◴[] No.45900096{3}[source]
It is no coincidence that C# and TS are similar. They are created by the same person, Anders Hejlsberg. The C# language may have some baggage from back in the day, but at least it has a very good, non-fragmented ecosystem. While Typescript may have learned from some of C#'s mistakes, the js/ts ecosystem is a dumpster fire imho.
184. whoisthemachine ◴[] No.45900126{3}[source]
As others point out, that's F#, but yes C# has `async`/`await`, and has all the `Promise` methods, just under the `Task` class instead (and with slightly different names/calling conventions through out).
185. array_key_first ◴[] No.45900142{4}[source]
I worked at a Microsoft shop, and this was my experience.

1. Process, process, and more process. Doing anything required layers of management approval. Trivial tasks become month long, or even years long, processes.

2. You have no power or agency. Something is broken? You're a developer, you should be able to fix it right? No. Broken things stay broken. You swim in your lane and keep your head down. Mediocrity is the goal.

3. Optimization doesn't exist. If a process is manual and takes you, a developer, 10 hours, then that's what it is. Nobody gives a flying fuck about tooling. Nobody cares if you spend 50% of your dev time doing random stuff. And if you even dare try to fix it, you will be told it's impossible and you're wasting your time.

4. Management is king. You will have to lie to them. You will have to spend time re-entering the same data in 5 different places so they can read it conveniently. You will have to make Excel workbooks. You will have to dumb things down, and then dumb them down again, and again. Everything is about Jira... Unless they're a really high up manager, in which case you have to take whatever is in Jira and put it in a word doc and send it to them, because they don't know how to open Jira.

replies(5): >>45900312 #>>45900638 #>>45901074 #>>45904009 #>>45904756 #
186. jcmontx ◴[] No.45900144{3}[source]
Sometimes less is more. It very easy for devs to use the language in completely different ways. I lean towards Go style in that regard. My ideal language would be like Go + Linq.
187. danielbarla ◴[] No.45900182{3}[source]
I've heard this argument before from the perspective of C# having more keywords and language features to be aware of than something else (in my particular argument, the other side was Java).

From this perspective, I can't say I disagree as such. If you look at the full set of language features, it sure is a lot of stuff to know about. The argument that it is too much, and that we should sacrifice expressiveness and signal to noise ratio in the code to keep the language simpler, I don't agree with.

188. dustedcodes ◴[] No.45900187{6}[source]
> archived version becasue original one gives 404

Thanks, fixed now. I literally just migrated from GCP to Hetzner over the weekend and was about to finish the migration today :)

189. stanac ◴[] No.45900211{4}[source]
I sometimes miss Spring magic when working with ASP.NET, and I worked 12+ years with C# and only a year with Spring. Not saying one is better than the other, it's always a choice, less magic = more boilerplate and less boilerplate = more magic.
190. ta12653421 ◴[] No.45900233[source]
I HAVE FOUR WORDS FOR YOU: "I ... LOVE .. THIS .. COMPANY ... yeeeaaaahhhhhh1111"

Since Nadella took over, MS made some substantial steps forward: On Azure, around 30% is Linux; MS went cross platform with some of its most successful apps/ecosystems. Its not that MS behaving like a friend today, but their Dev-tools are really great - at least they care for Devs, i wish they would care for Office users as well.

C# + .NET is from my perspective the most developed and most mature eco system when it comes to business applications.

I really like it!

191. mohaine ◴[] No.45900245{4}[source]
Been awhile since I've worked at one but it is usually grounded in trying to achieve 100% MS usage.

It is rarish to find a partial MS shop. Most of this is how hard MS makes it to use other tools. Even in 2025 they have good interop with external tools hamstrung.

Example: SQL Servers JDBC driver will convert an entire table's of data from ASCII to UTF and a full table scan instead of convertering your UTF bind to ASCII and using the ASCII based index. This doesn't break interop but does make it painful to code and one more reason to just use .Net.

replies(1): >>45901064 #
192. stetrain ◴[] No.45900262[source]
I've personally found Rider to be a great IDE for .NET development outside of Windows.
replies(1): >>45907028 #
193. griffiths ◴[] No.45900264{3}[source]
As others have mentioned Vault, Keycloak, Flink are language agnostic. Regarding the switch from Java to .NET, I would rather recommend switching to Kotlin instead of .NET for a developer experience similar to C#, while still keeping your existing expertise in Java and its ecosystem. And this comes from someone in a .NET shop currently, but have worked with Java before. IMHO both languages and surrounding ecosystems are good. Both have their pros and cons and quirks.
194. egeozcan ◴[] No.45900281{7}[source]
This probably isn't true but I want to read a super geeky dark sci-fi novel that explores this topic.
195. atraac ◴[] No.45900312{5}[source]
Those things have nothing to do with C# though, rather than your personal experience with companies that were using it.

If I judged every single company i worked at/interacted with, that uses NodeJs, I'd think that every single Node dev is a 13 year old child with no real experience but who think's he's the hottest shit. That has nothing to do with Node and doesn't really describe _all_ the companies out there.

replies(1): >>45900632 #
196. AbraKdabra ◴[] No.45900313[source]
Some days ago I helped migrate a service in .NET Framework 2 to 4.8.

Yup.

197. stanac ◴[] No.45900330{4}[source]
Not really, you should learn Typescript by learning JavaScript first. Then consider learning C#. Or if you want to focus on the back end side learn C# and skip TS/JS.

They are created by the same person but they are very different in my opinion.

TypeScript is "a tool" for JS, it is possible to compile without errors but still fail in runtime (e.g. wrong object type returned from API), on the other hand parsing JSON with C# will give you correct object type, it may fail if some properties are missing but it will fail at parsing call, not further down when you try to use missing property. In other words typing is not glued on top of the language it's core of the language.

198. jve ◴[] No.45900334{3}[source]
> To the uneducated, C# is linked to Visual Studio.. the IDE..

Not native English - does "to the uneducated" means you are directing this sentence that knows no better or you are uneducated?

Because if it is former, you need to re-educate yourself.

C# is not linked to IDE. You can do `dotnet build`? Can run on Linux if you will. Database choice? You are NOT limited to SQL Server or Windows server.

replies(1): >>45900728 #
199. jve ◴[] No.45900342{3}[source]
There is WinDbg which can debug CLR code, but that is Windows only.
replies(2): >>45900719 #>>45901504 #
200. OkGoDoIt ◴[] No.45900364[source]
I do! Pretty sad that IronPython isn’t a thing anymore, especially now that I’ve actually had to learn Python for machine-learning related reasons. At least .net did get the dynamic data type out of its brief interest in these.
replies(1): >>45905499 #
201. 4rt ◴[] No.45900365{5}[source]
They're self contained and native, but they're still massive.

There's been some work on CoreRT and a general thrust to remove all dependencies on any reflection (so that all metadata can be stripped) and to get tree-shaking working (e.g. in Blazor WASM).

It seems like in general they're going in this direction.

replies(1): >>45901039 #
202. atraac ◴[] No.45900401{3}[source]

  > To the uneducated, C# is linked to Visual Studio.. the IDE.. and the Community edition if free as long as you are a student, open-source, and individuals. Professional and Enterprise are paid.
No it's not. What? Visual Studio is a shitty MS product that most decent C# devs already moved away from to JetBrains/vscode.

  > Need a database - should it be SQL Server? Should it be Windows Servers? etc.
.NET runs on Linux just fine, there's also zero issues using Postgres or any other popular DB of your choice.

  > there are many smaller companies (and startups) that may have concern paying for such tools.
There's literally nothing you would need to pay to work in .NET ecosystem. If a company rules out a language based on thoughts like yours, I genuinely believe they deserve to fail. Literally none of those things is true and it takes a minute or two to find all of that out.
replies(1): >>45900699 #
203. skeeter2020 ◴[] No.45900449{5}[source]
There are quite a few gotchas for this, especially web apps. THis is understandable because it was added after the fact, vs. a first-party design requirement. It's cool and might work for you, but taking a non-trivial .net codebase to native AOT can be tough, and if you're starting greenfield, why go .net?
replies(2): >>45901626 #>>45907021 #
204. xerxes249 ◴[] No.45900479{4}[source]
I am working at a 2k fte company and we use F# for a lot, its very nice to work with, prefer Rider over Visual Studio though.
replies(1): >>45903612 #
205. raw_anon_1111 ◴[] No.45900486{5}[source]
I lived and worked in Atlanta from 1996-2020. Those aren’t anymore tech companies than Delta, Home Depot or Coke by modern definitions. In all of the companies you named, software development is a cost center, not a profit center - follow the money. Who gets paid the most as a group at those companies? Those are enterprise companies.
replies(1): >>45900862 #
206. skeeter2020 ◴[] No.45900509{4}[source]
>> we use .NET for backend and React for frontend. You don't need anything else

...

>> sure maybe you have some data science people who need python,

This is how it happens though; it's not "let's form a company with 10 developers; don't worry what tools they use!". It's starting with a single problem using common tools, then adding specialized problems where you could still use the same tools but they are not optimized, then adding an acquisition product that uses different tech, then growing to 100 or 1000 developers and may all use React or C# (doubtful) but don't use it the same way...

>> If you're going to make a change then migrate everything

Have you ever worked for a software company before? THis is not how it goes.

replies(1): >>45903988 #
207. raw_anon_1111 ◴[] No.45900520{3}[source]
Seeing that any startup is more likely than not to fail, why would I work for a company that is using a niche technology that isn’t going to be in demand when I look for my n+1 job?
208. nicoburns ◴[] No.45900544[source]
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.

I tried .NET and liked C# as a language. But even though the language and runtime are now open source, it seemed like a lot of the recommended libraries were still commercially licensed, which was an immediate nope from me. I've never encountered that in any other ecosystem.

replies(7): >>45900964 #>>45901284 #>>45901414 #>>45903677 #>>45904049 #>>45904177 #>>45904488 #
209. parliament32 ◴[] No.45900617{5}[source]
And this sounds great until you get to the laundry list of restrictions. For us the showstopper was you can't use reflection.
replies(2): >>45900954 #>>45901075 #
210. skeeter2020 ◴[] No.45900628{6}[source]
>> And there is literally no reason for any of these choices

I'm a manager now but definitely held a variation on this "people are idiots" view when an IC and younger. Question: are all your coworkers idiots? No? then why would all the work done before you be the product of idiots?

I found it really valuable to approach scenarios where the initial response is "how could this possibly happen?" as a cultural anthropology question. It turns out there were many rational decisions made, most that I would have gone along with that brought us to what we see today. My coworkers are actually really good, some of them who manifested what we see today are amazing. Many are crafting code, making thousands of microdecisions without perfect information or 100% clarity across a large organization, reacting to changing markets and directions, client needs, shifting priorities, executive decisions, technology changes... the list goes on.

This is all my way of saying there might be many reasons for any of these choices, and you'll help your own cause - and happinness - if you step back from your zealotry and take an empathetic approach that's less binary.

replies(1): >>45901787 #
211. UK-Al05 ◴[] No.45900632{6}[source]
The problem is thats how a lot of .net shop operate. I say this as .net developer.

.NET gets selected because a lot of non tech companies need to do software things, and they pick the stack fits in with their current WinTel stack. The main concerns is having replaceable talent to reliably do x. They're not trying to innovate. They are often doing something like sending out insurance quotes by email. They do this by having strict processes, and having developers stay in their lane. Expect rigid scrum, using dependencies only supported by Microsoft etc, Locked down Dev machines with visual studio only, ask for microsoft dev certs, and expect pre-approved enterprise design patterns up the wazoo. They don't want innovative developers, they want you to fit into the pre existing framework designed by an architect. Your skills can die in such an environment.

There are companies that use .NET that aren't like this, but you have to go out your way to find them.

replies(2): >>45901401 #>>45903987 #
212. duxup ◴[] No.45900638{5}[source]
That just sounds like management issues and less tech. Granted maybe people who are bad at that select C#, or it's just size of company?

https://youtu.be/s4Cz49MLh4o?t=142

replies(1): >>45905602 #
213. masfoobar ◴[] No.45900672{4}[source]
My last comment, which you referenced... focused not just on C# or .NET.. but the focus of "you need Microsoft" in general.. this includes Windows, SQL Server, etc.

Again, my comment is focusing on someone on the outside looking in.. and WHY people end up making decisions away from C# in favour of (something like) Go.

I am aware of deploying to Linux containers, etc.

replies(1): >>45901351 #
214. skeeter2020 ◴[] No.45900681{8}[source]
Car models get maybe refreshed annually, bigger changes a couple of times a decade, if that. Vehicle fleets are often aging out with these timelines.

So if we either stretch the fleet management analogy to 50 years, or software applications only lasted 3-5 years maybe it IS fair to say the both have either a lot (former) or very little (later) inconsistnency?

replies(1): >>45900915 #
215. masfoobar ◴[] No.45900699{4}[source]
> most decent C# devs already moved away from to JetBrains/vscode.

My comment is NOT talking about 'decent C# devs'

It is a RESPONSE as to why more people are not using C# for startups. For those who are not familiar with C# MAY be put off using it for those reasons... and why another language might be used.

216. trelane ◴[] No.45900719{4}[source]
> that is Windows only.

There are so many things that are like this in the .Net ecosystem.

Yeah, it runs on Linux. Kind of. Mostly.

As long as Microsoft is at the helm, I don't expect that to change.

217. masfoobar ◴[] No.45900728{4}[source]
> C# is not linked to IDE. You can do `dotnet build`? Can run on Linux if you will. Database choice? You are NOT limited to SQL Server or Windows server.

People who already are familiar with C# know this. To programmers that do not, may prefer to stick with another language to keep away from Microsoft in general.

Again - my comment is a response about why C# is not used more for startups. I am not suggesting it isn't, but there are plenty of reasons, and this is likely just one.

218. skeeter2020 ◴[] No.45900756{8}[source]
>> Yeah, .NET is a truck and React is a bicycle

I'm not a car guy but I most certainly a bicycle lover, so I will jump on you and say you often need more than one type of bicycle. Joan commutes to work? she wants a city ebike. Dan rides at the bike park? He wants a DH bike. Randy ride centuries on the weekend on his TDF road bike and Sally rides with her kids on a mountain bike.

So yeah, we can pick one bike type and force everyone to ride it, and the results will suck & everyone hate it. Your job can be to continually force everyone to follow this policy or you can stop and we'll get a lot of variation. THis is how it happens.

replies(1): >>45901154 #
219. mbesto ◴[] No.45900791[source]
> I wish .NET was more popular among startups

In my experience .NET/C# dwarfs pretty much any other framework in the SMB and there are WAY more software companies that aren't considered "startups" than those tagged as "startups".

replies(1): >>45904070 #
220. masfoobar ◴[] No.45900819{4}[source]
???

Java was originally Sun Microsystems.

However - if Java was Oracle to begin with (and as successful in the mid-90s) then might have done some marketing for the Java+Oracle mix.

Some people (ie Managers) if they decide on using Microsoft products will likely "encourage" the use of C# and .NET. -- That is an example of C# + Sql Server.

replies(1): >>45903036 #
221. dzonga ◴[] No.45900829[source]
I tried so many times to get into the .net ecosystem. I actually like f# have written a few toy things with it. but never could built anything substantial with it - as I would starting my own cement factory.

same as c# - seems asp.net comes with a lot of stuff - but to use that stuff a lot of ceremony is baked in.

with Ruby | Rails i'm one or two commands away from most things I need. I understand the language & the ecosystem.

replies(1): >>45900949 #
222. cheschire ◴[] No.45900862{6}[source]
You’re saying the same thing I did yet somehow you’re trying to argue with me about it.
223. aryonoco ◴[] No.45900873{6}[source]
No still the same.

VS Code with Ionide is okay but has many limitations for example in debugging or lack of support for F# fsi scripts.

If you’re serious about F#, investing in Rider or Visual Studio makes a lot of sense.

Having said that I wrote a Neo4J data extraction tool a few months ago and chose to write it in F#. At one point I observed how funny it was that I was developing in a Microsoft language and yet my dev workstation runs Fedora and my IDE comes from JetBrains and my code is running in kubernetes on a Linux cluster and there is not a sight of a windows machine in this whole pipeline.

I remember the days when the language, linker, compiler, IDE, the GUI components, everything was tied together. If you wanted the next version of VB you had to buy the new version of Visual Studio!

224. masfoobar ◴[] No.45900878{5}[source]
> Ironically dotnet runs better on Linux/Mac systems in my experience. All our devs who use Windows for dotnet dev now use WSL2 as it matches production. We don't use any other 'commercial' Microsoft products like SQL Server or Azure. All postgres/redis/etc and deploy onto docker containers.

I am pushing for Linux containers in the workplace... away from Windows, IIS, etc. I totally agree with you 100%. I'm also trying to push us away from SQL Server where possible.

225. catapart ◴[] No.45900914[source]
Literally just started building a game engine with .NET 9, so naturally there's an update within a week. -_-

Seems like a good update, though! And I'm glad it's early enough that updating the framework probably shouldn't break anything. Really as long as there's no issues with the DearImGUI dependency (would be a surprise!), I'm pretty happy about the update.

replies(3): >>45900950 #>>45903664 #>>45907230 #
226. SideburnsOfDoom ◴[] No.45900915{9}[source]
> Car models get maybe refreshed annually, bigger changes a couple of times a decade, if that.

.NET gets refreshed annually. The last bigger change was nearly a decade ago. So not all that different.

But I don't think that the analogy stretches, really. e.g. where I am all .NET apps are .NET 8 LTS or 9, and will be all be .NET 10 LTS by middle of 2026. You can upgrade an app to a new model year much more easily than a vehicle. The "software application, on a SDK major version" only lasts 1-2 years.

227. thiago_fm ◴[] No.45900949{3}[source]
I'm a Ruby dev of almost 2 decades now doing C# and it's extremely fast to get a API with Swagger running from C#, a few mins tops. And this is if you spend just a little bit to learn it!

Of course, if you expect a full FE+BE 'omakase' framework like Rails there isn't anything with the same weight. I began to see this as a plus, you actually don't need it all, and nowadays it's very modern to delegate auth to a service etc. I know it isn't DHH's PoV, but it makes it much easier to maintain, so you focus on writing business logic and do the FE in a widely supported framework like React, or use Microsoft stuff, your choice.

The DTOs/DI and the typical .NET developer stuff isn't bad or hard to learn, most of it comes naturally when you think "What would a statically typed language need?"

It's what allows C# code be very clean and easy to follow, where you know exactly what is available unlike Ruby that a lot of things are implicit and can get very nasty. After so many years debugging and improving Rails apps performance, I got sick of it and C# feels fresh.

Then there's LINQ and a lot of language sugar that makes C# code really beautiful. I've done also some Java, and can easily vouch for C#. It's the Ruby of statically typed langs.

And the speed, don't get me started. It's so fast.

228. sumnole ◴[] No.45900950[source]
I wouldn't worry. Updating .NET rarely breaks anything.
229. oblio ◴[] No.45900954{6}[source]
You can't use reflection with AOT compilation. That's what AOT compilation is. Java has the same limitation for AOT compilation, for example.
230. oblio ◴[] No.45900963{3}[source]
Meh. Probably 100x more startups use Python and JavaScript than anything else combined.
231. GiorgioG ◴[] No.45900964{3}[source]
Recommended by whom? I've been doing .NET for 23 years (since the first beta) and I've never paid for a single library in any commercial project I've been part of.
replies(2): >>45901055 #>>45901101 #
232. truekonrads ◴[] No.45900987[source]
It’s all about the libraries in the end.
233. aryonoco ◴[] No.45900994{3}[source]
What are you talking about C# being tied to Visual Studio? This is 2025 not 1995.

I do my hobby .NET development in Zed and my serious work in Rider. .NET is open source and MIT licences. I do most of my development on a ARM MacBook Pro, or using my workstation which runs Fedora.

We deploy our code on kubernetes clusters usually on AWS.

All of the tooling, compiler, libraries etc are open source and cross platform and free. Not a single one of the developers in my team uses Windows or Visual Studio.

234. thiago_fm ◴[] No.45901005{3}[source]
Nowadays it's very common to have .NET apps being containerized and running them on K8s or whatever you like in production -- I think you are relying on outdated information.

It's also well-suited for that. Of course, you won't end up with a tiny Go docker image, but this doesn't matter.

235. greener_grass ◴[] No.45901024{3}[source]
> dotnet requiring a CLR is not particularly well-suited for containerization

Why? I routinely put compiled .NET programs into containers.

It's also easy (easier than Rust even) to build on Mac targeting a Linux image.

replies(1): >>45903072 #
236. GiorgioG ◴[] No.45901026{3}[source]
Just say you don't want to use .NET. It's fine, but how many startups ever get to over 10k containers? You can use AOT to further reduce the footprint. It's totally fine to hate Microsoft, but this is as weak an argument as I've ever seen.
237. greener_grass ◴[] No.45901039{6}[source]
Smaller is better, of course, but I've never found the size of .NET binaries to be an issue.

What problems does this cause?

replies(1): >>45901873 #
238. Zambyte ◴[] No.45901048[source]
IronScheme[0]! I was pretty happy to be able to expose async-await in a neat little library[1]. I wonder if it's in use anywhere. I didn't get to use it in the project I was working on at the time.

[0] https://github.com/IronScheme/IronScheme

[1] https://github.com/IronScheme/IronScheme/pull/141

239. runjake ◴[] No.45901055{4}[source]
Not OP but I still run into paid libraries (eg Telerik) all over the place in projects.
replies(1): >>45904633 #
240. GiorgioG ◴[] No.45901064{5}[source]
Not that rare, I work in one now and we use: .NET, Mongo, Postgres, SQL Server, Node, Python, etc.
241. GiorgioG ◴[] No.45901074{5}[source]
Congratulations, you worked at a huge company. Nothing to do with the tech stack.
replies(1): >>45901423 #
242. alexandrehtrb ◴[] No.45901075{6}[source]
Most reflection usage is for JSON (de)serialization and for that you can use source generators, which also offer better performance.

https://learn.microsoft.com/en-us/dotnet/standard/serializat...

243. thiago_fm ◴[] No.45901079{3}[source]
Might be my own taste, but except a few of the common and easy to understand structural typing code, I find it sometimes actually make things needlessly complex.

I also write lots of Typescript, and the furthest I go is to use 'Omit' and other utility types, but already feel like it's too much.

replies(1): >>45903199 #
244. whizzter ◴[] No.45901101{4}[source]
Moq, lots of PDF libraries, Avalonia, Automapper, MediatR, MassTransit,Telerik stuff,etc.

I'm not inherently against it, we have a problem with opensource being asymmetrically underfunded and if people going commercial is the cost perhaps we've failed.

replies(4): >>45901189 #>>45901335 #>>45901358 #>>45901359 #
245. petershinners ◴[] No.45901133{3}[source]
A million different Javascript and Python services in delivered as Docker images would like a chance to disagree with you.
246. aryonoco ◴[] No.45901137{3}[source]
I work at a large enterprise where most of our backend js .NET and I can tell you that the dev team is nearly half and half split between Linux and Mac, and nearly half and half split on using VS Code and Rider.

Most of our code is deployed on Kubernetes and runs on AWS.

Developer experience means many things to different people. Personally for my most recent project, I used F# and the IDE was Rider and my OS was a form of immutable Fedora (Ublue OS) with devpod and devcontainers and the whole system was the most joyous developer experience I think I have ever had.

replies(1): >>45901147 #
247. pixl97 ◴[] No.45901154{9}[source]
Eh, no, you don't hire those employees. You're stretching this analogy in some odd ways.
replies(1): >>45901329 #
248. majora2007 ◴[] No.45901189{5}[source]
There are a few non-paid PDF libraries, but that is the biggest pain point in .NET, anytime you need advanced features for PDF, you're better off paying for a license (it's just insanely expensive unless you're a large company).

Having worked on some basic parsing of metadata from PDF spec, I would rather pay than have to code something myself. PDF is such a PIA.

replies(1): >>45901616 #
249. haspok ◴[] No.45901216{4}[source]
> but i haven't used java in a very long time

What was the last Java version you used? There has been a huge momentum in adding new features lately, granted, it is slower than in C# (Java's top priority is backwards compatibility, so it does not have the luxury of shedding old stuff or changing them once they are in), but in the last couple of years it has improved tremendously. The JVM (especially in the garbage collection front) but also the language - half of an ML-style language is there (for example, ADTs and pattern matching), the other half is coming soon!

250. anonymars ◴[] No.45901281{3}[source]
Last I checked they stubbornly insisted on reinventing the wheel and ignoring everything in System.Runtime.Serialization so you had to redecorate everything with their new attributes. For example https://github.com/dotnet/runtime/issues/29975. So we stuck with Newtonsoft for the time being.
replies(1): >>45905931 #
251. electroly ◴[] No.45901284{3}[source]
Easy to avoid depending on the area; I'd urge you not to be discouraged by the presence of commercial libraries. They aren't as vital as it may seem from the outside. I've been a full-time C# developer since the first open beta and I have only one (1) instance where I used a commercial library. That was 2002 and if we were doing it today, we wouldn't have needed that commercial library. I have never used a commercial C# library other than that one time. We have a tremendous supply of open source libraries in NuGet, just like every other language, and much more functionality built into the standard library than most languages have. We just also have commercial UI libraries and such. That commercial library we used was a docking/tabbing UI library; you can get that from open source packages now (and my later projects do).
replies(1): >>45905286 #
252. CharlieDigital ◴[] No.45901326{4}[source]
As much as I think C# at a platform level is a better tool for building backends, you'll get the better bang for the buck learning TypeScript if you don't already know TypeScript.

Then if you have the chance, you'll find C# an easy transition from TypeScript, IME. Learning C# first, on the other hand, will make you a better TS developer, in my opinion, because it will shape your approach to be more diligent about using types. This is something most JS/TS devs do very poorly and at scale, it's very hard to reason about code when it requires digging down several layers to find the actual types/shapes.

"Enterprise" frameworks like Nest.js are much more similar to ASP.NET or Spring Boot than they are to Express, Hono, or Elysia so once having experience with .NET Web APIs (or Spring Boot) will make Nest.js (for example) easier to pick up.

253. SideburnsOfDoom ◴[] No.45901329{10}[source]
Well, they clearly all know how to ride bikes, so you offer to hire them to deliver using company bikes as a day job. And let them ride whatever they want on weekends.

The "force everyone to ride it" on the weekend part is where I think the analogy has broken down irreparably. We're talking about cost of ownership of company equipment used during working hours for much more defined tasks. What flavour of bike you enjoy riding on weekends is not relevant.

Programming language are inherently flexible, especially those that aim to be "general purpose". Fine-grained distinction of road bike vs mountain bike apply more to the apps created than the coding tool.

254. paxcoder ◴[] No.45901335{5}[source]
I can confirm that (several years ago at least) free PDF libraries were lacking, and Telerik was always non-free.

However, aren't Moq, Avalonia and MassTransit free software?

As for Automapper and MediatR, their owner changed from a free software license to only an open source one (Reciprocal Public License), but these are probably the simplest libraries of the ones you mentioned and have either been forked (MagicMapper) or have alternatives.

replies(1): >>45901510 #
255. ◴[] No.45901344{9}[source]
256. aryonoco ◴[] No.45901350{7}[source]
.NET has always been both the biggest blessing and the biggest curse for F#.

We have access to millions of libraries. I look at BEAM languages and OCaml every once in a while but can’t quite drag myself over there, knowing that in .NET, just as an example, I can choose between a dozen JSON serialisation libraries that have been optimised and tuned comprehensively for decades.

But then, those libraries are also our curse. If you consume them, everything is OO so you either give up on functional purity and start writing imperative F# code, or you have to spend time writing and maintaining a F# idiomatic wrapper around it.

Similarly I was working recently on project to develop a library which was going to have downstream consumers. The problem lent itself really well to domain modelling in F#. But I knew that my downstream users would be C# devs. I could invest the time and write my library as “functional core, imperative shell”. But then I decided that since the interface would be OO anyway, I might as well just write it in C#.

Thankfully what keeps F# going is the wonderful community around it, not Microsoft. I know some people (outside of Microsoft) have worked on a standalone F# compiler but it’s still very early stages. Maybe one day.

replies(1): >>45904713 #
257. CharlieDigital ◴[] No.45901351{5}[source]
Yes, I am very aware of this and have spent a lot of time/effort trying to dispel some of these myths and mis-understandings through writing.

- TypeScript is like C#: https://typescript-is-like-csharp.chrlschn.dev/

- 6 .NET Myths Dispelled: https://medium.com/dev-genius/6-net-myths-dispelled-celebrat...

- The Case for C# and .NET: https://itnext.io/the-case-for-c-and-net-72ee933da304

258. stby ◴[] No.45901354[source]
Somehow, .NET jobs seem be tied to waterfall processes ("but we are still agile, because we release two times a year"), requirements in OneNote, and a 5 kg Windows laptop.
replies(1): >>45905984 #
259. ◴[] No.45901358{5}[source]
260. paulirwin ◴[] No.45901359{5}[source]
Avalonia is FOSS (MIT licensed). You only need Avalonia XPF if you are migrating legacy stuff.

Moq is largely unnecessary today with LLMs being able to easily generate mock classes. I personally prefer to hand-roll my mocks, but if you prefer the Moq-like approach, there's NSubstitute (3-BSD).

Automapper and MediatR are both libraries I avoided prior to the license change anyways, because I don't like runtime "magic" and not being able to trace dependency calls through my code. But, there is Mapster and Wolverine to fill those needs (both MIT). Wolverine can also replace much of MassTransit.

Telerik stuff - there are many good FOSS alternatives to these UI components; too many to list since it depends on which stack you're using.

PDF is indeed a sore spot. PdfPig is good, but limited in capability. I've started offloading PDF processing to a separate Python container with a simple, stateless Flask API with PyMuPdf.

> we have a problem with opensource being asymmetrically underfunded and if people going commercial is the cost perhaps we've failed.

Completely agree with this, though. My company and myself personally contribute a lot of time back to OSS, and I feel like that is part of the social contract of OSS. To have these libraries rug-pulled feels like a slap in the face as a OSS contributor and maintainer.

replies(2): >>45906476 #>>45906770 #
261. xnorswap ◴[] No.45901384[source]
Previously, if you wanted to add that Trim in, you needed to define the field behind.

You could have:

    public string Name { get;set; }
Or you could have:

    private string name;

    public string Name {
      get;
      set { this.name = value?.Trim() ?? string.Empty; }
    }
So you needed in the second case to also declare name as a field. The new syntax avoids having to do that "double" declaration.
replies(1): >>45901457 #
262. mexicocitinluez ◴[] No.45901401{7}[source]
Imo, you're criticizing "enterprise" development, not .NET/C#.
replies(1): >>45902176 #
263. whizzter ◴[] No.45901414{3}[source]
Remember when people were selling COM objects in Dr Dobbs journal ads for Visual Basic in the 90s? I think it's the same culture (and partially people) that has been bought over to the .NET world via VB.NET as it was always touted as the stepping stone.

Nothing has ever forced anyone to depend on commercial libraries, there has been some upsets as people has closed-source previously popular opensource libraries.

But in the end, sometimes it feels like open-source in general is just waiting for a Jin-Tia moments everywhere, if people go commercial to prevent that happening that's just an indication that we've failed to create alternative ways of _living_ that can support open-source (this is probably most damning on companies that prides themselves on building on-top of opensource).

Heck, remember that tjholowaychuk created tons of (some popularly still used) npm packages early in the Node.JS lifecycle before first moving to go and then abandoning open source altogether.

264. mexicocitinluez ◴[] No.45901423{6}[source]
Yea, this is "enterprise" development 101.

The fact that large companies pick an established tech over newer ones isn't about .NET/C# per se, it's about large companies and the way they work.

replies(1): >>45904478 #
265. martijn_himself ◴[] No.45901457{3}[source]
> The new syntax avoids having to do that "double" declaration.

Yes, that's right. It is in other words a way to access the compile-time generated backing field for auto-implemented properties. It is quite nice to be honest, I just wish they presented a bit of context in their announcements.

replies(1): >>45901740 #
266. MarkSweep ◴[] No.45901504{4}[source]
The .NET debugging extension (SOS) is not Windows only, it supports LLDB on Linux in addition to WinDbg:

https://learn.microsoft.com/en-us/dotnet/core/diagnostics/de...

replies(1): >>45902235 #
267. whizzter ◴[] No.45901510{6}[source]
Yeah pdf libraries are a bit of a mess, I work with a product that handles lots of PDF documents and I think we just recently added another PDF library dependency (I'm certain it's at least 3 now, but could be 4 or even 5 libraries loaded at startup).

Moq has the appearance of free software but bundled some spyware stuff (seemingly "benign" "Sponsorlink" for getting donations).

Masstransit went commercial recently, https://masstransit.io/introduction/v9-announcement

Avalonia itself is opensource, but i'd put in in a fremium/shareware category since if you need to add an WebView or Media player you need to buy their commercial Accelarate additions.

268. jasomill ◴[] No.45901616{6}[source]
I've used libqpdf extensively from C++/CLI with excellent results, but since C++/CLI is deprecated-ish and Windows-only, I wouldn't disagree with PDF being a pain point, and if I get the time, a cross-platform open source .NET wrapper for libqpdf is at the top of my list of potential projects.

libqpdf also intentionally limits its scope to PDF structure, so doesn't address nontrivial content creation or manipulation (page content handling is pretty much limited to compressing/decompressing and parsing/unparsing the content stream).

replies(1): >>45904605 #
269. whizzter ◴[] No.45901626{6}[source]
Sure, legacy applications won't be easy to move over but Microsoft has been quite consistent in working towards making microservice applications easy to build and run with AOT by moving more and more components over to using source-generators and promoting minimal-API's.

Their target is probably not entirely greenfield projects (although I wouldn't mind it myself), but rather those with existing investments that start new projects that still want to share some parts.

270. ◴[] No.45901711{3}[source]
271. xnorswap ◴[] No.45901740{4}[source]
They provide a bit more context around changes in their "What's new in C# 14" page:

https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs...

replies(1): >>45901833 #
272. z500 ◴[] No.45901742{6}[source]
As an F# lover my heart sank at that "it turned out" at first. I'm glad someone got to live the dream somewhere haha
273. ◴[] No.45901752{3}[source]
274. sfn42 ◴[] No.45901787{7}[source]
Some of my coworkers are awesome. Super talented, super smart people.

But most developers are pretty bad. I see a lot of developers who hardly do any work at all, and many who do lots of work but it's all trash. Buggy, overcomplicated, untested, dumb pointless decisions.

Like my current project. Two guys started it - .NET backend, React frontend. Sure, fine. But let's use Azure functions for the backend instead of a regular web api. What. We asked them why, no reason. And their whole codebase was trash, I've deleted about 90% of the code that they had written and I'll delete the rest too.

I've also been in a team that had the problem I highlighted in the OP. 20 different apps, 10 different JS frameworks etc. Speaking as someone who worked on these apps, there was absolutely no reason to choose one JS framework over another. I could have made them all in React no problem, they're just websites, not much more than glorified PDFs. How you generate the html is irrelevant. And the code was mostly trash. Overcomplicated, buggy, untested etc.

I did struggle with this early in my career - am I just a narcissist? Everywhere I turn the code is just trash, maybe I'm the problem? But now I've worked with people who do good work. I've seen my own ideas work in practice. I know for a fact my judgement is good.

In university I was the one who helped everyone else. I was always ahead, while my peers could hardly keep up. When we graduated a lot of them would have struggled to solve fizzbuzz in 20 minutes, yet we all have the same degree. No wonder there's so much trash code around.

275. martijn_himself ◴[] No.45901833{5}[source]
This is great thank you.
276. 4rt ◴[] No.45901873{7}[source]
If you're trying to pack hundreds of microservices into a cluster, having containers using 80MB of ram minimum instead of 500KB can become a big deal.
277. gf000 ◴[] No.45902154{4}[source]
> Documentation is vastly better compared to Java ones, it's like day and night

This is absolutely not my experience, especially when it comes to the ecosystem and third-party libraries. Like Java is pretty much the best in this category.

replies(1): >>45903406 #
278. UK-Al05 ◴[] No.45902176{8}[source]
And .NET is the language of choice for "Enterprise". So that's what the majority of jobs are.

Where as large 'tech' companies don't tend to be like this.

replies(2): >>45902802 #>>45906242 #
279. gf000 ◴[] No.45902190{4}[source]
> and most language features don't feel bolted on like with Java (anything from functional programming to extension methods to whatever)

Java doesn't have extension methods and while both are decent languages, C# is the one that likes implementing every conceivable language feature immediately, while Java takes a while to design a bigger feature that will replace several smaller ones' use cases.

replies(1): >>45905761 #
280. formerly_proven ◴[] No.45902235{5}[source]
License: https://www.nuget.org/packages/dotnet-debugger-extensions/9....

> a. Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the software documentation. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft�s privacy statement. Our privacy statement is located at https://aka.ms/privacy. You can learn more about data collection and its use in the software documentation and our privacy statement. Your use of the software operates as your consent to these practices.

> You may not work around any technical limitations in the software:

> * reverse engineer, decompile or disassemble the software, or otherwise to derive the source code for the software, except and only to the extent required by third party licensing terms governing use of certain open-source components that may be included with the software;

> ...

> * share, publish, rent, or lease the software; or

> * provide the software as a stand-alone offering or combine it with any of your applications for others to use, or transfer the software or this agreement to any third party.

So you are not, for example, allowed to ship this in your application's docker image, you are in fact not allowed to redistribute it at all. So if you wanted to get a .NET debugger into your staging environment, you are not actually allowed to, unless you directly install it then-and-there with nuget. (I'm assuming we're talking about any type of enterprise context, where any given application is touched by contractors or employees from n>1 legal entities, so you are always distributing/sharing/transferring/making available).

Ya ya, I know you shouldn't have debuggers near prod, chiseled images, living off the land, yaddayadda. Regardless, it's needed or at least the easiest way at times, to actually be able to debug an application in staging or similar scenarios.

Also I'm not sure if e.g. blocking outgoing connections of the telemetry (even if by blanket policy) would already technically violate the license.

replies(1): >>45903804 #
281. anonymars ◴[] No.45902293[source]
Agreed. I feel like we're getting diminishing returns out of the language as they try to squeeze out every last keystroke (as though the challenge of software development is in the typing)

I'm thankful I've been along for the ride so I know the "archaeology" but pity those freshly dunked into its increasingly complicated ocean

282. gf000 ◴[] No.45902502{3}[source]
Doesn't Text.Json have a much narrower scope and plenty of features supported by Newtonsoft not available?
replies(1): >>45905380 #
283. gf000 ◴[] No.45902527[source]
> It also doesn't have the fragmentation that Java or JVM langs has

What fragmentation? Honest question

284. stevefan1999 ◴[] No.45902802{9}[source]
> And .NET is the language of choice for "Enterprise". So that's what the majority of jobs are.

Disagree. I would argue Java is more of a choice for "Enterprise".

Also, would you please define the scope of "enterprise".

If you mean "enterprise" as someone who want consistent and predictable management and productivity, then sure .NET is "enterprisy", because instead of a dragon they want a fossil.

But if you mean "enterprise" as they want to sell their core product, and sometimes that pushes to high developmental velocity with multiple development team to tackle on a feature, then .NET is evolving fast enough that it is not so considered "enterprisy".

Heck, even Ruby on Rails would replace .NET for that, especially when you consider the e-commerce scene that is either Ruby or PHP (Wordpress).

Just look at C# and its incredible language revision every year.

replies(2): >>45904836 #>>45906510 #
285. stevefan1999 ◴[] No.45902989{7}[source]
but they all delivers, just that they don't suit your taste doesn't mean it can't
286. stevefan1999 ◴[] No.45903036{5}[source]
> That is an example of C# + Sql Server.

I'm sorry but most of us use Npgsql now

287. parliament32 ◴[] No.45903072{4}[source]
Create a hello world dotnet container, then do the same in a modern language. Then compare image size and resource consumption. Then imagine you're running tens of thousands of containers in a proper SaaS microservices model, and it'll make sense :)
replies(4): >>45904938 #>>45905036 #>>45905694 #>>45906163 #
288. stevefan1999 ◴[] No.45903133{3}[source]
> dotnet requiring a CLR is not particularly well-suited for containerization

This is a solved problem within csproj to do dotnet publish to OCI containers already. I even have some csproj override to magically add it to every console projects in the solution.

The biggest problem IMO is because of the JIT generated code not being able to be saved, so it will always be regenerated on the fly, and compound that with a not so state-of-the-art GC (wish we have ZGC someday), it will create brief moment of latency very easily and making the timing fat-tailed.

NativeAOT and ReadyToRun remedies this problem by compiling ahead of time, but you trade space with time.

289. Timon3 ◴[] No.45903199{4}[source]
I've come to really appreciate Typescripts structural typing, because it reduces some of the overhead & prevents the unnecessarily tight coupling that has often annoyed me in other languages.

The overhead argument seems fairly objective to me - clean code with low coupling in C# et al. requires separate definitions of interfaces and implementations, explicit conversion methods between compatible interfaces etc. This adds up over time and makes refactoring pretty annoying.

The tight coupling happens when people don't bother to define interfaces. Suddenly I have to couple class hierarchy to classes from unrelated modules, all so the compiler is happy when I pass structurally equivalent data. To keep my own modules clean I have to add yet more interfaces, conversion methods etc!

290. zamalek ◴[] No.45903218[source]
I was somewhat recently attempting to help my manager get a C# dev environment set up. He was used to doing everything the C/Java/JavaScript/Python/almost-every-language-under-the-sun way, and avoiding the "Microsoft way" of doing things created so many roadblocks. I had no idea that over the previous ~20 years I had been practicing a C# compiler summoning ritual and had become incredibly good at it. From the start I recommended installing Rider, VS, or VSCode, and that's eventually what worked - but having to drink the kool aid to that extent is fucking absurd.

I personally won't be using it, given the choice, again. I don't like exceptions, but can live with them. I don't like null, but can live with it. Nuget is complete and utter garbage. You still have to resort to all forms of unreliable hacks in order to redirect it to a locally clone (and if you do use a feed to avoid that, good luck with getting the local cache to not be completely moronic).

(Look, it certainly didn't help that the project itself was heavily enterprisey because the developers hadn't kicked those habits)

replies(4): >>45903337 #>>45904050 #>>45905170 #>>45905814 #
291. stusmall ◴[] No.45903337{3}[source]
>He was used to doing everything the C/Java/JavaScript/Python/almost-every-language-under-the-sun way, and avoiding the "Microsoft way" of doing things created so many roadblocks.

What exactly does this mean? I haven't touched .NET in earnest in over 10 years. I know the ecosystem has evolved a lot since then, but I don't know how or in what ways

292. Xelbair ◴[] No.45903406{5}[source]
well you can't judge 3rd party libraries, can you? by that metric js/ts would be the worst thing in existence.

I've seen some great, some horrible 3rd party docs on .net side - same with java.

293. Nelkins ◴[] No.45903455[source]
There's an open source one by Samsung that is excellent, never had any issues with it: https://github.com/Samsung/netcoredbg
replies(1): >>45904051 #
294. davey48016 ◴[] No.45903499{3}[source]
.NET Core and ASP.NET Core (especially the minimal APIs) seem to have taken a lot of influence from Node API libraries like Express.
295. banashark ◴[] No.45903584{6}[source]
I'm at my current company (actually writing mostly typescript and node services now) because of a YC "who's hiring" post that mentioned F# positions (bait and switch /s, but my experience lined up heavily with the team I ended up joining which didn't use F#).
296. banashark ◴[] No.45903612{5}[source]
Are you on (or would you mind adding your company to) the F# companies list?

https://github.com/fsprojects/fsharp-companies

297. pixl97 ◴[] No.45903664[source]
9 isn't an LTS version... always go with an LTS version.
replies(1): >>45905459 #
298. DarkNova6 ◴[] No.45903677{3}[source]
Silly question. If you want the C# experience but more community/OSS driven… why not Java?
replies(5): >>45903923 #>>45904096 #>>45904106 #>>45906499 #>>45906598 #
299. MarkSweep ◴[] No.45903804{6}[source]
Yes, the restrictive license they place on their debugging components is frankly bizarre.
300. larrik ◴[] No.45903937{3}[source]
As a counter-point, my company was original purely .NET, then added Python (and later JS).

For us, hiring .NET is WAY harder than the other stacks. We get a lot more applicants in general, but almost zero that meet our standards. For Python roles we get way fewer applicants, but the average quality is much much higher than the .NET average. (JS is a whole other thing, and we frankly aren't as good at hiring there yet)

replies(1): >>45905515 #
301. recursive ◴[] No.45903962{4}[source]
> what do they do for fun?

Play in a band, ride bikes, play video games. Sample size of one.

302. Lumping6371 ◴[] No.45903987{7}[source]
What's skills? Pumping out code ala startup? Sounds like a stable environment. Someone with a good eye will still be able to pick out flaws in the processes/architecture and learn a thing or two.

"The main concern is having replaceable talent to reliably do X" as in every other company?

I swear you guys make having a regular job sound like being under slavery. It's just a job. Some companies are boring, that's just part of the job, and being able to adapt to different environments is what makes a good sde imo.

303. sfn42 ◴[] No.45903988{5}[source]
> This is how it happens though

No it isn't. This is not how you end up with 7 different frontend JS frameworks in 7 different web applications. Using python/matlab/r for data science is completely fair. These languages are standard in this field, they have the most tools and built-in functionality for this purpose.

I mean if you want to do ML and data science stuff in C# or whatever go right ahead. If you can make that work that's great. But I also think, as someone who aggressively promotes sticking to one language, that it's fair to use Python for data science.

What I don't condone, as I said, is using multiple tools for the same task. So for example, having one team/dev using Python while another uses Matlab and yet another uses R etc.

> Have you ever worked for a software company before? THis is not how it goes.

Yeah, I know. That's the problem. People just introduce new tech like it's nothing. That's why I'm saying it needs to be a big decision. So if it's really worth it okay let's go for it. But for the vast majority of cases it just isn't.

304. vips7L ◴[] No.45903991{3}[source]
I hope once they introduce unions, they also introduce some sort of error union.
305. Lumping6371 ◴[] No.45904009{5}[source]
This is just the run of the mill politics you see at every big company (or mid sized one).

I worked at a PHP shop, it was pure mierda. Worst code I've ever seen in my life. Pure incompetency. Does that say anything about PHP shops as a whole?

306. wvenable ◴[] No.45904049{3}[source]
I will pile on that I don't use any commercial libraries in .NET at all. Ironically, I do purchase a commercial library for front-end JavaScript.

I agree that the commercial library offerings seem much more "in your face" with .NET but I don't find the actual breadth and depth of the free and open source library situation to be that troubling. It certainly continues to get better every year.

.NET is very "batteries included" as well so you don't need a huge base-line of competing open source packages just to do "hello world".

replies(1): >>45906999 #
307. ethin ◴[] No.45904051{3}[source]
I think I tried that (or a derivative of it, didn't know Samsung was the primary developer) that broke in some very very weird ways. Will try this version, thanks!
308. banashark ◴[] No.45904056{7}[source]
I think saying that Spring is the representative of Java metrics is somewhat equivalent to saying that full aspnet mvc is the representative of dotnet metrics.

On the dotnet side, both Oxpecker and Giraffe (Giraffe being written by the author of that post) perform very well with simple code and from what I see, no "tricks". It's all standard "how the docs say to write it" code (muuuuch different than those platform benchmarks that were rightfully scrutinized in the referenced blog post).

On the jvm side, I started looking for a reference near the top without any targeted non-default optimizations (which is really what I personally look for in these). The inverno implementation has a few things that I'd call non-standard (any time I see a byte buffer I imagine that's not how most people are utilizing the framework), but otherwise looks normal. I recall an earlier quarkus implementation that I read through a couple years ago (same repo) that wasn't as optimized with small things like that and performed very well, but it seems they've since added some of those types of optimizations as well.

All to say: If you venture outside the standard of either platform (full fatty aspnet/ef or spring/hibernate) you can make the tradeoff of framework convenience for performance. However when it comes to the cost/benefit ratio, you're either going to be joining a company using the former, or writing your own thing using the latter (most likely).

309. willio58 ◴[] No.45904058[source]
> don't even give you a fair technical chance if you lack a degree, and the devs are considered to be a cost center.

I've never considered how lucky I am to live in the U.S. and to work at a company that absolutely sees the dev team to be a huge asset rather than another cost. The amount of time, money, stress we've saved by not allowing bad code to enter the code base.. I wouldn't have it any other way.

Also, I've had such great success hiring people without degrees. Truly some of our best contributors came from entirely different career paths. Same applies for some designers I work with.

310. Lumping6371 ◴[] No.45904070{3}[source]
Yeah, but it's very likely you won't be working like a mule, or creating a bicycle with three wheels. How could oneself be innovative and top talent under such conditions?
311. wvenable ◴[] No.45904096{4}[source]
C# and Java might be similar technologies at some level but they not similar developer experiences at all.
312. bradford ◴[] No.45904106{4}[source]
I haven't kept aware of changes to Java in the last decade, but the things I didn't like about it then were:

1. The overall architecture (with the JVM) made it slower than the equivalent C# code.

2. C# really started embracing modern language features at a time when Java was kind of languishing (lambda functions, async patterns). Java seems like it's been in perpetual catch-up since then.

(Not OP, disclaimer, I work for Microsoft and this is only my opinion).

313. hakanderyal ◴[] No.45904177{3}[source]
This one was weird to me at first too, coming from Python.

Nowadays, the ones I use have reasonable licenses and pricing, like ImageSharp. Free until 1M gross revenue, cheap afterwards. I support this type of dual licensing wholeheartedly.

314. pier25 ◴[] No.45904345[source]
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma

There are plenty of real issues that are not the enterprise stigma.

I built a backend web api this year with it and C# is fantastic. EF Core is truly one of the best ORMs I've ever used. That said, I regret that decision and won't be using it again for any new projects.

Honestly it looks like Microsoft is distracted and doesn't really know what to do with .NET. Everywhere you look there are tons of half baked projects like Blazor, Identity or Kiota and progress in .NET is super slow. It's probably going to get worse now with all the AI crap.

replies(6): >>45904474 #>>45904483 #>>45905122 #>>45905539 #>>45905817 #>>45906088 #
315. tracker1 ◴[] No.45904435[source]
Agreed... 2 -> 3 was probably the most cumbersome for me, and 3 -> 5 had a few hiccups. But since 6, I haven't seen any huge issues.
316. hvb2 ◴[] No.45904474{3}[source]
> That said, I regret that decision and won't be using it again for any new projects.

Genuinely curious, why?

317. thewebguyd ◴[] No.45904478{7}[source]
And from the company's perspective, that's the right way to operate. Sure, it sucks for the individual hacker-type, but a big enterprise doesn't want "move fast, break things" they want the opposite. Rigidity, proven processes, stability and backwards compatibility.

Working there you aren't building the next Google, you're probably maintaining a some 20 year old order-to-cash ERP process that's boring, but critically important to the business, and is exactly the software you don't want to move fast and break.

Just don't go work for big enterprises if you don't want that environment. It won't matter what language/tech stack, it's just big non-tech company things.

But there's plenty of us out there that don't mind those jobs. Pay can be good enough, and usually offer great work-life balance. I work IT ops for one. I'm remote, I put in my 9 to 5 and I'm done. I'm (thankfully) not on call, I get unlimited PTO, and my personal time is 100% my own to go do non tech things with.

replies(1): >>45906289 #
318. shortrounddev2 ◴[] No.45904483{3}[source]
Just stick with the classic frameworks. Razor works great as does MVC WebAPI
replies(1): >>45904677 #
319. pier25 ◴[] No.45904484{4}[source]
> Backends can be any language

In +90% of cases you will still need a frontend for that backend.

TS full stack is by far the best option for this.

replies(1): >>45906940 #
320. tracker1 ◴[] No.45904488{3}[source]
What libraries are you referring to? I really haven't used any commercial libraries at all since the .Net Core transition (and .Net 5+ as a result).

Are you looking at older materials?

replies(1): >>45906314 #
321. pier25 ◴[] No.45904557[source]
There's so much stuff they could be working on instead like a first party Postgres driver, better OpenAPI, improving Minimal APIs, etc.
322. tracker1 ◴[] No.45904605{7}[source]
AFAIK pinvoke (DllImport) works today just like it always has if you want to create FFI calls to C libraries. It's not windows only for sure.
replies(1): >>45906675 #
323. tracker1 ◴[] No.45904633{5}[source]
I never liked their stuff myself, and generally avoided them.
324. banashark ◴[] No.45904656{4}[source]
They killed off VB, which if I recall the announcement correctly, noted that it statistically had a larger user base (by Microsoft metrics) than F#. There are a number of companies relying on F# for critical operations and MS has some use of F# internally which I understand has no plans of replacement, which helps balance out the fear.
replies(1): >>45907233 #
325. hakanderyal ◴[] No.45904663[source]
Also first time in a long time Rider is supporting it from day one. I was ready to wait for a month plus to enjoy the goodies.
326. pier25 ◴[] No.45904677{4}[source]
I tried Razor. It's mature, has tons of features, and it's very fast. But it only really solves rendering HTML.

You will still need to integrate Vite somehow to use modern CSS, TS, etc. And if you do that, why even use Razor to begin with?

Also, hot reload is garbage. C# will never get close in speed or features to something like Vite.

replies(1): >>45906253 #
327. banashark ◴[] No.45904713{8}[source]
Although you inevitably end up writing some OOP code in F# when interacting with the dotnet ecosystem, F# is a really good OOP language. It's also concise, so I don't spend as much time jumping around files switching my visual context. Feels closer to writing python.
328. denismenace ◴[] No.45904735[source]
Why is EF regarded as such a good ORM? I've encountered countless bugs in different repos related to its stateful nature after many years in .NET. Personally I found it completely illogical for my ORM to maintain state. I just want it to hold my schema and build queries.
replies(3): >>45905195 #>>45905770 #>>45906166 #
329. tracker1 ◴[] No.45904756{5}[source]
Don't forget all the $PATTERNS ... I mean, you can't possibly live without 15 layers of abstraction and indirection.
330. tracker1 ◴[] No.45904836{10}[source]
It is mostly an Enterprise Development complaint... that said, it's how most .Net shops are in my experience. I really like C#, I've been working on a project with FastEndpoints and the .Net 10 RC since April and been pretty happy with it. That said, I don't have to implement 10 layers of indirection/interfaces/patterns to get the job done either. I have in other places.

But I would levy the same complaint with most Java[1] usage as well.

1. https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...

331. thewebguyd ◴[] No.45904876{3}[source]
Australia too.

But startups aside, pretty much any company of significant size outside of the bay area/silicon valley is a Microsoft stronghold. It's an anomaly, not the norm, that so many companies in SV are on other stacks. Even for the non-tech workers (Google Docs vs. MS Office, macOS vs Windows endpoints, Slack vs. Teams, Okta vs. Entra ID or Active Directory, etc.).

When the entire enterprise's IT runs on Microsoft, you might as well pick an MS tech for the dev stack too.

332. maximilianburke ◴[] No.45904938{5}[source]
Sounds like a problem with the "proper SaaS microservices model" more than .NET
333. thewebguyd ◴[] No.45904950{3}[source]
That's part of it, but is also weird because C# & .NET is probably one of the most productive single-developer stack you can choose. Modern ASP.NET handles so much for you it's a lot like Rails in that regard, you can get a lot done in it solo.
334. tracker1 ◴[] No.45904968{3}[source]
If you use the same base image, is it really as bad as you're making it out to be?

I understand that you're getting a roughly 100mb dist directory for a .Net web app, and that it uses quite a bit of ram.. but people also use Node and Java which have similar issues.

Don't get me wrong on this, I'd like to use Rust+Axum a lot more and C# a bit less.. but I don't dislike C#.

335. M4R5H4LL ◴[] No.45905036{5}[source]
Enterprise doesn’t spawn 10,000 containers to perform a simple “hello world” operation. That’s not how it operates. You’d be amazed at how many concurrent requests a single service can handle. This capacity must align with the actual requirements of the companies involved, not some unrealistic scenario like “we need to emulate Google.”
336. damieng ◴[] No.45905041[source]
If you use LINQ and have ever used areay Contains youre about to find out it's not going to be smooth. They knew about this for a year but decided coercing to span in an expression tree despite it being invalid wasn't worth fixing.
replies(1): >>45905156 #
337. tracker1 ◴[] No.45905072{3}[source]
I only partly agree with you... if you're talking a web api, then code generation can go a long way with an OpenAPI doc file.
338. achandlerwhite ◴[] No.45905107{6}[source]
It's no longer so hyper optimized and performs very well today in the metric compared to any other comparable framework.
339. tracker1 ◴[] No.45905121{3}[source]
Silly me, using Rider (and VS Code) on Linux with C# (FastEndpoints and Dapper) with PostgreSQL...

Now the above is personal preference, while my day job is on Windows (also FE/Dapper) but with MS-SQL, which is because another group does DBA. I'm using VS Code for the work stuff though.

340. mpweiher ◴[] No.45905122{3}[source]
> EF Core is truly one of the best ORMs I've ever used. That said, I regret that decision and won't be using it again for any new projects.

Hmm...there appears to be an interesting story and/or reason there...care to share?

341. HumanOstrich ◴[] No.45905156{3}[source]
That's pretty vague. Do you have links to any articles or bug reports explaining the issue clearly?
342. achandlerwhite ◴[] No.45905170{3}[source]
Isn't it just a single file installation?
replies(1): >>45906528 #
343. achandlerwhite ◴[] No.45905195{3}[source]
EF or EFCore? Specifically EFCore is highly regarded whereas legacy EF not so much.
344. throwaway7356 ◴[] No.45905286{4}[source]
> I've been a full-time C# developer since the first open beta and I have only one (1) instance where I used a commercial library. That was 2002

So you used C# without any of the .Net runtime? I don't think Microsoft did open source in 2002...

Even Mono was only started in 2004.

replies(2): >>45905951 #>>45906003 #
345. orphea ◴[] No.45905380{4}[source]
No, not plenty: https://learn.microsoft.com/en-us/dotnet/standard/serializat...
346. achandlerwhite ◴[] No.45905437[source]
If the US had universal healthcare I bet there would be a lot more .NET startups as corp devs would have the freedom to pursue their dreams.
347. orphea ◴[] No.45905459{3}[source]
That's... a strong statement. There is absolutely nothing wrong with going with a non-LTS version. You just have to update a little bit sooner, and that's it.
replies(1): >>45905914 #
348. orphea ◴[] No.45905499{3}[source]

  > Pretty sad that IronPython isn’t a thing anymore
Why? It seems the latest release is quite recent (9 months ago)
349. zerr ◴[] No.45905515{4}[source]
Do you measure that standard by leetcode?
350. mrsmrtss ◴[] No.45905533{3}[source]
>And so has Hejlsberg, apparently, seeing his reasoning for choosing go over C# for tsc

It was more related to the fact that the existing TS code was more easily ported to Go, and also .NET AOT wasn't mature enough at that time. Structural typing has its own problems. I'm personally not a big fan of it.

351. giancarlostoro ◴[] No.45905539{3}[source]
I'm the same. I'm both a Python and C# developer. I use Python for all my personal projects, and given the choice, for MOST projects I'll always pitch Python first, Django gives me the strengths of something like ASP .NET / EF Core, but without feeling like they're building more abandonware. I really love Blazor and heck even MAUI, but will they still be there in 10 years? Probably, will Microsoft have some new project that replaces them? probably.

Then there's Django. Rarely changes, only for the better. Upgrading Django versions is usually painless too. The ORM is fine enough.

replies(1): >>45906204 #
352. ◴[] No.45905585[source]
353. jiggawatts ◴[] No.45905602{6}[source]
Size of the company, combined with wanting “vendor support” instead of going at it alone like a FAANG would.
354. hvb2 ◴[] No.45905694{5}[source]
If you have that many containers, you should be having the revenue to pay for that.
355. jiggawatts ◴[] No.45905736{3}[source]
You’re making the classic logical error of “your thing doesn’t have the workaround needed for an issue that only happens with my thing”.

You need 10K containers for Node and Python apps because they use a single threaded runtime! The best way to scale these is to deploy many small containers.

The .NET runtime is fully multithreaded and asynchronous and supports overlapped I/O. It scales to dozens of cores, maybe hundreds in a single process. The built in Kestrel server is full featured including HTTP/3 and TLS 1.3! You don’t even need NGINX in front of it.

Not to mention that unlike most Linux-centric programming languages, it deploys reliably and consistently without needing the crutch of containers. You can simply copy the files to a folder on the web server(s), and you’re done. I’ve actually never seen anyone bother with containers for an ASP.NET web app. There is very little actual benefit, unlike with other languages where it’s essentially the only way to avoid madness.

PS: Every Node app I’ve ever deployed has been many times slower to build and deploy than any ASP.NET app I’ve ever seen by an order of magnitude, containerised or not. Go is comparable to C# but is notably slower at runtime and a terrible language designed for beginners too inexperienced to grok how exceptions work.

356. WorldMaker ◴[] No.45905757{5}[source]
The C# team admits to looking at how F# features work, but also keeps trying to make it clear that C# doesn't have a goal of entire eating F#.

C# still doesn't see itself as a functional programming language, even as it has added so many features. It may never get first-class currying or the broader ideas like generalized computation expressions, for instance. It certainly won't get F#'s cleaner syntax with fewer mandatory semicolons and whitespace nesting rather than curly brackets.

F# probably isn't going to disappear for a lot of similar reasons that GHC (the Glasgow Haskell Compiler) didn't disappear when F# was started (nor when key contributors left Microsoft). F# often already sees more outside open source contributors than contributions from Microsoft employees.

357. troupo ◴[] No.45905761{5}[source]
> while Java takes a while to design a bigger feature that will replace several smaller ones' use cases.

Java is quite busy also implementing features that are small in other languages like text blocks.

And I wish Java would design bigger features that would replace several "smaller ones", but that is almost never the case. It's almost always just a new big feature bolted on to the language that is almost there, but not quite

There are many reasons for that, none of them simple, and it doesn't help that there's also the attitude of "those lesser languages cannot compare to the greatness that is Java" [1]

If we're talking about Java, somehow you're still required to do builder patterns and manually create `.of` constructors for everything. Where C# has had object initialisers and pervasive IEnumerable with a very simple interface that nearly everything uses. And that is only scratching the surface of DX.

Almost every feature bolted onto Java seems to take several times more code, and doesn't really work with the rest of the language.

Don't get me wrong, I quite like working with modern Java. But I had the chance to work at a company where micro services where developed in both Java and C#, and the difference is still light and day.

[1] https://news.ycombinator.com/item?id=28985688 "our goal isn't to adopt the strategy of less successful products, but to forge our own"

358. htgb ◴[] No.45905770{3}[source]
Are you referring to the change tracker? FYI you can have it skip tracking as the default (or per query), but when you actually want to make changes you better opt in with `.AsTracking()`.

Anyway, I've used EF at work for about a decade and I'm happy with it. I surely have blind spots since I haven't used other ORMs in that time, but some things I like are:

- Convenient definition of schema.

- Nice handling of migrations.

- LINQ integration

- Decent and improving support for interceptors, type converters and other things to tailor it to our use cases.

What ORM do you prefer, and how does it differ by being stateless? How does saving look like, for example?

359. delaconcha ◴[] No.45905814{3}[source]
Just install the .NET SDK, and you’re ready to go.

> Nuget is complete and utter garbage. You still have to resort to all forms of unreliable hacks in order to redirect it to a locally clone

How so, you can use a nuget.config in your project and use your local packages fairly easy, seems in part with npm and the likes.

replies(1): >>45906519 #
360. mrsmrtss ◴[] No.45905817{3}[source]
>Everywhere you look there are tons of half baked projects like Blazor

We used Blazor years ago and it worked flawlessly already then. Hard to believe it's worse today. And what's wrong with Identity?

>progress in .NET is super slow

Compared to what?

361. WorldMaker ◴[] No.45905845{4}[source]
System.Text.Json is out-of-the-box in .NET > 5. The NuGet package is primarily a compatibility layer for people still supporting .NET 4.x for whatever reason.
362. htgb ◴[] No.45905914{4}[source]
Especially with the recent extension of STS release support from 18 to 24 months [1]. Previously, upgrading from an LTS version to the next major (STS) version meant the support window decreased by half a year, while now it would stay the same.

[1] https://devblogs.microsoft.com/dotnet/dotnet-sts-releases-su...

363. WorldMaker ◴[] No.45905931{4}[source]
There is a 3rd Party library for that now: https://github.com/zcsizmadia/ZCS.DataContractResolver

I haven't tried it because it has generally seemed easiest to use the new attributes. Though a large part of that is the shift from the WCF-era "opt-in" approach of DataContract/DataMember [0] versus the "opt-out" JsonIgnore approach where most of the transition is deleting lines because JsonIgnore is the exception rather than the rule. You could even keep DataContract/DataMember during the transition and just take an additive approach for JsonIgnore.

[0]: It was a good idea, in theory, but so annoying in practice.

364. toyg ◴[] No.45905951{5}[source]
Come on, it's clear he meant "commercial libraries not in the default Microsoft SDK".
365. mvdtnz ◴[] No.45905984{3}[source]
What an absolute load of bullshit.
366. ◴[] No.45906003{5}[source]
367. vielite1310 ◴[] No.45906073[source]
As much as I love .NET. I would like to see the whole libraries ecosystem being sustainable again. A recent license changes from all my favorite libraries just made me hesitant using .NET for actually build a startup TBH
368. wvenable ◴[] No.45906088{3}[source]
I had high hopes for Blazor but it didn't really materialize. Instead I'm just sticking with Angular.

I don't think Microsoft doesn't know what to do with .NET. I think it continues on a very logical and direct path. But they have no idea what to do with UI on any platform. Luckily they haven't even deprecated any of the existing options and on the web, at least, you have all the same options as every other platform.

replies(1): >>45906602 #
369. orphea ◴[] No.45906163{5}[source]

  > Create a hello world dotnet container
The container image is 10.9 MiB. The binary is 1.2 MiB.
370. WorldMaker ◴[] No.45906165[source]
Same number of options.

Razor is still the "default" and "Razor Pages" has a different brand name, but just means "Razor with more things in the main .razor file and fewer code-behind .razor.cs files and less of an MVC approach".

Blazor mostly only matters if you want your frontend to also be Razor. At that point you've got the fork between Blazor using SignalR for HTML pipes from Razor files to the client versus Blazor running client-side in WASM with a Virtual DOM renderer based on Razor.

Blazor seems popular among some groups that want everything in C# rather than needing as much of a Typescript frontend. Blazor WASM bundles a full version of the CLR into WASM so mostly only popular in places where you don't need to optimize the initial web bundle.

371. wvenable ◴[] No.45906166{3}[source]
EF Core is amazing -- in it's default setup it works for 99% of situation. For the 1%, you can basically turn off everything you don't want.
372. toyg ◴[] No.45906204{4}[source]
It is ironic when companies like Microsoft and Google end up showing the sort of "permanent reimplentation" behaviour that used to be typical of opensource, whereas certain opensource projects persist seemingly forever. Python, Django, Emacs - these things will likely see the end of the galaxy; meanwhile, big companies now build and discard key projects every other year.
373. wvenable ◴[] No.45906217[source]
I love this feature. I have avoided doing some stuff in properties because I don't want the noise of a private backing field.
374. mexicocitinluez ◴[] No.45906242{9}[source]
> And .NET is the language of choice for "Enterprise".

Yes, again, you're criticizing the practices of enterprises not dotnet. It has nothing to do with how "dotnet shops operate".

I'm at a dotnet shop who doesn't work anything like that. I've been at multiple of them. It has nothing to do with dotnet itself.

375. shortrounddev2 ◴[] No.45906253{5}[source]
If youre intent on writing everything on the frontend in javascript then you can just have a frontend app and use webapi MVC on the backend. Personally, in my personal projects, I find I iterate faster if I dont't write any javascript. Every page is just static HTML and any interaction is done via CSS (which you can do perfectly well in razor pages) or html forms. Managing page state is a huge time sink and IMO not worth it, but it's what pays the bills lol
376. mexicocitinluez ◴[] No.45906289{8}[source]
> And from the company's perspective, that's the right way to operate.

Oh absolutely. It's a business decision. It just so happens that it's framework that has been around awhile and has a decent bit of support. Give Node another 10 years and that landscape might start to change.

377. eitally ◴[] No.45906314{4}[source]
Just one example, but when I was running a .Net dev team we licensed the Telerik UI components. We ended up dropping them, but not until we had initiated a migration to Java/PG instead of C#/MSSQL. After we moved to Java everything standardized of a set of FOSS libraries for various things.
replies(1): >>45906653 #
378. Kwpolska ◴[] No.45906476{6}[source]
I agree with almost all of this, especially MediatR being nonsense, but I would recommend against using a LLM to generate a mock. That’s just more code that you need to maintain and update on every interface change. NSubstitute is a fine library.

Another popular library that went commercial is FluentAssertions, Shouldly is a good open-source alternative.

379. Kwpolska ◴[] No.45906499{4}[source]
C# 1.0 was pretty much Microsoft Java, but since then, C# has evolved into its own, more powerful thing, while Java has stayed much more conservative over the years.
replies(1): >>45907035 #
380. toyg ◴[] No.45906510{10}[source]
> I would argue Java is more of a choice for "Enterprise".

.NET was literally created to replace the Java enterprise ecosystem. It never managed to completely displace it, but effectively gained around half of the enterprise market - and it will take more and more, after Oracle started pulling their usual boa-constrictor moves. C# is as "enterprisey" as they come, and it went full-opensource only once it became a requirement even in the enterprise.

381. zamalek ◴[] No.45906519{4}[source]
"Just" is an incredibly obnoxious word when used in the way that you have.

> Just install

Not on Debian? Have fun with that. You'll also need the Azure SDK. And what about openssl-dev? Oh no, you installed dotnet on Windows instead of within WSL? Start again.

No, you don't "just install" the SDK. There is a lot that the IDEs set up for you.

> Local nuget.config

I don't see how adding a nuget config improves anything. You have completely omitted what you place inside of it to make it build and use a local clone of the package source.

Look at all this nonsense that people have resorted to: https://stackoverflow.com/questions/32482746/how-to-temporar...

382. zamalek ◴[] No.45906528{4}[source]
No. It's a tar + some config envars if you need to do it manually.
383. raddan ◴[] No.45906598{4}[source]
I wouldn't call this a silly question at all. But having recently converted my intro data structures course from Java to C#, I can talk about why C# might be better. I have programmed regularly in both languages for the last 15 or so years (in addition to regularly programming in TypeScript, Scala, and F#).

Java is fast and reasonably safe. It has a lot of software (especially OSS) software. Its package system (Maven and the like) is ok, but not great. The language occasionally gets new features, but change is slow.

To a first approximation, C# is a lot like Java, so it is relatively easy to switch. But C# is, hands down, a better language. The most obvious thing that a developer might notice that that C# does not force you to be extremely verbose like Java, although you can code in the Java style if you like.

Having switched my course from Java to C#, the most obvious "win" was the fact that, every lecture, I would delete some slides that explained painful Java corner cases to students. For example, Java's implementation of generics. Boxed types are necessary, and explaining them to students who have never seen any form of polymorphism before is difficult. After an entire semester of deleting a handful of slides each lecture, I have save _three entire lectures_ worth of corner cases!

Some C# niceties:

* Everything is an object, even value types! So our favorite `ToString` and `GetHashCode` methods, etc, are all there. * Generics work as you would expect with very few weird corner cases. No boxed types because... everything is an object! * The last two facts mean that you also get generic arrays, which are fantastic (and, incidentally, are also _implemented_ in C#, which is super cool). * By default, reference types are not nullable. This is a little bit of a pain for an intro data structures course (we turn them off), but it is a great idea for commercial programming. * switch statements work the way you would expect a modern switch to work, and in some cases they even do exhaustiveness checking like a functional language. * Speaking of... LINQ! * In general, the standard library is also better organized. Interfaces start with "I". Collections libraries have been carefully designed and learned many lessons from Java. A good example of an improvement over Java is the IEnumerable<T>/IEnumerator<T> class, which is simpler than Java's Iterator<T>. * Type inference is limited compared to a functional language, but it is dramatically better than Java. Being able to write `var` is wonderful. * Properties are really nice, and the shorthand syntax for property getters/setters saves a lot of time. * C# has a rich set of value types, including structs. Java may have added something like this, since I remember the Scala people hacking away on it, but it is used pervasively in C#, and you can make very fast data structures that take advantage of spatial locality. Rolling one's own hash table implementation in C# is actually kind of fun. * .NET's runtime reflection capabilities are amazing. All of my autograders make extensive use of reflection instead of forcing students to compile with interfaces; this gives them a degree of freedom in implementing things. * NuGet is a million times easier to use than Maven.

The downside is that C# is definitely not as fast as Java, in particular when the runtime is starting up. I remember how painful Java startup used to be, so I am optimistic that this will improve eventually.

Anecdotally, my students this semester are demonstrably more capable programmers after a semester of C# than a semester of Java. It might just be that I got lucky with this group, but I have been teaching this same course (except in Java) for the last 7 years, and this feels like a real effect.

replies(1): >>45907120 #
384. rblatz ◴[] No.45906602{4}[source]
I avoided Blazor, despite multiple people on my teams pushing for it. It always felt like it fit in the same space as web forms and silverlight. A product created to fill a gap of developers that wrote desktop apps and don't want to learn how to write front end code for the web. Plus it binds you to the product lifecycle of a .net side project that likely will be abandoned.

While Blazor has some cool stuff built in, the cool stuff never felt worth the risk of building a product around it.

385. AshleyGrant ◴[] No.45906653{5}[source]
We use Telerik components at my current job. They're a solid library, IMO. I'm sure there's better out there, but we've been using them for nearly 15 years at this point and I feel like we get decent value for the money, and their developers get to draw a salary.
386. whizzter ◴[] No.45906675{8}[source]
That brings you back to managing memory though, C++/CLI having access to managed C# handles/references for GC'd objects (and finalization) would greatly simplify any memory management at the same time as having first class access to native libaries.

Granted, one could probably build some of the machinery memory management in a simple way but it'd still need to be done and probably not be coherent with other native interfaces.

replies(1): >>45907154 #
387. AshleyGrant ◴[] No.45906770{6}[source]
Any recommendation of good alternatives to Telerik? We've been using it for years, but I'm open to considering alternatives even though it doesn't cost me anything to pay for the license.
388. SideburnsOfDoom ◴[] No.45906818{8}[source]
Online forums often have people asking "hey I found this tutorial for learning c# but it's way way back for .NET 7 will it even work in .NET 9?"

The answer is always a variation of "yes, you'll be fine, but also look at a "what's new" summary for the new version.

389. phillipcarter ◴[] No.45906940{5}[source]
Not really? Having come deom a TS + Go startup it’s pretty trivial to wire up domain objects across each language and define a clean API boundary with some enforcement at build time. And Go was a far better choice for the backend than TS for some lower-level memory considerations.
390. osigurdson ◴[] No.45906999{4}[source]
Every company should give developers $100 per year to donate to the open source project of their choosing. Right now the conditions are such that maintainers are incentivized to rug pull.
391. phillipcarter ◴[] No.45907010{5}[source]
By recently you mean a decade ago yeah? I mean it’s fair that it was only a half-decade (.NET 5) when it was genuinely complete enough, but lots of stuff was in good shape when it was called .NET Core.

It sounds like you’re projecting the problems of an existing .NET shop onto the shape of a startup without all that baggage. I can assure you, having worked with many customers running new business on newer .NET, it hasn’t been a legit technical concern since about .NET Core 3.

392. el_benhameen ◴[] No.45907021{6}[source]
FWIW, the .net folks seem to have put a lot of effort into the native AOT pipeline in the last few releases. We have a large, non-trivial application with a fair amount of legacy code, and getting it AOT’d in .net 10 (targeting wasm, even!) was not an insane lift.
393. Kwpolska ◴[] No.45907028{3}[source]
It’s also a great IDE for .NET development on Windows.
394. osigurdson ◴[] No.45907035{5}[source]
I'm not sure it is more powerful but it might be more ergonomic. The strange part about both (today - it made sense 20 years ago) is the whole bytecode thing. That should go away imo.
395. Yhippa ◴[] No.45907120{5}[source]
This is interesting. I've been away from the high-code world for a while and instead of going back to Java, I might try out c#. Thanks for the writeup.
396. nu11ptr ◴[] No.45907122[source]
IMO, C# is just a somewhat better version of Java (low bar) w/ first class Windows API support. I can't see myself ever adopting it for any real work. F# on the other hand seems a pretty awesome, terse and expressive language. Unfortunately, it is very unpopular (yet still hangs around).
397. midnitewarrior ◴[] No.45907144{5}[source]
Not every library is capable of building to Native AOT, which means any app that depends on those libraries run into the same problem. If the library or app uses reflection, it likely isn't capable of Native AOT compilation.
398. to11mtm ◴[] No.45907154{9}[source]
IDK, for certain cases those fancy libraries are just handling the ugly marshal calls for you.

Wayyyy back in the day, before package managers were a thing, I had to write something to output a PDF via DLL calls and frankly it wasn't a bad experience. Possibly outside of what is in a 'modern' workflow but honestly wasn't too difficult. Just wrap it all in a class that only gives what you need and avoids potential footguns via validation.

Frankly it was easier than doing anything with Autocad's 'managed' libraries [0].

Maybe it's rose colored glasses for me, but .NET had fairly simple rules for most marshal bits so long as you knew them, although I will admit we didn't worry about 'performance' for the stuff I wrote and that can be a factor.

[0] - Microstation had a bunch of fancy COM hooks and exposed all of it to .NET in a nice way. AutoCAD 'managed' libs had all sorts of weird sorts of arcane rules and if you failed to follow them not only could you crash your .NET process but Autocad could remain unstable until you rebooted the PC... which is why I keep putting managed in air quotes.

399. jcon321 ◴[] No.45907225[source]
Microsoft's Ubuntu image seems to be ready. I guess I could see a reason to use regular Ubuntu 24 and then install dotnet manually, but these images have served us well.

docker pull mcr.microsoft.com/dotnet/sdk:10.0 - Refers to Ubuntu 24.04 "Noble Numbat"

docker pull mcr.microsoft.com/dotnet/sdk:10.0-noble - Refers to Ubuntu 24.04 "Noble Numbat"

https://github.com/dotnet/dotnet-docker/discussions/6801

400. Kwpolska ◴[] No.45907230[source]
For most projects, upgrading between .NET version is quick and painless, usually just updating the TargetFramework and NuGet packages in your .csproj file.
401. nu11ptr ◴[] No.45907233{5}[source]
I was curious so I googled. Best I can tell it is still supported, but perhaps stagnant?