Web In Travel Indonesia 2013 – A Great Experience

So last Wednesday, March 27th 2013, there was an event held by Web In Travel and its local partner in Indonesia, Kibar Kreasi. Web In Travel (WIT) itself is an Asian Pacific community who regularly hold a worldwide conference in Singapore. For the first time, this year WIT came to Indonesia and held a little conference plus startup competition. More info about WIT can be read at their site http://www.webintravel.com/

Few days before the event, we only got a complimentary ticket for the event, since our submission was rejected says the notification email I received. But one night before the event, Leonard from Kibar Kreasi called me and said that there was a misunderstanding and Tripboard should have been one of the finalists. He asked me to send him a presentation that night, which I have not prepared. In the end, after 3-4 hours, I barely made the presentation and sent it to him. By the way, Tripboard is one of Paris Van Java team’s products which was originally created for Startup Asia Bandung Hackathon (Yeah, we won some of the challenges). You can read more about it at http://startupasia.techinasia.com/bandung2012/startup-asia-bandung-hackathon-the-winners/

The event was held at Pullman Hotel, Jakarta, and only a small numbers of people came, mostly foreigners, which gives an exclusive aura (the ticket was actually quite pricey, 2.5 – 3.5 millions IDR). There were several discussion panels and presentations. The first panel was consisted of Amit SaberwalChief Business Officer of MakeMyTrip; Peter LeeSenior Director of Market Management Asia Pacific of Expedia; Timothy HughesVice President Marketing of Agoda; and Venkat ChandramoleshwarBusiness Development Manager-APAC of Google. The discussion was about the general overview of online travel space.

The second panel was about the condition in Indonesian. The panelist were Marc SteinmeyerPresident Director & Founder of TAUZIA Hotel Management; Adi SatriaRegional Director of Sales, Marketing & Distribution of Accor; Brata RaflyCommercial Director of Mandala; and Prih HarwadiAVP Product Development, Cards Business Division of PT Bank Negara Indonesia (Persero)Tbk. This discussion gave us insight about the condition of travel industry in Indonesia and customer behaviors regarding the credit cards usage for tourism. One thing to note is that the market for online travel in Indonesia was still in infancy stage, and only about to take off right now.

Afterwards, Henky PrihatnaHead of Travel of Google Indonesia presented about the digital habits of Indonesian customers. He explained that, in his version, there is five stages of travels: dreaming, planning, booking, experiencing, and sharing. He shared lots of numbers, like percentage of media used for planning, how many Indonesian shares on social media (8 of 10 Indonesians share their trip on social media), etc. It is too bad I couldn’t quite get them. He also told that over one billions query is searched per month by Indonesian people using Google.

Next panel was about the trends how Indonesian searching, planning, and booking travel. The panelists were Eric TjetjepCEO of Eztravel.co.id; Yusuf IjsseldijkCEO & Managing Director of Go Indonesia; William NewleyCEO of Rajakamar International Group/ Rajakamar.com; and Graham HillsManaging Director of Wego Indonesia. It was followed with a conversation with Andy Zain, Founder of Mobile Monday and Director of Founder Institute about startup scene and overview in digital opportunities in Indonesia. Since I decided to visit my friend, Aqsath, who was hospitalized the night before because of scarlet fever, I missed these sessions.

When I returned, there was a presentation from Kei ShibataCEO of Venture Republic, Japan, about the impact of mobile. Kei, who owns meta search engines hotel.jp and travel.jp, said that now more that 30% of the traffic comes from mobile devices. It was then followed by a presentation from Gaery UndarsaCo-founder & Managing Director of Tiket.com, who talks about his company and how mobile traffic is getting higher but the actual transactions are still done in desktops. 

Next panel was discussed by Morris SimCEO & Co-founder of Circos Brand Karma and Aaron Hung, Director of Partnerships, APAC of TripAdvisor. They talked about digital marketing to grow hotel business. One of the methods is using TripAdvisor who can provide reviews for the hotel’s sites. Later, I talked with Circos General Manager, Ivan Lam, who explained that Circos is providing their hotels clients social media analysis along with strategies. Besides hotels, airplanes companies like AirAsia is supported by them.

Next panel was about using social media and community to shape travel. The panelists were Marischka Prudence, Travel Blogger; Kristupa Saragih, fotografer.net; Dennis Adishwara, Layaria; Amalla Vesta, Liburan Lokal. It was then followed by a panel about Activities and Rentals opportunities in travel. The panelists were Ken Frohling, Vice President, Business Development of Viator andTurochas Fuad, CEO, Travelmob. Viator is one of the market leader in activity space, while Travelmob is a Singapore startup which focus on short-term rentals like AirBnB. Turochas or called T, is actually an Indonesian who then studied at Singapore.

Before the startup pitch, there was a panels about distribution drivers discussed by Chris GribbleVice President & General Manager, APAC & ME Hospitality Solutions of INFOR; Agnes YH TanRegional Director, Direct Sales & Loyalty of Accor Asia; Roland JeggeSatria Pinandhita, Director of Business Development, South-east Asia of Sabre Hospitality Solutions,  followed by a presentation by Fritz Demopoulos, CEO of Queen’s Road Capital.

The last event is The WIT Indonesia Start-Up Pitch where six startups presented their ideas to the judges. Panel of judges is consisted of Andy Zain, Director of Founder Institute; Brett Henry, Vice President Commercial of Abacus International; Fritz Demopoulos, CEO of Queen’s Road Capital; Morris Sim, CEO of Circos Brand Karma; Kei Shibata, CEO of Venture Republic, Japan; Timothy Hughes, Vice President Marketing of Agoda; and Turochas Fuad, CEO of Travelmob. Competing with us were: 5mile, Explorind, Ikut-ikut, SatuLagi, and Ulin Ulin. 

In the end, the winner was LagiSatu.com which is a Malaysian startup who focuses on meta search engine, specifically with Halal filters. You can read more about it at http://www.webintravel.com/news/halal-metasearch-lagisatu-wins-wit-indonesias-startup-pitch_3669

Advertisements

Buffer Files Mysql Insert

Recently, we were faced with a problem with mysql insertion performance. Basically, the problem is we need to insert lots of data in a short period time repeatedly. The data inserted must not be a duplicate, moreover, when we insert a data which is already existed in the database, we need to update it. For instance, we want to insert a tweet object which has a retweet count property. When we first inserted the tweet, it has X retweet count. Later, when we want to insert a more updated data, it has Y retweet count. When we met these cases, we need to update older data in database, instead of inserting new data. 

No brainer way would be every time we want to insert a data, we have to search the database to find if it is already in the database. If it is found, then update; if not, then insert. This method would be very costly since every time we need to insert a data we need to select the table to check. So here we will use a trick using “ON DUPLICATE KEY UPDATE” clause.

Inserting with “ON DUPLICATE KEY UPDATE” clause would force the database insert a data, and when it found a conflict due to unique key constraint, it would delete the newer data and update the older data. Let’s see below example:

Table “Tweet” has properties like this:

id INT PK AUTO INCREMENT,

tweet_id VARCHAR(50) UNIQUE,

content TEXT,

retweet_count INT

 

It has already one row:

id:1;  tweet_id: “1000001”;  content: “This is a tweet”; retweet_count: “1”;

 

Now we want to insert some tweets like these:

tweet_id : “1000001”;  content: “This is a tweet”; retweet_count: “9”;

tweet_id : “1000002”;  content: “I love twitter”; retweet_count: “0”;

tweet_id : “1000003”;  content: “I like facebook better”; retweet_count: “0”;

 

Notice that we have a new record with the same unique key (tweet_id “1000001”). If we insert the data using clause “ON DUPLICATE KEY UPDATE retweet_count=VALUES(retweet_count)”, the data in the table would be like this:

 

id:1;  tweet_id : “1000001”;  content: “This is a tweet”; retweet_count: “9”;

id:3;  tweet_id : “1000002”;  content: “I love twitter”; retweet_count: “0”;

id:4;  tweet_id : “1000003”;  content: “I like facebook better”; retweet_count: “0”;

 

Notice that the auto increment `id` jumped from 1 to 3. It means, the query make the database insert a new data first then when it notices that there is a duplicate key constraint, it triggers the “ON DUPLICATE KEY UPDATE” clause, which are updating the older data, then delete the new data. Using this method, we tried inserting 1000 record and benchmark it with no brainer way. The result is we get around 40% performance improvement.

 

Now, we use another trick to improve it further. This time we use a buffer file to collect the data, then insert them to the database. The tricky part is, instead of building one query per data, we build one query containing all the data in the buffer. It is similar when you dump a database including its data.

To be simple, we collect our data until it reach a certain limit, then when it reach the limit, build one insert query and commit the database. If successful, we empty the buffer file. In our case, we collect the data and write it to a csv file while keeping track of how many records in there.

The one query approach I mentioned before, would generate a query like this for the case above:

INSERT INTO `tweet` (`tweet_id`,`content`,`retweet_count`) VALUES

(‘1000001′,’This is a tweet’,’9′),

(‘1000002′,’I love twitter’,’0′),

(‘1000003′,’I like facebook better’,’0′)

ON DUPLICATE KEY UPDATE `retweet_count` = VALUES(`retweet_count`);

 

instead of the usual queries of:

 

INSERT INTO `tweet` (`tweet_id`,`content`,`retweet_count`) VALUES

(‘1000001′,’This is a tweet’,’9′);

INSERT INTO `tweet` (`tweet_id`,`content`,`retweet_count`) VALUES

(‘1000002′,’I love twitter’,’0′);

INSERT INTO `tweet` (`tweet_id`,`content`,`retweet_count`) VALUES

(‘1000003′,’I like facebook better’,’0′);

 

Using this method, we get a whooping 2000% performance improvement. This is of course harder to develop and maintain, so you might want to study your case better before implementing it.