Saturday, April 30, 2016

Mifos Live Documentation

I first used Mashery iodocs in Winter 2014 when doing a project at WhiteHat Security, Santa Clara. When I look at Mifos in the light of this experience, I realised a tool like iodocs supplies an important missing piece in the Mifos eco-system - Live Documentation. Further, I'd say this could accelerate the development of apps on top of the Apache Fineract platform and spur the project into the future. Here's a quick intro to iodocs:


The key to Technology empowered Financial Inclusion is an Open, Democratic, Helpful Community with dedicated full-time Technology Partners that can Deploy and Support solutions for MFI's with a host of applications both Web-based and Mobile. One of the keys to speedy, efficient and cost-effective Application Development is to minimize the dependency on multiple external tools which hinder Programmer Productivity.

To address this challenge, one of the proposed projects for GSOC 2016 was Live Documentation. But even before GSOC selection process started, back at the Techdays in Amsterdam, I had the opportunity to co-organize a hackathon and teamed up with Antony Omeri from OmexIT, Kenya and started the iodocs effort to supply this. On returning to base, I took out a few hours to write a Perl script that parser the source code and generates iodocs documentation for all of the Fineract API's. The script takes as input, the base folder of a Jersey REST Application and outputs a JSON formatted as per iodocs syntactic and semantic structure.

Currently, since the Fineract project is based on java Spring framework and Jersey using gradle as a build tool. The hope is for the Live Documentation to be available by July-August 2016. While it remains to be seen how the Spring docs based solution progresses, we at SanJose Solutions decided to put up our version of the Live Docs at:


Some FAQs:
1. Why did you work on this project though there was a GSOC project for the same task?

The simple answer is we didn't want to wait that long! Our own current project is dependent upon one of the recent additions to the Fineract platform and I met several other application developers at the Techdays and realized that this will benefit lots of App developers and make it much easier for people just getting started working with a REST API like Fineract.

2. Why were iodocs and Perl chosen?

The choice of software and programming language was purely practical considerations. Since Fineract code follows the Jersey framework, it is consistent and easy to get key information about the API from the @Path and the method type (GET/POST/PUT/DELETE) annotations. Having past experience with iodocs and Perl, I realized that I could quickly hack together a script in a few hours to parse and generate the documentation. Finally, it's lot more fun programming in a scripting language which excels at regexes and parsing, so Perl was the automatic choice.

3. How usable is this and are there any future improvements with this Live Documentation?

We have currently tested query functions but write operations like create (POST) and edit (PUT) are currently lacking an easy way to pass JSON in the body. We are planning to address this gap soon.

4. Since Fineract is a Java based software with gradle build tool and the core developers already have little time to maintain a Perl based solution, what about documenting future versions of the platform?

Running the script does require Perl installed on the system but it is available on all platforms. Though Linux and Mac OSX come with Perl preinstalled, on Windows its not so hard to get it (Strawberry Perl). However, the reason we think it's maintainable is because it takes a few minutes and level 0 sysadmin skills to run the script once it's setup properly. So we are happy to do this from time to time and update the above URL.

---

So if you're working on any app on the fineract platform REST API, you now can try out the API using just your browser (without a REST client). Though the official API docs has most of the necessary documentation and provides excellent details, iodocs provides a complementary function - quick accessible live documentation which you can try. So go ahead and check it out!

P.S: If it prompts you for a username and password, just hit Enter (leave the user/pass fields empty)

Tuesday, April 5, 2016

Mobile Mifos: Future of Banking

I had the opportunity and privilege a month back to talk about our latest exciting project, MifosMobil, and kMayra, which enables banking services to be delivered from mobile phones and tablets. The event was the Mifos Techdays in Amsterdam. What is more interesting is that Project Mobile Mifos is designed for remote places with zero Internet connectivity. Here's the video of the Lightning Talk:



So what we are talking about is an organization structure where several Co-operative Banks (SACCOs) are members of a SACCO Union. Each SACCO has clients, providing them Savings, Credit, Shares and Dividends. The app is for SACCO staff, SACCO officials and also Management of the SACCO Union.

The project is hosted currently on http://gitlab.com and here's where the piping hot features are pushed, though we will be updating the github repository from time to time. The App itself is built with www.ionicframework.com and to try it out, you can clone our git repository and do the following:

$ npm install -g cordova ionic
$ ionic serve

If you want to build it, you need to add the platform and run the build command:

$ ionic platform add android
$ ionic build android

The above instructions should work for Windows, Linux or Mac OSX. If you want access to our the latest updates at our repository, just hop onto our Gitter chat room and ping us or mail support AT sanjosesolutions.in .

Monday, November 16, 2015

Microsoft Open Tech and Mifos X

There being just over a month for Christmas, it's time to write about one of most rewarding Mifos X related projects, not only for SanJose Solutions but also the entire Mifos community. The second quarter of 2015 has proved to be a landmark time in our involvement in making Mifos X far more widespread and easier to install and setup as well as helping programmers and contributors to Mifos X get kick-started quickly. I recall an email I received from Paul Lor of AFSC, who had been trying, in vain to setup an instance of Mifos X on MS Azure. Like our earlier Mifos X Packaging Project last year, we agreed to nosedive into another adventure to reliably package Mifos X on multiple platforms. Like Paul, many people have been wanting to deploy Mifos X quickly and effectively but found themselves confronted with a lack of support for cloud instances, except Amazon AWS. The AWS instances were being manually updated after each release by Sangamesh Nadagoudar from Conflux Tech (fellow Mifos partner from Bengaluru).

Of the cloud service providers, Amazon has been the most popular and practical to get started with, whereas Microsoft with it's Azure offering is the tech giant's foray into the cloud space. The guys at MS Open Tech have been working on the Azure shell and ARM and to their credit, have provided the source code of the former on Github, which personally made it easier to persuade us to partner with them. I need to especially thank Ed Cable co-founder of Mifos Initative for his role in mediating and co-ordinating. And of course  Ross Gardler, Head of Microsoft Open Technologies and President of the Apache Software Foundation, who coordinated Microsoft funding in an effort which has changed the way Mifos X is deployed and in the future should even change the way it is developed.

Though my personal preference for the Desktop / Laptop and Server is and has been linux, many of the partners in India and Africa are known for their preference and comfort using MS Windows and so are many of the Government departments. From a business perspective, we at SanJose Solutions do understand the importance of these people and cloud is the big leveller today with interoperability being the mantra. By simplifying the Mifos installation process and the ease of install and deployment, we have seen a manifold growth in new partners and demand for Mifos services and customizations around the world.


Monday, May 25, 2015

1st Anniversary of SanJose Solutions

This is the day the Lord has made. Let us rejoice and be glad in it - Psalm 118:24

Today, we celebrate the first anniversary of SanJose Solutions, a day to thank God and many well wishers who've been instrumental in realizing this dream. In the past year, we've had some amazing highlights and special memories. We started with optimism, strong faith and burning desire to make an impact. Add to that the determination and persistence to learn and grow and challenge our limits and I'd say those have been our biggest assets. I recall the early stages - the excitement and effort and initial projects. As time has passed and we complete a year, we've found ourselves with a lot to be happy about and lots of work remaining to be done. I've realized that, looking back I can truly say that though I'm challenged in living and working for a greater mission and facing the human challenges that come with it, this is what gives me great fulfilment and satisfaction.

This occasion marks a special milestone for me personally. Living in Bangalore all these years, with it's globally renowned IT industry, software giants and multi-national companies, in one such place I started my career 11 years back, yet realized what I was looking for was more. Building great software was always my desire and it was about growing in my competency to build each software better than the last one that has been a great motivating factor. I realized early in my career that learning is the key to unlock my future dreams. To top it all, I needed a higher purpose which synchronises with my own personal mission to make a difference in the world.

Our nosedive into Mifos X has been greatly satisfying because it brought us in touch with some amazing organizations and their work and the awesome Mifos community. The Mifos Initiative, especially Ed Cable, has been a great supporter in our mission. The Mifos X Messenger and the Debian package for quick installation of Mifos X were some highlights in our contribution in this area, contributions well appreciated by the community, especially based on the feedback at the global summit at Dubai this past March.

Thursday, April 2, 2015

Special Day for SanJose Solutions

Today is a special day because on this day Lord Jesus set the perfect example of humility washing the feet of his disciples. Jesus also gave the mandate "Love one another as I have loved you". Here was a man, who at the consummation of a life which amazed his contemporaries, as reports the Gospel of Mark, gives perhaps his most important teaching and commandment. This is why today is called Maundy Thursday because of Jesus mandate to love one another. Born in a manger and having no place to lay his head, he showed the way of compassion,  mercy and love. Jesus said of his mission
The Spirit of the Lord is upon me,
and he has anointed me to bring good news to the poor,
proclaim freedom to the captives, 
and recovery of sight to the blind
Jesus clearly saw and identified himself with the poor both through his words and actions. It was last May end that I started SanJose Solutions with the aim of serving the Church and Society with quality technology solutions. It has been and continues to be an incredible journey with ups and downs, both of which have blessed and helped us. Through it all we have experienced the sure hand of Providence in a special way during these past months. Many of the things we have hoped and prayed for have become a reality and other things which we didn't plan or expect but have received in abundance more than we could imagine.

There is no doubt that we at SanJose Solutions draw great strength from Christ's life in our mission to serve the poor, working along with other Mifos partners, towards our dream of universal financial inclusion. Mother Teresa of Calcutta said "when I see the poor, I see in them the face of Christ". Jesus said whatsoever you do to the least of my people you do so to me. This is what makes our work for us more than any regular job. It becomes for a mission that is close to our hearts.

However, it is not enough to dream - we must also apply. I had attended a Social Entrepreneurship Course at Bala Vikasa in Warangal, Andhra Pradesh last year during which I also conducted a session on technology for Social Entrepreneurs. It was amazing discovering the power of Entrepreneurship. It is interesting how industry and social work can benefit from each other. The recent episode of NDTV Dialgues last Sunday featured an expert panel including Nobel Laureate Prof. Mohammad Yunus talking about Financial Inclusion for the Poor in India. It is heartening to see several positive thoughts about how we can enable the dreams of millions of people across the country through Microfinance and how business practices and knowledge can be utilized to carve a new economy where there is inclusive growth of all sections of society and the gap between the rich and poor can be reduced. Our vision is to build a sustainable Social Enterprise which can continue providing the services we have started out with to many more organizations and for a long time to come. Today we have seen organizations which have done this and we know we have the tools and the means to make this a reality.

Today is also a special day for me because it is my birthday. SanJose Solutions for me personally has been an amazing journey finding great satisfaction in fulfilling my dreams and my heart's desires. During last year's Social Entrepreneurship course I learned that the major source of India's GDP is Entrepreneurs. Prof. Yunus said during the programme that human beings are born to create, to invent. We have been looking at the corporate sector to provide jobs, but human beings can create their own jobs, we are born entrepreneurs. We at SanJose Solutions dream and don't stop at that. We build bridges between our present and our dreams, and we move forward towards realizing them and the dreams of others. For me especially the latter has been a strong motivator in my work and mission. My dream is to build wealth, but not really for myself but for many poor across the world. My dream is for many people of today to have sufficient to ease their suffering and provide for their old age. It is for children who have talent but lack education, facilities and opportunities can find a way to realize and enable the dreams of others too. My dream is to continue this virtuous cycle of making a difference through technology and transform my country, and the world.

I returned from the U.A.E last month after meeting members of the Mifos community from across the world. Over 80 people from more than 20 countries came together and it was my first summit in Sharjah, the confluence of East and West. We had a series of sessions on technical, financial, business and management topics and a lot of meetings and community interactions and not to mention fun as well. I was invited as a guest speaker to conduct a couple of technical sessions. The first was a session on Mifos X Messenger, an application to send automated SMS to a client even numbers on Indias notoriously hard to send Do-not-disturb lists. The second session was targeted at partners who need a quick was to demo Mifos X or setup a production instance of it on a linux server. The summit concluded with a hackathon which was the first time it was scheduled as part of a summit and I'd say it proved to be something a lot of technologists enjoyed and hope to see continue and increase in future summits.

It is with great faith and confidence that we look at the future seeing the promised land where the least fortunate have future and a hope. We believe that together we can shape a new world. In the midst of suffering and an unjust world, we believe in making the kingdom of God, a heaven on earth. Though this is not our final destination, we know we are here for a reason to do a work, a mission with the time that we have. We know that we are both human and also spiritual created by God Almighty and called to be holy. We offer to the Lord our gifts seeking his blessing, knowing that only through his grace and strength does everything good come. And we look forward to continuing to run this race and fight this good fight and leave no stone unturned in marching forward on our mission. And may the Lord Almighty bless us and see us to our journey's end.

Tuesday, March 10, 2015

Mifos X Messenger Installation

Mifos X Messenger, the SMS Messaging System which sends SMS messages at different points in the Mifos X workflow can be installed by following these steps. I've tested out these steps for Debian / Ubuntu and it should be similar for Mac OSX, plus we've also been able to install on Windows, where step 1 is not applicable, but other steps are similar:

1. Install ruby version manager rvm see https://rvm.io/rvm/install:

    \curl -sSL https://get.rvm.io | bash -s stable --rails

2. Download messenger source code:

      git clone https://github.com/SanjoseSolutions/mifosx-messenger.git

3. Install dependencies

   bundle install

4. Configure mifosx-messenger

   setup config.yml

5.  Run messenger

   ruby app.rb

6. Setup Mifos X Webhooks to connect with MifosX Messenger

  In Mifos X go to Admin > System > Manage Hooks
  Click "Create Hook"
  Hook Template: Web

  Active: checked
  Content Type: json
  Payload URL: http://localhost:3000
  Events: transactions_loan : LOAN : REPAYMENT
                transactions_savings: SAVINGSACCOUNT: WITHDRAWAL 
                transactions_savings: SAVINGSACCOUNT: DEPOSIT

More details, video coming soon

Wednesday, October 22, 2014

Quickly Install Mifos X 1.25 on Debian/Ubuntu

I'm pleased to announce that Mifos X version 1.25, the world's leading platform for financial inclusion now can be installed automatically in minutes on Debian/Ubuntu or any similar distribution, using a deb package. I recently packaged Mifos X 1.25 into a Debian package and also setup a Debian repository for the same to facilitate this quick installation. For the impatient, jump straight to the section "Installing Mifos X 1.25 on Debian/Ubuntu". If you're still with me, read on for the back story..

This contribution came as a result of a recurring itch which I've been feeling for a long time now. This summer, I first tried to install the new Mifos X platform. At that time, I was new to Amazon Web Services and since I have a VPS with ample resources, plus a few Virtual Machines my preferred mode was manual installation on Ubuntu/Debian server. Following the steps in INSTALL.md and after the couple of hiccups, got it working on a Ubuntu VM and then installed an online demo on my Debian VPS. Over the months and weeks that followed, I often thought about improving this installation process and also found others on the mailing list facing problems getting stuck at some stage of manual installation. On a couple of Mifos users meetups Ed from the Mifos Initiative a lot of people run Mifos from Debian and Ubuntu though they did not have any concrete statistics on this. So finally I decided to answer this need and build the package and repository.

Mifos X is the world's leading Platform for Financial Inclusion with a great community, awesome architecture and cutting edge technology. Mifos X has always been available as Open Source and the repository is hosted on github.com and stable releases are available on sourceforge.net. Despite Mifos X availability, there was always the challenge of following the entire process documented in the INSTALL document. This process involves several steps:

  1. Installing Tomcat7
  2. Installing MySQL Server
  3. Installing JDK (via the OpenJDK 7 package on Debian/Ubuntu)
  4. Downloading and extracting the Mifos X release zip file
  5. Setting up and initializing the mifosplatform-tenants database
  6. Setting up and initializing the mifostenant-default database
  7. Creating a keystore with SSL private & public key pair
  8. Configuring Tomcat server.xml
  9. Dropping the mifosng-provider.war into the tomcat webapps directory
  10. Copying the community-app and api-docs folders into webapps/ROOT

After following all these steps there were a couple of issues I faced. First the MySQL root password had to be mysql. If it was something else, it wouldn't work. Second, the recent Mifos X releases require the use of JDK 7 but the default setting for Tomcat is to use JDK 6, so the /etc/default/tomcat7 needs to be modified to use JDK 7. Then, with the recent release, there was also the increase in memory requirement for Tomcat which needed to be configured in /etc/default/tomcat7. Apart from doing the steps mentioned above, I also ensured the deb package installation takes care of the above caveats, so now this installation process takes care of everything and gives you a working Mifos X setup with the provider app in the backend and the community app running on Tomcat.

Installing Mifos X 1.25 on Debian/Ubuntu

To install Mifos X 1.25 on Debian simply run these lines as root:
# echo deb http://mifos.sanjosesolutions.in stable main > /etc/apt/sources.list.d/mifosx.list
# apt-get update
# apt-get install mifosx
For Ubuntu, the steps are:
$ echo deb http://mifos.sanjosesolutions.in stable main |
                  sudo tee /etc/apt/sources.list.d/mifosx.list
$ sudo apt-get update
$ sudo apt-get install mifosx
That's it! You'll be prompted for the MySQL root password, which is used to create the 2 databases, and the username and password of the account to access Mifos. You'll also be asked for information to generate the SSL keys since Mifos X community Application runs on HTTPS (HTTP over SSL). It is our hope that many more people will be able to get started quickly with MifosX through this effort. Spread the word and join us in the fight against poverty.

Report your experiences to the Mifos X mailing list mifos-users@lists.sourceforge.net
Check out the github repo at https://github.com/SanjoseSolutions/mifosx-packager
Send feedback to terence@sanjosesolutions.in

UPDATE: Here's a YouTube screencast of the live installation process: