Mengenal berbagai Pola Pembayaran Klien pada saat menjadi Freelancer

Menjadi freelancer itu harus paham bahwa jarang ada bayaran ontime layaknya gajian bulanan kantoran.


Ini saya coba ceritakan satu per satu pola dan jenis kliennya biar pada siap kalau jadi freelancer.

  1. Tipe plat merah atau BUMN
    • Penunjukan langsung
      Ini kadang ada DP, kadang diminta selesai 100% dulu baru dibayar. Tapi karena penunjukan langsung, biasanya ada “orang dalam” yang bantu memudahkan jalan sehingga ada DP ataupun ada termin pembayaran, aslinya? secara regulasi ya nunggu 100% dulu baru bayar. Makanya ini yang saya sebut kurang sehat secara bisnis.
    • Tender
      Ini ada yang minta diselesaikan dulu 100% baru dibayar 100%, adapula karena nilainya di atas 500 jt, pihak klien minta uang jaminan. Ini pernah tau di tahun 2010, saya gak tau aturan ini masih ada apa tidak.
      Nah, bagaimana nasib programmernya dong? kalo dibayar tunggu selesai dulu, padahal yang kerja kan kadang estafet dari system analyst, db designer, ui/ux designer, developer, terus qa tester? Ya, project ownernya yang turun tangan ngasih bayaran buat developer pake duit pribadi atau kas perusahaan dianya.
      Kalo yang agak kejam ya membiarkan semua personil belum dibayar sampe klien mencairkan.
    • Outsourcing yang stay di kantor
      Kerja di kantor klien setiap hari kerja. Dibayar layaknya karyawan tetap, yaitu dibayar setiap bulan, tapi minus tunjangan.
  2. Tipe klien lokal bank atau swasta
    • Dengan termin / DP
      Karena swasta itu lebih fleksibel, bisa dinegosiasikan mau pake DP berapa persen, mau pake termin berapa kali, dsb.
      Nah untuk pembayaran, kudu dijelaskan di kontrak, tiap termin dibayar tanggal berapa, biasanya klien minta tenggang waktu pembayaran, ada yang sampai 7 hari, ada pula yang sampai 30 hari (biasanya bank swasta sampai 30 hari sejak pengajuan invoice, baru cair). Jadi, developer ketika tau kondisi seperti ini, asal invoice sudah kita tagihkan, harusnya tidak perlu nagih berulang-ulang. Saya pernah loh dimarahin klien bank, karena nagih setiap minggunya haha.
    • Bulanan
      Nah untuk swasta/bank bulanan, ya sama seperti kerja karyawan biasa, dibayar setiap bulan layaknya gajian, tapi tidak ada tunjangan. Tapi beberapa kasus, ada pula yang ngasih bonus misal karena performa atau aplikasi yang dibuat membuat klien untung besar.
  3. Tipe klien luar 
    • Dengan termin
      Selama setahun terakhir, beberapa klien luar juga ada yang menerapkan termin, tapi jarang, kalopun ada mesti di luar kota besar. Pakai metode termin di sini kalo kliennya sudah yakin scope of worknya fix, maka costnya juga wajib fix. Tidak ada penambahan ataupun surprice cost.
    • Bulanan
      Selama setahun terakhir, ada beberapa klien yang mau bayar bulanan, jadi scope pekerjaan tidak fix, akan ada perubahan (sedikit/banyak), dan kitanya gak boleh baper kalo ternyata yang sudah digarap tidak jadi dipakai. Lah wong tetep dibayar hehe.
      Dan kayak pengalaman kami dengan klien Swedia, itu bulanan, dibayar di muka, tiap bulan gajian dulu, baru kerja 30 hari ke depannya. Tapi kami tetap pro, walau kadang pembayaran telat cair, kami tetap bekerja setiap harinya selama hari kerja (dan beberapa kali weekend juga tetep kerja), dan gak masalah, wong gak ada masalah juga hehe.


    • Kondisi apa yang bisa bikin klien luar terlambat bayar?
      Aslinya kliennya bukan terlambat bayar, sudah dibayar tapi cair ke rekening Indonesianya yang lama.
      Nah, klien luar itu tidak seperti klien lokal, bayarannya tidak seperti transfer dari Mandiri ke BCA, tapi karena internasional, biasanya ada beberapa kondisi lagi:
      • Tidak bisa menggunakan pembayaran internasional pihak ke-3 kayak Wise/Stripe/Payoneer
        Maka untuk masalah ini, pembayaran bisa terlambat cair sejak dibayarkan klien, proses transfer bisa memakan waktu 3-10 hari kerja, aslinya sih makan waktu 3 hari, tapi karena hari kerja, misal ditransfer kamis, maka hitungan harinya jadi: jum’at, senin, selasa, yang berarti estimasi hari selasa, bukan minggu. Dan kalo ternyata regulasinya unik, contoh seperti pengalaman kami dengan klien Israel: klien transfer butuh waktu 3 hari, nah buat cairkan makan waktu 3 hari lagi, jadi total 6 hari kerja. Kalo kena weekend ya siap-siap jadi 10 hari.
      • Pakai Wise/Stripe/Payoneer
        Wise super cepat dan fee transfernya cukup murah dibandingkan yang lain, proses transfer 1/2 sampai 2 jam saja sudah sampai ke rekening kita. Tapi sayangnya tidak semua negara dan bank hanya bank tertentu saja yang support Wise. Payoneer lumayan besar coverage-nya, tapi fee transfer bisa sampai 80 usd, dan itupun buat cairkannya sama, bisa makan waktu 6 hari.



Semoga bermanfaat!



Tune-up your M1 Macbook

After 2 days i work using Mackbook Air M1, i saw the “Activity Log” on “Activity Monitor App” have a serious high process running on Background.
So, i did some researches and try it by myself and monitoring after it, to know is this tweaks is harming my Macbook or not. So i write this post to tell what i found.

  1. CalNCService on Memory TabIf you see on the Memory Tab, you will see “CalNCService” using the memory higher than other process, between 800 MB till 1 GB.
    So what need to do to make the “Memory Pressure” always green?

    OK, the steps need to follows are below:

    1. Open System Preferences, Internet accounts and untick Calendar for each account.
    2. Open Activity Monitor, search calendar and quit calendar processes.
    3. In Spotlight Search (⌘Space) open /Library/Caches and drag contents to trash.
    4. In Spotlight Search (⌘Space) open ~/Library/Caches and drag contents to trash.
    5. Again, in Spotlight Search open ~/Library/Caches and drag contents to trash.
    6. In Spotlight Search (⌘Space) open ~/Library/Containers  and select
      com.apple.CalendarAgent,
      com.apple.CalendarAgent.CalNCService,
      com.apple.CalendarFileHandler,
      com.apple.CalendarNotification.CalNCService
      Drag the selection to trash.
    7. In Spotlight Search (⌘Space) open ~/Library/Calendars and drag contents of the folder to trash.
    8. Restart your computer.
    9. Empty trash.
    10. Open System Preferences, Internet accounts and tick Calendar for each account.
    11. Open Calendar and wait for Calendars to sync.

    Notes: this issue is happened on macOS Sierra and above, not only M1, but in M1 make this issue worst. So you’ll need to do this step.
    I am ensuring this step is no harming your Macbook.

    so green..so healthy
  2. kernel_task on Disk Tab
    There are so many articles on the internet that told you, the SSD on M1 chip is bad. They said it will make SSD lifespan on M1 short. I found it on “Activity Monitor”, the kernel_task has 1,4 GBytes written.
    The suggestion came out and want you to turn off swap memory. Trust me, don’t do that, it will make your M1 Macbook worst. So what need to do? Don’t worry about that. I’ve read so many articles, and found this: How worried should you be about your M1 Mac’s SSD lifespan? (macworld.com):

    “What is also clear from other studies is that the more memory you have the less you have to swap it to the SSD. The M1’s memory management is no doubt more efficient than that of Intel Mac’s, but it can’t work miracles. When it’s time to swap, it’s time to swap, and that may be due to heavy-duty creative work or simply having a lot of memory-hungry programs open at once.”

    So, don’t worry about that. Let it flow……

Thank you.

Tips-tips bekerja dari rumah

Pernyataan Presiden 1 jam lalu (15 Maret 2020): “Ini saatnya kita kerja dari rumah”

Jikalau pernyataan ini diindahkan semua perkantoran baik perkantoran pemerintah daerah maupun swasta, berarti semua akan bekerja secara online dan bergantung dengan koneksi Internet.

Ada beberapa tips agar dapat optimal bekerja dari rumah: (karena saya sudah 12 tahun kerjanya dari rumah, status sebagai karyawan divisi digital bankingpun pun tetap kerja dari rumah haha):

  1. Kerja di rumah itu perlu “self-control” dan “self-dicipline” yang tinggi. Kenapa? Godaannya besar, mulai dari godaan barang elektronik, buka socmed, belum lagi bila sudah punya anak, anak-anak mesti ngajakin main. Lalu antisipasinya bagaimana? kendalikan diri, kapan waktunya kerja, kapan waktunya alokasikan waktu dengan keluarga/hal-hal lain. Bila memang anak-anak sedang mengajak bermain, ya sudah coba istirahat 15 menit dari bekerja, kondisikan anak-anak, buat mereka sibuk bermain, sambil kita menemani dari jauh (misal dari ruang kerja kita di rumah), baru setelah itu fokus kembali tinggalkan anak-anak sejenak untuk bekerja dalam waktu 2-3 jam, setelah itu break lagi 15 menit ke anak-anak. Anggap aja “Teknik Pomodoro”. Bila ada satu waktu perlu concall dengan kantor, perlu situasi tenang, ya sudah mengungsi dulu ke kamar atau ruang kerja, anak-anak biar ditemani ibunya ntah main di teras, main di kamar satunya, dll. Jadi, situasi nyaman dan aman terkendali. Namun bila kondisinya berubah, misal anak sedang sakit atau sedang rewel, mau tidak mau izin dulu ke kantor agar menggantikan waktu jam kerja pas anak-anak tidur, misal dikerjakan di tengah malam, tidur setelah isya’, bangun jam 12-1 terus lanjut kerja sampai subuh. Setelah subuh break istirahat, baru bangun sarapan, dan aktivitas seperti biasanya. Misal bantuin istri nyuci piring, bersih bersih rumah di pagi dan sore hari, dll.
  2. Perlu koneksi internet yang mumpuni. Di rumah, saya awalnya coba langganan 1 Mbps internet, maklum dulu masih awal nikah, kemudian setahun kemudian naik jadi 10 Mbps, kemudian naik jadi 30 Mbps, dan akhirnya naik lagi jadi 50 Mbps. Ini dikarenakan kebutuhan serba cepat, jangan sampai komunikasi terganggu, kadang-kadang juga diminta diskusi online melalui Zoom atau Skype, ntah video call atau voice call. Dan terkadang harus upload beberapa pekerjaan dalam jumlah besar yang sizenya di atas 50 MB, jadi harus serba cepat. Jadi, pastikan koneksi internet mumpuni di rumah. Bila cuaca buruk atau koneksi internet sedang trouble atau gamas (gangguan massal), ya mesti siap internet cadangan. Kalau di Godean sini, karena opsinya cuma sedikit ya internet utama: Indihome, dan internet cadangan: Smartfren. Jadi, gak ada alasan internet mati/lelet, mesti pro mengumpulkan progress pekerjaan.
  3. Buat catatan pengingat jadwal sendiri, karena komunikasi pekerjaan dan koordinasinya jarak jauh, terkadang ada banyak hal yang missed, untuk itu perlu dibuat catatan sendiri, ntah nulis di notebook, atau nulis online di Evernotes, Trello, Google Notes, dll. Dan sync-kan ke Calendar, biar tidak lupa (set reminder-nya), dengan begitu walaupun ada godaan/gangguan dari rumah, tetap ada yang mengingatkan.
    Dan jangan lupa juga, bikin report sendiri, catat apa yang sudah dikerjakan hari ini, biar nanti sewaktu-waktu ditanya kantor, kita bisa mudah menjawab, tanpa harus bertele-tele “bentar, ya pak, saya lupa kemarin garap apa saja”
  4. Buatlah situasi bekerja di rumah dengan nyaman. Sediakan ruang kerja atau ya siapin meja dan kursi yang nyaman deh. Saya beli di Informa 1 set sekitar 2-3juta sih, cukup murmer. Bisalah dicoba dianggarkan budget segitu agar lebih produktif.
    Pencahayaan dan pengaturan/sirkulasi udara di ruangan juga harus nyaman, agar tidak mudah sakit.
  5. Karena di rumah ada istri (buat yang sudah nikah), istri bisa jadi penyemangat kerja 😄 ada yang mijitin, ada yang nyemangatin hehe.

