Monday, September 17, 2018

Create chatbots from Google Calendar using ProBotDev Event Chatbot

I've been working on Sarah Shopper, the Lazada price tracker, for a while. Sarah Shopper is a shopping assistant chatbot that periodically checks for price changes in popular online marketplaces such as Lazada, 11street and even IKEA. It's especially useful when you're willing to wait for a better price.

Sarah Shopper, the Lazada price tracker
Sarah Shopper, the Lazada price tracker

Sarah Shopper was modestly successful—9,000+ users in 9 months, mostly from the Google Assistant directory. However, learning from running another free-to-use consumer product (Homework Hero, the student tutoring platform in Indonesia), I know it's going to be a long and expensive journey.

Just a few weeks before graduating from Selangor Accelerator Programme 2018 (SAP2018), I came to the realization that it actually makes more sense to help other businesses to make chatbots, and that's how our SaaS came to existence.

ProBotDev Event Chatbot
ProBotDev Event Chatbot

ProBotDev Event Chatbot allows event organizers to create chatbots from Google Calendar. It is higher level than ManyChat or Chatfuel, as you don't even need to design the conversation flow.

It makes more sense for event organizers to use a template because event attendees generally ask similar questions. It also makes sense for us to make it a SaaS, as the improvements we put will make everyone's chatbot smarter.

I've written a getting started tutorial to create a chatbot and will keep posting for more in the coming weeks.

In case you're wondering, Sarah Shopper is still available, as it's personally useful for me :)

Tuesday, January 23, 2018

Lazada price tracker? Try stupidity tracker

I have been using hackintosh (dual-boot with Windows 10) for more than two years without any problems, and recently upgraded to High Sierra. The upgrade process was smooth, and my filesystem is now APFS.

Last Saturday, I switched the power off a bit too early, before the system completely shut down. I knew it was wrong but it's done and I got sidetracked with stuff. The next day, I couldn't log in—it gave me beach ball right after I entered my login.

Tried fsck, safe mode, recovery mode, no luck.

Feels like banging my head.

Good thing I have a MacBook Pro. I took out the SSD from the PC, and put it inside my laptop as secondary disk. Darn, Disk Utility couldn't help.

I had to start fresh. To my disappointment, many files, especially recently (1-2 weeks) accessed files, were corrupted. Unfortunately, those were the source code for Sarah Shopper, the Lazada price tracker I've been working on.

I did use Git, but I have a habit of not pushing to server until the commit is tidy. Since I tend to work on multiple projects at the same time, I can leave them "unpushed" for a while. For Sarah Shopper, it's two months. Ouch.

I also ran a backup software, but it was not configured properly (I procrastinated). Ouch. Good thing Dropbox was working, but I didn't put my code inside it (since I use Git). Ouch again.

Anyway, I managed to "restore" my hackintosh. Here's what I did:
  1. Salvaged anything I could. Apparently, if you copy a folder with any corrupted file inside, the whole copy process stops, leaving the destination in limbo. Strangely, if I select all the files in the folder and copy them, it works and it will ignore corrupted files. So, I did that, recursively.
  2. After everything was copied, I reformatted the SSD and put it back inside my PC.
  3. Reinstalled the hackintosh. I usually use tonymacx86, but I couldn't find the exact page inside the 1st page of search result, so I tried a different method. After a few failures, I gave up and used tonymacx86's method. Worked flawlessly.
  4. After the OS was installed, I had to download, install and configure apps. Office, dev tools, etc.
  5. Setup backup. This time I include my code.

About backup

I use Arq backup software. Now, I backup my home folder with these subfolders excluded:
  • Dropbox, OneDrive, etc, because they can just resync
  • Downloads, because this is just for "transit" items
  • Some folders inside Library
  • Cache folders, e.g. .m2/repository folder for Maven cache
Essentially, I excluded synced folders, caches and temporary items. If you use Arq, the best way to decide whether something should be excluded is to first backup everything, and then check the log. The log lists all files backed up and the size.

