Opensource = options and options - Part 2

Second part of opensource technologies I love and work with.

In last article I discussed about opensource technologies I love to work with in web development both Frontend and Backend part. In this article I will discuss about machine learning tecnologies and mobile development frameworks I know and love to work with.

Machine Learning

Machine learning is in boom and everybody wants to get into the field of machine learning be it big software and IT giants, a software developer, a programmer or a data analyst due to promises provide about future of computing. If you don’t any thing about machine learning and how it works let me give a novice introduction to how it works:

“In machine learning we write code which is not predictable that’s is we don’t define the something like if else statement explicitly by our self, we give computer a set of cases where we know the output and train it and then give new inputs which computer never seen to predict the result”

I started machine learning with very basic when I first saw Anaconda Python Distribution and Jupyter Notebook previously known as iPython. Python is the major language in machine learning field due to ease of writing code. I learnt numpy, scikit-learn, pandas, matplotlib like libraries to work to datasets, train models and do my predictions. They are still best if someone wants to get in the field of machine learning as it provides how every bit and piece works in machine learning before moving to other high level frameworks and libraries.

Then after I moved to deep learning when I came to know about Tensorflow by Google. It make our tasks very easy when it comes to tensorflow even so much that if you have a nVIDIA machine with CUDA cores just download the tensorflow CUDA package and you’re good to go. GPU’s play a major part in machine learning as they are exteremly fast in parallel computing. While working with Tensorflow I got introduced to Keras which uses Tensorflow as it’s backend and make development of machine learning or deep learning models much more easier. Same can be achieved with TFLearn also.

After this many frameworks libraries came few of them I worked with are Caffe, Microsoft CNTK and recently I like PyTorch by Facebook which is Python implementation of popular Torch library for C++ because of it’s ease of writing code.

I also like working Javascript so when I heard about tensorflow.js and Brain.js I cannot stop myself to experimenet with that. Brain.js is used directly in browser for training and prediction while at present tensorflow.js is mainly used to run models created in Tensorflow python implementation with promise of Node bindings for training in Node.js.

If you don’t know python and want to work with machine lerning and learning then other options are like Deeplearning4j, Mahaout or JavaML for Java, Deeplearning.scala, scalalab for sacala. My advice learn python as it will be very easy to work with machine leraning and deep learning models due to ease of syntax and serving on web for using it in mobile apps or browser.

Mobile Apps

When I started developing mobile apps there is only option to develop Android apps for me as developing iOS apps needs XCode which is only availible for Mac OS. Also setting up environment for development was hectic with installation of Android SDK with only option of writing code in Java in Eclipse IDE with Android ADT plugin.

Then then I came across something called as PhoneGap by Adobe (originally by Nitobi) which later became open source with name Apache Cordova. If you had worked with Ionic then you will know it. In this we write web pages basically which gets served on phone as native app in a webview with access to native features such as Camera, GPS etc. After which I came across Ionic which uses Cordova and Angular for developing apps and it helped a lot for me as I can easily port my web pages to mobile apps. Ionic used to be locked to Angular only but now with version 4 it’s framework agnostic and uses can be used with there home grow replacement for Cordova named Capacitor.

By this time Google released Kotlin a Java replacement as with first class support for Android Development. Best part of Kotlin was it can be used with existing Java code due to interoperability with Java. It came with new IDE called Android Studio made with IntelliJ.

React Native and Nativescript two other javascript based mobile app development framework I love to work with as they convert Web views in Native view. React Native similar syntax to React and Nativescript as with Ionic uses Angular with recent support for Vue. Difference to Ionic which uses web view they convert HTML elements to native element of platform which provides increased performance.

Two new player in this field are Progressive Web App or PWA which uses your present web site and makes it like a native app removing the URL bar of your browser. Polymer by Google and Stencil by Ionic Team are two most popular libraries. Other being Flutter by Google which uses Dart programming language to build cross platform apps. Basically all options I use except Android SDK can be used to build cross platform apps. Flutter is still new and needs more community support and as per me is a also a good alternative with great performance.

Presently with availibilty of dotnot core I am looking forward to Xamarin also as I like to learn and play with new technologies with building apps with them.

This my journey Machine learning and mobile app development field.