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

What are the biggest benefits of using NET Core in comparison with Go, Ruby, Python?


Getting to use C# on a fast runtime, none of those things you mention allow me C#.


F# with all the .NET libraries.


Speed of course, and a huge standard library that works with multiple languages, Ruby and Python are dog slow compared to C#; can't speak to Go, haven't used it.


Core doesn't actually have a huge standard library. That's kinda the big problem with it. It's basically, at the moment, a really shit version of .Net 4.61.

For example in the 1.0 release the ORM is a complete joke at the moment. It can't do fairly basic stuff, like worse than ORMs from 10 years ago.


EntityFramework? In my 5 or 6 years with .NET I've had more problems with EntityFramework than not. Most of the time it's overkill or just not optimized for the queries I could write myself. I'm a huge fan of Dapper.Net. Looks like there's initial support for core as well.


No offence, but you're probably using it wrong.

These days, it's really very, very good. And it's been amazing since EF4, for about 5 years now. Trying to push it too far is a mistake and can cause performance problems, but, as with all ORMs, sometimes you need to drop down to raw queries.


Missed this comment but I don't take offense to it.

In all honesty, if you have a well designed system it's pretty good at what it does. I've used it without any issues on small personal projects and it was great at what it did. Although getting it to work with Postgres is needlessly "complicated". Not complicated per-say but not as easy as it just working with SQL Server.

What happens when you take a legacy system and move over to .Net and try to use EF on a poorly architectured data model? Chaos.

"Oh you want to search for orders that have these attributes that are stored in a bit-encoded string field that is only joined from 3 different tables?"


I neither expect or would use an ORM that was considered part of the standard library, it's going to be far too crappy trying to please everyone. ORM's are something you get aftermarket, from core I just want raw database drivers, from those the much better open source libs can build real ORM's that are tailored to difference audiences. The core should be libraries for dealing with the OS and network, frameworks are things I'll look for open source or build to suite me, not something I want from core.


I second this. Contacted chris@tophat.com and olivia@tophat.com and received no response.


Same boat. Sent an email to Olivia last month with no reply.


I also did not receive a reply when emailing Olivia last month.


The great thing about Xamarin Forms is you can use Dependency Injection [1] to access the Native features. I started with Xamarin Forms without any pre-knowledge of iOS or Android development. I use Xamarin Forms on a daily basis and share 99% of my code.

[1] https://developer.xamarin.com/guides/xamarin-forms/dependenc...


Is it on GitHub? I've been working with C# for a decade and will be getting into Xamarin now that it won't cost me thousands of dollars to do so. It would be great to have some Open Source examples to look at!


There are some good tutorials about Xamarin Forms, e.g. https://developer.xamarin.com/guides/xamarin-forms/getting-s....

Xamarin Forms Labs is a great open source project for controls and services using Xamarin Forms: https://github.com/XLabs/Xamarin-Forms-Labs


That is awesome Nat! Do you have any plan open sourcing Xamarin Studio as well?


Xamarin Studio is already, essentially, open source. It's called "MonoDevelop". Xamarin Studio is just a "skin" of MonoDevelop, because it just bundles 4 plugins that MD doesn't have: Xamarin.Android, Xamarin.iOS, Xamarin.Mac, and Xamarin-Branding. If the SDKs are going to be opensourced, for sure this distinction between XamarinStudio and MonoDevelop will not hold anymore?


Those plugins won't be open sourced. We're releasing the Xamarin runtime and all the commandline tools you need to build apps, but we're going to keep some of the IDE stuff proprietary.


:(

I was really hoping I would be able to develop on Linux. Visual Studio is nice (my favorite IDE actually), but I'm willing to put up with lesser IDEs if it means I don't have to use Windows.


>but I'm willing to put up with lesser IDEs if it means I don't have to use Windows.

Check out the recent news - Microsoft is making Windows a lot more attractive to developers even those with Linux background.

I spent the last ~12 months doing C++ with Clang on Linux and porting that to windows was a lot less painful than I though it would be, even Visual C++ required maybe a day of work to get working - the biggest issue being Nuget and their Angle Packages are only available for sandboxed Windows apps - it took two hours to configure projects and fix stuff that made VC++ choke. This was a template using C++14 project btw. so I'm impressed.

And they now support using Clang as a front-end to VS code generator backend - no MinGW or Cygwin. Sadly the compiler crashed when I tried that and I still haven't gotten around to sending them the bug with repro - need to try with Update 2 first.

And on top of all this they just announced they will implement linux kernel interfaces in windows and add support for running ELF binaries - and they will port apt-get with cannonical - basically you can get Ubuntu packages to run natively on windows kernel - without recompiling or nothing.

Huge props to Microsoft !


Tacking on some of the good stuff from Linux doesn't make Windows any less of a horrible option for many, if not most, of us.

I am impressed by what Microsoft is doing, and I'm willing to use Azure and other MS tech at some point, but only if I can get away with not having to deal with Windows for anything but a small build slave server for Windows Phone and Windows builds, just like I currently do with a Mac Mini.


>Tacking on some of the good stuff from Linux doesn't make Windows any less of a horrible option for many, if not most, of us.

Actually that's exactly what it does. What were your pain points?

(Besides "it's proprietary").


st3v3r mentioned two valid points.

On top of that I will add "It's propietary". Because it is. It's a security risk, it means I have to buy it and I have to manage every license I buy. No need for the Stallman pasta here to express clear reasons why it is unacceptable for me and many others.

Other reasons:

- Bloated by default. Comes with many things I do not need, and some I outright despise.

- Resource hungry. It's gotten much, much better with the last few versions, but I can take my Linux set-up to a lowly Chromebook, a discardable netbook or a cheap SoC like the RPi and barely notice a difference for most of what I do. I cannot do that with Windows.

- Not POSIX. I could switch to OS X or BSD tomorrow and barely notice the difference for most of my computing. Not on Windows.

- Carries a particular culture of everything having to be done on the GUI. And what a bad GUI it is.

- Security wise it's terrible, you can't simply brush off the threat of malware as I do on Linux.

- No first class package management. The App Store is a joke.

- It is a completely different system from what I run or would run on my servers anyway.

I could go on but I think it's enough to justify why Windows is not a good option for me (me, as in, me, not someone who's really happy now with Windows).


> And what a bad GUI it is.

IMHO every GUI (Win, Mac, Gnome, KDE etc.) is bad compared to any decent CLI, if you are trying to complete non-trivial tasks. The real problem is, on Windows you don't have a simple way to switch from doing things in the GUI to doing them on command line. You can, but it's sort of second-class citizen.

> you can't simply brush off the threat of malware as I do on Linux

Uhm, as a former Linux-only user (for about 2 years, circa 2011-2012) I would advise you not to brush it off completely.


Did you have a lot of bad experiences with malware on Linux?


No but TBH I didn't with Windows 8/8.1/10 either. In either case, you should be aware that malware exists for any platform (Linux too) and always apply the right level of caution.


To be honest my last malware experience on Windows date from years ago, when I was still naive and clicking on popups in a browser. Haven't seen a malware in a long time, if we don't count as malware the nuisances like the Java installer, Java updater, flash updater, iTunes updater, Adobe updater, all of which either install malware or open popups regularly to nag me to update or install things.


"It's proprietary" is a fully legitimate pain point. It means that I can never fully trust that part of my toolbox, what if it has a bug that gets neglected by the developer or it gets abandoned. The open source ideology is not attractive just because of its ethics.


But open source has its own history of major security flaws, particularly the last two years.

I would be curious to know what % of security flaws are discovered because exploited vs as a result of a code review.


Why is this being discussed like Ubuntu is the only Linux edition available? You seriously think CentOS, Arch or *BSD users will jump ship because of this?


No, but people wanting a stable no-fuss desktop with everything (from laptop sleep to device drivers) working, access to proprietary software and all kinds of 3rd party drivers available, will.

I use OS X mostly because of the UNIX underpinnings. I could not care less for Linux of the desktop, despite having used it since 1997 (and having a history with UNIX going back to Sun OS and HP-UX).

If Windows gets good enough with its basic unix userland support, and has a decent shell, I'll be very tempted to try it.

After all, any actual deployment etc, I do on Linux servers and VMs (vagrant etc) -- no reason to pollute one's base desktop system with development libs and setups.


> No, but people wanting a stable no-fuss desktop with everything (from laptop sleep to device drivers) working, access to proprietary software and all kinds of 3rd party drivers available, will.

Have you used a recent Linux distro? They are mainly stable and no fuss, and they don't require you to run proprietary software.


>and they don't require you to run proprietary software.

Only I specifically asked the inverse: to be able to run all the proprietary software I want.

Besides, that's always the case -- "a recent Linux distro" is always supposed to fix all of these problems, I've been hearing that (and trying in vain) ever since 2000 or so. And I use Linux on the server side just fine (and actually have several desktop Linux installations too, since 1997 and RedHat 5.3 IIRC, just not as my basic everyday work/fun desktop, because they're dreadful still).


I must say you are quite delusional to argue that Linux desktop is still in the same state as it was in 1997.


I must say it is quite delusional to argue that I wrote that the "Linux desktop is still in the same state as it was in 1997".

I never wrote that, and it is indeed much improved.

What I wrote is another thing: that the total parity with proprietary desktop OSes (Windows, OS X) "just works-iness" is always "in another distro" or "a release away".

And there's another problem: proprietary desktop OSs haven't stood still in their 1997 state either. They are a moving target.


Perhaps not, but that was the core of your argument, wasnt it? That Linux is still in the sorry state it was back then, in the way that still, in 2016 Linux is behind the proprietary OSes?

Sorry to break it to you, but this is simply false.

In fact Linux offers far superior hardware support to OS X or Windows. Also the actual "desktop software" provided on Linux is far superior (WMs and such).

But don't let the facts hit you on your way out.


Tracking, ads on the desktop...


It's proprietary. And Microsoft spies on its users. So there's that. I don't need any more justification.


>It's proprietary.

Which doesn't mean much -- or even it's a plus for some.

>And Microsoft spies on its users.

Well, we're spied on any network use we do anyway.


>>It's proprietary.

>Which doesn't mean much -- or even it's a plus for some.

It does mean a lot, you just don't accept that it does. And yes, some people are masochists. That's their decision, but we should reward people who force people to be masochists.

>>And Microsoft spies on its users.

>Well, we're spied on any network use we do anyway.

Privacy isn't binary. Just because it's possible to penetrate walls with xrays doesn't suddenly mean that you don't close the curtains in your house when you're naked.


I really can not understand how anyone would trust Windows or anything else from M$ after what they have pulled off so far.

Go with Linux if you want to build on something that is not built on sand, greed and damned lies.


If Microsoft develops cross-platform IDE's and office tools I would happily use their software on Linux. Windows is a bit bloated for me, I've reinstalled Windows 10 and 8 a couple of times and upon fresh install it winds up using half of my available RAM, while on Linux running the same amount of software I use less than 1 GB of ram. I don't think I'll ever go back unless they made it less resource hungry. "Windows Lite" would be cool to see if anything.


How much of that "half your RAM" was actually taken up by windows caching? Windows caches pretty heavily these days, so will show a lot of memory used but will give that RAM up when needed. It also will swap out a lot of stuff that's unneeded, so bloat in my experience has been pretty minimal, and that's with some rather hungry programs running.


I don't run a PC with low ram nowdays and I've had the exact opposite problem - about 6 months ago after a random Fedora update I started noticing my system would start swapping after using it for a long time (6+ hours). I tried to diagnose memory usage but every tool I used didn't sum up used memory to the memory used by programs - and it wasn't reserved vs used or whatever - the system was visibly swapping on a machine with 8 GB ram and ~4GB memory used by running processes. I would just restart the machine after 8 hours but I've never had such issues with Windows (at least past XP, Win9x was basically restart after everything).


I have also found that desktop Linux has stopped being a reasonable solution to "bloat". I don't concern myself too much with bloat, as my machines are all pretty big (8GB laptop, 16GB desktop), but even with 8GB I can occasional get myself into a swapping situation. Firefox (I use the multiprocess developer version) and Thunderbird are memory hogs with an impressive appetite, so if I also start up a large-ish editor (like Atom or VSCode) and Inkscape or a video editor, I can end up with real memory problems.

I haven't actually dug in to see where all the memory is going precisely, but my email/web workflow (Firefox+Thunderbird) has been the same for about ten years now, so it's interesting that it continues to bump up against memory limits no matter how much memory I have. But, Windows on the same system has similar memory issues when working on the same tasks; so it is not immune, but I don't think it is notably worse than Linux.


Turn off swap and clear your caches to see your true ram usage:

    swapoff -a -v
    echo 3 > /proc/sys/vm/drop_caches
I recommend `htop` to check out your memory usage after that.

You can also tweak the vm.swapiness variable to change Linux's behavior there. I personally just turn swap off on all my systems as soon as I set them up.


What happens if you turn off swap while using more virtual memory than you have RAM?


I imagine the OOM killer would take out a process. In that case, I would suggest paying for some more ram before turning off swap. Swap is death for performance! :)


