Posted by: Tharindu | July 18, 2021

Sanhinda Sinhala Typing Pad for iPad and macOS

Sanhinda was the very first individual iPhone application I have built and submitted as an individual app for myself in early as 2011. The iOS app became the #1 iPhone app for Sri Lankan Apple App Store in December 2011.

Since then the app didn’t make much progress until I wrote the initially written ObjC code again in Swift recently with a Keyboard Extension. The motivation for the re-write was mainly due to a concern raised by one of my friend Thishya Weragoda regarding the privacy concerns over the widely adopted Helakuru Keyboard. We believed that the popular app retrieves quite a bit of personal information that is not quite required at all for a Keyboard app.

Thus, we believed that there should be major improvements for the decade old 100% Offline Sanhinda Sinhala Typing app for the users who are concerned about their privacy and personal information. There have been major improvements and bug fixes for iPhone app and published the app totally free of charge from its users.

Thereafter, I have worked on an iPad version of Sanhinda iPhone app and found that macOS version would be handy as same as a iPad version. Therefore I’ve used macCatalyst to build mac versin. The iPad app is optimized for larger displays and comes up with a full featured Sinahala Keyboard. The mac version works on any Mac with macOS 10.15 (Catalina) or later. iPad and Mac app is available for a modest 2.99 USD one-off charge.

Sanhinda Typing Pad iPad app Screenshots

Sanhinda Sinhala Typing Pad macOS app Screenshots

Posted by: Tharindu | April 26, 2021

Dialog ezCash fraud and annoying customer service

Recently, my Dialog ezCash account has been reset for the second time in 4 months. Interestingly for the second consecutive time, balance wiped out (It was consistent). First time it was wiped out with a 220 LKR in January, 2021 and the second time it was 150 LKR in April, 2021. You might be thinking that’s not much, but I wish I’m the only one their fraudulent stealings have to be dealt with. This time I’ve decided NO more ezCash wallets after their annoying customer service for the many times I had to deal with after their technical faults (may be a feature).

Jan, 2021

I have called Dialog customer service in January and explained that after using #111# I was asked to register for ezCash again and my previous balance was wiped out. They have verified my number and personal details and went on to say I have no transaction history for the number. I was amazed and I insisted I have been using this for some time while transferring money via Commercial Bank online banking. Luckily, I even had Dialog’s ezCash SMS messages with me that time. Even explaining all this they insisted I have to visit a service centre during Corona Virus pandemic and I asked whether they don’t have a email based customer service. Ideally, the customer service should have opted for it. After arguing with the customer service little more time the person said that I can email to

Unless otherwise for the SMS message and online transaction history I would have lost that 220 LKR as well where second customer service call also insisted saying that my ezCash account does not contain any transactions while my commercial bank history clearly shows I have been transferring money to my ezCash account.

April, 2021

Same thing happened again, after transferring 150 LKR via Commercial Bank online banking, when I used #111# on my Dialog, I was asked to register. I knew I’m gonna loose the money again so didn’t want to continue registration. So I’ve decided I may call customer service without continuing registration so it would be easier for them to find the fault and transfer 150 LKR I have sent to this account. As expected, customer service agent went on to say I have no transactions and went on to argue with me that I have to visit a service centre. I strongly objected and went on to argue “Why should I visit a service centre during Corona Virus pandemic? Even your customer service ring tone asks not to visit service places“. After arguing the agent agreed that I can email the matter. So I’ve emailed the detail with commercial bank online screenshot. Unfortunately, this time I didn’t have the SMS history as well as no account created SMS as I didn’t continue to registration process.

After the email, another customer service agent called and insisted me to visit a service centre. I was like What is really wrong with these guys? I have emailed everything and now I have to visit a service centre for 150 LKR vanished because of their technical fault. The same agent went onto say I have four wallets created for my number. I asked “Wow! How on earth had it happened? Mobitel doesn’t even allow creating more than one wallet for a NIC and you guys have created 4 wallets for my same number with one NIC“. The agent insisted it was my fault. I said I just typed #111# other than that I do not have a way to access your services. I was really annoyed this time and still asked them to investigate and come back to me with an answer why it had happened. And I went on to say if it is not a feature it should be a critical bug in your system you should fix without making people loose their money on vanished ezCash accounts.

For the third time, another guy called and he also went on to argue with me my account does not have transactions and asked me for the last transaction date. I was like “What is really wrong with them? I have emailed everything with details and reference numbers now they are asking dates without checking them!” I was really annoyed this time and I said I’M DONE with ezCash! If you can please transfer back my 150 LKR or else keep it. And I have also requested a written email reply for what happened to my account balance which they are yet to answer. If I ever get a written reply with a proper explanation I will attach it to this post. That is all about ezCash and Dialog’s annoying customer service!