Semoga bermanfaat.

————–

Jokowi telah meminta segenap masyarakat untuk meningkatkan kewaspadaan terhadap penyebaran virus corona dan Covid-19 : https://nasional.kompas.com/read/2020/03/15/14232961/jokowi-saatnya-kerja-dari-rumah-belajar-dari-rumah-ibadah-di-rumah?page=2

Tidak Semua Bisa Latah “Agile”, Tergantung Permasalah dan Sikon Perusahaan

eberapa waktu lalu, saya dapat pelajaran berharga dari salah satu perusahaan…

di mana perusahaan ini mengikuti trend yang ada.

“kita akan gunakan agile metodology!”

Sontak yg lain girang “wah, keren nih…itu gw denger metodologi kekinian dlm pengembangan software… waterfall so yesterday”

Lantas, seiring waktu berjalanlah..
yang dianut paham scrum fundamentalist, namun yang terjadi adalah mentalitas kerja yang silo abis.

Tau apa itu mentalitas silo?
Itu loh, contohnya di lembaga pemerintahan, masing-masing lembaga pasang pagar berduri, tidak mau bersinergi satu sama lain, alhasil antar lembaga negara format data dan standarisasinya berbeda-beda…kecenderungan tertutupnya, yang kudu digarisbawahi. Alhasil ketika mencoba mengintegrasikan sistem atau sinkronisasi data menjadi tersendat, yang berakhir membuat database tersendiri yang tidak realtime.

Antar anggota tim dan antar tim di dalam perusahaan tidak memikirkan standarisasi, ada yang bikin database formatnya kayak begini, ada yg bikin backend kayak begitu, ada yangmemanfaatkan komunikasi tim menggunakan tool ini, ada tim lain yang menggunakan tool itu..dan yang terjadi adalah tidak sinkron antar departemen/lembaga di dalam perusahaan.

Ibarat membangun sebuah rumah, masing-masing tim memiliki kamar yang tidak menentu ukuran kamarnya, ukuran pintunya, bentuk pintunya, dll. Jadi semua bergerak sendiri-sendiri. Tidak akan terasa betapa “chaos”-nya nanti pada saat ada yang ngomong “kita mau nyoba nyatuin semua layanan yg dibuat tim A dan B” | “waduh, pak…masalah e tim B bikinnya pake anu..iki aku malah bingung integrasiinnya piye?” | “bikin ulang po?” | “walah”

Jangan heran kalo ada perusahaan yang setiap tahun ganti platform. 😀 

Beberapa waktu lalu saya dapat artikel menarik juga mengenai hal ini, dan mengenai silo busting.
Apa itu silo busting? Secara garis besar silo busting dapat diartikan sebagai bentuk memecah pembatas kolaborasi antar tim/lembaga di dalam perusahaan.

Berikut artikelnya; sila klik tautan

  1. Forget Agile vs Waterfall, It’s Silo Busting.
  2. dan How to boost collaboration.

Mengapa waktu proyek tidak dapat dihitung dengan pasti?

Pengembangan software ataupun aplikasi itu tidak pernah menggunakan ilmu pasti.

Untuk waktu pengerjaan proyek dan biaya proyek juga selalu menggunakan estimasi: estimasi waktu dan estimasi harga.

Di luar sana, selalu menggunakan pendekatan “agile”, di mana interaksi antara tim pengembang dengan tim user ataupun klien lebih penting daripada proses.

Mengapa demikian? dengan kita berinteraksi, persepsi tim pengembang dengan tim “user”/klien akan selalu seirama.
Itulah mengapa terkadang walau sudah kita definisikan rancangan sistem dari “software” ataupun aplikasi di awal, pas di proses terkadang ada saja perubahan atau tidak tepat 100% sesuai dengan rancangan awal, mesti ada yang bergeser. Ini dikarenakan apa yang ditangkap tim pengembang dengan apa yang disampaikan tim “user”/klien ketika menyampaikan “scope” pekerjaan ataupun masalah yang harus diselesaikan, tidak semuanya 100% sama.

Contoh: tim klien meminta dibuatkan rumah yang ada tangganya. Tim developer menerjemahkan maksud dari si tim klien tangga kayu vertikal. Padahal, yang dimaksud tim klien adalah tangga spiral terbuat dari besi (ini contoh sederhana saja).

Jika di awal terlalu detail mendefinisikan semua, yang ada waktu akan banyak terbuang. Itulah mengapa pekerjaan pengembangan software dilakukan bertahap dan ada batas waktu, selanjutnya ya tinggal evaluasi bersama. Dan penting juga bagi tim developer memahami apa masalah klien dan apa solusi yang tepat (tidak harus menuruti 100% keinginan klien, karena terkadang sebenarnya klien juga tidak memahami masalahnya sendiri).

Nah, itulah mengapa pentingnya dipahami bersama jika waktu dan harga proyek itu tidak bulat sama dengan yang direncanakan di awal, mesti ada perubahan, ya lazimnya kalau ada tambahan “task”, di-charge di akhir, biar fair. Atau dibuat per fase, jadi kalau ada pekerjaan tambahan, dilanjutkan di fase kedua (tergantung prioritas).

Demi mencapai hal tersebut, biasanya ada “daily meeting/call”, “weekly meeting/call”, laporan dwi-mingguan, dll. demi mencapai target yang diinginkan agar semua tetap pada tempo-nya, pada prinsip yang sama, dan tetap “on-track” sesuai “task” pekerjaannya.

Tim klien juga harus menyadari, tidak bisa menuntut “loh, kok molor, kan di kontrak kerja targetnya tanggal sekian” | “pak, itu yang di proposal kami dan di kontrak kerja sudah kami sampaikan kalau itu estimasi. Bapak juga mestinya paham, di tengah proses pengembangan kemarin, bapak minta perubahan di bagian form tertentu, itu tentu memakan waktu dan mempengaruhi timeline dari pekerjaan ini. Tidak bisa sama waktunya, pak. Ibarat bapak bangun rumah, bapak minta tambahin garasi mobil, yang sebelumnya minta garasi motor, tentu akan merubah requirement yang sudah disepakati, meskipun sama-sama garasi”.

Di tambah lagi, terkadang di tengah proses, ntah tim klien ataupun tim developer, “discover” sesuatu yang lebih baik, ntah berdasarkan “feedback” dari “end-user”-nya, ntah karena sudah terlihat wujud desainnya, dirasa kurang pas, dan lain sebagainya.

—————————————-

Apakah perubahan di tengah proses dapat diatasi dengan menambah personil? belum tentu, terkadang “transfer knowledge” sampai dengan progress terakhir itu butuh waktu bagi personil baru, dan bahkan untuk “menyamakan tempo” saja butuh keahlian khusus, tidak semua bisa. Paling aman ya waktunya yang bergeser, atau personil baru mengerjakan “task-task minor”.

Oleh karena itu, penting dipahami bersama, masalah waktu dan harga di dalam proyek itu hanya bisa dihitung sebatas estimasi saja (lazimnya seperti itu), dan harus mengetahui resiko-resiko(resiko teknis, “scope” pekerjaan, SDM, man hour, dll) dari setiap keputusan perubahan yang diambil di dalam pengembangan aplikasi atau software.

Penjelasan Soal NAT di Dalam Nintendo Switch Beserta Penanganannya

Kalo ada orang jaringan (network engineer) di sini mesti bisa jelasin lebih mudah apa itu NAT. Apalagi yang sudah CCNA certified 🙂
Jadi begini, apa itu NAT?
NAT atau Network Address Translation adalah suatu metode atau salah satu protocol di dalam jaringan untuk menghubungkan lebih dari satu device ke jaringan internet dengan menggunakan satu alamat IP (melalui router).
Router internetmu akan menggunakan NAT tersebut untuk menyimpan setiap catatan (log) dari semua request device yang terhubung ke jaringan router tersebut, dan kemudian mengirimkan semua request tersebut ke server yang dituju (dalam hal ini server Nintendo) di internet. Request ini kalau dalam game bisa berupa request ID/user ide pemain di dalam game multiplayer, request data pergerakan pemain, dsb. Ketika routermu menerima respon dari server (dari internet), kemudian router tersebut mengirimkan respon-nya ke perangkat yang sesuai. Ya, yang request si Switch yang nerima juga tentu si Switch.
Dengan banyaknya request tersebut dan banyaknya perangkat yang terhubung ke internet dan terutama server Nintendo, untuk itulah diperlukan pengklasifikasian NAT (NAT juga dapat membedakan mana IP public dan mana IP static).
Mengapa pengklasifikasian NAT dilakukan? salah satunya, agar menjamin komunikasi antar device (dalam hal ini Switch) dapat berjalan lancar sesuai dengan type NAT-nya.
Mengapa Nintendo, Sony, dan Microsoft melakukan klasifikasi NAT ini? ya karena beberapa provider internet tidak mengizinkan NAT dibuka (biasanya port diblokir), atau bahkan dibatasi oleh vendor tersebut, jadi kalau NAT-nya gak OPEN ya bakal susah melakukan koneksi ke server.
Nah, di dalam dunia games Nintendo Switch, klasifikasi NAT adalah sebagai berikut:
    1. NAT type A (dalam hal ini OPEN): artinya kamu akan mendapatkan skala 1:1 mapping port di dalam jaringan, koneksi tidak terblokir. Buat nge-game splatoon gak masalah.
    2. NAT type B (dalam hal ini OPEN tapi mengerucut ke MODERATE): artinya koneksi tetap berlangsung dari device ke server namun terjadi di belakang NAT, dalam hal ini console Switch bakal terkoneksi ke server STUN punya Nintendo. Buat nge-game Splatoon mestinya masih OK, gak masalah.
    3. NAT type C (dalam hal ini MODERATE, yang mengerucut ke Strict): artinya koneksi terbatas hanya pada port yang dibuka saja, jadi kalau ada gamer dengan koneksi dan port yang sama ya dapat terhubung. Sayangnya Splatoon menggunakan port yang acak, jadi ya kalau port-nya gak cocok gak bakal bisa konek ke server Splatoon (gak bisa main multiplayer). Buat nge-game Splatoon ya nasib-nasib-an.
    4. NAT type D & E (dalam hal ini STRICT): artinya routernya tidak ada pengaturan NAT, alias sepenuhnya diatur oleh ISP (provider internet-nya), yang model gini biasanya sangat-sangat terbatas.

Klasifikasi NAT
Untuk tipe NAT C sampai dengan B, sebenarnya ada cara dan masih memungkinkan untuk bisa naik ke type A. Karena NAT ini berhubungan dengan settingan Port, maka kamu harus melakukan port-forwarding.
Apa itu port-forwarding?
Fitur dari router di mana fungsi ini akan membuka akses terhadap perangkat pada jaringan lokal untuk bisa diakses dari internet) di router ISP-mu. Bila di console sebelah dikasih tau port berapa aja yang harus dibuka untuk device tertentu, sayangnya di Nintendo Switch sampai saat ini belum diketahui (Nintendo belum memberitahukan port apa saja dan protocol apa saja yang harus dibuka).
Nah, langkah lain adalah membuka semua port untuk koneksi yang masuk dari internet.
Biasanya di pengaturan router ada yang namanya pengaturan NAT type: “full-cone NAT”, yang berarti semua tipe NAT di mana port-nya dibuka secara permanen (OPEN) dan mengizinkan permanently open and mengizinkan semua koneksi dari luar.
Namun, ada beberapa router tidak menyediakan hal tersebut, akan tetapi menyediakan menu untuk pengaturan port-forwarding. Di menu port-forwarding tersebut, kita diminta mengisi IP address device dan port yang ingin dibuka, seperti pada gambar di bawah ini:

Contoh pengaturan PORT FORWARDING untuk console sebelah

Nah, seperti yang sudah dituliskan;disampaikan sebelumnya kalau kita tidak mengetahui port berapa saja yang harus dibuka. (*ada pembaharuan tulisan ini, cek di bawah ya untuk pengaturan port-forwarding di Nintendo Switch)
Untuk itu, pengaturan lain agar dapat mengubah type NAT menjadi OPEN, adalah dengan membuat pengaturan DMZ server.
DMZ atau DeMilitarized Zone sederhananya adalah fitur yang memungkinkan perangkat dibalik router untuk diakses dari internet.
Jadi, kalau tadi kita sudah tahu kalau port-forwarding hanya akan membuka akses sesuai dengan port yang dibuka dan bisa digunakan terhadap beberapa IP, nah sedangkan DMZ akan membuka seluruh port sebuah IP lokal untuk bisa diakses dari internet dan hanya bisa membuka satu ip local saja (satu perangkat, dalam hal ini Switch).
Perlu diperhatikan juga, karena DMZ ini membuka semua port tanpa terkecuali, oleh karena itu jangan sekali-kali membuat koneksi DMZ host untuk PC/laptop, karena akan sangat rawan diserang intruder/cracker. Untuk Switch, sampai saat ini masih relative aman lah.
Bagaimana pengaturan DMZ server di router? Berikut ini langkah-langkahnya:
        1. Login ke routernya: biasanya menggunakan IP 192.168.1.1 (buka dari browser). Atau kalau tidak tahu IP routernya, cek di pengaturan Network di OS PC/Laptop, biasanya ada keterangan IP router/gateway (untuk TCP/IP)
        2. Pilih menu DMZ host atau DMZ server seperti di gambar ini (biasanya di dalam menu Application):

          DMZ Host
        3. Nyalakan Nitendo Switch, masuk ke Pengaturan>Internet, cek Mac Address Switch kamu, seperti pada gambar di bawah ini:

          Cek mac address di Nintendo Switch

          Mengapa menggunakan Mac Address? karena Mac Address ini sifatnya permanen, berbeda dengan IP (apalagi cuma punya IP dinamis) yang berubah-ubah setiap ganti koneksi/restart koneksi. Jadi, tidak perlu setting ulang IP di DMZ Host, karena yang dikenali Mac Address-nya si Switch.

        4. Input MAC Address dari Switch ke DMZ Host dengan cara memberi tanda centang “Enable Mac Mapping” dan mengisi alamat Mac Address Switch tersebut, setelah itu submit.
        5. Jika sudah selesai langkah-langkah di atas, lakukan restart router dan koneksi ulang Switch kamu ke internet rumahmu melalui router tersebut. Semestinya sih dari B bisa naik ke A.

Updated, Port Forwarding:

Bagaimana pengaturan port forwarding di Nintendo Switch?

Berdasarkan informasi yang beredar di forum reddit dan nintendo, port yang harus dibuka untuk koneksi ke server Nintendo adalah dari port 45000 sampai dengan port 65535, dan protocol UDP.
Bagaimana caranya?
  1. Login ke routernya: biasanya menggunakan IP 192.168.1.1 (buka dari browser). Atau kalau tidak tahu IP routernya, cek di pengaturan Network di OS PC/Laptop, biasanya ada keterangan IP router/gateway (untuk TCP/IP)
  2. Masuk ke Menu Application>Port Forwarding seperti pada gambar berikut:

    Menu Port-forwarding
    Menu Port-forwarding
  3.  Centang tombol enable, beri nama, misal “Switch”, Protocol UDP, WAN host IP address start dan end biarkan kosong, kemudian pilih WAN Connection “pppoe_1”, WAN start port, input angka “45000”, dan WAN end port, input angka “65535” (berlaku juga untuk LAN Host port start dan end), kemudian centang “Enable MAC Mapping”, dan masukkan Mac Address Switch (*untuk cara mengetahui mac address switch, cek tulisan di atas ya, dibahas di pengaturan DMZ, atau search aja di tulisan ini dengan mengetik “mac address”). Jika sudah, pastikan yang diinput benar, seperti pada gambar berikut:

    Pengaturan port-forwarding Switch

  4. Tekan tombol “Add”, selesai, selanjutnya restart router dan coba koneksi ulang dari Switch ke Router.
Sekianlah tulisan singkat, semoga bermanfaat.
Referensi :

Paradigma

Tadi teman bilang: “saya di Java sudah 5 tahun, pak, tapi di rails belum setahun, kalau saya masuk tim itu, bisa-bisa saya jadi kroco”
Lantas teman yang senior satunya bilang: “pengalaman kerja kan bukan dilihat dari berapa lama kamu pengalaman di bahasa pemrograman itu..tapi dari selama ini yang kamu kerjakan, problem solving-nya seperti apa, achievement yang diperoleh apa saja”.

Banyak yang bisa coding, coding malah mudah, bisa otodidak, tapi yang memiliki skill problem solving itu sedikit.
Berapa banyak di grup developer bertanya “mas, aku liat gojek aplikasinya kayak gini, bikinnya gimana ya?” | “yaelah mikirnya langsung gede, mbok ya dipecah satu per satu fiturnya, cari masalahnya, terus cari solusinya…”

Logika coding seperti pemakaian logical expression, dan lain-lain, kalau memang logikanya jalan, mau coding pakai bahasa apapun ya mudah tinggal belajar syntax pemrograman tersebut saja. Bahkan dengan sangat mudah seseorang developer java beralih ke javascript.
Terus apakah yang mempengaruhi hal tersebut? Paradigma!

Paradigma adalah sudut pandang terhadap suatu masalah, realitas, keadaan, dan sebagainya. Dalam pemrograman pun dikenal istilah paradigma pemrograman, yakni sudut pandang atau strategi analisa khusus yang diambil untuk menyelesaikan suatu masalah pemrograman.
Kalau sudah bisa paradigma, mau belajar programming apapun jadi mudah. “if you know how to code, you can code in anything“. Tidak perlu menghapal syntax pemrograman, nanti juga mahir sendiri setelah googling>stackoverflow dan langsung ke kasus.

Nah, balik ke pengalaman kerja tadi, kalau sekedar teori, itu hanya pengetahuan yang masih “terkurung”. Sedangkan wawasan, lebih ke kesadaran emosional, ketika seseorang sudah berpengalaman, wawasan ini membuka “kurungan” pengetahuan yang selama ini dipelajari didasari pada yang telah diamati/dirasakan/kebiasaan. Dan paradigma menjadi seperangkat aturan dan aturan tsb melakukan dua hal:
(1) menetapkan dan mendefinisikan batasan; dan
(2) Ini memberitahu kita bagaimana berperilaku di dalam batas-batas agar tercapai tujuan.
Bagaimana belajar paradigma? ya bertahap dari pahami konsepnya, teorinya, baru memperkuat wawasan dari pengalaman.
Itulah mengapa seseorang problem solver itu paradigma-nya bagus.

Tips Seputar Menulis Laporan Penelitian atau Tugas Akhir

Tugas akhir menjadi bagian yang tidak terpisahkan bagi mahasiswa yang ingin melengkapi langkahnya menuju Sarjana. Berikut ada beberapa tips sederhana seputar menulis laporan penelitian yang setidaknya bisa membantu teman-teman dalam menyelesaikan tugas akhir. Dan untuk menghindari banyak revisi dalam hal tulisan.

Pahami dahulu setiap bagian dari tugas akhir, misal pada BAB I Pendahuluan yang umumnya berisi :

  • latarbelakang masalah,
  • rumusan masalah,
  • batasan masalah,
  • keaslian penelitian,
  • tujuan penelitian,
  • manfaat penelitian,
  • sistematika penulisan.

Biasanya mahasiswa sering kali menuliskan latarbelakang yang tidak berhubungan dengan topik Tugas Akhir yang ia akan jalankan. Latarbelakang haruslah menjadi bagian pengantar yang mendasari mengapa Tugas Akhir tersebut harus dilakukan.

Kemudian pada bagian rumusan masalah semestinya harus mengungkapkan sesuatu yang penting yang menuntun pada penyelesaian masalah. Bagian ini kadang-kadang berupa suatu pertanyaan yang akan dijawab melalui penelitian. Bentuk kalimat Rumusan masalah adalah kalimat deklaratif (problem statement), bukan kalimat tanya (research question). Sedangkan pertanyaan harus ditempatkan di bagian pertanyaan Tugas Akhir.

Untuk bagian batasan masalah, harus diperhatikan dengan cermat oleh si mahasiswa, karena bagian ini membantu mahasiswa agar penelitian atau Tugas Akhir yang ia lakukan, lebih mudah dalam penarikan kesimpulan serta menjaga agar mencerminkan permasalahan yang dihadapi. (Dengan kata lain, agar permasalahan dan cakupan masalah yang dihadapi di dalam Tugas Akhir tidak melebar atau keluar jalur)

Untuk bagian tujuan dan manfaat, mahasiswa sering kali terbalik mengungkapkan tujuan dan manfaat. Tujuan tidak sama dengan manfaat. Tujuan itu mengungkapkan target apa yang hendak dicapai oleh mahasiswa dalam penelitian atau Tugas Akhirnya tersebut. Tujuan penelitian juga tidak bersifat pribadi, jadi harus dihindari tujuan dari sisi mahasiswa, tetapi tujuan mengapa penelitian itu harus dilakukan.
Sedangkan manfaat, menekankan pada manfaat apa yang didapat diperoleh dari hasil penelitian tersebut (lebih kepada perkiraan apabila tujuan penelitian tercapai), dan lagi-lagi tidak secara pribadi, namun umum, misal manfaat untuk user yang menggunakan software yang sudah dikembangkan, dan sebagainya.

Dan terakhir, sistematika tulisan ini mengungkapan setiap urutan bab yang terdapat dalam Tugas Akhir yang disertakan penjelasan singkat dari masing-masing bab tersebut.

Ada hal lain juga yang harus diperhatikan mahasiswa Tugas Akhir, yaitu :

  • penggunaan kata-kata dalam bahasa indonesia yang baku, penulisan kalimat sesuai standar kalimat : SPOK (Subjek Predikat Objek Keterangan), dan apabila terdapat istilah asing, harus dicetak miring (italic);
  • hindari penggunaan kata yang tidak perlu, atau bila perlu hapus saja agar menjadi kalimat yang sederhana. Biasanya sering dijumpai, mahasiswa menuliskan kalimatnya memiliki kata yang berulang seperti kata : agar, supaya, namun, tetapi, dll. Yang tidak pas apabila dibaca;
  • pahami perbedaan imbuhan di- dan kata depan di. Sering kali dijumpai mahasiswa tidak mengerti apakah di yang dipakai adalah imbuhan atau kata depan yang menerangkan tempat. kata “diatas” adalah keliru, karena kata tersebut menunjukan arah/tempat, berarti bukan memakai imbuhan di-, tetapi kata depan di. Sehingga, kalimat yang benar adalah “di atas”. Kata “di mulai” juga keliru, yang benar adalah dimulai, karena mulai bukan menunjukan tempat, melainkan kata kerja. Dan masih banyak contoh lain, jadi harap diperhatikan ya 🙂
  • hal lain adalah menuliskan kata yang kurang pas. Seperti : “data-data yang dipakai”, padahal data adalah kata jamak.  Jadi yang benar adalah : “data yang dipakai”
  • apabila ada dua kata : tanggung jawab bertemu awalan dan akhiran, misal : di- dan -kan. Yang benar adalah dua kalimat tersebut melebur menjadi : dipertanggungjawabkan, bukan dipertanggung jawabkan. Dan masih banyak contoh lain 😀
  • apabila ada dua kata dalam kata bahasa asing yang ternyata terdiri dari satu kata atau sebaliknya, misal : database. Yang benar adalah : basisdata, bukan basis data. Ada pula contoh lain, remote : yang benar adalah : jarak-jauh, bukan jarak jauh.
  • Biasakan ketika sudah menyusun satu bab dalam laporan Tugas Akhir, dicetak, kemudian jangan langsung dibaca. 😀 Coba jalan-jalan santai sejenak, refreshing atau melakukan aktivitas lain, kemudian ketika pikiran santai. Coba baca kembali bab laporan Tugas Akhir yang sudah kamu cetak, biasanya akan menjadikan si mahasiswa menyadari bahwa kalimat atau paragraf yang ia susun itu keliru, nah dari situ, tandai setiap kekeliruan dalam penulisan, lalu lakukan corat-coret untuk me-revisi laporan Tugas Akhirmu. Jika sudah, coba dibaca lagi, apakah sudah pas susunan kata dan kalimatnya di dalam paragraf, apakah satu paragraf dengan paragraf yang lain berhubungan atau tidak. Dan baru deh, menghadap dosenmu dengan yakin dan percaya diri. 🙂

Semoga tips-tips ini dapat membantu.

Sumber dari semua ini adalah dari perkuliahan Metodologi Penelitian oleh Pak Abdul Kadir dan Pak Insap Santosa, dosen-dosen JTETI UGM. Tidak sepenuhnya ditulis, namun disampaikan seadanya. Apabila ada kekeliruan di dalam penulisan artikel ini, itu murni kekeliruan penulis. Penulis mencoba menyampaikan dengan bahasa yang santai agar mudah dibaca, insyaAllah. 🙂

Terima kasih.

NFC dan “internet of things”

Near-field communications (NFC) telah mendapatkan banyak perhatian akhir-akhir ini. Banyak masyarakat telah memfokuskan perhatiannya ke NFC sebagai alternatif kartu kredit, namun sebenarnya NFC ini memiliki kemampuan lebih dari itu.

Di kehidupan nyata, teknologi komunikasi wireless jarak pendek ini memungkinkan kita untuk berganti cara berinteraksi dengan dunia di sekitar kita. Sebagai contoh : Google Wallet dan kemampuan NFC di Android telah difokuskan untuk fasilitas pembayaran.

Sebagai contoh, NFC dapat meningkat, lebih maju, dan berevolusi memasukkin layanan-layanan dan permainan-permainan (games). NFC juga dapat dengan mudah melakukan komunikasi antar device. Aplikasi yang menggunakan NFC untuk berkomunikasi antara pengguna smartphone  dapat melakukan ini dengan lebih mudah, lebih handal daripada Bluetooth atau pembaca barcode. Sebagai contoh : Hasable untuk sharing kontak dan DoubleTwist untuk sharing-MP3. Namun contoh-contoh tersebut hanya menyentuh permukaan kemampuan NFC.

Aplikasi yang handal dari teknologi NFC adalah Tag NFC. Didorong oleh keinginan penjualan konsumen, NFC memiliki kemampuan pembayaran lebih cepat dan lebih bebas kesalahan daripada barcode. Hal ini dapat dilakukan di penjual eceran yang memungkinkan konsumen untuk memeriksa harga, menemukan informasi yang lebih rinci dari sebuah produk dan menemukan produk komplementer. Dan tidak seperti barcode, Tag NFC dapat ditulis. Hal ini memungkinkan calon pembeli untuk mengekspresikan minat terhadap sebuah produk, meninggalkan komentar-komentar dan memeberikan informasi mereka untuk ditindaklanjuti oleh pedagang.

Karena Tag NFC lebih mahal daripada barcode atau tag RFID (sekitar lebih kurang $1 per volume), mereka dapat memakai cara ini untuk penjualan produk yang dengan kualitas-harga tinggi : Mobil, Elektronik, Peralatan Konsumen. Sebagai produk yang lebih mahal dengan pemanfaatan Tag NFC, ini tentunya dapat mengendalikan harga sewaktu-waktu harga barang tersebut turun di kemudian harinya. Apabila harga barang tersebut turun, Tag NFC akan membuat para pedagang memasang ke dalam produk yang seharga $20 atau lebih (seperti pakaian, sepatu, tas, dan sebagainya).

Dan sekarang ada smartphone. Dengan lebih dari 100 juta smartphone yang dilengkapi dengan NFC di tahun 2012 dan lebih dari 1 milyar akan diprediksi 4 tahun ke depannya, tentunya dengan NFC ini, konsumen dapat melakukan belanja produk, membandingkan produk, dan pembayaran dengan menggunakan smartphone yang dilengkapi NFC menjadi lebih umum.

Sekali kita mengadopsi layanan NFC untuk suatu produk atau barang-barang konsumen, akan lebih banyak lagi pemanfaatan NFC ini di berbagai keperluan dan tempat : semua objek akan memiliki Tag NFC. Dan ini tentunya menjadi kekuatan yang transformatif untuk semua aplikasi NFC.

Salah satu contohnya, semua mobil akan memiliki Tag NFC yang terpasang, berisi spesifikasi, statistik dan web link untuk informasi lebih rinci mengenai kendaraan tersebut. Sementara pihak pengendara bermotor mempromosikan produk yang mereka beli, pengalaman mereka mengendarai produk tersebut ke konsumen-konsumen lain, informasi yang diperoleh dengan pemanfaatan NFC ini dapat digunakan oleh perusahaan rental mobil, taxi dan layanan angkutan umum dan armada lainnya agar selalu menjaga layanan dan kualitas dari produk dan aset mereka.

Dan tentunya, ini dapat dimanfaatkan di perusahaan bidang produksi juga. Mesin-mesin dan peralatan yang akan dijual ke perusahaan atau produsen manufaktur, akan dipasang Tag NFC. Setiap peralatan itu digunakan, tag tersebut dapat digunakan ketika proses produksi : pekerja dapat memeriksa kinerja mesin tersebut dan mencatat proses yang sedang berjalan.

Tag NFC di berbagai objek akan mengganti keamanan barang dagangan. Merchandise akan dipasang alarm selama tag NFC yang terpasang di produk tersebut belum ditulis oleh perangkat NFC si pembeli atau pekerja toko. Smartphone pembeli akan menulis tag yang menerangkan bahwa produk tersbut telah dibeli.

Ketika produk tersebut telah dibeli dan dibawa ke rumah, ketersediaan tag yang berada di setiap barang dapat membuat NFC di smartphone memberitahukan atau menjadi petunjuk di mana lokasi smartphone tersebut. Sebagai contoh, ketika meja kerja atau meja kantormu terpasang tag NFC dan ketika itu juga anda meletakkan smartphone di dekat tag tersebut atau berada dalam jangkauan tag tersebut, ini memungkinkan smartphone tersebut berganti modus secara otomatis menjadi “modus kantor” (misalnya : suara nada dering jadi modus tenang dan wifi menyala dan otomatis menggunakan akses internet kantor). Dan ketika anda berkendara, anda meletakkan smartphone anda di dekat stiker NFC di mobil anda, dan secara otomatis smartphone anda berganti modus menjadi “modus berkendara” (di mana semua device Android memiliki modus-modus tersebut).

Dan pada saat anda tiba di rumah sambil memegang smartphonemu yang didekatkan ke pintu yang terpasang tag NFC, dan secara otomatis pengaman pintu elektronik akan terlepas dan pintupun terbuka, dan tidak hanya itu, ini juga mengubah secara otomatis modus smartphone anda menjadi “modus rumah”, menyalakan koneksi wifi dan secara otomatis terkoneksi dengan jaringan internet di rumah dan menjalankan otomatis aplikasi yang terkoneksi dengan server di rumah anda yang dapat menyalakan otomatis lampu-lampu di rumah anda, menutup garasi dan pintu pagar. Dan ketika anda ke dapur, anda dapat meletakkan smartphonemu di meja dapur, dan di meja itu pula anda meletakkan berbagai bahan masakan yang terpasang Tag NFC, dan ketika itupula smartphone dengan cerdasnya mengenali setiap bahan masakan dan mencarikan resep masakan yang cocok dengan bahan masakan tersebut, dan tentunya anda dapat dengan mudah menyiapkan makanan kesukaan di rumah. Dan ketika malam tiba, anda meletakkan smartphone anda di meja kamar tidur, dans ecara otomatis menyalakan aplikasi alarm agar anda bangun pagi.

NFC tentunya menjadi prediksi jangka panjang di masa depan tentang “internet of things”, mengubah paradigma kita dan cara berinteraksi dengan dunia dengan cara yang halus namun meresap (pervasive ways).

Referensi :

Install Git Server di VPS berbasis Linux – CentOS

Di sini akan dicoba langkah-demi-langkah tutorial mengenai instalasi Git Server di VPS (Virtual Private Server) yang menggunakan OS CentOS.

Perlu diketahui, ketika kita menyewa sebuah lingkungan virtual, VPS, kita tentunya akan mendapatkan IP Address VPSmu, akun akses control panelnya (biasanya pakai Lxadmin), atau yang disediakan oleh hostingnya dengan menginputkan username dan password. Biasanya di dalam control panel tersebut disediakan menu : remote access dan ssh remote. Nah, inilah yang akan kita pakai dalam tutorial kali ini. Di sini saya mencoba meremote VPS yang saya sewa menggunakan putty dengan Connection Type : SSH.

Akses VPSmu, menggunakan Putty. Masukkan hostname (atau IP Address VPSmu), dengan port standard : 22.

Ketika sudah masuk ke session VPSmu, silahkan login dengan memakai superuser : root. Dan masukkan password yang telah diberikan oleh hosting tempat kamu menyewa VPS.

Ok, jika sudah, silahkan ikuti petunjuk di bawah ini :

Cek DAG Repository, Webtatic repo untuk Git Server yang akan kita install di VPS, dengan mengetik :

– Untuk Red Hat Enterprise Linux 5 / i386 :

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

– Untuk Red Hat Enterprise Linux 5 / x86_64:

rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Ok, tunggu sampai proses selesai, setelah itu dilanjutkan dengan perintah install Git server :

yum -y install git

Tunggu sampai proses install selesai.

Ketika installasi selesai, saatnya membuat repository.

Membuat repository itu mudah! sederhana, tinggal buat folder untuk reponya, terus diinit, perintahnya sebagai berikut :

mkdir newrepo [diasumsikan nama foldernya newrepo, tapi bebas, terserah kamu namanya]
cd newrepo
git init

Setelah repo sudah dibuat, kita dapat menduplikat atau membuat file-file proyek kita (bisa pakai SVN import) dan lakukan langkah berikut :

git add .
git commit

Nah, repo sudah dibuat nih, kamu mungkin ingin membagi repo mu ke temen-temen. Ini berarti orang lain dapat pull dan push file-file mereka ke repomu dan mengubahnya. Ada banyak cara sharing untuk SVN repository.
Tapi cara yang sederhana adalah menggunakan Git Daemon. Ini akan mengizinkan orang lain push+pull, share, dengan menggunakan perintah berikut :

git daemon --reuseaddr --base-path=/path/to/repos --export-all --verbose --enable=receive-pack

Perintah di atas akan mengizinkan repo untuk dishare melalui folder repo yang kita buat di atas (ex : newrepo). Ketika sudah membuat repo tersebut dapat dishare. Dan tentunya client atau user lain, dapat melakukan clone Git repo kamu. Dengan syntax :

git clone git://remote.computer.hostname/newrepo

Atau via Github atau via Tortoise SVN. 😀

Kamu bisa menggunakan gitolite atau Gitosis untuk integrasi ke Redmine (software project management) dan tentunya tercentral, private, sehingga aman dari ancaman dari luar dan mudah ter-manage

Selamat mencoba dan sukses! 😀