Archive for the ‘Technology’ Category

I have been in the IT industry for last 16 years and have been a programmer for a major part of my career. But with that said, in my opinion my IT experience is irrelevant when it comes to taking a dive in the AI world. Yes honestly, my programming background helps me a little bit when writing code, but I have been a traditional C/Unix/Linux programmer so when trying to wrap Python around my head, I have to ‘un-learn’ quite a few things. For e.g. the constant habit of ending all lines of code with a semi-colon or wrapping my conditions in brace brackets to name a few. The reason why I said Python is because, its one of the most popular and go-to language in the world of Artificial Intelligence.

There are several jobs, well paid jobs, that exists today but didn’t even exist 10 years back (for e.g. app developer or video blogging). Likewise, there are several jobs that we will be doing in the next 10 years but is not even mainstream yet and I believe that Artificial Intelligence will form the basis of those future jobs.

With that said, based on my insights into the industry, I have broken down the AI/ML current career streams into 4 different paths as below:-

  1. AI/ML Gods – This is a career stream where people typically with doctorates fit in and have spent years in identifying the best algorithms with the least error function and have specialized their applications (e.g. developing Bayesian algorithm for classifying emails as Spam or ham (opposite of spam))
  2. AI/ML Visualizers – This is a career stream where data analytics comes in. Doesn’t matter if you have AI/ML background or not, if you are good in analysis. If you are good in identifying pattern in chaos this is the field for you. To excel in this field you can have an existing job in business analytics or can be a newbie. All you need is a curious eye. Knowledge of Linear algebra can help but if you don’t know Linear algebra you can always learn. Knowledge in using AI/ML libraries help in-case you want to modify the models you are using for data interpretation.
  3. AI/ML Programmers – In this career stream you are not really a data person, you mostly work with the generic algorithms established by the #1 folks (the Gods) and create models that can be used by #2 folks. There are so many algorithms available today and you need the AI/ML Programmers to identify the right algorithm and create solution that can be consumed on a daily basis by #2 folks. You in this career stream definitely need to have so good foundation understanding of AI. In this stream, you can further grow yourself in to AL/ML god with help of continued education. In addition to this Nano degree program you will also need to be acquainted with ML software like AzureML, TensorFlow, IBM Watson etc that brings specialization to generalization.
  4. Automation Managers – Now this one is a little different. The industry today is rapidly moving towards Automation. When I say Automation it can be dumb software robots executing tedious manual processes without human intervention or cognitive software processes, that utilize ML to realize its current state and determine the next step. In this career stream, you may or may not be hands on, but you need to know and understand the ‘art-of-possible‘ when it comes to Artificial Intelligence. So you need to do a lot of reading and understand on what different tools offer and how ML/AI in general can bring in correlation.

When we all are at a starting point, I would recommend you determine which fits the best for you and move towards it.

Introduction to JPA

Well its that time of my career where you need to sharpen yourself again to find stumble on the right career path for you and for me it means finding the right project. Originally being a Linux, C/C++ guy, I couldn’t simply ignore the Java buzz and the importance different pieces of Java plays in the architecture world.

Talking about architecture, database enabled Java enterprise applications are of prime importance as they form the basic of any application deployed in the enterprise world.Taking it a bit further,knowledge of persistence APIs are a must have skills in your resume if you want to survive the competition. So this multi-part blog is an effort to help programmers like me to deep dive into the basics of persistence with Java.

2006 saw the final release of EJB 3.0 which was based on JSR-220 (Java Specification Request). This release gave the programmers the ability to store and retrieve application data to and from the database respectively.  This set of APIs is known as the Java Persistence API  or JPA. JPA incorporates many of the concepts and standards from leading persistence frameworks like Toplink (from Oracle) and Hibernate (from JBoss). One of the great benefits of JPA is that it is an independent API and can nicely integrate with J2EE as well as J2SE applications.

By plain definition in Java terms, Java Persistence API (JPA) provides POJO (Plain Old Java Object) standard and object relational mapping (OR mapping) for data persistence among applications.

So what is POJO?

Plain Old Java Object is a term used to refer Java objects that do not extend or implement some specialized classes. The following classes are not POJO classes because the first one extends a specialized class and the second one implements a specialized class.

    class MyServlet extends HttpServlet {}
    class MyRemote implements SessionBean {}

What is Object-Relation Mapping?

OR Mapping – Object-Relation mapping is the process of the transformation of the data between the class objects and databases. Applications can depend on an OR-M like tool that greatly simplifies this work instead of manually coding the transformation process.


Persistent Data normally refers to permanent data in an application. The state of these data is made permanent by storing them in a persistent medium like database, files or a disk tape. In JPA terms, these persistent data are referred as entities. An entity refers to a logical collection of data that can be stored or retrieved as a whole. For example, in a banking application, Customer and BankAccount can be treated as entities. Customer name, customer address etc can be logically grouped together for representing a Customer entity. Similarly account number, total balance etc may be logically grouped under BankAccount entity.

Since entities form the heart of the JPA, they have some unique properties like

  1. Persistability:- deals with the storing and retrieving of entity from and to a persistent medium like database.
  2.  Identity:- is usually used to identity one unique entity among multiple entities (or multiple entity instances) in a database.
  3. Transactionability:- CRUD operations (Create, Update and Delete) for entity objects will occur within a transactional context and it is one of the major characteristic for an entity object as the real state of an entity depends whether a transaction completes (commits/fails) or not.

Next article in series:- Creating entity classes.