Saturday 2 December 2017

GHCI 2017: A note of thanks

Creative Commons License

2017 turned out to be a wonderful year with so much to learn, retrieve and experience. By the Quarter end, I was able to have my first post presentation at Grace Hopper Celebration India!!

Poster presentation: Optimal financial planning through narrative visualization with advanced filtering
The poster emphasized the importance of wise visualizations and dashboard performance.
I explained about I made use of cross filter, the importance of DB performance, storytelling, and ensuring reader's freedom while navigating across the dashboards.
I, out of  sheer joy, also told some of the audience who were keen on knowing more about it, about Strategy and Analytics and KDE which is one of the reasons behind the poster.
The audience found the poster creative :)
The presentation started at 12:30 pm and ended at 2:30 pm. I got wonderful response and some interesting feedback and questions from students, working professionals from FactSet, Athena Health Group, Intel and many others ! :)

Special thanks to Indus Valley Partners for encouraging me to go ahead !!
Special thanks to Gurvinder sir, Gaurav Aggarwal, Ashish, Himanshu, Tushar sir, Clifton and Deepesh for the encouragement!!

Rebecca Parsons
I also got to attend Rebecca Parson's session, no wonder her key note was more than awesome. It was highly encouraging to see her viewpoints and how to tackle difficult situations while maintaining work life balance ! Thank you Rebecca, I wanted to meet you in person.

I was also invited by S.A.P as soon as the poster presentation was over for a exclusive networking with them. It was amazing to see the way that ensures a gender diversity not just at the initial dev roles but at the managerial roles as well. A bicycle, making use of machine learning and augmented reality based products at their lounge drew my attention. (Thank you for the awesome travel bag and other goodies :D ) 

It was a dream to meet them, because I have always adored their dashboards. I asked them many questions about their UI and they answered everything patiently. Thank you !!

I got to see some inspirational stories about entrepreneurship and the stories behind the emerging startups

Hands on labs
I attended the hands on lab session by Microsoft and got to know about the VR project they are working on. I also got to know by one of their developer how the suggestions on bing appears which was particularly similar to Decision Science's enterprise search. (Memories)

I attended a mentoring session as well in which we can ask questions and get a perfect solution to everything. I was amazed by the sessions, fellow poster presentations and other interesting stuff !!

Thank you for making 2017 an awesome one for me.

Sunday 23 July 2017

crossfilterplus - Wrapper over crossfilter : Data manipulation is config driven now !

I noticed the fact that crossfilter is useful for data manipulation, not just at client side  ( as used in winlose analyzer) but the crossfilter npm module is useful as well ( it is used in comparator ). People are interested to use it but most of the times they are not willing to put extra code for the same. Hence I came up with the idea of making crossfilter config driven and hence named it - crossfilterplus. It is available at :)

One can use the commonly used methods such as dimension, group as standalone as well ( as shown in the following example ) as per their requirement. It can be used through config as well as shown below: 

To use it, please do the following:

var crossfilterPlus = require('crossfilterplus')
var data = [
  {date: "2011-11-14T16:17:54Z", quantity: 2, total: 190, tip: 100, type: "tab"},
  {date: "2011-11-14T16:20:19Z", quantity: 2, total: 190, tip: 100, type: "tab"},
  {date: "2011-11-14T16:28:54Z", quantity: 1, total: 300, tip: 200, type: "visa"},
  {date: "2011-11-14T17:22:59Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T17:25:45Z", quantity: 2, total: 200, tip: 0, type: "cash"},
  {date: "2011-11-14T17:29:52Z", quantity: 1, total: 200, tip: 100, type: "visa"}

Example -
#1 Access standalone methods // data method helps to create a crossfilter instance on the input dataset
var manipulateData = crossfilterPlus

There is no need to create crossfilter instance and use it everytime to perform operation. crossfilterPlus is able to handle it. 

#2 Pass config 

Config :-
var config = {
  data: data, //required
  dimension: ['total','tip'], //could be a string or array or function else it shows a warning - mandatory 
  aggregate: 'sum', // by default it is count, works for sum. Need to enable more computation here
  measure: 'tip' // needed if aggregation is not count 

I intend to enhance this config more to make it available for sorting and other computations as well. Currently it groups based on the dimension layer.

After preparing the config - will perform grouping based on the dimension applied over the input with aggregation as per measure  and will give same output as  manipulateData in #1  :) 

For reference to the above approaches, please refer API reference - 

The future plans for it are as follow: 
It will be great to have your suggestion as well. Please feel free to raise issues at the github repo as well. Since yesterday, there are +16 downloads :) 

Sunday 18 June 2017

Hong Kong Open Source Conference 2017

Recently I got the opportunity to be a part of HKOSCon 2017 to present my views and talks on how one get started to contribute to KDE and the impact of data visualizations in financial world.

The atmosphere was filled with enthusiasm and the volunteers were helping the guests and speakers a lot.

KDE !!

What I did?

I was selected as a speaker and presented a talk on KDE regarding the open source contribution made by +The KDE Community with respect to my journey as a Season of KDE student to Google Code In co-administrator. 

I discussed about the recent trends in our community outreach program (SoK) as well as how vast KDE is. 
I also discussed about the plasma development in KDE and how I ported the plasmoids to plasma2. 

I also discussed about the tasks created by KDE in +Google Code-in , thanks to the admin team and constructive mentors. I also discussed a bit about +KDE-Edu game pairs.

How it helps KDE?

My talk helped to spread information about the programs and projects KDE is involved with. New contributors were keen to get involved with KDE as well.

I also discussed about Season of KDE to spread information about the same.

My notes are available at:

Data Visualization: Portfolio management through storytelling using narrative visualization through crossfilter and sc.js

Image may contain: 1 person, standing and indoor

What I did? 

I presented a talk on Data Visualization and its impact on Portfolio Management with hands on crossfilter to stimulate visualizations in dc.js
I discussed about the importance of visualizations and its performance, why we should be knowing more about portfolio management, the concept of storytelling and its impact on performance. 
I also discussed about crossfilter and dc.js and why it is going to be the next big thing !! 

Some of the interesting events/talks I noticed are: 

  • Global FOSS Community Meetup: Open source enthusiasts came together to discuss about the on going events and projects that finds fascinating to work with. I got to know a bit about open source in kernel through Vaishali. Through Vigneshwar, I came to know about MozFest and I am looking forward to it. !! Weng gave an insight of KDE as well. I also got to learn about the importance of culture through a casual discussion over it
  • Better than Free Giveaways - Case Studies of Open Source Business Models: Dr. Haggen So presented a great talk over various open source business models. I also got to know about Creative Common License during the talk
  • npm discussion - I got to know about some handy npm commands such as npm run. I need to explore around it though
I met some interesting people in HKOSCon and a delightful dinner with a beautiful view made it more lively. 
I also got to know about Seekers Capital Group and other firms which found the talks interesting and something they wish to try as well. 

Overall it was a great experience. I wish I could keep on working on interesting stuff which would have a impact in future as well!!

Thank you Hong Kong Open Source Conference for inviting me. It was a great experience !! 

Saturday 13 May 2017

CSharpCorner Conference 2017

I recently attended CSharpCorner Conference and I was amazed to know about on going projects on machine learning, AI, angular 4.0 and bootstrap !

In this blog, I will be noting down the key points about the conference

I found the following projects and discussions quite interesting:

  • Machine learning - Brief introduction : It discussed about getting supervised and unsupervised learning. Predicting output from input data set using excel and R.  Demonstrated classification in machine learning using excel and R. Correlated the output obtained using excel and R, ( outputs were similar ) 

Inline image 1
  • Building intelligent bots: Discussed about Bot frameworkFound it interesting, found it a bit similar to enterprise search. Demonstrated chat bots ( Perhaps we can think of having chat bots in commentary ) 
  • Building Native apps using ionic: Discussed about building native apps using ionic. Seems interesting to get started, well documented ( we can think of poc )
  • Bootstrap 4.0: Discussed about the new features and classed in bootstrap 4.0 such as btn-default is replaced to btn-secondary (because in mobile, primary and secondary exists instead of default and secondary, replacing px by rem etc)                               
  •  Building augmented reality app using Vuforia: Build AR app and demonstrated it live which was pretty interesting 
  • Syncfusion:  Also, I went to syncfusion camp, where they discussed about their project and demonstrated it.  Syncfusion is similar to powerBI tool which is useful for making mockups. It is not open source, though is free for individual developers or small organisations. Though it is free for demo purpose. It is a chennai based startup. Also supports interactivity among dashboards, however interactivity among visualizations (as in dc.js ) is in progress (They have agreed for a free trial version :) , lets see !! )

Saturday 20 June 2015

Lets-Chat : Weekly update #5


Here is my weekly update for GSoC project under +Tong Hui and +Mario Behling 

Issue #8 : Key generation for group OTR chat [1] 

  • Implemented the fingerprint of key using SHA-1 

  • Implemented the fingerprint of key using SHA-256

  • Implemented the fingerprints thus generated as 4 digit hex format

  • I will be pushing the fingerprints as 8-digit hex format in my next commit

  • Figured out that use of regex, instead of the loop I am using would be better as seen in TODO in my this week's commit 

  • Initially I was using nested loops to implement 4 digit hex format which I reduced to a loop for reducing complexity

  • Output is attached at [1]  as well as below for quick reference

Issue #19 Cannot create and enter in room [2]

  • +Tong Hui raised this bug , it was because of my commits that I pushed for Issue #17 generated by me

  • Fixed this bug

  • Closed Issue #19

Issue #17  [3]

  • I raised this issue as I felt it would be better for users to have password protected rooms by default

  • I pushed changed for this issue, but somehow it is giving a bug raised in Issue #19 at the moment

Issue #16 [4]

  • I raised this issue earlier, I tested it, worked fine

  •  +Tong Hui tested it as well and we have closed this one :)

I plan to work on Issue #15 [5] , I have already pushed some work :) and as suggested by my mentor +Tong Hui 

Saturday 13 June 2015

Lets-chat : Weekly update #4

Lets - chat 

Here is my weekly update for GSoC project under +Tong Hui and +Mario Behling 

Issue #8 

  • Added execution time 
  • Made the key length as 1536 bits as required for OTR encryption
  • Planing to implement fingerprint of the key as suggested by my mentor +Tong Hui 

You can go through this issue at [1], and could see the snapshots of the terminal output after each commit for reference.

Issue  #15 

  • Raised this issue to implement encryption and decryption for OTR
  • Implemented Hash algorithm using crypto. SHA 512 using the private hex key generated by Diffie Hellman last week by me
  • Implemented AES encryption decryption on a sample text using Hmac . 

I am planing to work on improving issue #15 this week. [2] 

Issue #16

  • Raised this issue to have some more quotes for raptorize plugin 
  • Using this, when any of those quotes are messaged, a dinosaur appears which is quite interactive for end users
  • Added some frequently used words to raptorize 


Friday 5 June 2015

Lets-chat : Weekly update GSoC #3


Here is the weekly update for my GSoC project, lets-chat under +Tong Hui and +Mario Behling 

  • Key - Generation : Issue #8 [1] 
As you could see, I initially used tried using random number generator [2] 

Then, I planned to use hardcore value : Number.MAX_VALUE and Number.MIN_VALUE instead of digits .  [3]

Later, I implemented key generation using crypto-js libraries [4] through Diffie Hellman as shown below :

Crypto-js libraries can be accessed at [5]

And later increased the key length as could be seen :

And added execution time [6]

Apart from Issue #8, I contributed to other issues as well :

Issue #10 [7] 

  • Issue #10 involved adding quick icons for reference, I provided one for key generation [8]

Issue #9 [9]
  • Issue #9 involves adding a menu for group encryption. There was a syntax error which I fixed. [10]

Issue #12 [11]

  • I raised this issue to have localised date in transcript. [12]

Issue #11 [13]

  • I raised this issue in order to have some hot keys in lets-chat. It is in progress, not yet resolved. 














Friday 29 May 2015

FOSSASIA : Week #2

Lets- chat

The coding period started on 25th May, 2015. 

Here is my weekly update :

  •  I got write access for blug chat, thanks to my awesome mentor +Tong Hui  I will be pushing directly now instead of pull request. 

  • I went through cryptocat as it has a OTR encrypted chat to provide an idea of how OTR works with chat application

  •  I tried improving the message part of blug in free time, and it seems initially that the message ID {{id}} that can be seen at app/core/messages.js , changes when the user logs off, so that can be used to display the online/offline status. However, later I realised it is dynamic in nature. Hence it would be better to have the status based on attribute such as time ( app/core/message.js ) {{posted}} 

  • I went through the issues related to 1:1 chat implement in xmpp and otr encryption in xmpp in lets-chat. [1]

  • Tong raised a few issues on blug-chat which are assigned to me and +苟颖琦 . I pushed some changes to contribute to the issue

  • On clicking on OTR messaging otr.html opens which is where OTR encryption could be tested 

  • I pushed a few javascript libraries as well meanwhile, which could help with the encrypted chats

  • SeedGeneration could provide assistance for the generation of seeds required to obtain fingerprints in random.js

  • As per my mentor's suggestion, I made a branch for my contributions : heenamahour/gsoc which is where I will be pushing the code from now on-wards

  • Also, I am trying to deploy lets chat at heroku at [2] . It works fine now. 

Looking forward to the key generation issue, lets hope I am able to resolve it :)

[3] my future contributions should be at branch heenamahour/gsoc instead of master :

[4] Visit for getting in touch with the OTR encryption team :) 

I was a little bit occupied due to final year exams, practicals and other activities. I hope to be more active from next week on-wards. 

Happy summers !

Thursday 30 April 2015

Google Summer of Code 2015 : FOSSASIA : Weekly update : 1


I got accepted for self-hosted online communities communication with OTR encryption : Back-end as a student developer under awesome mentors  +Tong Hui , +Mario Behling  and (soma) +Manuel Munz   under the organization +FOSSASIA . In fact,  +Tong Hui played a crucial role to encourage me to contribute to lets-chat. I am looking forward to work with him this summers. This is 

I will be first implementing the OTR encryption chat and then plans to link it with lets-chat .

Firstly, I would like to provide a brief description about OTR encryption, OTR encryption or Off The Record messaging will enable the users to have private conversations using lets-chat. OTR is an encryption tool for real-time chat, is easy to setup and provides a smooth user experience as well. Symmetric key cryptography is used through OTR encryption and hence the same key is used by the sender (Alice) and receiver (Bob) to encrypt the plaintext to ciphertext  and to decrypt the ciphertext to plaintext.   

Moreover, since the communication channel is insecure, for encrypting the communication, OTR uses Diffie-Hellman key exchange algorithm.  In short, Alice and Bob are able to exchange secret keys in such a way that they can derive a shared AES (Advanced Encryption Standard) key that is impossible for an intruder to decipher. This protocol hence ensures deniability and perfect forward secrecysince this protocol uses new key for each message. Interestingly, OTR encryption can be used on any internet chat protocol such as Google talk, lets-chat etc. 

I plan to implement the following features under FOSSASIA this summers under Tong Hui :
  • Generate long lived key : This step is going to be expensive as it might take seconds
  • Since OTR uses new key for each message, for each receiver, the sender wishes to communicate to, instantiate an OTR object
  • Implement function to send a message to the receiver
  • Implement function to receive a message to the sender
  • Ensure Symmetric key encryption
  • Ensuring the sender’s message is encrypted to obtain cipher text
  • Ensuring the receiver’s message is decrypted to obtain plain text
  • Close private connection when the chat is closed
  • Easy connectable API for front-end reuse

Note: I will be implementing the OTR encryption in group chats at first  and make sure that the code is efficient enough to use in lets-chat. 

After that I wish to implement the following :
  • Display status online/offline
  • Display fingerprints
  • Resolve bugs if any
  • Maintain proper documentation of back-end work

Looking forward to learn, code and develop this summer !

Some important links :

Thursday 16 April 2015

Google Code In 2014 Wrap up : KDE

KDE : Experience freedom 

KDE is an international free software community producing an integrated set of cross-platform applications designed to run on LinuxFreeBSDSolarisMicrosoft Windows, and OS X systems.

 It is known for its Plasma Desktop, a desktop environment which is provided as the default work environment on many Linux distributions, such as openSUSEMageia and Kubuntu. 

KDE project serves as an umbrella project for many standalone applications and smaller projects that are based on KDE technology. Recently KDE participated in Google Code In to provide young contributors an opportunity to get involved with KDE and inspire them to get involved with open source. 

During December, KDE managed to create over 100 tasks, with over 29 mentors. 

It gradually increased to over 277 tasks by the next month. It was great to see such an active contribution by the students to KDE and the mentors made sure the students are well equipped with the tasks. Marble managed to create maximum tasks among the KDE projects with over 50 out of 277  tasks. 

Also, for the young contributors, KDE provided over 65 beginner tasks which helped them to get involved with open source.

 Later, the students were expected to go ahead with non-beginner tasks to help them foster their skills. KDE provided tasks of varied types ranging from code, documentation/training, design, quality assurance and outreach/research. 

Some twitter follow ups : 

It was overwhelming to see a synchronous and healthy student mentor relationship while Google Code In. 

The students performed well with the highest score by Mikhail Ivchenko and second highest by Ilya Kowalewski . 

We thanks Google Code In to help KDE to encourage young students to get involved with KDE. 

-Heena Mahour 
co-administrator of GCI 2014 under KDE