Mac setup adb from terminal – export path adb command

I spent quite sometime figuring how to set up adb on Mac, so I figure writing how to set it up might be useful to some people. adb is the command line tool to install and run android apps on your phone/emulator

here we are :

export PATH=$PATH:/Users/[yourusername]/android-sdks/platform-tools/

If you put the android-sdks folder in other directory, replace the path with the directory android-sdks/platform-tools is in

#onemonthapp #3

Oh god, ke skip nulis buat report #onemonthapp sebulan T.T

oke bukannya mau cari2 alasan, tapi beberapa minggu terakhir saya sibuk dengan project hackathon saya yang … hahaha bisa dibilang ajaib. mungkin lain waktu akan saya ceritakan kisahnya. tapi sekarang kembali ke project onemonthapp saya, dengan sangat amat sedih, project billme saya pending dulu ūüė¶ karena skearang lebih fokus untuk ngerjain project limakilo yang bisa dilihat teaser nya di http://limakilo.id ūüėÄ

tunggu ya akhir bulan ini rilis versi android nya ūüėČ

Project ini berawal dari event hackathon yang mengusung tema tentang “kawal komoditas pangan” – problem naik-nya harga di level konsumen, padahal harga di petani alias produsen nya murah abis ūüė¶¬†so ini beberapa hasil brainstorm kami :

Ideation

maap fotonya jelek. nanti saya coba scan ulang yak :p

kali ini saya berkesempatan kolaborasi dengan @lisaayuw – business analyst jebolan MBA prasmul untuk rancang ide bisnis nya. intinya setalah beberapa jam riset dan telpon beberapa petasi kesana-sini kami sepakat untuk buat app marketplace yang bisa menghubungkan langsung petani dengan pembeli, dan untuk studi kasus pertama kami pilih bawang dan kota brebes.

001 002

Sketch

Di ide awal app ini saya coba garis bawahi 2 fitur utama dari app ini :

  1. konsumen bisa pilih daftar bawang yang dijual oleh beberapa petani (harga bawang ditentukan petani) untuk paketan 5kg
  2. konsumen bisa mencari petani yang bersedia menjual bawang dalam jumlah besar dengan harga dibawah pasar (harga ditentukan oleh konsumen -semacam pembelian grosir)

003004

Android app

Dan kali ini saya kerjain app android nya dua orang bareng @martinlutern tapi masih aja dikomplen kerjaan kami lambat ūüė¶

soalnya kali ini saya coba library material design barunya Google ūüėÄ yah lambat tapi worth it. next time implement material design bisa lebih cepet dah!

oh ya, logo nya ini sumbangan dari bro @arieare yang awesome abis ūüôā thanks!

Screenshot_2015-09-12-19-24-02 Screenshot_2015-09-12-19-24-11 Screenshot_2015-09-12-19-24-18 Screenshot_2015-09-12-19-24-24 Screenshot_2015-09-12-19-24-36 Screenshot_2015-09-12-19-24-54

Server app

untuk server¬†seperti biasa semua¬†di handle sama bos @ariffsetiawan sih, kalau ga salah spec nya node.js pak framework express. DB nya standar aja pake mySQL. Tapi seperti biasa masalah server dan deployment saya yang handle ūüėÄ

dan kali ini praktek docker nya cukup sukses di deploy ke elasticbeanstalk nya AWS biar next ya bisa auto scaling dan kuat buat handle traffic berat.

monggo boleh visit dockerhub saya di https://hub.docker.com/u/whegreen/ ūüôā

Screen Shot 2015-09-12 at 8.08.17 pm

oke deh, sementara ini progress #onemonthapp saya yang udah berubah haluan sementara ke project limakilo

salam #onemonthapp !

Android MVP Design Pattern | #onemonthapp #1 #restrospective

Beberapa waktu kemarin, saya sempat posting tentang #onemonthapp dan karena saya kurang rajin nulis, jadi saya akan cicil dikit2 tentang apa aja point2 dari sisi technical yang saya dapet waktu develop app. Kali ini tentang design pattern MVP di android. tapi sebelumnya kita mulai lewat MVC

MVC – Model View Controller

Sebelumnya, saya biasa develop app android dengan design pattern MVC – Model View Controller.¬†dan ini design pattern yang paling umum, tapi masih aja banyak developer yang abusing design pattern ini, yang penting asal running lah app nya – alhasil… di device yang memory nya limit, bakal sering crash karena outofmemory exception ūüė¶

tapi semakin lama berkutat dengan android, saya rasa design pattern ini kurang yahud, karena di android kadang model dengan view susah dipisahkan ke dalam kelas sendiri, misalkan class adapter – class bawaan android. code di class activity bakal nyampur adukin view dan controller disini. Akan banyak debat antar developer – Activity itu Controller atau View? no big deal sih kalo emang mau code nya sedikit messy.

Activty Class di android harusnya ngga extend View Class, tapi pada implementasi code-nya Activity Class ini punya method onCreate, onPause etc yang notabene handle input event dari konsep view. So¬†pada implemetasinya Activity Class ini akan jadi semacem pseudo View-Controller, belum lagi tambahan setContentView yang makin nyampur adukin element UI disini. Tapi bukan berarti MVC ini jelek lho ya, di Java – bukan android, design pattern¬†ini yang paling banyak penganutnya ūüôā

500px-MVC-Process.svg

dari situ saya coba gugling2 alternatifnya dan nemu blogpost yang cukup oke dari om ini >> antonio leiva monggo di follow twitternya

kalau mau baca sumber aslinya bisa mampir kesini >> http://antonioleiva.com/mvp-android/

MVP – Model View Presenter

simple nya, di MVP ini, activity / fragment atau semua code yang berhubungan dengan framework android dianggap sebagai view. sedangkan View dan Presenter class nya pure java code – apa untungnya? kalo kalian TDD mania, bikin unit test untuk interface jadi lebih indah ūüôā dan buat saya TDD ini harga mati!

TDD is the only way to code . . .

image_thumb_1

Diagram diatas, adalah komparasi MVP, MVC dan MVVM. problem yang saya alamin kalau pake MVC itu.. View sama Controller ga bisa jadi kelas yang terpisah, pasti akan kecampur aduk. Kalau di MVP, most likely kita bisa clean pisahin untuk kelas Presenter.java, View.java dan Model.java. Kelebihan lainnya adalah debug screen untuk state UI akan jadi simple disini karena View dan Model terpisahkan secara jelas oleh kelas presenter. in short, di MVP Pemisahan state UI akan lebih rapih.

View¬†– berisi¬†UI components, dan¬†handles events – nya. –¬†totally clean dari controller ūüėČ

  • entry point input user
  • rendering component UI
  • routing event ke presenter

Presenter Рperantara view dan model, misalnya data dari model kita punya judul, long description, short description dan author, sedangkan di view kita cuma perlu nampilain judul dan short description Рdisinilah tempat kita ngetikin code untuk pilah-pilahin data yag ditampilin

Model¬†–¬†nah ini tempat kita akses data, akan sangat cakep kalau kita pakai RESTful data dari server. buat support librarynya saya saranin pake Retrofit – nya @squareapp *antek squareapp detected*

cut the crap deh, lebih lengkapnya bisa check¬†sample code dari om antonio >>¬†MVP example –¬†Github

mungkin next time saya share code made in saya untuk lengkapin blog post ini lah *tapi entah kapaaan*.¬†Saya pribadi sih cocok abis ama MVP ini, tapi sekali lagi semua preference ūüôā mau code yang rapi atau ngga dan standar rapi tiap orang juga beda-beda.

MVVM

Untuk MVVM sendiri, saya belum pernah experiment tapi design pattern ini famous di kalangan developer javascript.

bye, salam #onemonthapp

#onemonthapp #2

bagi donk tips motivasi buat nulis ūüė¶ susah banget ngumpulin niat ngeblog.
tapi kebetulan kali ini lagi ada motivasi buat nulis lagi, karena takut malu udah koar2 bikin hashtag #onemonthapp tapi ga update2 progress :))

supaya nanti ga ada yang nyinyir di twitter

nah ini quote dari tulisan gw bulan lalu :

oh ya, buat first #onemonthapp project nya mau coba bikin sample chat android app + socket.io server + docker + AWS Elasticbeanstalk. Asoy, semoga makin kece jadi fullstack developernya ‚Äď mungkin next time bikin tulisan tentang fullstack developer juga oke nih

alhamdulillah targetnya kelar sih, tapi app android nya masih sedikit kurang oke, karena cuma asal jalan :p

chat android app –¬†link

https://github.com/whegreen/billme

socket.io app Рchecked

reponya masih messed up ūüė¶

dockerizing app¬†–¬†link

https://registry.hub.docker.com/u/whegreen/socket.io/

deploy elasticbeanstalk¬†–¬†link

http://socketio-dev.elasticbeanstalk.com/

yang lumayan sih monggo di cek http://socketio-dev.elasticbeanstalk.com/

yang dipelajarin dari #onemonthapp sesi 1 kemarin sih cukup banyak mulai dari

– setup node.js + socket.io yah, personal achievement aja sih, bisa membanggakan hello world nya ūüėÄ

– setup docker : ini startup yang cukup hot buat para devops. must try!

– setup docker in AWS Elasticbeanstalk : ini juga cukup puas hasilnya buat hello world

– setup socket.io client di android : nah, ini nih… app sih running. tapi karena kemarin terlalu pengin perfeksionis untuk implement design pattern MVP sama nyobain material design library keluaran google, alhasil ga terlalu optimal

yasudah, yang android client nya dijadiin target #onemonthapp #2 aja dan asiknya kali ini ada bala bantuan dari kaka @ariffsetiawan yang akan bantuin saya support mobile site sama backend :3

semoga next time saya ada niatan untuk nulis review dan tutorial untuk tekhnolokhi2 diatas di blog ini.

Bye ‚Äď salam #onemonthapp

#onemonthapp

Sebenernya ga ada yang spesial dari hashtag ini, karena mungkin belum pernah ada yang pakai juga di sosmed.

Ide ini juga berasal dari kerandoman saya (walau saya lebih suka nyebut ini free-will + creativity, tapi banyak temen saya nyebut ini random) ¬†yang ingin menyalurkan hobi ikut hackathon yang beberapa bulan terakhir tak kunjung ada ūüė¶

so the rule is simple – I will create an app in one month regularly, period.

scope #onemonthapp¬†nya juga suka-suka saya, technology stack nya juga suka-suka saya ūüôā kecuali situ mau invest, let’s have some coffee later ūüėČ

Tapi most likely beberapa stack technology yang akan dipakai sih beberapa technology yang sering saya pakai buat project sehari-hari, nanti sambil jalan dibahas satu-satu deh ūüôā

  1. Client / Frontend
  2. Backend / RESTFul API Server
  3. Infrastructure / Cloud / DevOps – mostly AWS Technology
  4. Database

Oke deh, dari pada makin manjangin tulisan yang ga bisa dicompile ini, saya lanjut buka code editor aja.

oh ya, buat first #onemonthapp project nya mau coba bikin sample chat android app + socket.io server + docker + AWS Elasticbeanstalk. Asoy, semoga makin kece jadi fullstack developernya Рmungkin next time bikin tulisan tentang fullstack developer juga oke nih

Bye – salam #onemonthapp

Some Android Studio Shortcut

Hi,

Just moving on from eclipse to android studio – now it’s the official IDE for android and want to give a try.

Some problem I was facing is that I’m too attached with eclipse (sublime text too) so I hate¬†the moment when I need to google some shortcut to make my coding session as efficient as possible.

But overall I love two things that android studio offer :

1. use gradle as default for managing plugin and library

2. the preview layout that lighter than in eclipse

So I decide to move on from eclipse and here some shortcut I’d love to share with you so your zen mode will not disturbed by googling mode for finding shortcut


 

Opening Class/File/Symbol

Open class 
cmd+o | ctrl+n

Imagine that you must go to a class named ‚ÄúMainActivity‚ÄĚ, just use this shortcut and start typing ‚ÄúMainA‚ÄĚ.

Open File
cmd+shift+o | ctrl+shift+n

Works like the ‚ÄúOpen Class‚ÄĚ shortcut but on every files in your project. It is very useful to open your AndroidManifest.xml or anything that sits in the¬†res/¬†or¬†assets/¬†folder.

Open Symbol 
cmd+alt+o | alt+shift+n

A very powerful but little less known variation of the previous tips: You can use this to go directly to a method or field by searching its name!

