Wednesday, March 9, 2016

I have planned to write an article for iCal – Calendar event utility using Java technology long back. Due to many reasons, it took some time to prepare this article. I have done with the working POC. You can explore and come back if you have any doubts in iCalendar generation using iCal4j framework.

iCal4j can be used to creating new iCalendar data from scratch OR modifying existing iCalendar data. Here you will find a few examples indicating the recommended usage of this library.

iCal comes with many handy functionality to deal with iCalendar related functionalities. Major functionalities are:
Creating an iCal event
Updating an existing iCal event
Parsing anexisting iCalendar file
Iterating over a Calendar and get the available events

It also provides a functionality to deal with different TimeZones. Here I have added my POC code only for iCalendar file creation alone using iCal framework. You can use this as a reference. Rest of the functionalities will be easy if you understand the iCalendar creation. Those functionalise can be explored at http://ical4j.sourceforge.net/introduction.html

Creating an iCal event – Sample Code:

public static void main(String[] args) throws FileNotFoundException,
                                    IOException, ValidationException, ParserException {
                        String calFile = "c:/mycalendar.ics";

                        // Creating a new calendar
                        net.fortuna.ical4j.model.Calendar calendar = new net.fortuna.ical4j.model.Calendar();
                        calendar.getProperties().add(
                                                new ProdId("-//Temp//iCal4j 1.0//EN"));
                        // calendar.getProperties().add(Version.VERSION_2_0);
                        calendar.getProperties().add(CalScale.GREGORIAN);


                        Calendar calStart = new GregorianCalendar().getInstance();
                        calStart.set(2015, java.util.Calendar.MARCH , 03, 12, 0);
                        Calendar calEnd = new GregorianCalendar();
                        calEnd.set(2015, java.util.Calendar.MARCH, 03, 13, 0);
                        DateTime startTime = new DateTime(calStart.getTime());
                        DateTime endTime = new DateTime(calEnd.getTime());
                        String appmtSubject = "Test appointment_EventId12345";
                       
                        // Create event
                        VEvent appointmentEvent = new VEvent(startTime, endTime, appmtSubject);
                        appointmentEvent.getProperties().add(new Location("NC Home"));
                        StringBuilder appmtSumamry = new StringBuilder();
                        appmtSumamry.append("Dear Friend, \n\n");
                        appmtSumamry.append("This is to catchup with you for 30 mins at my home. \n");
                       
                        appmtSumamry.append("Topic: Chumma\n");
                        appmtSumamry.append("Address: address1, address2, postcode\n");
                        appmtSumamry.append("Telephone: \n");
                        appmtSumamry.append("Purpose: \n\n");
                       
                        appmtSumamry.append("if you need any assistance mean time, please contact us at 1800XXXYYYY");
                       
                        appointmentEvent.getProperties().add(new Description(appmtSumamry.toString()));
           
                        /*// initialise as an all-day event..
                        christmas.getProperties().getProperty(Property.DTSTART).getParameters()
                                                .add(Value.DATE);*/

                        UidGenerator uidGenerator = new UidGenerator("1");
                        appointmentEvent.getProperties().add(uidGenerator.generateUid());
                        calendar.getComponents().add(appointmentEvent);

                        // Saving an iCalendar file
                        FileOutputStream fout = new FileOutputStream(calFile);

                        CalendarOutputter outputter = new CalendarOutputter();
                        outputter.setValidating(false);
                        outputter.output(calendar, fout);


Required JARs:
commons-lang-2.6.jar
commons-logging-1.1.3.jar
ical4j-1.0.5.jar
backport-util-concurrent-3.1.jar


If you are seeking for any specific details to build a Calendar event using iCal, feel free to comment this blog. I am happy to respond to you.


Thanks,
Nanjundan Chinnasamy

Thursday, February 11, 2016

Social data – An alternative Credit database to check Customer Credit worthiness

Banks can assess credit worthiness based on digital data culled from multiple sources like social data in addition to multi credit databases.

Banks/Lenders can assess the credit worthiness based on digital data derived from multiple social data’s like Facebook, LinkedIn etc..

To assess the address of the applicant, Location services (GPS) on mobile phones can be used to establish address and place of work, based on where a person is during the day and night. 

SMS mining can also be used to know the transactions in one’s accounts and to establish patterns. Bank transaction details based on SMS logs can provide information on bills paid and salary credits

Social media profiling is also widely used. For example, a LinkedIn profile can be used to validate place of work and establish identity

Again, we want to assess the credit worthiness of the Customer/person prior to lending them. Social data assessment will be more helpful for those who don’t have data at credit database. Also, banks can think of up/down selling of the products based on the customer social behavior. 

We can consider social data as an Influencer to derive credit worthiness of a person rather relying only credit databases. 

What do you think?

Tuesday, February 2, 2016

Design Patterns - Creational design patterns

Few of my friends and followers requested me to write blogs on Design patterns. I am here briefing the Creational design patterns using java language. I am sure i will be post other design patterns soon.









Startups - free tools

Are you an Entrepreneur OR planning for?  Here are the free tools will help/manage your business effectively. 



Happy Reading,

Nanjundan Chinnasamy

Tuesday, January 19, 2016

CAPTCHA – Java based solutions.

You may aware that Captcha is common and much needed solution to prevent Denial of Service attack from public network. Being a Java lead, it is very difficult to find out the correct Captcha solution for the given requirement. If so, don’t worry. I have articulated the available Captcha solutions for Java Technology with Pros & Corns. Hope this article brings much detail to choose relevant Captcha solution to your project.































Are you looking for any specific details on the above?  Leave me a comment. I will get back to you.,

Thanks,
Nanjundan Chinnasamy

Monday, January 18, 2016

New ways of doing the Banking..

Use Customer Mobile & banking app to complete Customer Identification Verification at other channels:
Use customer Mobile/banking app as one of the authentication mechanism to use banking services in any channel. Once Customer successfully login with banking app, they can use their device to pair to your banking channel and by-pass any channel specific Customer Identification and Verification process. Think of like generating ready-to-use QR code while paring mobile device Whatsapp app and web client version browser to make the communication.

This mobile phone authentication concept can be applied to multiple channels like ATM, branch, Online etc. Few of the examples I am thinking at this moment and documented below. This may be eliminating/minimizing the use of plastic card going forward. I am thinking that world is moving towards cardless in banking area. This concept can be analyzed further to make it reality in any industry including banking.

ATM channel usage:
Customer can withdraw money from our own bank ATM using mobile authentication without a plastic card. At present, to get any emergency cash, we really no need to call telephone banking and get the one time access code to get the emergency cash from ATM.

Firstly, Get Emergency cash onetime secret code can be generated from App.
If we pair customer mobile and ATM using mutual authentication as mentioned above, we won’t need to generate the one-time access code.

Branch channel usage:
Widely used Customer Identification and Verification mechanism at the branch is using a plastic card (Chip&PIN OR Signature across UK banks). Some/Most of the banking services can be made available at the branch just with the phone along with some bio-metric security integration like fingerprint scanning to complete CIV to use the services offered by the bank.

Again, the overall idea is that customers have phone with them, so - they can be identified & verified using Mobile app secret code. And hence, No additional identification mechanism will be needed to use the services offered by the customer - once customer’s mobile device has been paired with our banking network.

Additionally, we can offer this feature by minimizing the mobile banking app using Web client like Whatsapp web client to experience the app feature within desktop/laptop. Customers like me may be excited to use the app specific feature via desktop/laptop browser.

Do you think you have some idea and it can change the way we are doing banking today? Please write to me. We can catch-up.

Happy Learning,

Nanjundan Chinnasamy

Wednesday, January 6, 2016

Ideation Blog - Exposing few banks APIs (RESTFul) to the Public

I am planning to share my Ideas on the way we are banking today. Also, how the technology can be used to help our Customers on day to day basics. Again, Banks are not there to Server Customer alone. To Make Profit as well J. Next 4-5 blogs will be more specific to how banks can make money using the new technology and trends.

Banks can follow Project-centric approach to Product-Centric approach. What do i mean by this? Banks should not limit to implement the project. Rather banks should proactively think to convert Projects to Product to make more money out of it. Few points are,
ü  As a bank, we can think of exposing our APIs like Telecoms to generate income by following Product centric approach.
ü  Open/Closed API model to increase the traffic.
ü  APIs are a channel to new customers and markets.
ü  APIs promote innovation & revolution is Banking. Like Savings account deal comparator, all banks branch/ATM locator etc..
ü  APIs are a better way to organize IT.
ü  APIs create a path to apps.

Business Benefits:
ü  API’s will generate indirect income to the bank.
ü  A free API is free advertising.
ü  Free APIs encourage 3rd party developer usage.
Eg: Expedia’s 70% revenue comes from API

Above points are explicit. So i am not going to explain in detail. If you are seeking for more specific details on any of the points above, i am happy to clarify you.

Happy learning!


Nanjundan Chinnasamy

Pega Decisioning Consultant - Mission Test Quiz & Answers

The Pega Certified Decisioning Consultant (PCDC) certification is for professionals participating in the design and development of a Pega ...