Daily Development News

The latest in software development….

Visual Studio 2015 RC3 - Visual Studio now includes NodeJS tools and Xamarin built in.

ASP.NET Core 1.0 is released - ASP.NET has been converted from ASP.NET MVC 5 to ASP.NET Core, which is built on top of the newly release open source cross platform version of .NET called .NET Core.

Building multi-player games with Angular - This article walks you through building a multi-player game with javascript and Angular.

Migrate your Angular application to Angular 2 - Here is a nice guide for upgrading your Angular application to Angular 2.

Simple Web API with ASP.NET Web Forms example - Here is a good article showing how to build a simple ASP.NET Web Forms application that uses a Web API service to get and post data.

.NET Core 1.0 Released

On June 27, 2016 .NET Core 1.0 was finalized released for production. This was mentioned back in the fall when beta releases were released but it is now officially released.

This is a full version of .NET that is completely open sourced on github and available for windows, linux, and OS X. This is very exciting for .NET developers. .NET is is also available on Xamarin, which makes .NET available on Android and IOS.

Also, on top of this there is an additional setup of libraries that make ASP.NET Core to allow web develoment across all platforms.

With the release of a free full version of Visual Studio, this make the development of C# applications using a free IDE across all platforms possible!

.NET Universal Windows Development primer

Check out this great tutorial on Universal Windows Development(UWP) in Windows https://channel9.msdn.com/events/dotnetConf/2016/NET-Universal-Windows-Platform-Development.

Daniel goes through a simple example that shows the power of UWP development and .NET Core by building an end to end solution using a raspberry pi IOT application a laptop/phone application and web services api published to Azure to connect it all together.

So you want to be a programmer - part 2

So, you want to be a computer programmer. Previously, we talked about the need to program to be a programmer. But what kind of programming. Let’s assume for this discussion that you want to be an independent programmer/entrepreneur. First, you need to decide waht kind of freelancer you want to be. Do you want to develop websites, web applications, games, mobile apps, etc. This will dictate the language you should learn, the platform you should become familiar with, and the ide/tools you should become proficient with.

If you are going to be a website or web developer then javascript will be the language you want. You will also need to know html and css but these 2 are not “programming languages” per se. They are markup languages. They do not contain programming constructs like branching, looping, logic, and functions/methods. Javascript is the language of choice by far for web development.

If you want to be a game developer then there are several choices, but the tools are more important here probably than the language. I would suggest the Unity game engine. There are several good game engines, but Unity seems to be gaining the most attention. This will lead you to learn C#. This is the most popular scripting language for the Unity game engine. Secondarily, to this you will also need to develop knowledge in 3d graphics and need an eye for graphics. This is not my speciality and due to this I have stayed away for game development and website design in my career. I outsource the design elements of the projects I do.

If you want to develop apps the 2 most popular are Android apps and iOS apps. Android lives in the Java programming world. For this you will want to learn Java and then pick an IDE. Eclipse is a very popular open source IDE that is also easy on the budget(it’s free). There is plenty of online help with the Java/Eclipse world to assist you as well.

For iOS the language was ObjectiveC but is now moving to Swift. Apple’s Xcode is the IDE for this language and is really the only choice. There are 2 downsides to developing iOS apps using these tools. First, there is some cost. You need to buy Xcode, and Apple development box and an Apple mobile device. Secondly, this skill set will pigeonhole you into just Apple products. Another iOS approach now is to use C#/.NET/Visual Studio w/Xamarin. The downside to this is you are developing Apple based software using Microsoft tools. This platform is fairly new for Apple development and it’s use is not widespread yet. The upside to this is the knowledge you gain learning C#/.NET/Visual Studio can be used to develop for the Windows platform. Also you can use the Visual Studio IDE for Android and Web development as well. So, you are not as pigeonholed into Apple if you decide you want to branch out.

Another mobile platform to explore is Windows 10(don’t laugh). The reason I mention this is not due to the huge market of Windows mobile devices, but due to the huge market of Windows desktop, laptop, tablet, and XBOX devices. Windows 10 allows you to develop across all of these platforms plus HoleLens(up and coming) and IOT(internet of things). Also, the Windows platform with C#/.NET is one of the largest installed bases for business applications if you decide in the future to work for a company instead of yourself. This is also a benefit to Java as well. Java is another very popular language for business applications. Incidently, this is also a downside to Swift/Xcode. The Apple platform has a very small user base in business applications. Apple does not play in the backend server market like Windows and Linux.

MY recommendations overall are….If you want to develop games learn the Unity game engine. If you want to be a web developer learn JavaScript/HTML/CSS. Also, learn NodeJS for server side javascript programmer and the Angular framework for client side javascript programming. This will allow you to develop full stack web applications. For mobile applications(against most other recommendations) I would learn C#/.NET or Java and skip ObjectiveC/Swift(this is just too specialized a platform).

