Search This Blog


Monday, 18 July 2016

Freedom from Complexity – Simplicity sells

Simplicity is the ultimate sophistication. — Leonardo Da Vinci
Many people would think simple solution mean lack of functionality. In contrast, it really means there is consideration of various requirements of users and solution provides a fast learning curve. It's sophisticated solution minus complexity. Have you ever asked yourself that why do you prefer simplicity over complexity? When we were so little, we wanted everything to be simple and straight-forward. Most of us, when thinking of an issue or requirement or need, we try to map that thinking to a part or step in the solution. There is direct link. This is what every customer or consumer look in the products these days. They are looking for bond between their thinking and solution they are looking at. If a product or solution cannot create that kind of bond quickly then it faces a "lack of interest" or sometimes "rejection". A solution should be able to represent a story that user narrated but we would include happy ending. It is all about understanding the needs and mapping this understanding into solution and yet keeping it simple.

Ease of use and Attraction

Humans love things with "ease of use" label. The only reason, it makes our life simple and more productive. Since childhood we have been watching things getting simpler. We have seen many innovations which made humans interaction "simple" like email, smartphones and now, smart wearables. The things are going through different phases i.e. bigger to smaller, thicker to thinner, taller to shorter etc . The good example is mobile phones. Mobile phones were bigger in the start and then with changing technology they got smaller, thinner and shorter. It got easier for people to carry mobile phones in their pocket or hold it in hand. Now, they are getting bigger again but still easy to use with great design and style. People can perform many tasks while being mobile.

Source: Tumblr

We are more attracted to simple setup, features and designs. We don't want to spend much time to learn things and willing to get on top quickly. Now, if you remember when "Kinetic Honda" scooter was released for first time then it got attention of many people because it could be started with one button touch. An electric start and that was so simple ! In fact, it never stops and we always want things to be simple and there are many people who prefer simplicity over complexity or their balance. That's why we need to understand which features attracts the customer more and introduce them in our products and services. Using following image, please ask yourself that which one is much easier to setup and learn

Source: Tumblr

Simple Consumer Apps

These days some of the the consumer apps reflect simplicity. Consumer apps are carefully designed to cater user needs and yet provide a simple intuitive interface. It enhances user experience, productivity and hence happy customer. Most of us have explored some or few Health and fitness apps to track our fitness goals or for some other purpose. Definitely, when we go to gym it provides benefits such as better equipments, training and atmosphere. It can be expensive though and sometimes people miss the involvement factor. They go and do exercises at their own and with little understanding of techniques. Personally, I never saw any gym personal to come and tell customer that they are not following the correct technique or whether this exercise is beneficial or not (unless customer has paid fees for personal trainer). Therefore, people turned out to be using fitness/workout apps. Most of the apps have techniques and workout settings that you can follow and configure but can be cumbersome sometimes. What if, there is an app which shows us how to do it (like real person) and involve us to finish workout. Let's see how simple is following app (Daily Workouts on the App Store. 2016). Click on workout, workout reps are already defined, select your workout time, workout benefits and technique is clearly visible and performing trainer involve you to do it. How simple is that ! By the way, this app looks very intuitive on 2015/2016 smartphones.

Source: Daily Workouts App

Simple Analytics

Simplicity can be found in any of these : Interactive learning resources, software development, mobile application development, business management, and analytics. Analytics? Well, yes ! Corporations are gaining more maturity when it comes to analytics and they are considering analytical solution as organization's strategic goal. Due to this reason, they look for analytical tool/solution/services in the market. Simple is one factor that attract such customers. They want to jump straight to data so that decision making can be started. Therefore, they look for solution with proper flow, involvement and easy to follow. Despite limited product line focussed on data discovery, Tableau was on top list of Gartner magic Quadrant of BI and Analytics 2015. Tableau achieved highest scores in terms of breadth and ease of use and enabling users to rapidly leverage insights. Tableau customers also reported faster-than-average report development times.

Source: Gartner (February 2015)

SAP is working towards consolidation of their wide list of business intelligence tools to  provide simplified BI toolset. The goal is to provide interoperability between these tools so that users are able to learn and adopt them quickly.

Source: SAP

Simple Analytical Apps

So, what are the other solutions in Analytics where simplicity play role? The answer is "Analytical Apps". Analytic applications are a type of business application, used to measure and improve the performance of business operations. Businesses are looking for rapid insights and data discovery on any device and therefore their approach for information need is changing. Again, SAP has considered this approach seriously and they introduced "Fiori Apps". Fiori is not a product line rather its platform for SAP business applications and easily deployable on any kind of device. Applications built using this platform are based on design principals and one of the principal is "Simple". It means (SAP says,) "you can complete your job intuitively and quickly. Simplicity helps you focus on what is important – essential functions are easy to use and you can personalize the experience to focus on your relevant tasks and activities." (Experience SAP. 2015). These apps have taken attention of many whether they are business users or developers.

Source: SAP


easy to understand, deal with, use, etc.: a simple matter; simple tools | not elaborate or artificial; plain: a simple style. | not ornate or luxurious; unadorned: a simple gown. | unaffected; unassuming; modest:a simple manner | not complicated: a simple design | not complex or compound; single | occurring or considered alone; mere; bare: the simple truth; a simple fact 

The message is clear that we need to adopt simple tools to create simple design which will have simple style with flavour of soberness and represent a simple fact/truth. "Simple" has been around for long time and therefore it is must have feature in your product or service. Simplicity has to be part of core principles, design strategy and business goals. Not only, it provides a better user experience but also help to simplify the development tools. Integration becomes more flexible. Simplicity in analytics is all about rapid insights and data discovery. We can build innovative business intelligence solution with analytical applications. We understand and prefer simplicity as it just works and hence, it sells.

SAP HANA Data Modeling Features - from project perspective

You are working on a project and performing your daily tasks. A recent requirement make you ask this question "can we do this in HANA?". Sometimes, we discover things that we did not know at all. The discovered feature was always there but we just ignored it. In some cases, the feature got distributed in new release and we never tried it. Usually, these situations let us find something that can be helpful for deliverables. This way we learn and enhance our skills and hence, optimizes our development process. Personally, I am big fan of things that is simple and just made with purpose. While working with SAP HANA Data modelling perspective I have learnt things that can enhance the data models, provide fast development life cycle and make content management easier.

Project requirement: Information need should be fulfilled with legacy data model or enhanced legacy data model.

Following are the features that can be used to fulfill above requirements (based on real world experience):


We attended SAP DEV Summit in Sydney last year (2015). There, we learnt that analytic views and attribute views won't be used in new HANA view modeling approach. Only calculation views should be used moving forward. Okay, we are already in project mode and creating content from scratch or enhancing existing current content. So, we made decision that we would model only calculation views in order to align with SAP new approach.

Source: SAP

The issue is that legacy data model is either an analytical view or calculation view which is built on top of an analytic view (an old SAP HANA Data Modelling approach). Further, these analytic views are consuming attribute views. First suggestion - let's create it again. Second suggestion - RTFM (read the freaking manual). Hey, you can now use "Migrate" feature. Yes, we can use it to migrate or convert following objects:

  • attribute views and analytic views to graphical calculation views
  • script-based calculation views to graphical calculation views
  • classical XML-based analytic privileges to SQL-based analytic privileges

Please note that the migration is from package to another package. This means that if an information view is in package "DEV" and you want to migrate it to package"DEV01". During the migration whole package "DEV" will be migrated to "DEV01". So, make sure that you have collected the required objects under one clean package before migrating objects. Migration has some impact and due to which some of the entities can change when you convert analytic view or attribute view to calculation view. Please refer to SAP HANA Data Modeling guide as these can change over time. Also, there is best practice listed that you can follow to perform smooth migration.

