Hacker Newsnew | past | comments | ask | show | jobs | submit | tablloyd's commentslogin

That argument doesn't really hold up much water

- Typescript is created by Microsoft (This doesn't stop many start-ups from choosing it)

- Hot reload is for a small segment of the C# userbase and that article is now years old.

FWIW I've been a dotnet/c# dev using MacOs/Jetbrains rider for 6 years now.

C# != Visual Studio.


Autocomplete works fine interactively debugging on MacOS with JetBrains rider.

Syntax trees can be browsed on https://sharplab.io/ or again via Rider and I'm sure there are some other tools that I'm not aware of.

The Roslyn sdk is part of .NET (cross platform) these days so anyone can use it to build a visualiser should they wish to.


Where would .NET developers be without the Java based IDE, the irony


Weird take

Where CPP devs would be without C# based IDE?

Where all devs would be without js/ts based vscode?


Visual Studio exists long before jetbrains and VSCode is on elecron. I would say java ide is also an essential thing but not the thing that made everything possible.


With these kind of remarks, the point being that .NET team isn't serious enough for having cross-platform GUI tooling that would enable a proper cross-platform version of Visual Studio.

Visual Studio for Mac (nee Mono Develop), could have been it, instead they decided to kill it, and focus on VSCode, which has already been communicated a couple of times, C# Dev Kit will never cover all use cases of VS proper, and it is also under the same license anyway.

So MAUI will never support GNU/Linux, was also not used in VS4Mac due to its Catalist underpinnings, Forms and WPF will stay Windows forever, MS will never used Uno or Avalonia, thus it leaves a Java IDE platform and Electron for their cross-platform tooling.

All, because regardless of what the .NET team does, upper management still wants to use .NET to drive Visual Studio and Windows licenses.


Jetbrains IDEs aren't free (and cost many times more than what is fair for the quality of the product they are known to ship), and SharpLab only has a partial implementation of it: https://github.com/ashmind/SharpLab/issues/616

> The Roslyn sdk is part of .NET (cross platform) these days so anyone can use it to build a visualiser should they wish to.

Of course, but for most people that need this, they may just be trying to figure out how to do something as simple as adding an analyzer rule to a project, and don't have the luxury to be able to delay that work to spend weeks cobbling together a visualizer using an SDK that they may only have barely any knowledge with.

There are certain things that don't inspire the kind of passion it takes for volunteers to do this, and therefore it's up to those who have a financial motive to do so. Whether it be the rent-seekers at JetBrains, or someone other than Microsoft and doesn't have an incentive to make a competing OS more viable for developers. Without the .NET foundation's governance model and funding (regardless of who funded it), it would have never made it this far. See: https://github.com/dotnet/vscode-csharp/issues/5276


> Whether it be the rent-seekers at JetBrains

This is a gratuitously negative comment that is unfair and uses an incorrect metaphor. Rent-seeking is trying to charge for something without providing any new value, usually from something already established as free. I don't believe Rider was ever available for free, but even if it was, they certainly have improved it with loads of new value since then. You're welcome to your opinion (that I don't share) that their IDEs are not worth the cost, but you're also free to not buy them. That's not rent-seeking, it's the free market.

I personally am a big fan of Rider and the JetBrains Toolbox suite, and I get several times more value out of my subscription than it costs. YMMV.


My full toolbox sub costs less than either my spotify or netflix subs do. Move along.


Oh for crying out loud, you could not have chosen a worst company to go after for the accusation of "rent seeker."

Jetbrains has offered perpetual fallback licenses for all of their products for years now. This means that as long as you don't need any of the new updates, you can purchase it for a one time fee (basically the equivalent of a single year's license) and then you own it.

As far as their products not being worth what they charge, I pay about $180 per year (15$ / month) for the entire jetbrains library and consistently use CLion (for C and C++), Datagrip (postgres, mongo), Data rider (c#), Web storm (typescript), Phpstorm, and Pycharm. Considering these are the tools of my trade, that's more than a fair asking price.

They've also been incredibly responsive, especially considering the massive upheavals within the company as a result of the invasion of Ukraine by Russia. Whenever I've filed an issue on youtrack, it usually gets a response, and often a bug ticket that's handled within a few version iterations later at most.


The maximum daily cap for an adult from zone 1 - 9 is around £21. It will categorically not be cheaper than using a car to use TFL transport within London. I think you may be confusing TFL services with national rail services.


In practice a massive majority of people will be within Zone 6 at the furthest, where the daily cap is £14.90.


You can make the C# code much more F# like with records and a switch expression.

Eg: https://sharplab.io/#v2:EYLgZgpghgLgrgJwgZwLQAUEEsC2UECeAwgP...


Microsoft has a good tutorial that showcases what you can do when designing with switch expressions in mind:

https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...

Probably one of my favorite recent-ish additions to the language.


The fact that they've added all of this great stuff and have STILL not added real discriminated unions is a damn travesty. It would just so drastically improve the language.


Agree.

For now, you can get a reasonable DU via an [external library](https://github.com/mcintyre321/OneOf).

[Nick Chapsas Video on Usage](https://www.youtube.com/watch?v=7z-xjijYfcI).


you can easily do them, I added a comment on the article showing how....

https://github.com/linkdotnet/Blog.Discussions/discussions/7...


It's missing the killer feature though, which is the compiler warning you when you haven't done an exhaustive match. That is the magic which makes adding new values easy instead of hunting through code to find if you missed the new case anywhere.


I used to think that.... but actually, in practice, and I've been using them for a long time now, it doesn't make much difference, good tooling will generate the cases and help you find all instances pretty quick (I use Rider).


I've only needed discriminated unions inside C# when I'm using pinvoke to C DLLs. I would think Rosylin supports some compiler warning for them, but I haven't checked that.


This is the kind of OG way to do it even before we had patterns. There are a couple of problems with it, least of which is that I can't then use one or both of those in a wider union elsewhere, because their definitions are bound to that parent class. Ideally I'd like to see something very similar to the linked OneOf library. That allows you to do both in-line definitions OR subclass from OneOf<T1,T2,T3...> to reify the union as a class as well. If that is done and integrated properly into the pattern matching system, I believe it will yield very powerful expressiveness.


My guess is roles will land first in C#13.

Is is kind of a pain particularly when working across Typescript projects. OneOf is cool, but it DOES NOT work well with null and thus optional parameters.


It's just like in Kotlin !


Given few people anticipated ValueTuple and C# adding a more direct tuple syntax, I feel like it is only a matter of time before C# adds discriminated unions.

(There are multiple proposals tracking the idea. This seems the most comprehensive and "central": https://github.com/dotnet/csharplang/issues/7016)


This seem to be a longer running one: https://github.com/dotnet/csharplang/issues/113


Would love to see DU in C#

I think they would add it by C# 14 or 15.


genuine misunderstanding : what do you mean by "real" discriminated unions.

I believe I am overlooking something (probably obvious even to me) since i know:

https://learn.microsoft.com/en-us/dotnet/fsharp/language-ref...

is perhaps a misuse of the term in this context.

(I'm guessing you mean more like in Rust, but am not sure.)


The parent comment means that C# lacks DUs, not that F# lacks them.


Oh thank you


Maybe the rest of the .NET world has more important stuff to care about?

Anyone that cares so deeply about them can do the work on a F# assembly.


One of the problems here is that C# and F# interop isn't always as easy as the article implies. F# has a lot of types which, when exposed in a public API, are ugly as sin in other .NET languages.


That issue is not F# or C#'s fault - it's a limitation of the expressiveness of the CLR's type-system (it doesn't support higher-kinded types, varadic type parameterization, or non-typename type parameters).

The hope and the expectation is that the CLR will gain support for first-class representations of F# concepts to allow for greater interop with C# scenarios, but the CLR's development has always been tied to C#, with other CLR languages like VB.NET and C++/CLI only exerting minor influence on the CLR's design with most of their language-specific idiosyncrasies being handled by library-code and compile-time tricks instead (e.g. VB.NET's "On Error Resume Next" statement is implemented by having the compiler wrap each individual statement in a try/catch instead of having the CLR specifically support it (though in this specific case that's probably a good idea as OnErrorResumeNext is a horrible idea I'm sure we all agree).


Minor correction, only Managed C++ and C++/CLI have the full power of the CLI, many of the performance improvements in C# have been related to exposing those MSIL capabilities to C# as well, which before required generating bytecode directly.

Which is kind of ironic given how they usually leave C++/CLI out of the picture, including the cross platform story.


Did you check the recents blog posts about C#12? Clearly the team has ran out of ideas for meaningful improvements to the language, while ignoring discriminated unions which is the most important concept missing in the language.

[1] https://devblogs.microsoft.com/dotnet/new-csharp-12-preview-... [2] https://devblogs.microsoft.com/dotnet/new-csharp-12-preview-...


Yes, I am not a fan of inline arrays syntax, or interceptors.

I can manage without DU, have used plenty of languages without them since Caml Light.


I’m not arguing there is more important stuff, but DUs would enhance the language on a wide, fundamental level, accelerating a lot of other advancements.


I have used Caml Light, Standard ML, Objective Caml, Haskell, and fail to see the greatness of such advancements.

C# has done great in the industry for the past 23 years without them.


This is a really interesting comment. Do you not miss the features and expressivity of those languages?


The only thing I really missed, has been adopted during the latest years, pattern matching.

Languages are not used in isolation, great IDE experience, and having mature libraries for every use I can think of, is more valuable than grammar and semantics.

Also a reason why I would rather do FP in C++23 than Haskell, even with all the warts and paper cuts it entails, ecosystem.


Wouldn't F# or Scala hit these ecosystem needs whilst also delivering pattern matching (done well), sum types, etc?


If only the tooling was at the same level as C# and Java.

Additionally, they add friction to a development stack, now everyone needs to be confortable with two language stacks, and most of the time it isn't really worth it.


Yea I don’t care neither but business seems to care. If you listen closely their specs are pretty much bloated with DUs.


its because they are easy to do in C# without explicit support, but the proposal is still in the works, but they argue a lot about the syntax and about exhaustive type checking for all the edge cases.


FWIW, this a switch expression rather than a switch statement.

But in any case I really love this addition to the language but the inability to have multi-line or block expression arms is a constant annoyance for me.

You can even combine these with the new one line record syntax to create a poor man’s discriminated union.


Your pedantic correction is actually important for another reason: the switch expression (unlike the switch statement) is defined at the language level as an expression (evaluating to/“returning” a value), which would be ok except C# doesn’t (at the language level) have a void/unit type, meaning the switch statement has to return an actual value, limiting the places you can use it compared to the F# counterpart (or the match expression from rust, etc) to very specific cases, usually those performing an assignment.

The workaround for that is the same as the workaround for the really lame one line limitation: you need to call a (preferably (static) local) function in the handler portion and then return something like `true` assigned to a discard. Hacks all around!

Eg

_ = foo switch a when … => CaseA(foo), _ => CaseB(foo);

With CaseA and CaseB returning bool in order to call a function depending on the value of foo rather than assign a value.


The blog is indeed the worst example you could run for this case. As you pointed out, modern C# would be same length (which is his "wow" effect on the functional core) but also has the F# not really a higher readability than the shown C# code.

F# / C# interop ... cool thing, just to clarify.


I wish Honeycomb employees would spend some time on improving their product in a tangible way instead of writing blog posts. I've had the missfortune of using Honeycomb at work and for any systems that interact with more than a couple of services it's simply unusable. I don't get why there's all the hype around the company?


I'd guess that it would require a new version of VS. To use .NET core 3.x you have to have VS2019, that is unless you're using Rider.


I'm skeptical of Brexit being the reason that N26 is withdrawing from the UK. They started operation in the uk in October 2018, over 2 years after the referendum result and 6 months before the UK was meant to leave until the date got pushed back.


This is the problem, no one believes the draw backs of leaving the EU even when businesses are literally pulling out of the country and directly saying it's because of regulatory divergence. It used to be that you could access 500m customers with one set of regulations. Now you can access 450m customers with one set of regulations, and you can access 60m with another, as yet undefined, set of regulations that are guaranteed to change over the next few years. It doesn't take a genius to see that that uncertainty is going to take a toll on business, but it does take a planet brain genius to know that's happening, hear from actually businesses making decisions based on it, and then decide it's not really an issue.


You're correct. Nobody believes them because so many of these so-called drawbacks have turned out to be lies.

For instance, Goldman Sachs repeatedly claimed they'd be moving their business to Frankfurt in the case of a Leave vote. They even funded the Remain campaign. Now they leased their HQ in London for 25 years: https://news.sky.com/story/goldman-sachs-commits-to-uk-despi... - apparently not planning to leave the country after all.

The EU Commission said it would ban EU companies from trading with British financial in the wake of Brexit. The IMF said it would "cripple" the UK. Brexit supporters said that cutting off the EU from all British financial services would be so self-defeating the Commission wouldn't do it. I was skeptical personally, but so far they were proven right. The Commission keeps extending the so-called "financial passport": https://www.telegraph.co.uk/business/2019/12/02/eu-threats-c...

N26 say they're leaving because of Brexit, but chose to enter after they knew Brexit had been voted for and the process was well under way. How likely is it this is true, vs N26 failing in the market but being run by a bunch of Remainers who want to deliver a "fuck you"? If they really only just realised now Brexit was happening then they are a monumentally incapable company.

By the way, the EU's unified financial regulation creates problems as well as solutions. For instance it prevented British regulators from stepping in to prevent the foreseen collapse of Icelandic banks. The Icelandic government ended up not having sufficient funds to bail them out. It's discussed here:

https://leftfootforward.org/2016/09/brexit-is-the-financial-...

The government's recommendations after that incident were basically to introduce caveats and more regional control over financial regulation.


Your Goldman link shows Goldman selling their UK headquarters and leasing it back. A headquarters they planned before Brexit. It provides no information as to whether Goldman plan on sub-leasing. The financing of one of their buildings tells you nothing about hteir operations.

Your second claim- that the EU commission would 'ban' EU companies from trading with 'British financial' in the wake of Brexit. I'd love to see a source. You know, a source that doesn't caveat things like "if Britain diverged too far". Oh by the way, I work for a finance company that's moved its legal entity to Amsterdam- so those scare stories are literally what has happened.

I'd love to see any reference you have to what you were claiming would happen with Brexit in 2016. Any reference, because I bet you whatever you thought would happen is wrong. But I'm sure you've got good sources for your conspiracy theory that everyone who points out a problem with Brexit is secretly pushing an ulterior motive. Talk about the damage brexit is doing? you must be 'monumentally incapable' - or, you know, actually running a business.


Leasing it back ... for 25 years. Pretty critical detail you left out there! Why would you sign a 25 year lease on an expensive HQ for thousands of people if you were about to leave the country?

The EU revoking financial "equivalence" for non-financial reasons is a very well known phenomenon that was extensively discussed in and around the referendum time. They did it to Switzerland so there's been more since. For instance:

https://www.theguardian.com/politics/2016/jun/25/london-city...

“If tomorrow Britain is not part of the single market, the City cannot keep this European passport,” Villeroy, who is also governor of the French central bank, told France Inter radio.

Note: no mention here of divergence, merely leaving the single market is enough to be immediately banned. There was lots like that at the time, although it's getting harder to find pre-referendum pages via search engines now.

I work for a finance company that's moved its legal entity to Amsterdam

Nobody ever cared about legal entities. But note you've done that in anticipation of the UK being banned from European markets, despite having no specific announced plans to change financial law in ways that would justify such a ban.


Not sure if you actually follow Brexit but the situation now is completely different to the last 2 years.

Michael Gove this week formerly advised businesses that the UK is going down the hard Brexit path i.e. leaving the customs union, single market and with full regulatory divergence from the EU.

Under these circumstances it is impossible to run a business like N26 in the UK serving the EU.


> Under these circumstances it is impossible to run a business like N26 in the UK serving the EU.

you have this the wrong way round: they are a bank based in the EU that was passporting their German (EU) license into the UK

in the near future they will not be permitted to operate in the UK as the UK will no longer accept their EU banking license


That's not actually certain. The UK has no fundamental reason not to recognise EU banking licenses, although it may choose not to, or to recognise it but require additional compliance.

The UK may end up being 'forced' to not recognise such licenses in retaliation if the EU refuses to recognise British licenses. This is quite likely to happen because the EU has a track record of revoking financial licensing as part of trade wars with European countries. For instance they revoked acceptance of Switzerland's financial licenses as part of trying to pressure the Swiss government to cede significant powers to Brussels.


> That's not actually certain.

well, you can argue but it's a matter of UK law: http://www.legislation.gov.uk/uksi/2018/1149/regulation/2/ma...

the PRA has stated that EEA firms will require a license (with some temporary transition arrangements:

> Passporting rights will now cease at the end of the transition period. Once passporting rights cease, EEA firms currently operating through a passport in the UK under the existing European passport framework will require a Part 4A permission under the Financial Services and Markets Act (FSMA) to be able to continue carrying out regulated activities in the UK.

see https://www.bankofengland.co.uk/eu-withdrawal/temporary-perm...

> This is quite likely to happen because the EU has a track record of revoking financial licensing as part of trade wars with European countries. For instance they revoked acceptance of Switzerland's financial licenses as part of trying to pressure the Swiss government to cede significant powers to Brussels.

this is the worst example possible you could have given, the result of the loss of equivalence was that the Swiss gained business, while EU firms lost business


But they appear to be already operating in other non-EU settings. What would make the UK any different?


They operate in multiple countries that are not part of the EU.


I agree with your skepticism, but it's important to note that Brexit being pushed back implied that it might not happen, or that it might be very soft. It wasn't certain until a couple of months ago, when the vote effectively reaffirmed Brexit (or at the very least, that the Remain vote was so badly confused as to make it a fait accompli).

So there is almost certainly more going on here than Brexit, but there's also a chance that they were hoping that a soft/nonexistent Brexit would create a more favorable environment.


Really, as a pure outsider, I think anytime you redo a vote on something like this as many times as they did you increase the odds of success (leaving the EU) to 1. People will eventually switch their vote just to not have to vote any longer. It’s not necessarily a ringing nor deep endorsement of the change.


Really, there was just the one referendum, and it succeeded. It was confirmed twice later, once weakly, and a second time more strongly, via parliamentary elections that both gave power to the pro-Brexit party.

I don't believe that this constitutes a ringing endorsement of Brexit, and has more to do with the failure of the Remain-focused politicians to pull together properly. But Remain was given three tries to win, and it screwed up royally last time. I do not believe it is the right choice, but it is a fait accompli and they must deal with that.


Right. They repeated whatever election processes it took to get the outcome they wanted. Sauce it up with whatever you want it’s still manufacturing consent.


I'm not sure I understand what you're getting at here. Leave won the first try. If anybody could be accused of trying for do-overs, it's Remain. In the last snap elections, one party talked about a possible new referendum, and the other outright promised to throw out the first referendum. The latter party got destroyed, and the former was merely trounced, largely on the basis of being wishy-washy.

Even in the ill-considered first snap election, the pro-Brexit Tory party was still the dominant party, despite losing seats. They came roaring back after getting new leadership that was more confidently pro-Brexit.

I reiterate that I think that this is all an incredibly bad idea, and I believe it represents a failure of democracy. But Remain had multiple chances, and lost all of them, the last time resoundingly.


There were two referenda on EU membership in the UK in the last fifty years.


If you leave out the snap election(s).


Back then, the government were still talking about keeping the same benefits of membership after we leave.


They weren't. This was never an option for banking, it is heavily protected almost everywhere (even within the Single Market).

The issue is that the UK is a very hard market: infinite competition from startups that are well-capitalised, and huge mega-banks that invest heavily in technology and run at low cost. For example, Lloyds has £400bn in retail deposits and cost/income of ~50%...German/French banks run closer to ~75-80%. We have some laggards (RBS) but generally, it is very tough (as are the Nordics).


No, they were talking about doing that or leaving without a deal. That message didn't really change until the Chequers speech in July 2018, when no deal was essentially taken off the table.


Leaving without a deal under May was a meaningless threat. It was never going to happen and Parliament had the numbers to prevent that from logistically happening anyway.

The difference now is that Johnson has the numbers, the mandate and the will for a no-deal Brexit. And Gove has just warned businesses this is happening:

https://www.theguardian.com/politics/2020/feb/10/checks-on-e...


It's easy to say that with hindsight. At the time it wasn't so clear. Well, perhaps it was after the general election in '17. But then it was also clear that the political situation was very unstable and could change again at any moment, which it eventually did. It would have been pretty arrogant to presume that things were going to be business as usual.


There is no such thing as leaving without a deal.

No deal simply meant the UK would now have to negotiate hundreds and thousands of piecemeal deals instead of a single, simpler, quicker, omnibus starting deal based off existing rules.

That’s assuming the UK didn’t want famines because they couldn’t import food, didn’t want unnecessary deaths because it couldn’t get medicines, didn’t want Heathrow to shut down because planes wouldn’t be able to fly over Europe, didn’t want the bulk of their service exports which form the majority of their exports to disappear overnight etc.


In fairness, only last month did the exit date become completely certain. The UK has now “left”, on paper, and in practice it leaves at the end of this year. If they were waiting until there was no more uncertainty, this is the perfect time almost.


Not if they were thinking that their European license would still work post Brexit and will have an easy path to conversion of that license when needed. Seems like a reasonable assumption.


Most people didn’t think the UK would actually leave, including a large part of the people who voted to leave.


i suspect this is being used as an excuse to leave the UK.


In the sense that "Brexit means N26 needs to now file a lot of license paperwork that wasn't necessary under EU law," yes.


If they believed their business would make them money in the UK, filing paperwork wouldn't be an issue.


Exactly. And it may have made them money outside of a Brexit context, and the calculus has changed post-Brexit.

This was the failure mode people opposing Brexit anticipated.


Making money isn’t enough, there’s also opportunity cost for not just money but finite administrative attention. For the same burden they could be pursuing a much larger EU market.


I've never even heard of them....


Theres a nuget & terminal tab across the bottom bar which combined offer the same functionality as the nuget package manager console.


See my other reply. There's not 100% replication, there are some things you just plain can't do outside VS. =(


I've recently switched to Rider full time from VS, so far it's been a really good experience & has fixed the main issues that I was experiencing with VS.

I've found it quite problematic to reliably connect to private NuGet feeds though which is a bit of a pain.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: