It helps that now most (if not all) parts of the stack are open source and run on Linux.
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?
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?
I've restored it to the front page and wound back the clock so it gets its rightful dose of front page time.
https://hackernews.life/?s=top&id=45888620&t=1762939537
It arrived at rank 86:
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
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.
I wish CPP development was as robust as C# development is
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.
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.
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...
Edit. I was not aware that the gap between System.Text.Json and Newtonsoft narrowed, take my comment with a grain of salt, please!
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.
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.
Those older stuff are likely running newtonsoft.Json anyway.
There's also a load of .NET Framework applications still running Newstonsoft.
In a world obsessed with AI and web tech, this is a refreshing read!
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.
It looks like they got someone from Apple to write their press release.
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.
jitbit•19h ago
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.
oaiey•19h ago
balamatom•55m ago
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.
catlover76•19h ago
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.
mrsmrtss•17h ago
nozzlegear•17h ago
† And Neovim occasionally, but I mostly use it for Typescript or anything that isn't F#/C#.
‡ https://github.com/nozzlegear/shopifysharp
phillipcarter•16h ago
starvar•1h ago
Deukhoofd•1h ago
Semaphor•1h ago
cyptus•1h ago
throwuxiytayq•58m ago
whstl•1h ago
VSCode gets you 90% there.
But IMO Rider gets you over 100%.
jitbit•16h ago
No, really, I'm facing more issues from Cursor based based on a year-old upstream version of VSCode than from this, heh...
clintmcmahon•15h ago
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.
debugnik•1h ago
phito•1h ago
leetharris•18h ago
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.
phillipcarter•16h ago
cebert•7h ago
phito•1h ago
robertlagrant•1h ago
littlecranky67•36m ago
cies•1h ago
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).
josephg•1h ago
littlecranky67•43m ago
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.
pjmlp•1h ago
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.
petesergeant•54m ago
The number of startups for whom that performance differential matters more than developer output is tiny.
pjmlp•21m ago
DeathArrow•1h ago
You can do that in .NET, too if you use Blazor for frontend.
SparkBomb•14m ago
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.
pif•1h ago
charcircuit•1h ago
forrestthewoods•1h ago
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.
adastra22•40m ago
charcircuit•39m ago
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.
johannes1234321•22m ago
gishh•51m ago
adastra22•41m ago
fuy•40m ago
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.
egeozcan•37m ago
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".
delta_p_delta_x•33m ago
This is a pretty ignorant take.
greener_grass•47m ago
Running TypeScript on the server is a well trodden path. It can be pretty fast too. Python on the client, not so much.
vintagedave•15h ago
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.
sfn42•1h ago
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.
randyburden•7h ago
DeathArrow•1h ago
miki123211•1h ago
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.
tinyspacewizard•1h ago
It's a force multiplier when you have a small team of strong developers.
Xelbair•43m ago
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.
dude250711•27m ago
olavgg•1h ago
littlecranky67•51m ago
Xelbair•34m ago
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.
jgilias•57m ago
defraudbah•38m ago