About source code

Now I use myrepos, a small command line utility so I don't need to "cd" and "git status" to dozens of my projects one by one.


It took me three days to do everything. Configuration-wise, it's done, but now I need to rewrite the missing code for Sarah Shopper, the Lazada price tracker.

Monday, December 04, 2017

Indonesian TLD .id

.id is the top-level domain (TLD) for Indonesia. Until a few years ago, Indonesians can only register names under 2nd-level domain (2LD) such as mycompany.co.id or myblog.my.id. Note the extra characters before ".id".

Did I say "Indonesians"? In order to register, you must submit Indonesian government-issued identity. For some 2LDs, you must submit additional documents such as your company's certificate of incorporation. Of course, it didn't prevent non-Indonesians to register domains through a proxy. Indonesians or not, it was a lot of hassle.

Thankfully, PANDI, the body that governs .id TLD, has relaxed the requirements. They opened up .id in 2014 so you can have awesome.id instead of awesome.my.id. In August 2017, they waived the identity check so now everyone (not only Indonesians) can register a .id! (Do note that some 2LDs still require verifications).

Which brings me to this post: I've just launched Punya Nama, where anyone can register .id. It's still an MVP, so feedbacks are most welcome.

"I'm not Indonesian, and my business is not targeting Indonesia—why should I get a .id?" Depending on the nature and the stage of your business, ignoring the world's 4th most populous country is probably not a good idea. Search engines such as Google prioritize country-specific TLDs—when someone searches for "pilates", everything else equal, "pilates.id" would come up first.

If you're not interested with Indonesia, you might want to get a .id because of it's catchy name, just like .io or .me. You can have printed.id, vital.id, basically every.id (see what I did here?).

What are you waiting for? Go ahead check some premium .id names at Punya Nama.


Thursday, November 30, 2017

Sarah Shopper the price tracker for Lazada and others

For the past few months, I've been busy working on a new project. Now that it's quite stable, I'm happy to share it here.


Sarah Shopper is a chatbot that helps you track price from popular ecommerce websites such as Amazon.com, IKEA, Lazada, and some other websites in Southeast Asia region. If you are amongst the people who want to get the lowest price for each of the purchase you make, Sarah Shopper is great news for you. Just send her a link, and she will notify you when the price drops.

For example, I've been meaning to buy a Google Pixel phone, but I can't justify the price. So I search for that phone on Lazada, and then share the link to the product page to Sarah on Messenger. So far, the price has dropped three times, but it's still too expensive for me 😂.

Price tracking (or price monitoring) is not a new concept, but most services focus on Amazon.com and available as a website or Chrome extension. I decided to do it differently. Sarah Shopper is a price watcher for Lazada from the comfort of messaging apps.

Sarah Shopper was initially available on Messenger, but now you can also chat with her on Google Assistant and LINE. Go ahead, click those links and try it yourself.

Saturday, December 31, 2016

2016 in Review

It's been more than a year since my last post. During the period of time, I have quit my job and launched Homework Hero, an Android app to help students in Indonesia with their homework. I also got married, become a father, went through an accelerator (MaGIC), and learned Python and Machine Learning. Phew!

As a geek, I like to participate in hackathons and do side projects. They allow me to learn new things that I wouldn't get otherwise when employed in a mega-corp. Who knows, one of my pet projects could someday take me to financial independence (whatever that means)!

Time becomes a precious commodity when I started a family and become a father. No more hackathons (also, I'm getting old for that), and the free time I usually spent with code editors should now probably be spent with my family.

I could just stop doing side projects, but I felt a burning passion to start my own business. So, I quit my job, picked one of my pet projects and made it my startup. I have a bit of savings, and MaGIC gave me monthly stipend for four months (way less than my salary before I quit, but something is better than nothing).

So, by quitting my job, suddenly I have 100% for doing startup? Not quite. For the first few months, I was still adjusting. Not to mention MaGIC required us to attend mandatory full-day sessions twice a week.

Fast forward today, Homework Hero has almost twenty thousand users, and the traction is so good, I'm very bullish for 2017. Homework Hero is now my full time job. I haven't started monetizing (attempting to make money from) it though, as the focus now is growth. Let see how far I can go.

I will keep doing side projects, as it allows me to escape from routine. Just few days ago I built kalender2017.id, which at least helps me with my own itch.

Happy new year!

Tuesday, July 21, 2015

Graduated from the Founder Institute

It's just last night when I emailed my list announcing my graduation from the Founder Institute Kuala Lumpur. Khailee, Managing Partner of 500 Startups and a mentor of Founder Institute, gave the final mentoring last week. It's amazing how fast four months could go by.

I had been following the Founder Institute for a few years. The idea of "prepping up startup" while keeping my day job was the main reason. When they finally opened a charter in Singapore, I thought of applying. I thought I could endure the back-and-forth travel (I'm in Kuala Lumpur), every week, for four months. Good thing I came to my senses.

Then they opened in Jakarta, my hometown. I was very tempted to quit my job to enrol there, but then again it kinda defeats the purpose of joining—might as well join a full accelerator (which I didn't do because I wasn't ready).

Then they opened in Kuala Lumpur. I missed the 1st cohort, and I kinda lost interest on the 2nd. But when they opened registration again, few months ago, I decided to join. It's now or never, I told myself.

Different than most of my fellow Founders, I've been following tech news for more than five years. I've started (and failed) a few (attempted) startups, I've helped a friend pitch for his startup in Startup Arena, I've participated in numerous hackathons (and won a few), and I've read numerous startup-related blogs and books. Does it mean I didn't get anything from the Institute? Far from it.

I've learned a lot of new stuff first-hand, from mentors who are industry players, many of them are now in my list. I know them, and, more importantly, they know me. I've also made friends with fellow founders. I found my crowd.

The strongest influence FI has on me is the fervid push to quit my full-time job to pursue my dream. I've always wanted to do it, but I lack data to support my cause. FI's structured approach really helps—ideation, market research, customer development—they're the bits and pieces that build my confidence.

If you're thinking of starting your own company, Founder Institute might be a good place to start.

Saturday, June 29, 2013

On setting goals

So, I have broken my promise again to write more often. I read about it somewhere that I'm not unique to this "over promise, under deliver" problem when it comes to writing. Still, I feel like I fail myself and my readers.

Writing is a Good Thing™—somebody even compiled 17 reasons for doing it—but it's hard, especially for perfectionists (and procrastinators!) like me—I can write a paragraph and keep refining it for an hour. But why is my old self seems to be more productive? I think the reason is, like I said, I feel bad when I fail to meet my target. The disappointment adds up, and it's making me to think, "The hell with this, I'm not gonna make it."


Fortunately, I learned something new today about goal setting. We shouldn't set our goal in binary: either we achieve it or not. Instead, set it in 3 categories: What we can definitely do, what we want to achieve, and what is awesome to get. Let's use my writing problem as an example.

Looking at my recent writing frequency, 12 posts per year seems something I can definitely do. Of course, that amount is lame for a blog, so my target is to write 52. It seems ambitious, but in 2007 and 2008 I wrote more than that, so it's a good target. Always challenge yourself, reasonably.

52 is the number of week in a year, but I didn't mention the interval. I can slack for 11 months and rush in December. Now, if I can write consistently every week, that's awesome!

Note that it's better to set the categories in stages. That is, achieving awesomeness means completing the rest. I could set the awesomeness to be "Write a book", but accomplishing it doesn't mean I meet my target (52 posts), which will make me sad.

Now it's your turn.

Monday, January 28, 2013

OMG, I'm now 30!

Happy birthday to me! I can't believe I'm now 30 years old. Gosh! I have promised myself to blog everyday starting today, until (at least) my next birthday. The topic does not matter, it's the process that I seek. Since I just returned from a 5-day trip from Boracay, the Philippines, I'll spare myself and consider this short paragraph a first :)

Sunday, July 22, 2012

Pengalaman tinggal di Kuala Lumpur

Dari semua tulisan disini, tulisan gw tentang makanan di Malaysia ternyata paling populer. Beberapa orang bahkan sampai mengontak gw di Facebook untuk bertanya lebih lanjut. Sekarang gw sudah hampir tiga tahun tinggal di Kuala Lumpur, saatnya untuk berbagi lebih banyak.

Sedikit latar belakang, sekarang gw tinggal di Bukit Jalil, dekat stadion yang waktu itu digunakan untuk pertandingan bola Indonesia vs Malaysia. Ini adalah tempat "kost" gw yang keempat selama bekerja di Malaysia, dan lingkungan sekitar masing-masing tempat kost sangat berbeda. Gw akan membandingkan dengan kondisi di Jakarta,

Tempat tinggal pertama: Shah Alam.

Shah Alam bagaikan Cikarang—jauh dari ibu kota dan relatif jarang penduduknya. Waktu pertama tiba di Malaysia, gw ga punya duit (sekarang juga ga punya sih, hehe). Untungnya ada teman SMP yang tinggal disini, jadi selama sebulan pertama gw menumpang di kondo dia di Shah Alam.

Pengalaman dari tinggal di Shah Alam:
  • Beberapa perusahaan besar di Malaysia mempunyai call center untuk penggunanya yang ber-Bahasa Indonesia. Teman gw dan teman-temannya bekerja di DiGi ("Indosat-nya Malaysia," populer di kalangan anak muda karena murah). Mereka pekerja outsource dan mendapat akomodasi tempat tinggal (satu kondo bertiga) dan bis karyawan. Karena mereka bekerja shift, bisnya datang setiap jam.
  • Tidak ada alasan untuk tinggal di Shah Alam kalau kamu bekerja di Kuala Lumpur, kecuali punya kendaraan sendiri dan rela menghabiskan waktu di jalan. Teman gw punya mobil dan kantornya di Shah Alam juga.
Tentang kereta ("kereta" berarti "mobil" di Malaysia, tapi untuk tulisan ini "kereta" berarti "alat transportasi yang berjalan di rel"):
  • Transportasi massal berbasis rel di Kuala Lumpur ada tiga: monorail, KTM dan LRT. KTM hampir sama dengan KRL AC ekonomi(?) di Jakarta—sama-sama ga tepat waktu dan lambat.
  • Tiket dapat dibeli di konter atau mesin (tapi kebanyakan mesinnya rusak, hehe), atau pakai kartu Touch N Go (kartu debit).
Tentang angkutan umum lain:
  • Di Indonesia, kamu bisa berdiri di pinggir jalan dimana saja (termasuk di gang!), pasti ada angkutan umum yang lewat. Disini kamu bisa berdiri di pinggir jalan besar dan ga melihat satu pun bis lewat.
  • Disini ga ada ojek, bajaj, omprengan atau angkot (minibus). Selain transportasi berbasis rel, hanya ada bis dan taksi.
  • Di bis ga ada kenek, hanya ada sopir yang sekalian mengurus pembayaran. Kamu harus membayar tunai atau dengan kartu saat masuk. Suara rekaman akan memberitahu kamu sudah sampai mana.
  • Kalau naik bis, kamu umumnya harus berhenti di halte, ga boleh di sembarang tempat.
  • Taksi disini sangat pemilih. Sedikit macet ga mau, padahal kan tetap dibayar!
  • Di beberapa tempat (terutama daerah turis dan tempat clubbing), taksi ga mau pakai argo ("meter") atau minta tambahan, misalnya +RM2 (~Rp6 ribu).
  • Di bandara dan KL Sentral ("Blok M"-nya Kuala Lupur), kamu bisa bayar taksi dengan tiket. Datang ke konter, kasih tau mau kemana, bayar sesuai jarak. Ga perlu takut dibawa muter-muter atau tawar-menawar.
  • Taksi disini jauh lebih jelek dibandingkan di Jakarta.
  • Naik taksi disini cenderung lebih murah, mungkin karena tidak begitu macet dan tidak perlu memberi tip.
Tentang jalanan, kendaraan pribadi, pejalan kaki dan tempat parkir:
  • Jalan raya di Malaysia lebih lebar.
  • Jalanan disini umumnya hanya macet sebelum dan sesudah jam kerja, tapi macetnya tetap lebih "masuk akal" dibandingkan dengan di Jakarta.
  • Beberapa jalan tol dipasangi speed trap—kamera yang menangkap kalau kamu terlalu ngebut.
  • Di Jakarta, orang suka seenaknya menyeberang jalan sementara mobil/motor harus mengalah (mungkin takut dibakar massa kalau menabrak orang, hehe). Disini sebaliknya.
  • Di Kuala Lumpur, mobil lebih banyak dari motor.
  • Motor boleh masuk tol tanpa membayar.
  • Kadang disediakan jalur khusus untuk motor.
  • Tidak ada yang mau naik motor kecuali terpaksa. Pedagang kaki lima dan penjual DVD bajakan di emperan jalan pun naik mobil.
  • Alasan orang-orang disini punya mobil karena transportasi umum sangat minim. Secara kualitas Malaysia menang, secara kuantitas Indonesia jauh lebih baik (terlalu banyak malah, jadi macet).
  • Orang Malaysia sedikit lebih teratur dalam mengantri, termasuk di lampu merah (untuk hal ini, pengemudi mobil lebih patuh dibanding pejalan kaki).
  • Disini ga ada tukang parkir, apalagi "pak ogah".
Ada yang perlu ditambahkan? Tulisan berikutnya akan berdasarkan pengalaman gw pertama kali "ngekost" di Kuala Lumpur.

Status update, midyear 2012

How fast time flies. My last post was on the 1st of January this year, and that's more than a half year ago!

I was dormant here, but I kept on writing (at least for a couple of weeks) in #anakkos, a blog inside Neytap.com, a classifieds for room rentals, for SEO purpose. So far, the website receives almost 100 page views daily. Not bad for a $0 marketing effort.

It could be better, though. I use Ajax heavily to make Neytap speedier (speed is a feature of Neytap), but it's not SEO-friendly. I also design Neytap home page to be clean and simple, just like Google's; Apparently it's not SEO-friendly as well :( Search engines would think my other pages are not really important, since they're not referenced directly from the home page. That's assuming the engines can find the pages in the first place, since in order to open those, you must perform (Ajax) search. Dooh!

TL;DR: Neytap is designed to be speedy, with the (unforeseen) expense of search engine discoverability. Lucky that blogging helps, although not by much. This explains why engineers suck at selling consumer products :D

Next, I co-founded Cabara.co.id, a curated marketplace for domestic workers. At the moment we're focusing on maid service in Jakarta. We pitched in Startup Asia Jakarta 2012, you can watch my pitch there in YouTube (you might want to skip the first few minutes).

We didn't win (we'd be surprised if we did), but it's a great opportunity to pitch there. We were covered in Tech In Asia and some other publications, and approached by a number of VCs. Everything is new to me (and to my co-founders as well, apparently), so it was quite an experience.

Last but not least, I recently created temanmudik.com, a (social network?) website to connect Indonesians who are going homecoming this year. It's a tradition in Indonesia—and probably other Muslim countries, I know they have it in Malaysia—for people to go back to their hometown to celebrate Eid ul-Fitr (in Indonesia it's called Idul Fitri or Lebaran).

Following Minimum Viable Product concept, at the moment Teman Mudik is just a landing page and to be developed progressively depending on feasibility. Teman Mudik is a mini-site for Neytap and they share the same user base. I will give report on how it goes after Eid ul-Fitr.

Looking for my geek side?