Demola Project – Fingrid Electricity Market Visualization


AngularJS Arabic Keyboard

Jquery CSS Gradient Generator

Social Media Analytics Tool

Adhimix Precast Indonesia


Machine Learning Project

ABB Web Based IDE

Demola is an international organization that facilitates co-creation projects between university students and companies, either locally or internationally. This is the project brief from Demola's website: Visualising the Future Electricity Market. In this project, we were tasked to formulate an idea along with its concrete example i.e prototype to reach the goal. The goal in this project is to make sure people could understand the electricity market in an easy way. We were team of 5. 3 of us were developer and theo other two were from social sciences which had been working previously in the energy sector. The first few weeks was all about idea formulation. We map the main problem that need to be solved. Analyze to root cause of those problems. We define the main value proposition that we want to offer. Until we came up with several ideas such as:
  • Integrated marketing campaign which includes: social media campaign, microsite campaign, youtube campaign etc.
  • Simcity-like game but in this case, instead of managaing cities, the player would manage an electricity grid company like Fingrid.
  • Mobile apps to track electricity usage.
  • Electricity marketplace which will connect electricity buyer and electricity provider.
  • Open, personalized and extensible electricity market visualization dashboard.
With several considerations, we finally decided to build the last idea. We Developed the dashboard using NodeJS and D3.js. I setup the framework for the technical team so that they could code it faster. I prepared the build process. I split the job of creating visualizations to the three of us, including myself. We also did intensive testing on their newly developed RESTful API and found several critical bugs to which they finally made some big adjustment to their API configuration. Basic demo: http://kamalabs.com/fingrid/


This was my first experience working with a big international corporate client professionally. There were a lot of communication challenge on this part. We have to make sure that we could really understand what Fingrid wants. Initially the scope of the porject wasn't very clear. And it was intentionally designed that way by Demola. They expected us to dig the problems by ourselves and formulate the solution for that. Fingrid of course already something in mind but they want to see what kinds of problems that we find and solutions that we offer to them. Fortunatelye, with good communication through Slack and various other channels, we could come up on the same ground.
This was a project on web software development course at Aalto University. In this project, we were tasked to build a JavaScript games marketplace. It also needs to be a platform where each submitted games could communicate with the platform. I lead a team of three to became one of the best team in the class. Our tech stack was Python, Django, PostgreSQL, Bootstrap, Vagrant and Heroku. The features that we developed are:
  • Social media login system
  • Browse and search games
  • Play games
  • Submit games
  • Record highscore
  • Save state of the game
  • Game developer dashboard which contains statistic of their sales and submitted games
  • Simple payment service integration
  • RESTful API
Demo: http://gamemart.herokuapp.com/
I worked at ABB as a UX Designer and a master thesis worker. Here, I constructed UI/UX for their real time industrial IOT calculation engine. Built with vanilla Javascript. I also built a JS based C# parser/lexer which generate syntax/lexical tree out of the C£ code input to be used in this web based IDE to provide smart autocompletion. As part of the thesis research, I also measure the productivity gains of using a specially constructed UI/UX that I built for the purpose of creating and/or managing the calculations.


2017-05-30 (8) Add New Calculation View Calculation List View Calculation List View


ABB as one of the leading power and automation company is connecting millions of electrical devices and systems to industrial internet of things called ABB AbilityTM. ABB AbilityTM is refining the measured real-time data with calculations to additional soft sensors signals and key performance indicators (KPIs) at the various levels from the system edges to central cloud. The engineering of the calculations requires web based IDE that provides good developer experience for the subject matter experts to be productive in their work. All configurations of the calculation engine are stored on the database engine. Currently, the calculation engine still doesn’t have a frontend view. So the user needs to work directly on the database to operate the calculation engine. This is a tedious work, especially when it comes to writing the calculation script. Thus, it is important to build a user friendly interface to configure the calculation engine. This interface needs to be integrated to ABB existing frontend dashboard system. One of the most important aspect of this UI is to have a versatile code editor. The user will need to write the calculation code directly on the front end web based system. So, it is vital to have an integrated code editor with some level of IDE functionalities embedded on it.


The objective is to design and implement web based engineering tool to enable end-to-end development of the calculations that includes:
  • Build UI for accessing and choosing the data source. It includes setting up parameters, parameter types, database mapping, dependencies and external libraries.
  • Build UI for defining the calculation. This is where we need to integrate the code editor.
  • Build UI for configuring the execution. It includes task definition, periodical based execution with scheduler, event based execution with triggers, batch jobs, simulations and diagnostics.
Yelp has this popular program among AI enthusiast which is called Yelp Dataset Challenge. In this challenge, they open up the data that they have for data scientists all over the world to be used in an innovative way. The challenge that I did was part of machine learning course project from Aalto University. The objective of this challenge that I did was to predict user vote based on their reviews. We did that by utilizing occurrences of some words on the reviews. The occurrences of each words became the features for our machine learning model. We do both classification and regression problem on the similar data set. On classification problem, we try to predict the usefulness feedback from the user based on their reviews. Whereas on the regression problem, we predict the star rating that were given by the user based on their reviews. For the classification problem, we use decision tree learning model and logistic regression with some feature selection. While for the regression problem, we utilize the linear regression using gradient descent technique. We implemented everything in python. We code from scratch some of the model that we implement.


