Mac OS X for .NET developer?
I’ve been using Windows OS since I remember. I guess the first version I used was ’95. Why Windows? Well mostly because of simplicity. When I wanted to install some application, all I needed to do was to download that and run the .exe. No struggling with some weird “sudo” like commands that I didn’t understand. It just worked fine. Things changed when I went to university and discovered Debian which is a Linux distribution. My first moments with UNIX family wasn’t very enjoyable but after few days I understood why there are so many “penguin freaks”. I loved that. But at that time I started my professional career as a ASP.NET developer, so I had to give that up since .NET ran only on the Windows. Almost three years passed since I could think about OS switch again. That was because Microsoft presented a new version of the .NET called Core. I thought that was awesome! Nothing kept me to Windows! Well, sort of… there was still Visual Studio. I heard about the project called OmniSharp but I wasn’t sure if it would work in a way I would expect. Couple days ago I had an opportunity to buy a MacBook Pro for the very good price (thanks, dad 🙂 ) so I had to make a decision. Switch to UNIX which might be a risk or stay with good old Windows for next few years. I guess you know what I did…
Finally switched from my Windows 10 to Mac OS X. Hope I won’t regret that :’)
— Dariusz Pawlukiewicz (@d_pawlukiewicz) November 18, 2016
Setting up frontend stuff
I started the whole setup with frontend stuff (I’m a full stack). The first thing I had to choose was a code editor. There are many of them:
- Sublime Text
- Visual Studio Code
Okay, I lied to you. There was no choice here, I got the Visual Studio Code because I love that editor 🙂 It’s really intuitive and works like a charm. I used to work with Atom but it crashed almost every day so I just could stand that anymore. Oh, and I had an episode with the Vim. No comment here, I couldn’t even exit to the terminal. I’m just too dumb for that. Having a VSC I needed to got couple extensions to make my work easier. Here’re these that I use:
There are two extensions for the Aurelia framework (if you’ve never heard about that go read my another article 🙂 ), mentioned OmniSharp, syntax highlighting for the docker files and extension for the custom icons. If you’re looking for more awesome extensions, I recommend reading this article posted by Scott Hanselman. After setting up VSC, I needed to take care about the console! On Windows, I used ConEnemu (which offers a lot of functionalities such as tabs and search box) but Mac OS X has its great, stock terminal with UNIX commands, so I could move forward. I had to install basic stuff needed for the web developing. Here’s the list:
- npm (requires node.js)
So far so good I thought. I needed to finally face with .NET Core on the UNIX. My first move was just installing it. I was afraid to make that incorrectly, but surprisingly the steps on the official .NET Core side were very clear and easy to follow. I took me about 5 minutes to install that without any trouble. Nice! And finally, it had to face the choice I had thought many weeks before. What “tool” should I used for the coding in .NET Core? I decided to compare three options:
Currently comparing VS Code + OmniSharp, VS for Mac and Project Rider (by JetBrains). Each of them offers something interesting… Though one. — Dariusz Pawlukiewicz (@d_pawlukiewicz) November 19, 2016
I’m not going to judge which one is the best since I’ve been using them for a very short time (but I’ll do my best to blog post about my experience and feelings with each of them by the end of the year). Even though I share some observations with you (for this particular moment):
Visual Studio Code + OmniSharp is the fastest one and with custom icons, it’s easy to navigate inside the project. What really frustrates me is incomplete syntax highlighting. Come on guys, no highlight for List<T> or var inside a foreach loop? And it’s still code editor which means no templates and creating a new project from scratch.
Visual Studio for Mac feels completely different comparing to the Windows versions but for now it’s pretty good and stable IDE. I miss the dark theme and highlighting colors from the VS but it’s not that bad. Unfortunately, I noticed two problems with this IDE. Firstly, I could not open generated project (yo aspnet) by clicking on project.json since it treated it like a file, not a solution. Also, I noticed only two templates for .NET Core projects which are console application and empty web application.
Project Rider is great IDE. I mean it just seems like a perfect combo of the two above options + it comes with Resharper. UI is intuitive, dark theme and syntax highlighting look exactly like in the Visual Studio, R# improves my daily productivity and it’s pretty fast. It’s worthwhile mentioning that I hadn’t any trouble with opening generated ASP.NET Core project (by clicking at project.json file) and it offers a lot of .NET Core templates. The only disadvantage I can come up with is crushing which in my case happens about 5-6 times a day.
I this paragraph I just want to go through other stuff that’s going to help me in my daily work. First of all, I needed some Web debugger. My personal favorite is Fiddler by Telerik. Fortunately, it’s possible to run it on the Mac using Mono Framework. The instruction is clear, so you should not have any trouble with that. The bad news is that experience with Mac version is not as good as on Windows but hey, at least it exists! I also downloaded a Postman desktop app, which is handy when it comes to sending some data in the request body (which is not that easy using a fiddler). Below I listed other apps that I got (not related to programming itself):
- Google Chrome
- Firefox for Developers
- Facebook Messanger
So, we come to the question from the first tweet. Do I regret? For this moment not at all. I mean with Project Rider I feel like it’s going to be a kinda familiar experience like on the Windows (at least I hope so). Time will verify my decision, but I think that we finally came to the point when we (as .NET developers) can decide which OS suits us the most. Core gave us an opportunity but it does not force to think about Linux or OS X. Don’t get me wrong. I love Windows! I really do, but I needed some alternative. What are your experience with .NET Core on UNIX? Share your opinions in the comments section below! As always, I encourage you to follow me on Twitter and Facebook just to be up to date with my new posts 🙂