Dunia Penuh API

Tadinya sih mau ngasih judul World of API, tapi kok keminggris banget yah? :p Ya wis, akhirnya pakai judul Dunia Penuh API saja, mayan juga ada kesan dikit dramatis hehehehehehe.

*bletakk*

OK, ok. Saya ga ngomongin kebakaran. API di sini adalah akronim dari Application Programming Interface.

Apa itu API?

Detilnya sih bisa dibaca di sini, tapi secara garis besar API adalah sebuah kumpulan instruksi dan standar pemrograman, protokol, data yang digunakan supaya sebuah aplikasi dapat berkomunikasi dengan aplikasi lainnya. API memungkinkan pertukaran data/informasi antar program. Misalnya saja mengambil data nilai tukar mata uang asing dari Google/situs bank untuk menghitung data-data di spreadsheet kamu yang akan kamu gunakan untuk menyusun itenerary liburan ke luar negeri. Atau saya menggunakan API yang disediakan oleh Instagram yang memungkinkan saya untuk mencari foto-foto dengan tag Danbo, kemudian memilahnya dan mengemasnya menjadi sebuah aplikasi Firefox OS (haduh, lupa euy belum upload ke Market Place).

Analoginya, API itu adalah kepingan lego yang masing-masing punya fungsi khusus dan terbatas yang merupakan hasil penyederhanaan dari proses kompleks di belakangnya. Kepingan-kepingan lego ini nanti dapat kita susun sesuai kemauan kita ingin membangun apa.

Di era Internet of Things ini, peran API menjadi sangat-sangat penting. API menentukan bagaimana para developer membuat aplikasi.

Kok bisa?

Karena app era sekarang ga bisa lepas dengan web services, cloud, dan komunikasi dengan app lainnya. Contoh lagi, untuk otentikasi pengguna sebuah aplikasi kita tidak perlu repot-repot membuat akun dan mengisi segala detil informasi diri yang disyaratkan. Cukup gunakan akun Facebook atau Twitter atau Google+/Gmail yang telah kita miliki.

API membuat pengembangan sebuah aplikasi menjadi jauh lebih efisien. Dengan banyaknya API, kreatifitas untuk membuat solusi dari permasalahan-permasalahan yang ada ataupun sekedar mewujudkan ide-ide gila bisa terbilang nyaris tak terbatas.

Contoh API Twitter untuk streaming tweet

Nah, sudut pandangnya sekarang bukan bikin sistem, app lagi. Tapi bikin service, layanan, fungsi yang nantinya dapat dipakai oleh service/layanan/fungsi lainnya menjadi sebuah mashup (bukan mahzab yah).

Next: Dunia (Telco) Penuh API

@Tweetacoffee, kirim kopi via Twitter

Eh?

Ada yang salah? Ngga kok, paling ngga buat di US sana sih :)

Twitter dan Starbucks baru-baru ini mengumumkan kerjasamanya dalam sebuah program bernama “tweet-a-coffee“. Intinya sih lewat program ini para pelanggan Starbucks bisa saling “bertukar” Starbucks Gift Card senilai $5. Harapannya gift card tadi bisa di-“uangkan” dengan cara … ya beli kopi Starbucks (atau products F&B apapunlah itu di Starbucks) dan tentunya menaikan angka penjualan warung kopi asal Amrik ini.

tweetacoffee-flow

Jadi, kalo kamu (in US) mo nraktir teman, sohib, gebetan Coffee Latte Grande dari Starbucks saat ini cukup via Twitter.

Caranya?

  1. Kamu mesti punya akun Starbucks
  2. Login ke https://www.starbucks.com/tweet-a-coffee menggunakan akun Starbucks tadi
  3. Isikan akun twitter milik orang yang ingin kamu kirimi gift card (nominal yang ada saat ini baru $5 saja)
  4. Klik tombol ijo “Tweet Your eGift”
  5. Nanti Starbucks akan nge-tweet ke teman (atau bos, pacar, gbtan dll) isinya sebuah link buat di-redeem oleh si penerima tweet.
  6. Si penerima tweet cukup akses link tersebut nanti ada beberapa verifikasi, print redeem code-nya, bawa deh ke warung Starbucks terdekat buat dituker ama kopi.
    Kira-kira seperti ini:
    tweet-a-coffee-tweets

Di Indonesia mestinya bisa laris nih kalo melihat dari penggunaan twitter-nya. Sayang banyakan alay-nya sih plus the habbit is not there yet.

Mungkin attitude juga :P

10% Transaksi Starbucks dari Mobile Device lho…

IMG_8982

Satu cup Americano coffee di Starbucks harganya sekitar Rp 20ribu. Di bandara kayanya lebih mahal lagi. Kopinya jauh lebih nendang dibanding bikinan The Coffee Bean & Tea Leaf. Masih lebih nendang kopi tubruk di kampung sih :P

Walau buat sebagian orang mungkin Rp 20ribu itu adalah receh, tapi harganya kalo dipikir-pikir bikin nendang dompet juga lho. Kalo kamu maniak kopi dan menghabiskan jatah 2-3 cup (kopi Starbucks) tiap harinya ya tinggal berhitung deh.

But it’s become a lifestyle already, specially in big city like Jakarta. What can i say?

Tahu ngga kalau Starbucks adalah brand nomor 4 terbesar di Facebook maupun di Twitter menurut socialbakers.com. Total fans hampir 35 juta dan follower @Starbucks di angka 4 juta lebih.

Nah terkait dengan recehan kopi di atas, ada satu hal yang mo saya sampaikan. Kalo di foto si Danbo dan Kevin pamer Starbucks card (semacam BCA Flazz, saya dapatnya 2 bulan lalu waktu Starbucks ultah). Tapi sejak November 2012 kemarin sebenarnya Starbucks sudah memperkenalkan metode pembayaran baru yaitu menggunakan Square Wallet, sebuah platform mobile payment system. Jadi cukup scan QR Code atau tap NFC dari ponsel ajah. App nya juga ada. Dan strategy ini bisa dibilang menuai sukses sekarang.

Menurut laporan dari Wall Street Journal, pebelian via mobile device ini menyumbang 10% dari total transaksi warung kopi internasional ini di Amerika. Angka yang jauh melebihi harapan.

Ga lama lagi, Starbucks juga akan meluncurkan layanan wireless charging untuk beberapa lokasi di Silicon Valey. Wah  rombongan Mozilla Summit 2013 yang Oktober nanti akan ke Santa Clara bisa nyobain fasilitas nge-charge smart device-nya w-i-r-e-l-e-s-s-l-y. Hmm, tapi harus punya Powermat dulu yah?

Omong-omong, harga kopi di RM Putri City Plaza juga mayan nendang tuh. Mending nyeduh ndiri kopi ka*** api dan sejenisnya *sigh*

Korea Utara: Sori ye, ga ada akses data 3G lagi

DSC_0123_sophieinnorthkorea
image couryesy of sophieinnorthkorea

Tahu ngga kalau jaringan 3G “tidak ada” di Korea Utara? Sebenarnya bukan tidak ada sama sekali sih. Operator 3G di sana adalah Koryolink, satu-satunya. Tapi fasilitas 3G tidak boleh dinikmati oleh penduduk negara komunis ini.

What?! Yup, that’s true.

Tapi sekitar januari 2013 kemarin, pemerintah Korea Utara membolehkan turis menggunakan layanan ini (*) pada akhirnya. Nice kan? :)

(*) asal mereka membeli SIM Card dari Koryolink seharga USD67 dan mendaftarkan IMEI handsetnya di pabean/bea cukai. Koryolink juga menyewakan rental handset yang counternya ada di airport Pyongyang. Trus, SIM card ini ga bisa dipake untuk akses internet dan nelpon lokal.

WTF?! Yup, that’s true :)

Tapi sepertinya kebijakan ini berubah. Akses data sepertinya diperbolehkan karena bulan februari kemarin mulai instagra dan facebook mulai dialiri postingan dari Korea Utara. Berikut ini contoh artikel-artikel tentang kiriman foto-foto dari balik tembok negara komunis ini.

Horeeeee.

Yak, horenya udahan dulu yah.
Lho kenapa?

Belum nyampe sebulan, pemerintah Korut menutup akses data 3G buat para turis. Jadi no more instagram, facebook, twitter from North Korea. Buat nelpon internasional sih masih bisa. Tapi tanpa akses data? We can say bye bye 3G.

Why?
Yah sudah dipastikan isu politik sih. And because i do hate politics, this is the end of this post :)

ini ada postingan bagus dari anaknya Eric Schmidt (itu loh, bosnya Google) mengenai kunjuangannya ke Korut
It might not get weirder than this

Socl, Social Networking ala Microsoft

Another social networking has been introduced.
Setelah sebelumnya digosipkan akan mengeluarkan merek smartphone sendiri, Microsoft kini malah meluncurkan situs social networking baru.

Namanya adalah Socl.

Situs ini masih dalam status beda, jadi penggunanya akan merangkap sebagai tester juga. Socl sendiri sebenarnya sudah diperkenalkan sejak Desember 2011 lalu. Hanya saja waktu itu untuk bisa menggunakannya, pengguna harus mendapatkan invitation dulu.

Trus apa bedanya? Dah kebanyakan layanan social networking yang beredar saat ini.

Microsoft tidak memposisikan Socl untuk menantang Facebook, Twitter, Tumbler, Pinterest atau layanan social-networking lainnya. Yah, menurut mereka sih begitu.

Microsoft sendiri menyatakan bawah Socl itu semacam mash-up dari kumpulan layanan social networking dan pencarian (search). Core Socl itu sendiri bisa dibilang ‘search’ sih. Jadi postingan/status kita pada intinya akan berupa sebuah “search”. Setiap postingan yang kita buat entah itu gambar, foto, video atau hasil pencarian lainnya yang ditampilkan akan dalam bentu kolase dan dilengkapi dengan link ke URL aslinya. Kemudian orang-orang dalam grup kita akan dapat memberikan komentar atau sharing postingan kita tersebut ke layanan social-networking lainnya. Pengguna juga dapat membuat postingan mereka sendiri berdasarkan postingan yang telah kita buat.

Fitur lain dari Socl adalah ‘parties’ yang memungkinkan user untuk ikutan menonton video online. Mungkin mirip-mirip Google Hangouts kali yah. Entahlah
Nah tertarik untuk mencoba Socl? Kamu cukup menggunakan akun Facebook atau Microsoft ID kamu untuk login ke Socl.

How To Tweets Your Current iTunes Track

Well, it’s nothing. Last Saturday I’ve stuck in office, have nothing to do but arranging my iTunes collection. Been awake since Friday night, and it seems my sleep disorder haven’t been healed yet :( So while i’m twittering i want also to use my current track played in my iTunes to be posted in twitter.

I remember i’ve made a small python script to do this couple years ago but lost the source code *facepalm* Hmmm, I think i gave the codes to @cothat and @rara79. But it will be rude to wake up those guys just for asking source codes :P

I rewrite it all over again, just to get me bored and hopefully sleep after that :P

Anyway, these are the codes that make it happen :)

You can make it simple and more robust though. I don’t put any exception to check whether my iTunes is running or not (yet) to prevent flooding my timeline with probably blank message :P

My previous version will run a loop and sleep couple of seconds. And within that loop it will check is the iTunes playing same song as previous or not. It will post to twitter if new song is detected :) Useful if you like to skip song in the middle.

[cc lang=’python’ ]
“””
simple Python Script to get current track being played in iTunes
and tweet it (and also update your FB status)
dependencies:
– py-appscript, Control AppleScriptable applications from Python
– tweepy, Twitter API for Python

Author: Nuri Abidin
Date: 2012-02-04
“””
from appscript import *
from decimal import *
from ConfigParser import ConfigParser
from optparse import OptionParser
from sys import exit
from time import strftime, sleep, localtime
import string, os, re, sys, tweepy

class nuyTwiTunes:
def __init__(self, config_file=””):
config = self.getconf(config_file)
self.twitter_consumer_key = config[‘consumer_key’]
self.twitter_consumer_secret = config[‘consumer_secret’]
self.twitter_access_token = config[‘access_token’]
self.twitter_token_secret = config[‘token_secret’]
self.print_console(‘Initiating the application…’)

# just printing formatted text to console
def print_console(self, s):
t = strftime(‘%Y-%m-%d – %X’)
print “%s %s” % (t,s)

# read the config file
def getconf(self, config_file):
param = {}
c = os.path.expanduser( config_file )

if not os.path.exists(c):
self.print_console(‘ERROR: No configuration file: %s’ % c)
exit(1)

conf = ConfigParser()
conf.read(c)

#read config items to dictionary
for section in conf.sections():
for items in conf.items(section):
param[items[0]] = items[1]
return param

# ‘read’ the current track being played in iTunes
def get_itunes_track(self):
myApp = app(‘iTunes’)
mySong = (“%s – %s” % (myApp.current_track.artist(), myApp.current_track.name()) )
songTime = myApp.current_track.time();
timeChunks = string.split(songTime, “:”)
playingTime = (Decimal(timeChunks[0]) * 60) + Decimal(timeChunks[1])
return mySong, playingTime

# post to twitter
def post_tweet(self, the_tweet=”Hai ^_^”):
auth = tweepy.OAuthHandler(self.twitter_consumer_key, self.twitter_consumer_secret)
auth.set_access_token(self.twitter_access_token, self.twitter_token_secret)
api = tweepy.API(auth)
api.update_status(the_tweet)

# post current iTunes track to twitter
def tweet_the_tunes(self):
# play and sleep until track changes
while True:
(track_name, play_time) = self.get_itunes_track()
tweet = “iPlay: %s ^_^ #fb” % (track_name)
self.print_console(“%s –%s seconds–” % (tweet,play_time) )
self.post_tweet(tweet)
sleep(play_time)

def main():
usage = “usage: %prog [options]”
parser = OptionParser(usage=usage)
parser.add_option(‘-c’, ‘–config’,
dest=”config_file”,
default=”nuy_tunes.conf”,
)
(options, args) = parser.parse_args()

try:
if options.config_file:
config_file = options.config_file
else:
config_file = “./nuy_tunes.conf”

my_tunes = nuyTwiTunes( config_file )
my_tunes.tweet_the_tunes()
except:
raise
parser.print_help()
exit(1)

if __name__ == “__main__”:
main()
[/cc]

and the configuration file is simply like this

[cc lang=’python’ ]
[twitter]
consumer_key = your_twitter_consumer_key
consumer_secret = your_twitter_consumer_secret
access_token = your_twitter_access_token
token_secret = your_twitter_token_secret
[/cc]

Once more thing …
You need to use a Mac to do this :P
Having one is a good thing :P

*yawn*
and blogging this script make me feel sleepy already …