Switching from Mac to PC for .NET Development

Just like hammers, drills, and screwdrivers are the tools of the modern tradesman, so to is the computer the trade tool of the modern software engineer. How it is constructed and how well it performs determines how well you can accomplish the tasks you set out to complete.

With this notion in mind, it was time for me to sell my 2014 MacBook Pro 15. It was a great machine from a performance standpoint. It had a wonderful display, fantastic keyboard to type on for long sessions, and a trackpad that could beat any others in the year I bought it.

So why sell the laptop? Well, frankly, because it’s hard to be a .NET developer on MacOS. Sure, there are great IDEs like Visual Studio Code, but that pales in comparison to the feature offering of a full fledged Visual Studio IDE when working with a large solution compromised of multiple projects. What about Visual Studio for Mac you ask? Also wonderful if you’re primarily working on Xamarin apps. They’ve made fantastic strides with it, but support is behind for several features not directly benefiting Xamarin, such as TypeScript. Honestly, I don’t mind the idea using a cloud Mac provider like Macincloud.com to handle my Xamarin builds remotely as there is nice support for this now. The final nail in the coffin is Parallels. Yes, it works, but it’s expensive (including recurring fees), it’s clunky, and it’s not nearly as performant as a native OS. Throw in applications like Docker and you have strange Inception level virtualization issues to wrestle with.

So, where does that leave us? In the past, this may have been difficult to swallow, because one reason so many developers love their Macbook is because it runs a variation of unix, and subsequently has great capabilities beyond the wonderful UI it offers. A .NET developer looking to verify their apps run cross-platform could have considered this, but thankfully, today we have Linux subsystem for Windows. I just installed Ubuntu… from the Microsoft Store… crazy!

Ultimately, after a lot of research, I settled on the Lenovo X1 Carbon (5th Gen). It is a fantastic laptop, and “everything works” despite my belief that was only possible on a Mac. I went with the 16GB model, 512GB of storage, and the WQHD display. It’s got great battery life (I spent about 5 or 6 hours on it with pretty heavy load tweaking settings, installing all my applications, and it lasted on battery only no problem).

Some additional features of the laptop I plan to leverage but haven’t yet, are the fact this unit has 4 PCIe lanes, so an external GPU such as the Gigabyte Aorus GTX 1070 will allow me in the future to have the dream setup: one single machine for both work and play. I looked at other models like the Dell XPS 15 but this had some shortcomings like the webcam position (I do video calls for work sometimes) and also I didn’t want the 4K display to avoid some high dpi compatibility issues and battery drain. Another positive, on modern laptops in general, is the fact that USB-C charging is nearly ubiquitous and getting my laptop charged is now less of a concern than before with the proprietary Macbook charging adapter.

Also, if I ever decide to convert this into a Linux laptop, it’s good to know that this model has good support already for it and all of the hardware should be compatible for me. It will allow the laptop to last quite a long time if necessary.

All in all, I’m really, really happy with this laptop. And the best part about it: Windows has come a long way and is actually pretty nice to use. More applications run on it, it has the Linux subsystem support, and it’s improving constantly with the “Creator” updates they are releasing.


Future of Technology

The number of technologies in development, that are real and not science fiction, is astounding. These are technological advances are that are just over the horizon and are simply a matter of time to come to market at a reasonable cost for all of us.

Do you remember what life was like before GPS, cell phones, personal computers, the internet? Sure, life was good, and we all got by just fine, but these advances all make life so much more enjoyable and interactive for all of us lucky enough to inhabit it.

I believe will permeate all our lives within the next 10 years, and these are just a few of many:

– Wearable devices (watches, glasses)
– Bitcoin
– Virtual Reality (Oculus VR)
– Self driving cars
– Gene therapy
– 3d Printing
– Stem cell technology (new organs, disease treatment)
– Mind controlled prosthetics
– Electric cars
– Artificial intelligence / Learning systems

It’s a great time to be alive as a technology enthusiast. The future is bright, and I’m glad to be a part of it.


The New Microsoft

Let’s put aside all the discussion of re-branding Microsoft to make them more hip and talk about the developer platform.  I may be stating the obvious here on what many have already witnessed at Microsoft over the past few years, but there appears to be a paradigm shift in the way the company is operating from a development standpoint.

Recently, at ThatConference, I listened to Scott Hanselman give his talk on “One ASP.net” and his discussion reinforced much of what I had been experiencing lately from a developer perspective.   The underlying principal seems to be “If it sells more Windows licenses, it’s good for Microsoft“.  Gone are the days where Microsoft is trying to push a particular piece of technology or development approach, and third party platforms/libraries are being invited to join the party.

That may seem “evil” to focus only on licensing, but think about it for a moment.   What will keep the enterprise, and consumers, focused on buying Microsoft products?  That’s right, developers.  It’s the same audience that Google, Apple, HP, and everyone is trying to attract right now.  Windows is the bread & butter of the Microsoft ecosystem, and maintaining a positive relationship with developers by listening to the community and providing top notch tooling will help enable that.

What are some examples?  Well, for those may not already be following the Microsoft development environment, consider that historically Microsoft has never been “open source” as a business.  I prefer to use that term in quotes, because Google can hardly consider themselves “open source”.  If they were, they would publish their page rank algorithm, which is the main money driver for their business, but I digress.  Things have changed at Microsoft in recent years.  MVC, Entity Framework, Azure SDK, and much more has been released as open source software.  This isn’t the marketing version of “open source” either, you can actually branch and check-in.

Microsoft has even demonstrated this new strategy with CodePlex, a free open source project hosting site.  Phil Haack and his team produced the NuGet package manager which allows other developers, and even Microsoft, to continuously deploy library packages into your projects painlessly.  No more waiting for the latest .NET framework release, just check NuGet.  Look a bit deeper, and you’ll find that Windows Azure now allows you to host PHP, Node.js, and even run Linux virtual machines (*gasp*).

If you’re like me, you’re frustrated that Microsoft Visual Studio isn’t free development software.  This has changed for me recently after I came to a few realizations.  If I am a student, I can get Visual Studio FREE from Microsoft Dreamspark.  If I am a new startup (and supporting Microsoft technology), I can get Visual Studio FREE from Microsoft Bizspark.  Even the “Express” (free) versions of Visual Studio now have unit testing support.   Each release of the Express versions is offering more and more functionality.  Finally, consider that Visual Studio 2012 Professional is now $499.  To put that in perspective, a license for Photoshop (at the time of this post) will set you back $700.   A final comment on this, is that I have used Eclipse, Sublime, Xcode, and other IDEs.   Visual Studio is on another level as far as the quality, UI, feature-richness, and speed of the IDE that the others cannot match.   It is perfectly reasonable to expect a mild cost to be associated with a superior product.

In conclusion, I feel that some some of the bashing that Microsoft gets is warranted, but any of it that is directed at the developer platform needs to stop or at least be tempered.   The new Microsoft appears completely focused on listening to the community as well as providing top notch tooling and services to get us to the end result, which is making great applications.


Back to blogging.

It’s been a while since I’ve posted here and I hope to change that. My son is over a year old, and I have a truckload of pictures I could post here, but I’ll save that for later. Also, I plan to post many more entries on ASP.net programming. I hope this will add additional content to the site as well as attract a more developer focused community.

My wife and I have become a much more Mac focused family, and I can’t say enough good things about how easy it has made home movies, photos, and reduced my tech support time for family.  Here is a fun example of the movie trailers feature in iMovie 11.


New Blog!

Hello internet.   This is my first post in a series of many that I plan to make going forward.   I will be posting on the topics of technology, cooking, music, fatherhood and other topics as well.    Please subscribe if you enjoy the blog.