For example, if you know that you have a method named getFormattedDate() somewhere in your project, you can type it in the Open Symbol dialog to go directly to it.

Tips
Partial Matching

You can enter incomplete strings and it will work. For example. if you are searching for a class named ‚ÄúItemDetailFragment‚ÄĚ, you can actually type ‚ÄúIDF‚ÄĚ and it will find it.

Line Number

Imagine that your colleague just told you that the juicy part is in¬†ExcitingClass¬†at line 23. You can open the file directly by appending a ‚Äú:‚ÄĚ to the class name in the¬†Open Class¬†dialog. e.g.:

ExcitingClass:22

You can also combine it with partial matching and type something like:

EC:22

Recent Files

Recently opened files
cmd+e | ctrl+e

This will show a popup listing the files you navigated to previously.

Recently edited files
cmd+shift+e | ctrl+shift+e

Same as the above but listing only files that have been edited.

Tip:

Start typing to filter the list.

Navigate Back/Forward 

cmd+alt+left/right | ctrl+alt+left/right

To understand this shortcut, think about how the back and forward buttons work in a web browser. Now, instead of thinking in web pages, think about source code! So when you drill down in code or open a new file, the IDE will remember where you where before, allowing you to quickly go back.

Last Edit Location 

cmd+shift+backspace | ctrl+shift+backspace

This is a variation on the ‚ÄúNavigate Back‚ÄĚ shortcut that cycles between the locations where you typed something.

Picture yourself fixing a nasty bug. You think you have the solution so you start fixing it but then realize that you have to look at the android source code and a couple other classes in your project. You enter a function, which leads you to another class, which leads you to another thing and 20 steps later, you finally have the insight needed to complete your fix… but in which file and at what line where you again? Just use this shortcut and you are right back at the exact line where you stopped writing.

Show Usage

In a Persistent Panel
alt+f7 | alt+f7

Shows where something is used. For a class member, it will show where reads and writes are made. For a method, it will show where it is called. For a class, it will show where new instances are created.

You can use the arrow keys and the return key to navigate trough results. You can then press the escape key to go back to the editor.

In Place
cmd+alt+f7 | ctrl+alt+f7

Same as before but shows the information in a popup.

Goto Declaration/Implementation (Drill Down)

Here are three shortcuts to drill down into a symbol:

Goto Declaration

cmd+b | ctrl+b
cmd+click | ctrl+click

Goes to the declaration of the class, method or variable. Mostly useful on classes and methods since it redirects to the implementation.

Goto Implementation

cmd+alt+b | ctrl+alt+b

Shows a list of all the classes/interfaces implementing the selected class/interface. Also works on methods to find where they are implemented/overriden. On variables, it has the same effect as Goto Declaration

Goto Type Declaration 

ctrl+shift+b | ctrl+shift+b

When the caret is on a variable, it will go to the declaration of its type. For example, if I have the following line:

Developer whe = new Developer("whe");

If the caret is on the variable ‚Äúwhe‚ÄĚ, this shortcut will go to the declaration of the ‚ÄúDeveloper‚ÄĚ class.

Goto Super

cmd+u ctrl+u

This will open the parent of the current symbol. Pretty much the opposite of Goto Implementation. If the cursor is in an overriden method, it will open its parent implementation. If the caret is in a class but outside the method or on the class name, it will open the parent class.

being a (junior) manager

Beberapa hari ini di kantor saya (@mivoindonesia) banyak orang baru yang onboard, imbasnya di daily¬†standup meeting kami¬†selalu ada perkenalan. dan ini template perkenalan yang selalu saya pakai : ‚ÄúSaya Walesa, panggil aja whe,¬†disini tugas saya untuk lead product development aplikasi mivo¬†mulai dari iOS, android, website, server, sampai API‚ÄĚ
so far saya udah mulai nyaman (baca : pede) untuk memperkenalkan diri saya sebagai manager karena ini adalah pertama kali nya saya di assign di posisi Project Manager dan beberapa orang direct report saya bahkan lebih senior dari saya.
IMG_0780
Yang menyeponsori saya untuk ngeblog kali ini adalah team saya (@o_rangers) yang ketika memperkenalkan diri selalu menyebut nama saya, dan karena kantor saya ini masih bisa dibilang startup yang pegawainya tidak terlalu banyak, saya baru sadar tim saya yang paling banyak (cuma 6 orang sih) Рdari situ saya ingat sebuah quote :

When you have someone calling you boss, a lot about your working life is different

dulu ketika mulai bekerja saya punya senior,¬†supervisor dan manager yang baik sekali ūüôā saat itu yang perlu kupeduliin ya cuma task saya, saya cukup bertanya ke manager saya apa yang harus saya kerjakan seminggu kedepan, tanya ke supervisor saya¬†framework, module atau bagian mana yang perlu saya tambah atau rubah, bahkan ketika saya ada kesulitan saya bisa minta bantuan senior saya. What a life! all I need to do is to complete all the task using my best ability
nah, oke saya mulai share deh apa yang berbeda pas saya punya direct report :

sekarang bukan lagi masalah personal achievement saya

punya direct report itu artinya kerjaan saya sekarang bukan sekedar¬†rutinitas coding seperti biasa yang asal selesai sebelum lewat deadline.¬†Yang paling kerasa adalah harus selalu ‘available’ kalau ada yang ingin tanya, ingin diskusi, atau butuh solusi. Sebelumnya saya berpikir ini no big deal, karena dulu saya punya bos dan supervisor yang anak2¬†twitter bilang :¬†AWSM¬†– mereka punya skill untuk selalu ada dan menyambut dengan senyum 3 jari ketika saya mau tanya-tanya. Ini yang selalu saya jadikan pegangan – ternyata ga gampang untuk melakukan itu.
Most bosses are good at being available, but great bosses can really stop what they’re doing to help talk you through your issues.

moment ‚Äôngobrol personal’

dulu, supervisor sama bos saya suka ngajak meeting personal untuk ngobrolin tentang¬†kinerja saya, kadang kasi¬†selamat, kadang kritik, kadang juga kasi semangat dan yang paling AWSM (kalo kata anak2 twitter) adalah mereka¬†selalu kasi saya saran untuk future development saya :”)
Saya ngga pernah mikir jauh tentang ini, tapi ternyata moment ‘ngobrol personal’ saya dulu punya impact yang gede banget sama karir saya sekarang sampai akhirnya saya harus bikin moment ‘ngobrol personal’ sendiri sama team member saya.
kadang saya ngerasa saya udah kasih feedback yang bagus (feedback bagus bukan selalu pujian lho ya) tapi¬†ada juga moment dimana saya merasa apa yang saya obrolin abstrak dan ga terlalu jelas tersampaikan ūüė¶
hal penting yang saya pelajari adalah, selalu persiapkan meeting personal ini dengan baik, coba untuk punya beberapa point tertulis tentang feedback yang akan dibicarakan, dan selalu siap untuk mendengarkan Рmungkin hal yang saya sampaikan bisa berimpact besar nantinya.

next level of self-development 

Hal yang menurut saya paling aneh adalah ketika memiliki direct report, sekarang saya merasa bertanggung jawab dengan masa depan team member saya (in some ways… tsah!) Yah kerjaan dan attitude nya emang harus oke sih, tapi saya harus kasih arahan supaya team member saya jadi seseorang yang AWSM (kalo kata anak2 twitter). Apa yang harus dikerjakan, kenapa harus pakai cara ini,¬†point apa yang harus dipelajari ketika mengerjakan project, dan yang terpenting memberi tahu ke arah mana karirnya nanti bisa berkembang.

Eits, tapi ini bukan lebai lho, karena nantinya saya harus jadi sponsornya ketika performance review sama promosi¬†jabatan – bukan lagi saya ngomogin skill dan achievement saya, tapi ngomong untuk orang lain di depan atasan saya atau manager yang lain. Hal yang paling sering saya alamai adalah ketika team saya dianggap tidak perform sama departemen lain atau bos saya, padahal mereka sudah give their best – disitu kadang saya merasa sedih… :p

IMG_0784

Itu sih sekedar cerita saya setelah setahun lebih dikit punya pengalaman jadi manager, ga tahu juga sih apakah dimata team member saya saya udah jadi manager yang baik atau mungkin mereka masih anggep saya manager ababil saya juga ga pernah tahu :)) all I know is I’m proud of them and I’m happy to grow with them