Saturday, September 3, 2016

Background. In my day job I have moved to a point in my career where I don't do full time development, but help guide the organization and individuals in making technology choices. One of our developers has over the past year or so developed a new .NET based version of a product that was originally developed in VB 6.0 and java. VB was originally used for the UI while java was used for our service based code. As we were/are primarily a java shop and our company perceived that introducing .NET at that point and time was unpalatable to the IT shops that supported our users, these choices made some sense. Fast forward about 10 years and we see the .NET runtime as pervasive on the desktop and java in that space is somewhat frowned upon from the IT organizations that we deal with. This is not reflection on java itself which I continue to think has a strong leadership position as an enterprise language/technology platform. It is more a reflection on the poor perception (warranted or not) that the IT organization hold on supporting the JVM on the client desktops.

.NET Curious. As the developer of this .NET application was walking me through his work, I kept noticing how far Visual Studio has come in terms of providing the developer with the right tools at the right time for solid enterprise level development. I decided to look into Visual Studio and C# in particular to get a feel for the tool set and environment. I use Windows 7 on my work machine, but have a Macbook Pro for my home machine. As the MacBook Pro is the machine that I do most of my research on, I decided to build a VM to host a new Windows 10 / Visual Studio development environment.

VM Building. Knowing that I would probably want to keep this VM around and might live in it a while, I wanted it to be a good size disk space wise. I also didn't want to give up precious SSD hard drive space on my mac. So I bought a 256Gig USB 3.0 thumb drive from Costco dedicated to this VM. I first put Windows 10 Pro on it, then did the Visual Studio Enterprise install. I picked a pretty full installation as I want to try out all of the data tools, web tools, and maybe other languages (Python, F#). The installation took a few hours and I was a little concerned that my multiple reboots always seemed to come up with the hard drive pegged at 100%. Not sure exactly why this was but my guess is that Windows Cortana and search services started out by indexing everything on the drive and just beat up the hard drive stats. Once I started working regularly in the VM the hard drive thrash abated and I don't see nearly the number of lengthy pauses as I did upon the initial installations.

JavaFX and WPF. Part of the reason for my curiosity in researching .NET tools, is that I really wanted to see how rapidly I could develop web enabled applications for the desktop in Visual Studio. My interest in this area started out with me looking at JavaFX for the same thing in the Java arena. I really liked the notion of declarative UI with backing MVC code pattern that JavaFX uses. When I mentioned to colleagues that I was playing with JavaFX, I got a lot of raised eyebrows. The .NET app that our developer had written used WinForms, but I let the developer know at the start of that project this it was his choice as to whether we use WinForms or WPF. His familiarity with WinForms was his reason for going that route, but knowing that WPF had a similar approach to JavaFX got me thinking out looking into the .NET tools for developing desktop WPF apps. For my java development I have used Intellij IDEA since its very early days. The current version incorporates the JavaFX Scene Builder for screen building with controls palettes and properties. It works OK. I had to restart Scene Builder quite often and it seems to lose its notion of where you were when it lost and gained focus, but overall it was a pretty good experience. My goal with Visual Studio was to compare the experience within the Microsoft tool suite and WPF to see how it stands up to IDEA/Scenebuilder.

Visual Studio First Impressions. I am starting out my exploration of Visual Studio by working through a trusted standby reference: Andrew Troelson and Philip Japikse's C# 6.0 and the .NET 4.6 Framework, 7th Edition. I am relearning C#, which I never really used in production apps myself. I find myself skimming large sections that really draw out topics that a new comer to the language would want to dive into. I found a key bindings reference to become familiar with Visual Studio editing functions, but really miss some of the Intellij Idea editing functions that don't seem a counter part in Visual Studio. I really enjoying being in the Microsoft-everything at your fingertips world. The MSDN / library docs are great. One feature that is new to me since the last time I used Visual Studion is the behavior of spinning up a local GIT repo for every new project/solution I create. I like to pop up my play / learning projects into my Github account and it looks like this will be easy with Visual Studio. This is a feature that Intellij Idea has long had but I didn't expect Visual Studio to embrace Git/Github at the same level. I was pleasantly surprised.

Long Lead Time. It will probably take some time before I am comfortable in Visual Studio writing C# code but so far I am enjoying completing the samples in the Troelson book. Debugging is fun and easy. I notice that a performance monitor pops up as I'm running my app and this looks interesting. I really want to get my arms around the SQL Server data tools as well. Maybe even introduce Postresql into the mix. I have a small Department-Employee data table set that I like to use as a play data project that I want to introduce into a learning project. Lots of learning to do. I'll continue to blog on this as I go or until my interest moves into another direction!