Monday, January 19, 2015

How the UltraESB and AdroitLogic was born..

It was the 19th of January 2010 when I first announced the UltraESB publicly! AdroitLogic itself was incorporated 5 days earlier in Singapore, and I was preparing the source code for submission to obtain copyright registration in the US. It was the first time that I had submitted a press release myself, paying a hundred and fifty dollars. It was also the first time that I wrote an EULA myself, with suggestions from Mr. Jayantha Fernando who was a board member of the ICTA Sri Lanka, and Lawrence Rosen who first pointed me to the AGPL license, which I would later use to license the source code. At this time, everything was done just by myself, with assistance from my wife - an attorney, and my brother who resided in Singapore; as I did not have money to spend lavishly on anything, including hiring any employees or office space. AdroitLogic was bootstrapped with all of my life savings, with a mortgage to pay for 16 years more, and two kids aged 8 and 6 at the time, who were schooling. The previous Christmas I made a couch, which I still use in my living room to date. But the UltraESB was not just a Christmas project. It was the work over about 5 months of intense work just to start it - a period in my life that I will always cherish.

The first backup of the source code I still have with me does not start any working ESB implementation, and was named 'LightBus'. This was written in August 2009. Writing an ESB was not the original intention I had when I decided that I should start my own company. I was inspired by a line of text from an article about my grandfathers life story, where he introduced me to the classic 'Think and Grow Rich' by Napolean Hill. As I was never a reader of books, I got the audiobook version instead, and just as a reference bought a copy of the low priced Indian edition as well.

Where I came from..

My grandfather started his life with difficulty, and as I've heard - he once didn't have money to travel to Colombo by train from his hometown Negombo, but nevertheless he got onto a train and promised to pay later. At the peak of his career as a life insurance salesman, he sold life insurance for over Rs 300,000 a month in 1954, starting with sales of about Rs 30,000 per month in 1942, becoming (as I am aware) the first Sri Lankan to become a member of the Million Dollar Round Table! I do not know how these numbers compare to the present day, but I guess its worth several hundreds of millions at the least. With the money he earned, he started a company called the Universal Metal Cork Company Ltd (UMC), which produced all of the crown corks (bottle caps) meeting the needs of Sri Lanka for a few decades. My father was employed at this company partly owned by my grandfather, as a daily paid labourer as his first job and earned Rs 3 per day from Oct 1962 till April 1963. My first job too was as an ordinary sales assistant in a store after a month since I ended my schooling, and I earned a gross salary of Rs 2,000 a month - about $15 today.

After the UMC was forced into financial difficulty by a large shareholder for a hostile takeover, it had to be wound up in 1983, resulting in my father loosing value of about 1/4 of the stock of the company, his job and the future of 4 children. My mother had to start a job as a teacher to feed and educate us. Being aware only about the manufacture of crown corks, my father had a tough time finding income to support our family, and had given up starting anything of his own, although I was waiting for that day many years of my childhood. Somehow this period of tough times affected me a lot, from when I was 8 years old, till the time I finished schooling. However, with all the hardships, I realized that without getting a proper education I would be nothing. After my schooling, I wanted to join the air force to become a pilot - but the war against separatist guerillas in the north and east of the country prevented my parents from allowing me to pursue it. It was then that I decided that I would follow my brothers footsteps to learn about computers to go abroad and earn enough to obtain a commercial pilots license privately - as my parents did not have that kind of money.

Due to these many reasons, I had lived all of my life with an aversion to risk - without being aware of it! It was Sanjiva at WSO2 who first pointed this to me, and this lead to an 'Aha moment' that would allow me to start taking risks in my life, and believing in myself more. I also learn't so much about technology, product management, pre-sales and running a company from WSO2 and Sanjiva in particular, and I am forever grateful for these lessons in life that finally connected many of the dots till then.

Selecting an idea..

Getting back to the main story, at first I tried to write supporting tools for Apache Synapse, including an Eclipse GMF based drag-and-drop style interface. I also tried to build a service simulator called Mocker, for which I still have the original code and hand written design notes. This was because I was a bit reluctant to try to write yet another ESB after contributing to Apache Synapse, and being employed at WSO2 previously for about two and a half years. However, it soon became clear to me that writing an ESB was what I've always wanted to, it was what my heart was after; and it was what I was meant to do in my life, after connecting the dots from being one of the first beta users of the BEA AquaLogic Service Bus at AOL in 2005.

"Once you make a decision, the universe conspires to make it happen" - Ralph Waldo Emerson

Once I had made the decision - there was no turning back! From the 1st of September the code was renamed UltraBus, and I have 27 zip files for each daily revision I made during this month. The ToolBox and soapbox (WS-Security) were also started around this same time. By the 2nd of October, the code was renamed the UltraESB and the daily zip files were put into a SVN repository. Unit tests and samples were written, and I was doing everything I can do to do things better. One of the most interesting things I did was to read and understand the Spring framework and how it handled transactions, so that I could tap into it to gain transactional support for the UltraESB. I spent over a week, and things were not looking as easy as I hoped, and I was tempted to give up many many times. However, the Ford determination described by Napoleon Hill, made me persist and decide that I will never give up until I got what I wanted. And soon, as if my a stroke of magic, what I was waiting for became a reality, and we still use this successfully today!

Also to make things more interesting, I wanted to experiment with ZeroCopy support of Java from Apache HttpComponents/NIO. I came up with the concept of a 'file cache' which would directly store the payload of a message read from the network interface through DMA. I wanted to minimize the dependencies, and removed all traces of binding to any SOAP framework. However, I implemented my own WS-Security implementation based on DOM, which actually performed better than the leading implementations at the time, for a subset of the features that were really used. The separation of the API from the core was one of the most important things we did early, based on suggestions and feedback from Eric Hubert, who helped me immensely with much feedback and suggestions. The most inspiring module I had ever followed in my life, the MIT 6.033, and Prof Jerry Saltzers design notes I had saved, and many of the MIT Entrepreneurial material I had collected during my visit to MIT in 2002 paid off big time, connecting the dots to where I wanted to be. I burnt all bridges behind me, staking the entire future of my family, on my ability to accomplish what I wanted.

These were the days...

These days were extremely inspiring, interesting and I was implementing code day and night at the speed of thought! The picture below shows my workspace, and when I had been seated for too long to get a back pain in one chair, I would move to the other and code. As you can see I am not in the photograph since I was the only one around to take this pic at the start of AdroitLogic. I had one laptop, one phone, one fan, one ADSL connection, one desk, one white board and one Dream! I would easily stay up till very early morning many days, and go to bed eager to wake up again and continue the rest. And there were many days that I woke up with more inspiration and ideas than when I slept.

Almost daily, I would listen to the song 'What a feeling' from Flashdance.
First when there's nothing
But a slow glowing dream
That your fear seems to hide
Deep inside your mind

Another great song that motivated me was 'The Moment of Truth' by Survivor from the film Karate Kid
Once in your life, you make a choice.. 
Ready to risk it all...
Deep in your soul, you hear a voice..
Answering to the call...
After implementing the first ESB in the world to utilize zero-copy proxying with Java NIO, I was reluctant to open source the code due to the fear of being copied. However, it was a user doing a POC for a very large US based telecom company who quite clearly stated that unless I open sourced the code, they could not consider the UltraESB. In his own words:
Open Source is their sticking point. This is a very good opportunity for you, but I suspect without open source they will pick another.
Personally I am extremely impressed with your product.  It works. Everything is very professional. Your demo is fantastic, and this system you have architected I believe to be very powerful and appropriate.
Hence on the 24th of August 2010, I open sourced the code under the AGPL license suggested earlier by Lawrence Rosen. The very first team members of AdroitLogic were three interns from the University of Colombo from March through August 2011, and the UConsole was mainly developed during this time. Working as an external consultant to a few companies in Sri Lanka, and implementing the eCivil Registry for the Government of Sri Lanka through the ICTA helped me feed my family, and save for future expansion of AdroitLogic, as I was without any revenue for over an year. However due to my childhood experiences, I had learned to master the art of thriftiness, which to-date I have used to help a few of my friends as well, to move out of financial difficulties and to do better long term.

2011 was the year that I consider as getting our first investment. Unlike for many other start-ups, our investor Eric did not invest money; but invested his trust in the capability of a tiny company to build a much better product than its much larger competitors. He took a considerable risk making this investment, as a 24x7 platform doing 60 - 80 million of transactions each day was to be soon migrated to our platform. This is the BEST customer I've ever worked with, and today, they still run the ESB nodes 24x7 without downtime, since 2011! This also allowed me to hire Ruwan Linton on the 13th of September 2011 as our first employee! Ruwan was initially instrumental in the clustering implementation based on Apache ZooKeeper, and soon took over many of the technical responsibilities allowing me to focus part of my time on running the business as well.

AdroitLogic Today

Lately we have made much progress, and gathered new and large customers and engagements, and licensed our source code last year to one of the largest companies in the world with over $400B in revenues, proving that better design and clever code yields much better software. We have always done our best to ensure that we only ship quality products out of our doors, which perform better, and are easy to use and extend by our customers and end-users. This has been the secret to our success, which made large companies seek solutions based on our technology, instead from other competing vendors.

While Ruwan leads most of the technical aspects, Amila, Malaka and Manjula have now taken over the new UConsole, AS2Gateway and the API Director, while customer projects mainly remain under myself or Ruwan. Historically, this has allowed us to built extremely strong and understanding relationships with our customers - as they speak directly to highly technical folks, who are prepared to do anything it takes for the customers to be successful in using our technology. We have many technical positions to be filled up by graduates from the University of Moratuwa by April, and some have already confirmed their aspirations. We are now expanding our office to accommodate the new hires and have interesting projects lined up for them to start doing wonders!

We consider our team to be similar to a smaller, Special Forces team; instead of a large infantry team of a regular Army. This is because our engineers would not be just developing code - but build many different capabilities such as developing great code, unit tests, performance tests, documentation and customer interactions and pre-sales etc. This is different from trying to build many products for the same customer, as IBM did in the 60's by building the HW, SW and providing the services and personnel etc. We all sit together as one team without hierarchy, and empower each one to take responsibility and do their best to take the company forward. Each would review the code and design we collectively build to help each other improve and develop further. We do not have any room for any internal politics, and both myself and Ruwan directly see and review each and every employee of our company. We do our very best to hire and retain the most capable people, with a pleasant and winning attitude, since each of us will need to depend on each other as both co-workers and friends. At the same time, we will be as transparent as possible about everything we could, so that our employees could learn and someday start their own business and take Sri Lanka to a better future.

AdroitLogic Tomorrow

After spending about half of my life on earth, my wish is that AdroitLogic will continue to grow organically and healthily. It should always be an employee and employee-family friendly company, since each of us needs to have a healthy life outside of our offices as well. We should enjoy the technical challenges our work brings us, as well as the family, friends and kids who depends on us. That's why we have always practised coming to work early and heading home early - after a day of great work. We've always kept out of the office on weekends, although I've personally had to sacrifice a good amount of my weekends and weeknights while at home, for the good of the company, and I know that many others had done the same willingly many times.

We will also help our employees genuinely, and help them do much better in their careers and their lives, than they would have been able to do at any other company. We've remained bootstrapped, profitable and successful by choice - since we believe that our efforts would be paid back handsomely once we reach our goals. This also allows us to keep our focus, and do things right without a hurry or interference of any investors who are only after making more money. During my undergraduate years, one of my professors told us not to go after money, but go after our dreams and do what we believed - and money would then come running after us. I also believe in the Stanford marshmallow experiment and long term success. So one day it will be time for me to let go of AdroitLogic. Even the kids we raise with love and affection grow up to become amazing individuals with their own lives and dreams; and so will AdroitLogic. It is my belief that everyone who've toiled to bring AdroitLogic to where it is, will then be pleasantly surprised and well rewarded. Like Stephen Hawking says when the "Theory of Everything" ends, we would look back together, and happily say, "Look what we made.."!

To God be the glory!

How can I say thanks
for the things You have done for me?
Things so undeserved,
yet You gave to prove Your love for me;
the voices of a million angels
could not express my gratitude.
All that I am and ever hope to be,
I owe it all to Thee..


LAL said...

best of all wishes to u
dearest Ba....
and may the good lord
who brought u this far
look after you....yr lovely family
with much love regards and a prayer

amindri said...

Happy Birthday AdroitLogic!!! Wish you all the best...

Anonymous said...

Great Article. Thanks for sharing.

Unknown said...

It's a wonderfully inspiring story Asankha! Didn't realize during our school days what you went through. I'm very happy to see your success!
Wishing you and your company continued success and to the achievement of your overall goals!

Best Wishes,

Charitha said...

What an inspiring story Asankha! Really happy for you and AdroitLogic family. I really admire your great vision towards producing high quality middleware. I still remember how much you concerned about each bug we uncovered in Apache Synapse or WSO2 ESB in those good old days. I also remember how you encouraged engineers to write quality code and enjoy life out side work. Wishing you all the very best!!!!

Asiri Indush said...


Anonymous said...

Wow! I’m so happy for you, Asankha! And in Jesus’ name I declare that “Surely, God’s goodness and mercy shall follow you all the days of your life”(Ps. 23:6) and “as you wait on the Lord, you shall renew your strength and mount up with wings like eagles ..”(Isaiah 40:31). Wishing you and your company God’s best, Aunty Sherine