This was my first attempt on implementing real-world machine learning problem. Although last year I did something which is a little bit related with machine learning on my projects about information retrieval, but I did not dig deep into the machine learning approach for the search engine. It was very challenging for me to actually learn all the underlying math behind every major machine learning models out there because it has been a while since I touched upon the hard math subjects like calculus, probability theory, statistics etc. I had to relearn everything that I have learned years ago on my bachelor study to able to get a good understanding of the whole system.
This was a school project on Business Development Lab course in KTH, Stockholm. In this course, we were given task to build a real startup with a real product, real customers and solid business model. We had about 6 months to start everything from group forming, ideation, prototyping to product launching. So, the product idea that my team decided to work on was a social media analytics tool. The brand name  that we chose for this tool was LettuceMine, it was a pun of "Let-Us-Mine the social media data for you". With this tool, customer can track social media conversation about a keyword which they are interested in. They can see all sort of data analysis from those conversations. They can how many people are talking about a particular topic at any given time. They can see the sentiment analysis towards a topic. They can see the traction velocity of a topic to see beforehand if a topic will become a trend or not.
PT Adhimix Precast Indonesia is one Indonesia's biggest player in concrete and construction industry. Their parent company, PT Adhi Karya, were first established since 1960 by nationalization of a Dutch company called Associate N.V. At 2002, PT Adhi Karya decided to sell/disintegrate their concrete production unit business because of its poor performance. Thus, PT Adhimix Precast Indonesia were born. It turns out that this disintegration was a great thing for them. Their performance went really well until today. One of the key success factor of their operation is the existence of a good enterprise resource planning (ERP) system. This custom ERP software has really helped them to make their company operation more efficient, which in turn helps to boost performance. But today, this ERP system is starting to get obsolete. It needs many adjustment to fit their newly-designed and more-efficient business processes. And as the company grows over time, it's getting more important for the top management to get a quick insight about company performance. This is why they also need a good decision support system (DSS).

Role and Responsibilities

I work on this project as a system analyst for both the extension of the ERP and also the DSS. My responsibilities include:
  • Communicate intensely with the business analyst to gather the business requirement of the system
  • Transform the business requirement into system design and development plan
  • Coordinate with the programmers to make sure the development went as planned

Project Challenge

Extending an old system has always been a hard thing to do in software engineering. We need to learn the previous system extensively to really get a good understanding of the old system works before we begin to make any extension. This is one of the biggest challenge that we have to face on this project. Another challenge is business process of the company itself. We didn't just make a system out of their own running bussiness process. We aim to reconstruct a better and more efficient business process for the company with our system. This kinds of work needs a tight collaboration between many people from many departments on the company, the business analyst and also the system analyst.


Below you can see some screenshot of the system that we built. The screenshot was taken from development server with dummy data.


erp login erp login2  investigasi incident listing


evaluasi safety dashboard fuel ratio
Loueva is a body care product to help minimize the effect of cellulite. It was a new product of PT Ratu Farmaka Prima. The company asked me to create a nice looking web page for this product as a powerful tool to spread the information about this new brand product. I helped them craft the information architecture of the web, design the site and code it altogether.

Project Challenge

Although it's actually quite a simple project (considering the specs), the project didn't run really well. The project didn't meet the quick deadline that I set. Normally, I could finish this kinds of website in a day or two. But it turns out to take about two months to finish it. Mostly because of I have to wait for the content to be available from the producer. loueva_screenshot
Litwe is a lite mobile web based Facebook and Twitter client application. It's built using vanilla PHP. It used TwitterOAuth to connect with Twitter's API and Facebook API to connect with Facebook. Although initially I just built it primarily for my own personal purpose, I eventually published it on domain litwe.info. And it turned out that there are many other people like me who liked to use it. This web app still run until no one else were using it anymore.

Project Background

I was a bit late in adopting smartphone. I still used feature phone while many other people have had their Android/iOS gadget. So, I didn't have the luxury to use tweetdeck, ubersocial or any other fancy social media aggregation apps which were only available on smartphone. So.... I built one for myself. An app specifically designed and developed for my own use on my feature phone. I wanted an extra lite mobile app which won't hog my data usage but still have a fully complete facebook & twitter features (mention, retweet, comment, DM, etc)

Project Challenge

This was my first time dealing with REST API. I didn't have any prior knowledge about it before. So, I had to really understand the concept of it before I stumble down the Facebook & Twitter API code. It took a while for me to grasp enough understanding of the concept of communication between web applications.
arabicangular This is a simple arabic keyboard built using AngularJS. This keyboard is meant to be used on desktop only.

Feature list

  • Transliterate typing (type directly with you latin keyboard and this app will automatically transliterate it to arabic text)
  • Change transliteration scheme. I have made 3 transliteration scheme so far, you could add more of it or create your own transliteration map. Just fork it, copy any transliteration json file and edit it yourself. I'd be glad to merge it here :)
  • Change font family and font size
  • Copy arabic text
  • Translate (direct translation link to google translate)
  • Search (direct search link to google)
  • Image (direct image search link to google images)
  • any more suggestion?


Live demo in here: http://kamalabs.com/arabic-keyboard


Check out the source code here: https://github.com/emkamal/angular-arabic-keyboard
Spectral Jquery Gradient Generator This is a jquery plugin which are able to generate CSS gradient lengthy script. This tool was meant to be used by theme designer who want to incorporate customizable CSS gradient within their theme. It's built using jQuery UI and jQuery Colorpicker. Github page: https://github.com/emkamal/Spectral-Jquery-Gradient-Generator Demo page: http://kamalabs.com/Spectral-Jquery-Gradient-Generator/

Older posts