Hacker News new | ask | show | jobs
by math 2735 days ago
In Blazor, what is sent to the browser is a .NET runtime, then the .net assemblies (which are .NET CIL, not wasm) which the runtime executes. They seem to have this working well, but it's less efficient than, for example, Rust which has no runtime and compiles directly to wasm. C# is very much my goto language, but my eye is currently on Rust in this space because the scenarios where I feel the need for something other than Javascript in the browser are all performance related - i.e. I find React / JSX great for working with the DOM.
3 comments

I'm wondering that if WebAssembly could "cache" these runtimes, so you only have to download once?

I can see Blazor being really useful for back office systems where people are in them for hours, not so much customer facing stuff which people are dropping in and out of.

I think anything that can challenge JS (which tbh is looking increasingly more like C# with every new release) on the front end side can only be a good thing though.

The idea of caching WebAssembly is touched upon in this article: https://hacks.mozilla.org/2018/10/webassemblys-post-mvp-futu... (see "Streaming compilation" and "Implicit HTTP caching")

Caching is also a helpful idea beyond the size of the initial download. Future compilers (cranelift), will have time to make multiple optimization passes on the instructions and save them for later.

I am a huge fan of C# and it’s bern my go to language for over a decade, but at this point in my career, I am not tying my horse to anything MS. MS just doesn’t seem to be gaining the mindshare with green field initiatives or smaller companies that are focused on all things JavaScript. On the other end, large enterprises are still more tied to Java than C#. Yes that makes me sad.

The only thing that Microsoft is doing that’s getting any real traction is Azure. Don’t get me wrong, I’m not abandoning C# and there is no way that I am going Java, but I am focusing more on Jsvascript and Node.

.Net Developer here and I've never been unable to find good paying jobs or expand my career in interesting directions.

JavaScript is a good goal... but not because there's a lack of C# viability.

I am too and I have also being able to find good paying jobs.

But back in 2008 there were also good paying jobs for good C and C++ developers. But when I looked at the direction that the local industry was going, I could see that the age of the bit twiddler was dying locally and there were more jobs for “enterprise developers”.

I had a choice between making $20K more as a senior C++ developer or $7K more as a mid level C# developer. I took the latter even though I had 12 years (staying at one company way too long) of development experience.

So that’s what I concentrated on for the next 9 years - the Microsoft stack.

Late last year, I was the dev lead for a decent size company with a small IT department. I was looking to change jobs and once again I saw the writing on the wall. There were a few jobs willing to pay what I wanted writing C# but lots of companies wanted Node/React/React Native.

This time, once again I was offered $15K more as an architect leading a team of 10+ developers writing apps in C# on Windows servers, running Sql server and I had another job offer as a “senior developer” at a smaller company making only $5K more but would get a chance to not only fill in some technical gaps on my end - front end coding with React and back end with Node. I would also get to lead initiatives to make the company more “cloud native” and to restructure the architecture for high availability, scalability, etc. and help build a dev ops culture. But with no official reports (that’s a good thing).

Looking ahead three years, I knew what the better choice would be for my career. Sure there is money now for C# developers but that’s not where the market is going.

But honestly, the salaries for developers and even architects who want to stay mostly hands on and don’t want to go into management outside of Silicon Valley/NYC is stagnating. I realized from my last job that the real money is working for consulting companies with titles like “Implementation architects” and “Digital transformation consultants” who help companies move to the “fourth level of the cloud maturity model”. Yes typing that left a bad taste in my mouth.

So that’s really the game plan - but to speak to all levels of the organization, I need a “more modern tech stack” as one of the recruiters told me.

> Looking ahead three years, I knew what the better choice would be for my career. Sure there is money now for C# developers but that’s not where the market is going.

My decision is real simple... Microsoft has one thing most of those stacks don't: Longevity.

You can knock C# as being "old" and not as "shiny" as Node/React/React Native/Angular/etc... but C# has been stable for a long time and it isn't going anywhere.

I can't say the same for JavaScript.

> Yes typing that left a bad taste

I don't know if that would change with C#, C++ or JavaScript - you are bound to hit a ceiling as a "developer" unless you move into engineering/architecture/management/bullshit (but I repeat myself)

> need a more modern tech stack

I'm learning JavaScript alongside C# (but I'm definitely a .Net Developer) for that reason.

I personally have less faith that those techs will be as predominant in 20 years though... I think it's a crapshoot all around - things are different from 5 years ago and C# and JavaScript will be COBOL in 20 years - alive but not really...

We'll be working in mines for our robot overlords who can program themselves at that point.

But seriously... I have more faith that Microsoft will be consistent and supportive of technology than Google or Apple - Google has dropped more technology than anyone and Apple is still a 1 trick pony. Facebook is pissing people off and companies like Amazon are like Blackberry and Palm - even the giants die eventually.

Not sure if that makes sense... but rambling aside, you can pick a channel - C#, Java, JavaScript, etc - and have a successful career as long as you are able to learn the bigger picture and move if/when the writing is on the wall.

My decision is real simple... Microsoft has one thing most of those stacks don't: Longevity. You can knock C# as being "old" and not as "shiny" as Node/React/ReactNative/Angular/etc... but C# has been stable for a long time and it isn't going anywhere.

JavaScript has been around longer than C#.

But if you want to compare how long framework of the week has been around, Microsoft frameworks have been anything but stable - Linq2Sql, Webforms, WCF, Windows Forms have all but been abandoned and the .Net Core versions of WebApi, MVC, and EF are mostly different from their older versions.

But seriously... I have more faith that Microsoft will be consistent and supportive of technology than Google or Apple

There is this story of VB6 and Classic ASP...

And all of the abandoned mobile efforts. MS abandoned Windows CE/Windows Mobile in 2008 when there were still millions of devices running specialized vertical market apps using it.

I don't know if that would change with C#, C++ or JavaScript - you are bound to hit a ceiling as a "developer" unless you move into engineering/architecture/management/bullshit (but I repeat myself)

Well, 10 years later, I can’t find any C/C+* jobs in my local market making $60K+ more what I was making back then. Honestly there aren’t too many C# jobs that are making 60K+ what I was making back then in my local market. I was able to negotiate a slightly higher than median salary because of my architect/Devops/AWS skills. There were plenty of jobs for the JS/Node/React/Docker skillset making what I make now - but I wasn’t qualified for them.

The ceiling for .Net developers is lower than that of the Javascript $cool_kids_stack.

But yes, it’s all about knowing where to jump on and off the hype cycle.

The larger companies where C# is more popular aren’t as willing to throw money at developers and honestly they don’t have to. C# developers are a dime a dozen.

I think it wouldn’t even need to be a wasm task to cache these things. If the runtime is downloaded as a separate module, the browsers http cache should already do the job.

What wasm might be able to do in addition is having a carved version of loaded runtime available in order to reduce startup times.

They are working on making .NET compile to wasm. There is still the GC, but it’sess overhead. Presumably this could be used for Blazor or something like it.

https://github.com/dotnet/corert/blob/master/Documentation/h...

The .NET and web development community both seem to have an obsession with adding abstractions, so it is not surprising to see such layering. In general it seems the vast majority of the web apps I've been forced to use are either slow, huge, or both, and I'm not convinced that should be the way it is.

Edit: wow, downvotes. Not that I really care, but it shows the "stick the head in the sand and don't care about bloat, ignore everyone complaining" mentality that pervades the community...

I didn’t downvote you, but I believe the response is that this isn’t so much the framework’s fault as the developer’s. There’s no reason that you must have a slow, huge web app regardless of what you use.

That said, I do see current frontend technology being replaced by something in a few years, probably wasm.

You're considering your personal experience to be a fact of the entire .NET and webdev community, so is it surprising that people disagree?

I've used and built many fast and lightweight webapps using .NET and other frameworks. Like most things, the tech has little to do with it.

> downvotes. ... ignore everyone complaining" mentality

Echo chambers downvote anyone who points out the echo chamber behavior.