Linux Desktop for .NET Developers
So this topic has been one that I have been going back and forth with my friend DaShaun. He is a traditional Java Developer and I come from the .NET side. Sure Windows is great, better now than it’s ever been. The tooling for cloud development has been inching closer and closer to what we have in Linux.
As we know from what Microsoft has discussed the future of .NET is going to be .NET Core. One of the huge values of using it is being able to use it cross platform. For companies this saves a lot of money in license cost. But for developers this opens up new opportunities.
So building upon the post Alex did here on building out a developer machine I wanted to put a different spin on it. I wrote before about building apps for or in the cloud. One focusing on building apps that run for a cloud, like Prometheus and others. The other development focuses on your actual business apps. Where Alex built a machine for the work he does for the cloud. His requirements are a bit heavier than what most developers need. So I am working on a toned down version for the rest of us, building apps in the cloud. If you need to strength and full on power of what Alex is doing by all means follow his recommendations. I am on track to build out the machine he outlined once my local Micro Center gets a Hades Canyon back in.
I wanted to make this on the cheap. But not at the expense of performance. Next I wanted to make it minimal. So below is the list of parts I picked up:
I picked up this for extra storage but it isn’t needed.
This gave me a great place to start with a decent i5 processor, more than enough RAM. And I did go overboard on disk space but that was a personal preference. I did buy everything from my local Micro Center I am not endorsed by them in anyway.
Hardware I took in to consideration that items like keyboard, mouse and display you have. I am not going to go down a rabbit hole on how my K2 keyboard is what you should buy. Working in consultancy I get clients crap hardware all the time to work off of. So my home office is set up to use a new machine with ease.
Just like with Alex’s post I am full on with using Ubuntu. Yes, we know there are better Linux flavors out there. But to keep the focus on ease of development and not having to be a linux admin to develop. At the time of writing this post the version I used is 18.04.4 LTS. Yes the 19.10 version is out but I wanted to use the long term support (it’s what LTS stands for) version. Ubuntu also has a lot of great developer tools ready to use and can install with ease.
Now I am focusing on what a .NET Core developer would need to develop apps. I am writing apps in the cloud so that is going to be the context I am going to use for this set up. So with this set up I want to make sure we can do solid .NET Core development, some front end and test it on this machine. I am not espousing about doing full stack development. But here are a few of the apps that I use when I am working with .NET Core. For my office apps I am personally and professionally using Office 365. These I normally access through a web browser. And for this little adventure we are focused on development.
Visual Studio Code
Now I use Code for a lot of things. I have used it for some development work. I have found that with all the extensions that I needed it became bloated and clunky. But it is great for a lot of other things. My blog for example is all done in Code. It’s the editor of choice for anything I am not using an IDE for.
There was two ways you can install .NET Core. First was manually and installing it through the command line. But with this whole project I am looking for ease of use. In other words making this easy for anyone. So I decided to do this via SnapCraft. And low and behold the .NET Core SDK was right there by Microsoft with a verified account. Now this gets a bit wonky if you are looking for older version of .NET Core so SnapCraft might not be the best way of managing this. But for my needs this works just fine.
I am a huge fan of JetBrains in full disclosure. Also to dispel any rumor, no I don’t have a JetBrains tattoo. And no they do not sponsor my content. I recommend them because they make great products. I think Rider is up and coming in the .NET Core development space and has served me very well on my Mac. Outside of Visual Studio it is the best for .NET Core. The best way to install Rider is via the JetBrains ToolBox. This give you the ability to install any of their products with ease. Of course you could use SnapCraft.
Slack right now is what we have for any type of office communication for Linux. Sure we have Discord and other teams I know use that. But until Microsoft Teams is GA or JetBrains Space, Slack is what we got.
Love it or hate it, we can agree the tool can get the job done. Postman has huge fans or strong haters. But at the end of the day people are using it. With SnapCraft the install was done in seconds and we had it up and running in no time at all. And I use it to test my REST endpoints.
This has become the messaging app me and most of my friends use. It’s secure, it’s free and keeping it on my desktop makes life a little easier for me to work through out the day. I am not checking my phone as much because everything is on my desktop.
This is one of awesome tools that Canonical puts out. Multipass allows you to run instances of Linux with ease. And give you the ability to spin up and tear down Kubernetes with ease. Not going on to say it is life changing. Multipass is great for what ever OS you are running.
Again another Canonical tool that goes hand in hand with Multipass. MicroK8s gives you single node Kubernetes fast and easy. This is perfect for local development as I set up here. Or it is great for running Kubernetes on Raspberry Pi 4. I picked this one due to time and ease. I wanted to be writing code on this machine as soon as possible and MicroK8s help do it.
There were a handful of cli’s that I needed to install. NPM came to mind and a few others. I didn’t want to outline them all here. That would have taken a bit longer to write up. Firefox came installed and the developer tool kit was readily available. Picking up stuff like Git was a single command in the terminal.
I am impressed. There are some limitations, I don’t know if this NUC can handle multiple monitors. But I am so used to using workspaces this didn’t bother me. But for the price this little desktop is perfect for most .NET Core developers. Working in consultancy, I can see companies issuing little NUCs instead of laptops. I have a secure, inexpensive desktop that works. I enjoy using it right now more than the Mac Book Pro, but that is because it is still new and shiny. I want to thank DaShaun and Alex for the inspiration on writing this up. Now on to writing some code.