Well, you noticed that how this feature reduces development time and we can achieve results in short period. One more convincing reason to start using calculation view is introduction of "web-based data modeling tools" for future releases. SAP is moving to web-based editor (web-based IDE) for SAP HANA data modelling as well and only calculation view can be created in web-based editor.

Source: SAP

Mass Copy

Usually, this feature is used for copying SAP delivered standard HANA content (SAP Rapid Deployment Solutions) to customer package. For example, you have downloaded the SAP HANA RDS for operational reporting which has been deployed under "sap.ecc.fin" (just an finance example) package. As per best practice by SAP RDS documentation we should copy this content to company's custom package i.e "company.ecc.fin" and then make changes if needed. In the past, we had to copy each content and it's dependencies (dependent data model) manually  and later activate them one by one. Trust me, it was lot of work and required many days (money too) to do it. Therefore, in some cases only required content was copied. Now, with "mass copy" you do following:

  • select source and target package
  • create a mapping between two packages
  • select all data models or just few
  • "convert analytic views to calculation view" option is available. Aha ! two goals with one shot.

Now, you can do similar with your legacy content as well. There is no restriction from SAP that you can only do it for SAP delivered content (at least I did not find one). For example, you have legacy content in "legacy.fin" package and you want to copy this "new.fin" package. Well, be SAP guest and do it. You will have to consider following:

  • If you are copying dependent objects for script-based calculation views or procedures to a local package, manually change the script or procedure to adjust references in impacted objects after copying. or you can use "Migrate" feature in this case to convert it to graphical view first.
  • If you are copying objects to the target package (new.fin) without copying its dependent objects, the copied object has references to the dependent objects in the source package (legacy.fin)

With above features,  fast development is achievable and content management is flexible. We all work towards deliverable and if we can deliver on time then we can focus on other things. In fact, if we know about such features then we can estimate our development time and plan ahead.

Remember, goal is to work smart, finish on time and stay ahead.

Machine Learning Platform - AWS vs Microsoft - Learner Perspective

Being a Business Intelligence developer I work with data every day. I always strive for use case where we can do more with data and provide valuable insights to Business.  However, most of the time I am preparing operational reports which involves data modelling and designing report using specific tools and specific need (derived by Business). Though, it is good exercise to gain data analysis skills. Some of these reports are fun to build and challenging some time but still very specific. Few months ago I decided to explore the world of data science. The motive was to play with variety of data and explore use cases. I have principals when it comes to learning. One of my principal is "start from basics". There is no shortcut if you want to master something. You definitely need to know end to end if you really want to succeed and of course you have to be passionate about it. Therefore, I wanted to learn language build for data science but widely used. I started to read blogs and start exploring other's views on choosing the right language for data science which might be fun as well as fit my learning abilities. There was no definite answer as these languages are fit for different purposes and skills set. However, I decided to stick with "Python". Python is widely used and perfect fit for people who comes from computers science background rather statistics background. It has been couple of months since I started learning Python. I completed "Introduction to Computer Science"  to start with. Also, to add more python skills whenever someone uploads a tutorial to try something with Python libraries I just follow them and try to learn from their experience. It has been always fun to see what Python can do.