Update: After two service request closures without a resolution, on the third request I have requested my last 10 ezCash transactions with dates, while trying to get a proper email reply. This time, they have realized what happened and added 150 LKR back but never sent me a written email with what happened or proper apology for the 2 prior closures. And my next written request has been closed without a written reply from Dialog as well. The decision is very straight forward: Never trust Dialog customer care and ezCash.

Posted by: Tharindu | October 22, 2020

Paylinks Android and iOS Apps

We have planned a quite an exciting app during COVID-19 pandemic at Vesess. The mobile app was called Paylinks and it enables users to quickly share payment links to get paid. Initially payment links can be paid either via Paypal or Stripe. We have also added support to print the links as QR codes and receive unlimited payments if you wish to, as well as partial payments. Since we wanted to deliver the idea into market in a quick time I have suggested that we would implement it with Dart programming language using Flutter SDKs. The execution was very smooth and we were able to get the native experience using Flutter SDKs.

For me I would recommend Flutter over React Native for a Hybrid mobile app development, obviously if you are not coming from a solid web development background. The main reason is that Flutter apps run as native apps without a java script runtime behind. Similar to a Game Engine flutter renders the dart code into a fully native app on both iOS and Android platforms. With the Google’s backing the documentation and support is really fascinating and executions are straight forward.

Following slideshow shows how the same flutter code renders app on iOS, and the next slideshow shows how it renders on Android OS.

Posted by: Tharindu | April 14, 2020

Survey Article on Blockchain Technology

I have been reading part-time for my Mphil degree since couple of years at University of Kelaniya, Faculty of Computing and Technology, while working full time for Vesess. My main research include working on developing a protocol to simplify management of cryptocurrencies, which is already in progress. The research started with a survey paper on blockchain technology. This has been my very first experience on formal scientific article writing in addition to usual writing I did for academic purposes during my BSc at University of Moratuwa, Faculty of Information Technology. After going through several revisions with the guidance of Kelaniya University mentors (Dr. HD Weerasinghe and Prof. NGJ Dias) and SN Computer Science journal review panel, I was able to get my publication online on Springer.

Within the survey paper, we have aggregated all the core concepts of blockchain technologies for future researchers and readers who are initiating their studies in the particular technology. Once we started researching this technology, many of the concepts were scattered on different sources such as academic journals, technical reports, books, and research papers. With this paper, we believe that we save quite a lot of time for future readers by presenting blockchain technological terms together within a single survey with heaps of useful technical details. The final publication is available at

Cite this article

Gamage, H.T.M., Weerasinghe, H.D. & Dias, N.G.J. A Survey on Blockchain Technology Concepts, Applications, and Issues. SN COMPUT. SCI. 1, 114 (2020).

Download citation


I recently realized my Gmail is running out of space and I need to clear up some unused or large Emails, and clean up Google Drive space. I hardly used Google Photos. And most of my space was used by Gmail. In addition to standard 15 GB space I also had 2 GB additional free storage which was acquired by a security check up enabled by Google few years ago. Out of my 17 GB space only 1 GB was used by Drive, 0.02 GB for Photos, and nearly 15 GB by Gmail. I did few things that easily got me nearly 2 GB storage space re-claimed. I would like to list the steps I did, so it would be useful for anyone to quickly claim some useful space for Gmail emails.

  1. How to Re-claim space in Google Drive?
    1.1 Visit the following link to see your files listed from largest to smallest.
    1.2 Put files you don’t want in to the Bin with Right Click & “Remove”
    1.3 Goto Bin from left side navigation. Press Ctrl+A / Cmd+A (Mac) to Select All. Right Click & “Delete Forever”
  2. Read More…

Sanhinda iOS app was my very first personal app, which I have submitted into Apple AppStore way back in December, 2011. The initial version was written in Objective-C and the app helped to type in Sinhala using the English Keyboard on iOS devices. The app got huge attraction in 2011 and reached #1 rank in Sri Lanka Apple AppStore on 22nd December, 2011. The design for this app was done by one of my friend Julian.

After a while, I have totally forgotten this app and recently a person I have met got a requirement to type in Sinhala, but the existing apps on iOS lacked ability to type letters with yansaya (ex. ද්‍ය). What I noticed was my old app was not compatible on iOS 11 and also the app is not having the custom keyboard (This feature was later introduced on iOS 8). I thought I would re-write the app in Swift to support this requirement to help anyone wanted to type Sinhala properly on iOS devices. Therefore, I have re-written the whole app in Swift with an additional Sanhinda Sinhala Keyboard Extension, which could be used to add additional keyboard into iOS device keyboards list. As well as that you could also learn to write using Sanhinda iOS app and its helpful note pad.

To enable custom Sinhala Keyboard:
1. Download and Install Sanhinda iOS app from Apple AppStore.
2. Goto device Settings > General > Keyboard > Keyboards > Add New Keyboard…
3. Select සන්හිඳ Keyboard to add additional keyboard to type.
4. You can switch between keyboards using Globe icon in English keyboard.



I have started developing CoinTracker iOS app as a side project during my spare time, and I first published CoinTracker iOS app to the Apple app store on 28th. September 2017. It garnered a lot of interest very quickly and was loved by almost everyone who used it. Following positive customer suggestions, I have made a number of improvements to make a brilliant product even better.

One of CoinTracker’s strongest features has always been its simplicity and ease of use. It was designed from the start so that even novices could use it. CoinTracker users tell me constantly how much they appreciate being able to track their crypto-currencies without CoinTracker getting in their way. I truly believe it is this simplicity of design and function which sets CoinTracker apart from its many competitors.

And what of the future? Well the good news is, following initial success on iOS, I now have a friend working on producing an Android version as fast as he can. We have been working on the Android version for about one month and its gaining a lot of interest as well since its initial release just like for iOS app.

CoinTracker iOS app reached over 1000 daily active users yesterday 4th. January 2018 (within just over three months from initial release). I was so excited about the success within a short period. When it first reached 100 daily active users I was so happy and I have posted in Indie Hackers forum and got some suggestions on how to bring it to the next level. And those suggestions really helped too and the exponential growth in last three months was amazing. My friends also helped me with suggestions on how to improve the app too addition to lots of feedback came from CoinTracker users.

I would like to thank all CoinTracker users for helping this grow and we would work hard to make the app even better and we have certain plans to introduce unique features in next few months, which were never included with any crypto app before. Stay updated with my blog and our social media channels Facebook, Twitter for CoinTracker latest releases with these new and unique features.

CoinTracker (Cryptocurrency Portfolio Mobile App) has been my pet project for last couple of months and it has been very much appreciated by cryptocurrency users around the world since its first release in late September. As lots of requests came in I was very much excited to give new features for this app during last month. Very much CoinBase like beautiful hourly, daily, weekly, monthly, yearly, and all time charts was one of the many exciting features added during a small amount of time. The last main update with version 1.1.4 was to introduce an in-app purchase to expand the cryptocurrency set support to 1000+ full cryptocurrency list. I was so quick to release this exciting feature in Saturday (4 November) with one time payment of 0.99 USD to unlock full cryptocurrency set. Interestingly it was approved so fast just few hours waiting for review in queue. That was so fast, when I realized the receipt validation had happened against Apple’s Sandbox server. Soon after I have submitted an update 1.1.5 Saturday night itself but had to wait couple of days to get it approved on Tuesday (6 November). This fixed version unlocks portfolio tracking, beautiful charts and all other free features with a limited cryptocurrency set to a cryptocurrency set of over 1000+. I was able to have money for a coffee in a single day (appeared in iTunes Sales Reports) and so excited about encouragement given by its users.




Posted by: Tharindu | September 29, 2017

CoinTracker: Cryptocurrency Portfolio Mobile App

I always had an idea to build a Stock Tracker mobile app and started working on it on my spare time and suddenly had to give up, as there were no free public APIs to access necessary data in different stock exchanges. Meantime one of my Crypto interested friend suggested about this idea about lack of a good cryptocurrency portfolio iOS app, which resulted in changing that Stock Tracker design from light theme into a dark themed Coin Tracker iOS App. The research and development was pretty quick for the initial version and have got so many ideas to extend the basic version into much more sophisticated cryptocurrency app.

Meantime, you would love to download this interesting app from Apple AppStore with following link.

I have added couple of app previews and few screenshots to make you more interested about this app.




The guide for Gitlab Android CI integration contains information on how to integrate CI with Gitlab. But the official guide contains little bit out dated .gitlab-ci.yml file.

The script in yml tries to download a tar file but the latest sdk contains as of zip format. Therefore I had to modify the script slightly to download the right android sdk and set the $ANDROID_SDK_HOME correctly with the above change.

If you have trouble setting up Android CI for Gitlab project please try using the following code in gitlab ci yml file.
If you want to run unit tests for debug only with more details use the following command instead.

./gradlew testDebug --stacktrace


image: openjdk:8-jdk
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet${ANDROID_SDK_TOOLS}
- unzip
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter platform-tools
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
- chmod +x ./gradlew
- build
- test
stage: build
- ./gradlew assembleDebug
- app/build/outputs/
stage: test
- ./gradlew test
stage: test
- wget --quiet --output-document=android-wait-for-emulator
- chmod +x android-wait-for-emulator
- echo y | $ANDROID_HOME/tools/android --silent update sdk --no-ui --all --filter sys-img-x86-google_apis-${ANDROID_COMPILE_SDK}
- echo no | $ANDROID_HOME/tools/android create avd -n test -t android-${ANDROID_COMPILE_SDK} --abi google_apis/x86
- $ANDROID_HOME/tools/emulator64-x86 -avd test -no-window -no-audio &
- ./android-wait-for-emulator
- adb shell input keyevent 82
- ./gradlew cAT
view raw .gitlab-ci.yml hosted with ❤ by GitHub

Older Posts »