One year with Ubuntu

One year ago in a day similar to today I installed Ubuntu on my machine and started evaluating it. I did it not because MS Windows is a bad OS but because it is not available in the country due to political clashes and also because people tends to use cracked versions due to cultural problems. In the other side Ubuntu is not a very common OS but instead is totally free and legal.

I could not able to migrate my development tasks from Windows to Ubuntu because I'm a long term .Net developer. Also many of my clients/employers only want Windows. Instead I managed to switch to Ubuntu in my other daily tasks very quickly. LibreOffice replaced MS Office very easily. Internet browsing could be done in Ubuntu very easily too.

During the year I did my best to migrate all my tasks to Ubuntu. I found many alternatives for my previous Windows based applications like OrchardCMS and others. Also tried hard to bring APS.NET running in Ubuntu or learn Linux friendly software development platforms.

ubuntu

Today LibreOffice works perfectly for all my office requirements. Firefox, Chrome and Thunderbird for Ubuntu help me using Web and Email very perfectly. Gimp helps me editing images very good. I even had experiences with Inkscape for vector graphics. Integration with Windows is not bad. I can remote desktop to Windows machines just from my Ubuntu machine. Ubuntu can read FAT32/NTFS partitions good. All my previous MS Office files could be read and edited by LibreOffice too. Also my 4 years old child could use Ubuntu to access online games, play videos and music and even run games and educational applications like GCompris.

I learned many command line tools and terminal during the year. I even have an operational Ubuntu VPS live on Internet that is running WordPress, RedMine and Vtiger CRM very nicely. I do all maintenance tasks of server via terminal and it is joyful.

I have tried establishing software development environments on Ubuntu. Rails, Node.js and Java have been setup successfully. Even I was able to develop simple introductory applications with help of them and Sublime Text. It was a good experience but I still have doubts about choosing which of them to continue.

Choosing a new development platform for a .Net developer

I'm evaluating some programming languages to learn instead of Microsoft .Net. I'm a software developer with more than 10 years of commercial software development experiences mainly in Microsoft .Net platform. I have worked both as employee and as freelancer. Now for some reasons I'm interested to learn something new other than Microsoft .Net. Some of reasons are:

  • Moving to a new company may need knowing new programming languages and development platforms

  • Getting a remote job or project will potentially lead me to learn something other than Microsoft .Net

  • My own start-up projects and custom software development projects may be done easier and more agiler with help of technologies like Node.js or Rails/Ruby.

  • I have a passion on Linux and .Net is not fully available on it yet by Jan. 2016.

  • Moving to a new city or to a new country needs me to have a broadest skill sets.

  • I need to do something new!

My main experiences are in web application development specially in back-end. So I have developed lots of code and pages in ASP.NET Web API, ASP.NET MVC, ASP.NET WebForm and even Nancy. Also have experiences in WPF/MVVM and JavaScript.

It's near a year that I'm trying to switch to Ubuntu and finding a good alternative to .Net. First thing first I liked to have .Net in Ubuntu but it is not complete yet and it may need few years to be fully available and adopted by the community. I did a technical comparison between Ruby, Python and Node.js but in realty I need to make attention to job market too. A good software development platform is a platform that has good community adoption and good salary too.

Along this journey I tried to get my hands dirty with my favorite platforms with help of quick starts. Quick starts are good points to learn programming languages. A typical quick start learns you how to setup the platform from scratch, how to develop a basic application with it and lets you get acquainted with concepts and tools. I started with my most loved technology Rails/Ruby. Tried to get a bit deeper on Rails but after a while suspected is it a better to learn something that already can be used in my projects? So tested Node.js a bit.

Last week I thought twice about priority number 1, moving to a new company. Major IT companies in the country that mostly are in banking, financial and government field prefer Java for their projects. Many of their projects are enterprise level and no surprise they prefer Java over other platform. So after getting hands dirty with Rails and Node.js I got Java installed in my machine and built a simple basic hello world with Java, Eclipse, Hibernate and Play. Play felt very similar to Rails which Rails itself felt similar to ASP.NET MVC.

Playing with Java showed me that Java is not very strange for a long term C# developer. This sense was common when trying Rails and Node.js specially when regarding with Web development. Rails, Play and ASP.NET MVC are very similar to each other as they are base on MVC pattern. In other hand C# and Java are very similar languages with similar internal structures. Also Node.js is not very un-familiar for developers with front-end development experiences. IDEs of all this platforms are not very different at root. Batteries and equivalent components exists.

After all I concluded that switching to platforms like Rails, Node.js, Java, Python and PHP is not a hard or time consuming task for .Net developers that have enough software development experiences. It may be reasonable to wait for a job position or a development project then getting more deeper with desired platform.