But necessary.


I've had issues with my Nvidia graphics card that's about it. Thankfully my laptop has Intel Iris so I just switch to that when it happens.


I desperately hope you know how the Windows memory manager works before you say it "uses half your RAM". Windows is very aggressive about caching and (especially) precaching-- if you're not using a memory readout tool that's been updated since Windows Vista changed things around, it's probably misleading you into thinking Windows' precache is actual "in-use" memory. It's not.

(If you're looking at Microsoft's Task Manager, make sure you're seeing the amount of memory in "available", that's what counts. "Free" is kind of a useless measure in Vista+.)


Aggregation does not necessarily imply improvement.

Architecturally, it's quite worse than just putting lipstick on a pig - they're bolting a racehorse on top of their pig.

If you look at things just right and ignore the pig, you can pretend you're galloping around on an able horse. but, inevitably, both you and the horse will have to deal with the fact that there's a pig bolted to the undercarriage.

Linux doesn't need to be put inside another OS to be any more relevant or useful.

I think, if it could talk, Linux would tell Windows: "Sit down - I got this."


But now you can Ubuntu inside of Windows... Natively!


Last I checked you were able to install the Xamarin plugins into MonoDevelop, maybe I'm wrong.


Why is some of the IDE code being kept proprietary, and what, if any, impact might this have on the code that was released?


However, the Roslyn language services are open source, which is what currently powers the C#/VB IDE services in Visual Studio and Omnisharp (optionally).


Xamarin Studio is based on the open source MonoDevelop project already: http://www.monodevelop.com/.


The download page there has me downloading Xamarin Studio. How do I get just MonoDevelop?


You can't because nobody from the community has stepped up to create Windows&Mac binaries of a plain MonoDevelop build.


Can I compile it myself? I don't know why this isn't clear, but the pages don't really say any of this.


Yes

Instructions are included in the MonoDevelop repository, and they could not be simpler:

https://github.com/mono/monodevelop/blob/master/README.md


You can check out this FB group https://www.facebook.com/groups/launchpad/. It's the most well known discussion group for startups in Viet Nam. Around 70% of the posts include English translation.


The fact is most startups will fail[1]. If I fail and try again and again, statistically I will probably fail eventually. Therefore, most of us will end up working for other companies. Statistically again, there are a lot more employees in well established companies than startups so most of us will likely end up working for well established/large organizations.

So my question is: does the experience, the knowledge I learn from startups helps me on my probably eventual job in an established company? Should I just go work for a large company right away so I can be good at what I will end up doing? It seems to be opposite to what PG said[2].

[1] http://online.wsj.com/news/articles/SB1000087239639044372020...

[2] http://www.paulgraham.com/boss.html


Strictly speaking, a corporate recruitment process will peg and interview you based on your experience level. 3 years at a failed startup are likely to be equivalent to 3 years at a large established company, you'll go through the same interview process, be asked the same questions, and presented with the same offer.

From a rational standpoint, having even a mild level of success that ends up in an acqui-hire instead of an outright failure will yield you a better offer from a large corp than an applicant who just sent his resume in.

Given two choices - equivalent compensation at failure, and higher compensation at anything but failure, you should do a startup.

That does not take into account stress levels and opportunity cost of your spare time.


I have to disagree here. Folks with failed startups are as diverse as the startups they built (or just as often, struggled to build).

The simple reason why is because while a startup is the best place to learn how to start a startup, it isn't always the best place to learn how to be an engineer.

At least, not the sort of robust engineering (hopefully) done at established companies, where you have to understand existing best practices like code style, continuous deployment and testing, and non-technical conventions like proper code reviews and pager schedules. That sort of rigor isn't found in all startups, but some amount of it is a necessity when your primary job is shipping code, lots of it, and not just searching for product market fit.

I think it is far more likely that you'll get a strong offer for a large corp coming out of another large corp - where you'll speak the language and have found at least someone talented to mentor you - than as a typical acqui-hire or founder of an also-ran startup. In fact, many acqui-hire employees themselves have to go through interviews at the acquiring company, finding themselves on the bottom of the pecking order at their new companies - if they even have jobs at all.

That's not to say you shouldn't do a startup...just, don't do it expecting your Plan B to be a cushy job at Facebook. :)


I left my corporate job which I have been working in for 3 years to focus on my startup (www.voise.co). So I have been on both sides & I need to say It is a choice you make. Some people it fits them to be in a corporate job while others would excel with something they do on their own. Obviously not everyone will succeed but if you are still at a young age and willing to take the risk, try a different path that might be a better fit for you, I do not see the problem. Life goes own and you still can prove yourself. Also the reasons for failure of a startup would make a difference. Sometimes it is just out of your hands. I have gained tremendous experience with my startup. As I have learned to be multi skilled, which is something a lot of multinational jobs look for these days. I believe it always comes down to you as a person. How you represent and how confident you are with what you did, doing and will do in the future.


That is true, I almost put a caveat there that small startups (or schools) teach programming, while large companies teach software engineering, but nowadays most large technology companies have onboarding/mentoring process designed around that, as a lot of the processes tend to be company-specific.

> many acqui-hire employees themselves have to go through interviews at the acquiring company, finding themselves on the bottom of the pecking order at their new companies

Employees yes, from OP's wording I understood the question was in regards to the founder. An acqui-hirer is likely to sweeten the offer for the founding team, otherwise why even pursue an acqui-hire.


With the word startup I actually mean founders and early employees. Sorry for the unclear wording and thank you for your opinion.


some people have a much higher probability of winning


What should I do if I think I am just a mediocre engineer? Just working for well established companies?


I'd apply the same principles if it's a start-up or an established company: The nature of the job, work environment, wages, benefits, etc.

What I would take away from the lecture is not to weed yourself out of the market because you perceive yourself to be mediocre. Instead, I'd consider what common threads seem to run among companies that perceive themselves to be start-ups and decide if you'd enjoy working in that kind of environment. Note in particular the comment that start-up founders tend to be terrible managers.

Also, "startup" is a buzzword, and any small company could call itself one. This is another reason to carefully consider the particulars of each situation.


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

Search: