I've been working professionally with Xamarin for the past month, honestly I'm shocked how half-baked Xamarin Studio is, both in terms of stability and features. (Since we develop for iOS, we use Macs and VS is not an option).
Of course now that Microsoft has stepped in all the way, things may turn around, but my feeling is that the best window of opportunity for JetBrains would be to provide compelling Xamarin tooling on non-Windows platforms. That's the weak spot of their mammoth competitor as far as C# goes
https://forums.xamarin.com/discussion/62250/vote-for-project...
https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FRIDER-...
We don't do it that frequently, maybe two to four times a year. And, when we do, you can be the problem was well researched and we simply ran into a wall. Between the time it takes for them to get back to you and some of the answers that come back, well, it's less than ideal. This is harsh, but sometimes I think "you might as well have asked me to re-install Windows to fix the problem".
What ends-up happening is that we will generally google the heck out of the problem, post it on SO and experiment and sometimes figure it out. In other cases you just give up and live with the issues.
On the developer side MS has far better support and the community of developers using their tools is much larger, which means you have a higher probability of finding one or more answers to your problem.
Still. Love JetBrains tools. I just wish they'd take support seriously.
Here's the instructions btw. https://developer.xamarin.com/guides/ios/getting_started/ins...
VS + MacVM = how iOS dev should be ;)
The VM? A coworker had no problems installing OS X in VMWare for his pet project, less than a day.
Visual Studio? This is Microsoft that we're talking about. I haven't done this or seen anyone do it, but I've read articles and it seems as though it has the usual straightforward qualities.
The three major factors I would rank the IDEA over VS.
1. Extensibility, its more likely to support X language
2. Crossplatform, it actually runs on my platform
3. Its UI doesn't change drastically every few years. This is such an underrated thing IMO. Neither VS or IDEA are pretty IDEs, they both are actually butt ugly. They don't need to be. But VS goes thru so many visual changes and reorganizations, its the same reason why I don't use Office. I'm not sure many ppl view this as a bad thing however. I often find MS fans loving to brag about how "modern" their software always looks, even if it still looks just as shitty as the old one lol.
They have apparently built a lot of the "big" VS in C#, and they have apparently architected VS Code with a C# runtime on top of Electron to make it easier to port big pieces of VS into VS Code.
Today they announced a preview of their upcoming C/C++ extension (https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extens...) and they say their Python tools for VS are coming to VS Code this year.
And VS Code "runs on my platform(s)".
The more developers they convert to VS Code, which is a lot deeper than just an editor for C# and Typescript, the more influence they will have on development patterns on all platforms. This seems like a bigger push than just "make Windows the best platform for developing for all platforms". They're attempting to get devs who continue working on Mac and Linux to switch to their dev tools.
In addition, you can see a reference counter above your classes that offer a quick jump to where your class is being referenced from. It is majorly helpful.
The down side is when Visual Studio breaks. Sometimes, it caches files, causing strange functionality. There is this thing called MsBuild that can break your package management. It defaults to an auto-merge, which is the worst possible thing to do to your team mates.
I don't find VS ugly at all, but I guess beauty is in the eye of the beholder.
(How much would i pay for a carefully maintained subscription of Office 97? Well, not that much, but that is more than i paid for office software since)
The ribbon makes it seem easy to surface features that would otherwise be hidden deep in menus and sub menus.
Of course, UI design is difficult just as doing any work for consumption by others is difficult especially when there is no complete spec. I am not a UI designer but even I can make a UI that I will think is good enough. However, making a UI for others is tough.
Maybe it is just my luck but project managers or owners have always been hesitant to support UI changes. Maybe I've just been lucky to have good managers but I can't recall a single time I've had to make a UI change that wasn't driven by what I thought was a valid business need.
Also maybe why I'm not employed now :P
I remember that C# version had totally different project settings window as if created by someone else than the rest of VS. But I haven't used it for some time so maybe it is already fixed.
I can remember several instances where developers were nicely screwed by policy and strategy changes, products languages and tools got canceled.
I find that the best strategy for someone that doesn't want to depend on Microsoft's moods is to not use their tools, or at least stick to the ones that have a long history and won't be messed up by strategy changes - that doesn't include C# or .NET
You're welcome to other reasons to avoid C# and .NET, but worrying about their longevity doesn't look like a rational reason.
C# and .NET will endure in one form or another, but all these transformations waste developers' time and make their skills obsolete. No thanks, I'd rather learn something and use it more than a couple of years without having it change under me for no good reason.
My point was that it doesn't matter if c# or .net continue to exist or not, all it matters for me is whether one can count on one's skills being still valuable. My Visual C++, WinAPI (bit WinRT is replacing it) skills are still fine, my C# & .net framework that I learned back in 2006 are nearly useless, because a lot of stuff changed.
Why do companies expect developers to always gobble up whatever they throw over the wall and say "thank you sir, may I have more sir?", as if it's our duty to relearn how to do X for the Nth time, this time with bells and whistles?
More importantly, why do devs like investing in such ephemeral knowledge?
> "as if it's our duty to relearn how to do X for the Nth time, this time with bells and whistles?"
There are a few areas of computing that are fairly stable, if stability of knowledge is your priority, you should seek one of those out.
But in many other areas of computing, our discipline is young and rapidly evolving. Some of that evolution is being driven by a corporate need to sell the next version. But plenty is driven by the rapid evolution in languages and paradigms. And why is that? Because we all know that programming can still be (much) easier, more reliable, more predictable, cheaper, and more fun. This is why many devs, myself included, like investing in "ephemeral" knowledge.
Honestly, I understand that the decay of hard-earned skills is distressing for many people. Not all fields have this characteristic. But in our field, it just comes with the territory.
I don't mind at all when a language is evolving, that's indeed to be expected and manageable, because one can leverage existing knowledge and augment it. But a lot of change is either driven by corporate interests as you mentioned or by fashion and is disruptive, as in replace X with Y. And it's not clear how Y is more robust or faster, usually it's a mixed bag of pluses and minuses.
And Windows Forms still works on the new platforms ( except mobile), so it's not like it broke functionality.
VB 6 Applications still work and that IS a long time ago...
https://channel9.msdn.com/coding4fun/blog/Visual-Studio-2013...
Q: Who can use Visual Studio Community? A: Here’s how individual developers can use Visual Studio Community:
Any individual developer can use Visual Studio Community to create their own free or paid apps.
Here’s how Visual Studio Community can be used in organizations:
An unlimited number of users within an organization can use Visual Studio Community for the following scenarios: in a classroom learning environment, for academic research, or for contributing to open source projects.
For all other usage scenarios: In non-enterprise organizations, up to 5 users can use Visual Studio Community. In enterprise organizations (meaning those with >250 PCs or > $1MM in annual revenue), no use is permitted beyond the open source, academic research, and classroom learning environment scenarios described above.
The value of a developer's machine is pretty much a rounding error to Microsoft. The value of a developer's output (production and DR instances of server products/Azure services) is immense to Microsoft.
They already have the desktop market and it is pennies compared to the income they make from enterprise clients.
I bet if anyone showed up with a huge bag of cash, they would sell.
Btw. even Office uses non-native UI controls since the very beginning of Office programs around 1990. You can see this if you open Word 6 in Win95 (or later), the controls and even child-window theme looks like Win3.1. Office 97 had a very visible non-standard window theme with the application title in italic font (no other Win95 app looks like that). The menu bar of Office 1997 and later looks non-standard as well. Office 2007 and later draw a custom drawn ribbon area over the Win32 menu. With COM you can integrate a Word/Excel/etc document area in your sample Win32 application and you can watch how the traditional nativ menu bar is overdrawn by a ribbon area if you click inside the document area.
(What is it with MS changing the UI with every OS/Office release? Worse than even OS X, and barely better than the plethora of Linux look-and-feels. And yes, I did object to flat tool bar buttons back in the day, too.)
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.
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 !
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.
Actually that's exactly what it does. What were your pain points?
(Besides "it's proprietary").
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).
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.
I would be curious to know what % of security flaws are discovered because exploited vs as a result of a code review.
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.
Have you used a recent Linux distro? They are mainly stable and no fuss, 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 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.
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.
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.
>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.
Go with Linux if you want to build on something that is not built on sand, greed and damned lies.
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.
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.
(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+.)
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."
Instructions are included in the MonoDevelop repository, and they could not be simpler: