osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discussion] Fineract CN SMS & Email Notifications Project


Hello everyone,

I have managed to get my VM up and running. A big thank you to Isaac,
Yannick and Victor for the constant support.

I am now incorporating the notification service into the demo-server
however, I keep getting this error. https://pastebin.com/LW6CUwJ3

NB: I have made a build of the notification microservice and
publishToMavenLocal. I have also added the dependency to the build.gradle
file in the demo server.

I believe this issue has to do with locating the notification artefacts in
the .m2.

*Best Regards,*

*Ebenezer Graham*

*BSc (Hons) Computing*


[image: EmailSignature.png]

Beau Plan Business Park | West Building

Pamplemousses |  Mauritius


<http://www.pactmart.com/>
​​ <http://www.pactmart.com/>
www.pactmart.com | Freelancing made easy.
GitHub <https://github.com/ebenezergraham> | LinkedIn
<https://www.linkedin.com/in/ebenezer-graham/> | Twitter
<https://twitter.com/pactmart> | Facebook
<https://www.facebook.com/pactmart> | Website
<http://ebenezergraham.github.io/>
​
*skype*:
​ebenezer.graham
​ | *Phone*:
+230 5840 9206


*“Practice isn’t the thing you do once you’re good. It’s the thing you do
that makes you good.”*
-*Malcolm Gladwell*



On 6 June 2018 at 13:13, Awasum Yannick <awasum@xxxxxxxxxx> wrote:

> ​Hi Graham,
>
> Delete your /tmp/* directory. Shutdown MySQL and Cassandra if you are not
> using persistence.
>
> ​If you run with peristent=true, make sure to delete the seshat and
> playground DBs in both MySQL and Cassandra before next run.
>
> Try to run the system without your changes. When that is successful you can
> start your integration.
>
>
> On Fri, Jun 1, 2018 at 1:17 PM, Ebenezer Graham <egraham15@xxxxxxxxxxxxxx>
> wrote:
>
> > Hello Everyone,
> >
> > I have been studying my logs carefully and noticed this error occurring
> > long before the failure message
> >
> > https://pastebin.com/9237iFaR
> >
> > Please let me know how I can resolve this.
> >
> > *Best Regards,*
> >
> > *Ebenezer Graham*
> >
> > *BSc (Hons) Computing*
> >
> >
> > [image: EmailSignature.png]
> >
> > Beau Plan Business Park | West Building
> >
> > Pamplemousses |  Mauritius
> >
> >
> > <http://www.pactmart.com/>
> > ​​ <http://www.pactmart.com/>
> > www.pactmart.com | Freelancing made easy.
> > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > <https://twitter.com/pactmart> | Facebook
> > <https://www.facebook.com/pactmart> | Website
> > <http://ebenezergraham.github.io/>
> > ​
> > *skype*:
> > ​ebenezer.graham
> > ​ | *Phone*:
> > +230 5840 9206
> >
> >
> > *“Practice isn’t the thing you do once you’re good. It’s the thing you do
> > that makes you good.”*
> > -*Malcolm Gladwell*
> >
> >
> >
> > On 31 May 2018 at 13:19, Ebenezer Graham <egraham15@xxxxxxxxxxxxxx>
> wrote:
> >
> > > Hello Yannick,
> > >
> > > Thanks for your email. I will limit my scope for now and gradually make
> > > progress with the entire scope.
> > >
> > > Thanks for the archive email. It was very insightful, I will focus on
> the
> > > customer and portfolio service for now and then we can include others
> > > later.
> > >
> > > The target audience includes all MFI member (Customers and Staff).
> > > However, the customers are my priority for now. I will focus on your
> > > suggested events and code their logic for testing.
> > >
> > > I will share a set of use cases for the entire system and all MFI
> members
> > > so that we can eliminate and add some use cases for both customers and
> > > staff.
> > >
> > > I have written minimum code for SMS and so I will further develop the
> > > classes in this scope and ensure that I am processing live notification
> > for
> > > the SMS. Please note that I am working on the *increment- one branch*
> of
> > > the repository so checks that out when looking at the repository.
> > >
> > > I have set up another VM (C2L) on Scaleway following my mentor's and
> > > Yannick's advise.
> > >
> > > In summary, it has 30GB RAM, 8 cores and running on Ubuntu 16.04 LTS.
> > >
> > > I have also installed, JDK 8, git, MySQL 5.7, Gradle 4.5, Maven 3.3.9,
> > > Cassandra 3.11, the latest Nginx, Nodejs, and NPM
> > >
> > > NB: I am using the root account.
> > >
> > > After the installation, I used option A and got a Cassandra error. I
> used
> > > option B and managed to get the build to run for over 30 mins. but I
> got
> > > this error https://pastebin.com/0rVWCpgD
> > >
> > > I restarted the server and tried again with option B and got an error
> > with
> > > the Cassandra. After troubleshooting with nodetool status I got this
> > error:
> > >
> > > nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException:
> > > 'Connection refused (Connection refused)'.
> > >
> > > I followed this guide
> > > <https://www.liquidweb.com/kb/error-failed-to-connect-to-
> > 127-0-0-17199-connection-refused-cassandra-solved/> to
> > > modify my Cassandra-env.sh and this allowed me to connect to the
> > > Cassandra after that. Please let me know if I should revert to the
> > original.
> > >
> > > Currently, I have run the build several times and this is the error
> log I
> > > am getting -  https://pastebin.com/YQnLVMFQ
> > > <https://www.google.com/url?q=https://pastebin.com/YQnLVMFQ&;
> > sa=D&source=hangouts&ust=1527816499142000&usg=AFQjCNF503CCHSobASiks1_
> > RBMazyPT61Q>.
> > > I think it has something to do with the identity service.
> > >
> > > Looking forward to your suggestions.
> > >
> > > *Best Regards,*
> > >
> > > *Ebenezer Graham*
> > >
> > > *BSc (Hons) Computing*
> > >
> > >
> > > [image: EmailSignature.png]
> > >
> > > Beau Plan Business Park | West Building
> > >
> > > Pamplemousses |  Mauritius
> > >
> > >
> > > <http://www.pactmart.com/>
> > > ​​ <http://www.pactmart.com/>
> > > www.pactmart.com | Freelancing made easy.
> > > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > > <https://twitter.com/pactmart> | Facebook
> > > <https://www.facebook.com/pactmart> | Website
> > > <http://ebenezergraham.github.io/>
> > > ​
> > > *skype*:
> > > ​ebenezer.graham
> > > ​ | *Phone*:
> > > +230 5840 9206
> > >
> > >
> > > *“Practice isn’t the thing you do once you’re good. It’s the thing you
> do
> > > that makes you good.”*
> > > -*Malcolm Gladwell*
> > >
> > >
> > >
> > > On 30 May 2018 at 14:16, Awasum Yannick <awasum@xxxxxxxxxx> wrote:
> > >
> > >> Hello Graham,
> > >>
> > >> What is the target audience for your project? Are the SMSs being sent
> > out
> > >> to Customers or to Employees? I think we should serve the customer
> first
> > >> as
> > >> updating them on the state of their account is of highest priority to
> > me.
> > >> If to Customers, I see no need to do accounting listener except there
> > is a
> > >> use case I have not seen.
> > >>
> > >> I suggest you reduce the scope of project for this month(June) and do
> > the
> > >> following:
> > >>
> > >> 1.) Support SMS notifications only to show proof of concept. Once this
> > is
> > >> done, we will move to email notification. SMS is more ubiquitous in
> the
> > >> developing world given we are doing financial inclusion and most of
> the
> > >> customers are in our continent. Look around you, everyone has a GSM
> > >> enabled
> > >> phone. Larger addressable market for your project to make a major
> > impact.
> > >> I
> > >> guess this is one of the reasons you got into open source as this was
> > also
> > >> my motivation...Max Impact.
> > >>
> > >> 2.) Support CreateCustomer, ActivateCustomer in the customer service.
> > >> Support Loan Account Creation within the portfolio service along with
> > Loan
> > >> Disbursement and Loan Repayment. Also support Deposit(Checking,
> Savings
> > >> and
> > >> Share) account creation and their corresponding Cash in (Deposit),
> Cash
> > >> out
> > >> (Withdrawal) events and send out notifications using the customer's
> > mobile
> > >> number. No scheduling or retry for now. Assume the system is always up
> > and
> > >> test these happy cases. We will deal with failures in the next
> > iteration.
> > >>
> > >> 3.) Forget about GCM for now, it makes no sense considering this when
> > you
> > >> have not even sent out one normal email or SMS to the a single
> customer.
> > >> *Don't
> > >> abstract what you don't fully understand. Premature Optimization is a
> > >> disease. *We can handle this later when basic use cases have been
> > >> completed. Dont think too much about performance at the moment except
> > you
> > >> have the experience, It will come with time. Else you will spend alot
> of
> > >> time just wrapping your head around something beyond your scope. Start
> > >> small and grow gradually into it.
> > >>
> > >> 4.) Forget about additional queuing after receiving an event from
> > >> ActiveMQ.
> > >> Assume there is a fictional Ops team responsible for reliability for
> > now.
> > >> In addition, when this system is in production, multiple instances of
> > >> Services will be running and this reduces the chances of an event not
> > been
> > >> processes or picked up by your notification service. For the cases
> where
> > >> we
> > >> begin to see failures in prod, we will tackle this problem separately.
> > >>
> > >> 5.) Sample Implementation approach as proposed by Markus few months
> ago:
> > >> https://lists.apache.org/thread.html/95cfb78c48d56dc5756089f
> > >> 837406f4d9e96fd5899ad6cc52eb60623@%3Cdev.fineract.apache.org%3E
> > >> This is also the approach Isaac used for the Webinar on SMS Alert
> > >> available
> > >> on youtube. Follow them.
> > >>
> > >> 6.) For storing SMS Provider Auth Keys, Please use configuration files
> > for
> > >> now but if you can extend the database and store the keys, please do
> > that.
> > >> Dont store events, process them in real time. Dont schedule SMSs for
> > now.
> > >> Dont retry.
> > >>
> > >> 7.) Get a baremetal on the Cloud and Run Demo Server and setup a
> sample
> > >> MFI
> > >> using fims to get a feel of the platform and create some sample data
> for
> > >> yourself.
> > >>
> > >> 8. I said run demo server mutiple times a day.
> > >>
> > >> 9. Make changes and run demo server atleast 10 times a day so you
> > >> understand the ins and outs of the system.
> > >>
> > >> If anyone has never ran demo server and is working on Fineract CN.
> > Please
> > >> stop and go run it and keep asking questions if you dont understand
> some
> > >> aspects of the platform.
> > >>
> > >> These are all proposals and my own recommendations. Feedback,
> > Corrections
> > >> and Comments are welcome.
> > >>
> > >> GSoC interns and other volunteers, keep the questions coming, they
> will
> > >> eventually get answers. Use the public dev mailing list. Even when am
> > >> unable to answer, there are more experience people on this list who
> will
> > >> help you. They are very  busy so be patient and we will get this
> system
> > >> shipped in a few months.
> > >>
> > >> Thank.
> > >> Awasum Yannick
> > >>
> > >>
> > >>
> > >> On Sun, May 27, 2018 at 11:40 PM, Ebenezer Graham <
> > >> egraham15@xxxxxxxxxxxxxx>
> > >> wrote:
> > >>
> > >> > ​​
> > >> > Hello Yannick,
> > >> >
> > >> > Thanks for your email. Yes, SMS and Emails will be sent out for
> events
> > >> > occurring in the accounting microservice. The tentative events
> > >> shortlisted
> > >> > for consideration are  onCreateAccount, onChangeAccount,
> > onCloseAccount,
> > >> >  onLockAccount, onUnlockAccount, onReopenAccount, onDeleteAccount.
> > >> >
> > >> > The scope of this project is to develop the notification
> microservice
> > >> and
> > >> > incorporate it into the demo-server. Secondly, develop an interface
> > for
> > >> the
> > >> > notification service in the fims-web-app which will allow
> > configuration
> > >> of
> > >> > the service i.e flexibility to select permitted notifications, the
> > >> default
> > >> > messages for each notification and the configurations for the Email
> > and
> > >> SMS
> > >> > gateways. My milestone for this month is to accomplish the first
> scope
> > >> and
> > >> > successfully trigger at least one event from each microservice and
> > >> > receive an Email or SMS on the other end.
> > >> >
> > >> > Additional scope under discussion is the Google Cloud Messaging
> > >> > notification integration for the mobile app. I have dug up some of
> the
> > >> > previous emails on GCM and currently reading on what needs to be
> done.
> > >> > Anyone who was involved in the GCM discussion should please forward
> > >> some fo
> > >> > the treads to me.
> > >> >
> > >> > About the libraries, I am using spring boot's JavaMail library
> > >> > <http://www.baeldung.com/spring-email> for emails and the Twilio
> SDK
> > >> for
> > >> > SMS. I have written minimum code for both and working on running my
> > >> > demo-server to test them. For now, this is the libraries I have
> chosen
> > >> to
> > >> > work with.
> > >> >
> > >> > About the services, the idea is to create both SMS and Email
> > >> > functionalities in the same notification microservice. I have
> defined
> > >> the
> > >> > Email and SMS Sender classes and defined a Bean for the
> JavaMailSender
> > >> to
> > >> > connect to google's mail server. This will be fleshed out once I
> have
> > >> > tested the notification service in the demo-server.
> > >> >
> > >> > Also, I haven't been able to successfully login to see the structure
> > of
> > >> > Fineract CN. HIs has affected how the wireframe looks. I am actively
> > >> > working on resolving this as I write this mail. My mentor has
> > suggested
> > >> a
> > >> > way to resolve this issue and I have Victor helping me to fix my GCP
> > as
> > >> we
> > >> > speak. So I will definitely have a successful build in a matter of
> > days.
> > >> >
> > >> > Once I have an idea of the look and feel I will incorporate the look
> > >> into
> > >> > the design. The UI comes later so the look and functionality will
> > >> evolve as
> > >> > we discuss it. All the same, the UI will typically have an interface
> > to
> > >> > configure the Email and SMS gateways for each MFI on the platform, a
> > >> > section to define custom email/SMS templates and a section to enable
> > and
> > >> > select the frequency of notifications retries.
> > >> >
> > >> > For now, the use case I am considering is instant notification via
> > Email
> > >> > and SMS given that the recipient has opted for both. I will work on
> > >> > scheduled notification use cases when I have achieved my milestone
> for
> > >> the
> > >> > first month.
> > >> >
> > >> > For the phases, the first is the notification services itself,
> > secondly,
> > >> > incorporate the service into the demo server, and then move on to
> the
> > >> UI.
> > >> > Finally, iterate through the previous phases. I am currently
> > >> implementing
> > >> > the first and second scope.
> > >> >
> > >> > Phases of the notification service itself include creating JMS
> > listeners
> > >> > for each microservice, I am still coding the logic for each
> listener.
> > I
> > >> > believe this will happen throughout the lifetime of this project.
> Next
> > >> is
> > >> > the notification models, and the Sender classes.
> > >> >
> > >> > PS: I am currently coding the notification models after the event
> > >> > listeners. The basic idea was to create a notification object from
> > each
> > >> > event generated. It will then be queued and singleton Sender class
> > will
> > >> pop
> > >> > the queue and forward them to the relevant recipients. Please share
> > your
> > >> > thoughts on the impact on performance and what to consider in other
> to
> > >> > improve the efficiency of the system.
> > >> >
> > >> > Also, I am currently thinking of the stage at which localization and
> > >> > templating of the messages should be done for the emails. For now, I
> > am
> > >> > skewed towards what I have in the proposal.
> > >> >
> > >> > * At your service*
> > >> > *,*
> > >> >
> > >> > *Ebenezer Graham*
> > >> >
> > >> > *BSc (Hons) Computing*
> > >> >
> > >> >
> > >> > [image: EmailSignature.png]
> > >> >
> > >> > Beau Plan Business Park | West Building
> > >> >
> > >> > Pamplemousses |  Mauritius
> > >> >
> > >> >
> > >> > <http://www.pactmart.com/>
> > >> > <http://www.pactmart.com/>
> > >> > www.pactmart.com | Freelancing made easy.
> > >> > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > >> > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > >> > <https://twitter.com/pactmart> | Facebook
> > >> > <https://www.facebook.com/pactmart> | Website
> > >> > <http://ebenezergraham.github.io/>
> > >> > ​
> > >> > *skype*:
> > >> > ​ebenezer.graham
> > >> > ​ | *Phone*:
> > >> > +230 5840 9206
> > >> >
> > >> >
> > >> > *“Practice isn’t the thing you do once you’re good. It’s the thing
> you
> > >> do
> > >> > that makes you good.”*
> > >> > -*Malcolm Gladwell*
> > >> >
> > >> >
> > >> >
> > >> > On 27 May 2018 at 14:36, Awasum Yannick <yannickawasum@xxxxxxxxx>
> > >> wrote:
> > >> >
> > >> > > Thanks you Graham,
> > >> > >
> > >> > > Are you going to be sending SMS or emails for accounting events??
> > >> > >
> > >> > > What's the scope and phases of the project? Will you do SMS and
> > email
> > >> > > within the same service? Which of them will you do first? Have you
> > >> > decided
> > >> > > on an SMS or email library or provider?
> > >> > >
> > >> > > Have you ran fineract cn and seen the fims web app and the way the
> > ui
> > >> > looks
> > >> > > so as to know how your wireframe will fit into it??
> > >> > >
> > >> > > Please try to think about these and let's all discuss on this
> thread
> > >> > about
> > >> > > how the notification should look like. I also think we should
> start
> > >> with
> > >> > > very simple uses cases and start with one service, SMS or
> > email..then
> > >> we
> > >> > > can incrementally add others.
> > >> > >
> > >> > > What do you all think??
> > >> > >
> > >> > > On Fri, May 18, 2018, 23:41 Ebenezer Graham <
> > egraham15@xxxxxxxxxxxxxx
> > >> >
> > >> > > wrote:
> > >> > >
> > >> > > > I have updated the cwiki page
> > >> > > > <https://cwiki.apache.org/confluence/pages/viewpage.action?
> > >> > > pageId=75975771
> > >> > > > >
> > >> > > >
> > >> > > > *Best Regards,*
> > >> > > >
> > >> > > > *Ebenezer Graham*
> > >> > > >
> > >> > > > *BSc (Hons) Computing*
> > >> > > >
> > >> > > >
> > >> > > > [image: EmailSignature.png]
> > >> > > >
> > >> > > > Beau Plan Business Park | West Building
> > >> > > >
> > >> > > > Pamplemousses |  Mauritius
> > >> > > >
> > >> > > >
> > >> > > > <http://www.pactmart.com/>
> > >> > > > ​​ <http://www.pactmart.com/>
> > >> > > > www.pactmart.com | Freelancing made easy.
> > >> > > > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > >> > > > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > >> > > > <https://twitter.com/pactmart> | Facebook
> > >> > > > <https://www.facebook.com/pactmart> | Website
> > >> > > > <http://ebenezergraham.github.io/>
> > >> > > > ​
> > >> > > > *skype*:
> > >> > > > ​ebenezer.graham
> > >> > > > ​ | *Phone*:
> > >> > > > +230 5840 9206
> > >> > > >
> > >> > > >
> > >> > > > *“Practice isn’t the thing you do once you’re good. It’s the
> thing
> > >> you
> > >> > do
> > >> > > > that makes you good.”*
> > >> > > > -*Malcolm Gladwell*
> > >> > > >
> > >> > > >
> > >> > > >
> > >> > > > On 19 May 2018 at 01:47, Ebenezer Graham <
> > egraham15@xxxxxxxxxxxxxx>
> > >> > > wrote:
> > >> > > >
> > >> > > > > ​Sure I will do that.​
> > >> > > > >
> > >> > > > > *Best Regards,*
> > >> > > > >
> > >> > > > > *Ebenezer Graham*
> > >> > > > >
> > >> > > > > *BSc (Hons) Computing*
> > >> > > > >
> > >> > > > >
> > >> > > > > [image: EmailSignature.png]
> > >> > > > >
> > >> > > > > Beau Plan Business Park | West Building
> > >> > > > >
> > >> > > > > Pamplemousses |  Mauritius
> > >> > > > >
> > >> > > > >
> > >> > > > > <http://www.pactmart.com/>
> > >> > > > > ​​ <http://www.pactmart.com/>
> > >> > > > > www.pactmart.com | Freelancing made easy.
> > >> > > > > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > >> > > > > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > >> > > > > <https://twitter.com/pactmart> | Facebook
> > >> > > > > <https://www.facebook.com/pactmart> | Website
> > >> > > > > <http://ebenezergraham.github.io/>
> > >> > > > > ​
> > >> > > > > *skype*:
> > >> > > > > ​ebenezer.graham
> > >> > > > > ​ | *Phone*:
> > >> > > > > +230 5840 9206
> > >> > > > >
> > >> > > > >
> > >> > > > > *“Practice isn’t the thing you do once you’re good. It’s the
> > thing
> > >> > you
> > >> > > do
> > >> > > > > that makes you good.”*
> > >> > > > > -*Malcolm Gladwell*
> > >> > > > >
> > >> > > > >
> > >> > > > >
> > >> > > > > On 19 May 2018 at 01:28, Awasum Yannick <awasum@xxxxxxxxxx>
> > >> wrote:
> > >> > > > >
> > >> > > > >> Hello Graham,
> > >> > > > >>
> > >> > > > >> Please paste the contents of that document into your
> confluence
> > >> > page.
> > >> > > I
> > >> > > > >> think here is the wiki you have been using:
> > >> > > > >>
> > >> > > > https://cwiki.apache.org/confluence/pages/viewpage.action?
> > >> > > pageId=75975771
> > >> > > > >>
> > >> > > > >> For Fineract, Proposals and designs are documented on
> > Confluence
> > >> not
> > >> > > > >> Google
> > >> > > > >> Docs. That way there is more transparency and accessibility.
> > Good
> > >> > > thing
> > >> > > > is
> > >> > > > >> that Confluence is version controlled.
> > >> > > > >>
> > >> > > > >>
> > >> > > > >> Thanks.
> > >> > > > >> Awasum
> > >> > > > >>
> > >> > > > >> On Fri, May 18, 2018 at 9:41 PM, Ebenezer Graham <
> > >> > > > >> egraham15@xxxxxxxxxxxxxx>
> > >> > > > >> wrote:
> > >> > > > >>
> > >> > > > >> > Hi everyone,
> > >> > > > >> >
> > >> > > > >> > I am Ebenezer a student from the African Leadership
> > University
> > >> > and I
> > >> > > > >> will
> > >> > > > >> > be working on this project under the mentorship of Isaac
> > Kamga.
> > >> > > > >> >
> > >> > > > >> > The idea is to use this thread to discuss the decisions
> being
> > >> made
> > >> > > on
> > >> > > > >> this
> > >> > > > >> > project so that the community has visibility on what's
> > >> happening
> > >> > and
> > >> > > > >> most
> > >> > > > >> > importantly give constructive feedback.
> > >> > > > >> >
> > >> > > > >> > *EventListeners:*
> > >> > > > >> > This is the Doc
> > >> > > > >> > <https://docs.google.com/document/d/
> > >> > 1kme5qrxOrO0WGUEvNgzv5XVkgWtpg
> > >> > > > >> > 0lbX-CrBH4js7o/edit?usp=sharing>
> > >> > > > >> > containing the shortlisted events which I believe qualify
> for
> > >> an
> > >> > > Email
> > >> > > > >> or
> > >> > > > >> > SMS notification. Please review and comment on the doc
> > >> suggesting
> > >> > > any
> > >> > > > >> > addition or deletion or related feedback.
> > >> > > > >> >
> > >> > > > >> > *UI for the service:*
> > >> > > > >> > This is a link <https://wireframe.cc/pro/pp/
> 5fb6b2e61167290>
> > >> to
> > >> > the
> > >> > > > >> > wireframes for the UI of the service. Please give pointers
> on
> > >> what
> > >> > > > >> could be
> > >> > > > >> > added and what should be taken out.
> > >> > > > >> >
> > >> > > > >> >
> > >> > > > >> > *​At your service*
> > >> > > > >> > *,*
> > >> > > > >> >
> > >> > > > >> > *Ebenezer Graham*
> > >> > > > >> >
> > >> > > > >> > *BSc (Hons) Computing*
> > >> > > > >> >
> > >> > > > >> >
> > >> > > > >> > [image: EmailSignature.png]
> > >> > > > >> >
> > >> > > > >> > Beau Plan Business Park | West Building
> > >> > > > >> >
> > >> > > > >> > Pamplemousses |  Mauritius
> > >> > > > >> >
> > >> > > > >> >
> > >> > > > >> > <http://www.pactmart.com/>
> > >> > > > >> > <http://www.pactmart.com/>
> > >> > > > >> > www.pactmart.com | Freelancing made easy.
> > >> > > > >> > GitHub <https://github.com/ebenezergraham> | LinkedIn
> > >> > > > >> > <https://www.linkedin.com/in/ebenezer-graham/> | Twitter
> > >> > > > >> > <https://twitter.com/pactmart> | Facebook
> > >> > > > >> > <https://www.facebook.com/pactmart> | Website
> > >> > > > >> > <http://ebenezergraham.github.io/>
> > >> > > > >> > ​
> > >> > > > >> > *skype*:
> > >> > > > >> > ​ebenezer.graham
> > >> > > > >> > ​ | *Phone*:
> > >> > > > >> > +230 5840 9206
> > >> > > > >> >
> > >> > > > >> >
> > >> > > > >> > *“Practice isn’t the thing you do once you’re good. It’s
> the
> > >> thing
> > >> > > you
> > >> > > > >> do
> > >> > > > >> > that makes you good.”*
> > >> > > > >> > -*Malcolm Gladwell*
> > >> > > > >> >
> > >> > > > >>
> > >> > > > >
> > >> > > > >
> > >> > > >
> > >> > >
> > >> >
> > >>
> > >
> > >
> >
>