Overall, and this will sound very Microsoft centric, if you learn C#/.NET/Visual studio as well as HTML/CC/Javascript you will be able to develop pretty much any application for any platform. This is due to .NET Core now being offered for iOS, Android, and Linux. This will allow you to develop web applications, mobile applications for Apple, Aondroid, and Windows, and games with Unity. It will also set you up to develop business applications for companies.

.NET is Open Source

Last fall Microsoft announced that its .NET framework and run time engine was being released as an open source project on github. Many who have followed Microsoft over the years listened to this with a healthy dose of skepticism. Microsoft over the years has not really embraced the open source movement. But almost a year into this journey I am convinced that Microsoft is fully on board with the open sourcing of .NET.

The open source version of .NET is called .NET Core.aspx). .NET Core source code is available on github here .NET Core source code. Also, .NET is backed by an industry standard ECMA standard to allow for others to also implement their own version of .NET. Two notable examples of this are Mono and Unity. They have taken the ECMA standard and built their own version of .NET. Mono has been built on Linux, Android, and IOS.

To further this open source move Microsoft has released a version of .NET Core for windows, linux, and OSX. These 3 along with Mono on Android and IOS, allow developers for the first time to develop applications that can run on all of the major platforms. Just recently, Microsoft also announced the purchase of Xamarin and the Mono engine and have built support for this and cross platform development into Visual Studio.

This development, along with the announcement that Visual Studio 2015 is now free, allows developers to use a full featured IDE and develop for multiple platforms all in the .NET world. As this becomes more widely known, I believe, you will see a lot of interest shift back to C# and VB. These .NET centric languages have gotten a little passe with the growth of the mobile market. Up to now there was no real avenue to mobile development in the .NET world except for the small windows phone platform.

This also does not get into the whole benefits of Windows 10 and the develop once for tablet, pc, phone, xbox, IOT vision.

It is a good time to be a C#/.NET developer.

Code editor versus a full IDE

This question comes up a lot. Do I really need a full IDE or can a nice code editor work fine for simple projects. A code editor will work fine for writing code, but the problem is that most of the time spent in development is not just writing code. Notepad++, Sublime, and Atom are excellent code editors, but any serious developer needs to be proficient in an IDE. Once you are proficient with an IDE you will feel very limited using just a code editor.

An integrated development environment provides a full platform for software development. It combines a code editor, compiler, and debugger into one tool. It will also provide features like code navigation(where is a method defined? where all is this method called?), package management, dependency importing, code management integration, and performance analysis.

With some of the better code editors like Atom and Sublime you get excellent features for writing code like color coding, intellisense, code formatting, and syntax checkers. But to build or test or interrogate your system you need to use other tools. Even if you are using an interpretive language like javascript that doesn’t require compiling you still need tools to help you run and test your application. You still can use help managing dependencies(think node packages), interrogating your code, and integrating with code repositories like SVN, Git, or TFS.

Now that Visual studio 2015 is free, it is an excellent choice as an all purpose IDE. It is not just for .NET development anymore. With the inclusion of Xamarin and other items(like NodeJS tools), it can be used to develop MEAN stack applications HTML/CC/JS websites, Android Java applications, IOS apps, etc. It now rivals Eclipse for the breadth of platforms and languages it supports, and it is a more complete overall package(in my opinion). You can use Visual Studio for almost any development. Once you are familiar with it you will find developing with just a code editor very inefficient.

So you want to be a Programmer

I have been teaching programming classes for over 5 years. I teach C#/.NET and MEAN stack JS classes. One thing I tell my classes over and over …”if you want to be a programmer you have to program”. Seems simple enough. But there is an important lesson in that statement. Learning to be a developer is different than learning other subjects. Programming requires knowledge of a computer language like C# or javascript, but at its heart programming is a skill or trade that needs practiced. It is very similar to learning a musical instrument. To learn to play the piano you have to play the paino. You will not get there but just learning to read sheet music. The same is true with programming.

Many of my students start the first couple of weeks by reading the chapters and looking over the sample code examples. They don’t actually do the examples themselves. They read the sample code and fool themselves into thinking “I got this”. Then half way through the class when we start to build our own projects from scratch they don’t know where to begin. They get writer’s block if you will. The truth is they realize that “I don’t got this”. Now they are in a hard place because they need to catch up but the class is still moving forward. This is when I hear many students complain that the class is going too fast. This is when the light comes on and they realize “to be a programmer I have to program”. Reading the book and the book’s examples will not get me there.

This is also the point in the process where people decide…do I really want to be a programmer? Or do I like the idea of being a programmer? Do I really enjoy spending hours in front of a computer solving problems, making decisions, and figuring out why this program will not work properly?

On the bright side this is also the fun part. This is where you take your book knowledge of a language, platform, and framework and start to create something from scratch. You get to create something from nothing. This is where your inner inventor comes out! This is where the light brightens for some with the endless possibilities and dims for others with the realization that being a programmer is not what I thought.