One of the main reason to learn Python was to build web applications in future (It will take time depending on my learning speed). Many Python developers are already doing that. These web applications can be used to perform data analysis or answer specific data query or for other purpose. More and more cloud based web development providers are integrating "python" so that developers can write web applications in Python. (Let's talk about machine learning) In the last few months, there has been machine learning hype. Machine learning has been around for decades but it is now being used more and more due to availability of training data (plus variety) and platforms in cloud. Graphics card makers like Nvidia and Intel have enhanced their GPUs for machine learning purpose. So, computing power is also one of the reason for machine learning hype. (Back to my story) The "Introduction to Computer Science" course is prerequisite of course Introduction to Machine Learning (starting it soon) which also made me think that I should explore the machine learning platform available in cloud. Companies like Google, AWS and Microsoft have introduced their own machine learning platform in cloud. In this blog, we are going to share my experience while getting started with machine learning platform.

Which cloud provider?

Very first question that I ask myself was "Why this provider?" and the answers were:

  • Need machine learning platform
  • Start with provider that I've used for other things
  • Integrate easily with other services (that I am aware of) from same provider

So, I decided to go with AWS and Microsoft. I chose these two for following reasons:

  • Used both for other purposes during my roles as "System Administrator" & "Business Intelligence Developer".
  • Already knew how to integrate services for these providers. I have used these providers for creating solutions and POCs.
  • Both provide machine learning platform to learn

I only used google for search and emails. That's the only experience I have with Google.

Getting Started

Getting started is always the first step in learning a new stuff. Even, majority of online product documentation or tutorials always starts with "Getting Started" page. Most of the time, you can make your decision on whether you are going forward or not based on "getting started" experience.

Amazon Machine Learning (AWS)

Started with Amazon machine learning home page. As expected there was "Getting started" page. So, I launched the getting started page and there was straight link to tutorial. Alright, tutorial has steps to start using sample data (csv). It all looks simple and straight forward. I decided to read whole tutorial first. Before I can even finish reading tutorial I started to ask these questions to myself.

  • How I am going to utilise and enhance python skills?
  • Can I integrate jupyter notebooks? (oh yes, I am also learning jupyter notebooks. I found them very useful for creating data stories)
  • Are there more samples created with python libraries (or even R language)? Remember, I talked about tutorials with different python libraries that we can follow to learn.
  • Will I be able to create web applications/service (using machine learning platform) with Python (or even R)?

I jumped to AWS ML documentation but truely speaking I found that it is totally different world for me. It might be simple learning curve for everyone but only if your focus is to train your data using some ML model and output result to S3. There might be a solution or some documentation to do what I need but I never found it within machine learning documentation.

Microsoft Machine Learning (Azure)

Okay, what about Microsoft? Same getting started? No, really ! I got excited to see home page of machine learning. Support for jupyter notebooks.

I noted following things and believe they are really good reason to stick with Microsoft machine learning platform.

  • There are number of samples to try and they have their own tutorials. Each tutorial is written in specific layout i.e. summary, description, creating the experiment, data visualisation.
  • You can publish your experiment as web service which can then be consumed later within an app
  • There is python development centre to learn how to build and deploy Python apps.
  •  Kaggle like competitions to compete with other data scientists. Cortana Intelligence Competitions

Moving Forward

It's final that Microsoft machine learning will be my platform in future. However, these additional reasons might convince you as well:

  • Microsoft Excel and Sharepoint is widely used and ML web service can be easily consumed by these products. Use MS Excel to consume ML web service
  • If an Organisation is using Microsoft Power BI then you can visualise the output of an Azure ML model using Power BI. How? See here
  • The Azure Marketplace provides the ability to publish Azure Machine Learning web services as paid or free services for consumption by external customers. Independent consultants can create a predictive solution and then publish it as paid service.

At the end, what really matters is your focus and needs. For my needs, Microsoft machine learning turned out be a good option (at this moment). OpenData and Microsoft machine learning seems to be a good combination. What do you say? Let's play together.

Friday, 26 June 2015

Language Dependency in Design Studio - With BW Data Sources

In recent experience, I found that when we are using BW data sources then it display an error if OLAP connection language is set different from BW system.

For example -

I tried to change connection for this SAP Design Studio application and received following error:

When I checked the backend connection in Preferences of SAP Design Studio then I found it is using language IE

I checked Design Studio administrator guide and there were some hints to language dependency

I found that the user language settings in BW was different from what I configured in OLAP connection


OLAP Connection

So I changed the language in OLAP connection in Information Design Tool to match BW system. Later, the error was gone and I was able to change data source. Once it is changed the it should appear as follows: