TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1)

Menyenangkan rasanya ketika membuat sebuah aplikasi berbasis Machine Learning bukan suatu hal yang mustahil lagi bagi web developer. Berkat TensorFlow.js yang merupakan salah satu framework open source berbasis pada TensorFlow, kini belajar machine learning menjadi sesuatu yang sangat mudah. Bahkan bisa dibilang hanya membutuhkan beberapa baris code saja.
Terdapat face-api.js yang bekerja di atas tensorflow.js yang telah mengimplementasikan Algoritma CNNs (Convolutional Neural Networks), untuk memecahkan permsalahan seperti Pendeteksian wajah, pengenalan wajah, Face Lanmark dan sebagainya.
Ok supaya tidak Panjang lebar mari kita langsung persiapkan segala sesuatunya.

  1. Pastikan telah terinstall xampp, atau package webserver favorit kita di laptop yang akan digunakan
  2. Buat folder baru dengan nama face-detection di htdoc
  3. Download Tensorflow.rar
  4. Extract kedalam folder face-detection
  5. Buat file index.html
  6. Isikan pada tag <head>….</head>
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 1
  7. Pada bagian body tambahkan element video dan canvas.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 2
  8. Buat file script.js di folder dist sehingga kurang lebih tampilan isi file akan menjadi seperti gambar di bawah.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 3
  9. Dalam file script.js tambahkan deklarasi sebuah variable yang mengarah ke elemen video dan canvas
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 4
  10. Panggil seluruh model yang dibutuhkan dengan menggunakan perintah promise. Pada kesempatan kali ini kita akan menggunakan pendeteksian wajah,kondisi mood, dan pendeteksian landamark pada wajah.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 5
  11. Tambahkan perintah untuk memulai penggunaan webcam dengan menambahkan fungsi startWbcam.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 6
  12. Sampai langkah ini maka ketika kita jalankan di browser makan akan keluar popup permintaan izin untuk menggunakan webcam atau camera. Pastikan tekan tombol Allow untuk memberikan izin kepada browser untuk menggunakan webcam/ camera. Jika proses berjalan lancar maka seharusnya webcam sudah menampilkan gambar dan berfungsi dengan baik. Jika terjadi kesalahan atau gambar tidak muncul berarti terdapat kesalahan ketik pada kode program. Untuk melihat kode program yang error bisa dilakukan inspect element pada browser.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 7
  13. Tambahkan fungsi listener yang akan otomatis dijalankan ketika webcam/ camera telah berhasil diakses yang otomatis akan menjalankan function renderVideo()
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 8
  14. Tambahkan sintax untuk mulai melakukan pengenalan wajah. Dalam fungsi renderVideo(). Akan dilakukan perulangan secara terus menerus, supaya proses pendeteksian wajah akan selalu dilakukan selama camera berjalan.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 9
  15. Jika berjalan lancar maka setiap ada orang yang lewat didepan kamera akan terdeteksi wajahnya.

 

Selamat Mencoba!

Source code tutorial ini dapat diunduh di sini

Sedangkan untuk lanjutan tutorial ini bisa dibaca di TensorFlow JS untuk Deteksi Wajah (Tutorial part 2)

 

 

Agile: Project Management yang Fokus ke Pengguna

 

Dalam artikel scrum kita telah sedikit membahas tentang agile project management di mana scrum merupakan framework dari agile yang populer digunakan selain kanban.  Dalam artikel tersebut kami lebih memfokuskan membahas ritual-ritual yang dijalani saat kita menggunakan scrum tapi justru kurang memberi pengertian tentang apa agile itu sendiri. Oleh karena itu, kami berharap dalam artikel ini kami berharap kami memberikan gambaran umum tentang agile kepada semua kalangan termasuk yang belum memiliki pengalaman dalam software development sekalipun.

 

Apa Itu Agile?

Agile adalah metodologi dalam pengembangan software dengan proses-proses kecil yang berulang-ulang atau yang sering disebut dengan iterasi. Berbeda dengan metodologi waterfall di mana kita memiliki alur linear awal hingga akhir yang tak bisa dipotong atau diubah di tengah proses. Prinsip dari agile sendiri adalah fleksibel terhadap perubahan.

 

Agile: Project Management yang Fokus ke Pengguna 10

 

Agile sendiri lahir dari perusahaan Jepang Toyota pada tahun 70’an di mana pada tahun tersebut produksi mobil menerapkan sistem waterfall. Jadi memang agile sebenarnya tidak murni milik perusahaan yang bergerak di bidang software development saja. Sebelum Toyota menerapkan metode yang disebut Toyota Production System pada dekade tersebut, mereka merekrut W. Edwards Deming untuk melatih ratusan managernya. W. Edwards Deming merupakan seorang engineer yang menyempurnakan metode siklus Plan-Do-Study-Act (PDSA).

 

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

 

Agile memiliki manifesto seperti yang tertulis di atas. Metode agile mengedepankan individu dan interaksi dibanding proses dan alat, software yang terus dikerjakan dibandingkan dokumentasi yang komprehensif, kolaborasi dengan pelanggan dibandingkan negosiasi kontrak, serta peka terhadap perubahan dibanding selalu mengikuti rencana. Walaupun begitu, metode ini tidak serta-merta meninggalkan semua yang berada di sebelah kanan dari manifesto. Akan tetapi jika dihadapkan pada kondisi harus memilih satu di antara dua, maka yang dipilih adalah yang sebelah kiri.

 

Contoh Penerapan Agile

Agile memang lebih mudah diterapkan pada proyek pengembangan software karena pada dasarnya sebuah produk software atau aplikasi merupakan kumpulan dari beberapa fitur-fitur kecil yang digabungkan jadi satu.  Itulah mengapa metode ini populer di kalangan start-up digital. Akan tetapi seperti yang sudah dibahas sebelumnya, agile justru lahir dari produsen mobil di mana pengguna melihat produk mobil secara keseluruhan. Untuk itu, kami akan memberikan contoh penerapan agile dalam pengembangan mobil karena mobil lebih familiar untuk semua kalangan.

Katakanlah kita ingin membuat sebuah mobil. Pada metode waterfall kita membuat list tentang apa yang dibutuhkan oleh pengguna dari mobil tersebut mulai dari jenis mobil,  kapasitas penumpang, tenaga mesin, sistem transmisi, sistem pengendalian, dan sebagainya. Lalu kita akan mendesain mobil secara keseluruhan mulai dari chasis, body, mesin, hingga interior. Setelah keseluruhan desain diselesaikan mungkin kita akan meminta persetujuan dari klien yang memesan mobil tersebut dan kemudian memproduksi bagian-bagiannya satu persatu.

Proses perakitan pun dimulai, kita merangkai bagian-bagian tersebut hingga menjadi sebuah unit mobil. Kita kembali mengkonsultasikan produk tersebut ke klien. Di tahap inilah sering muncul permasalahan klasik metode waterfall. Di saat klien kurang puas dengan katakanlah satu bagian saja, misalnya bagian suspensi. Kita harus membongkar atau bahkan mendesain ulang keseluruhan mobil termasuk rangka dan bodi.

Di dalam metode Agile dengan menggunakan contoh yang sama, setelah membuat daftar tentang apa yang dibutuhkan target pengguna dari sebuah mobil saatnya memilah fitur tersebut untuk diprioritaskan semisal suspensi yang nyaman pada urutan pertama. Maka kita akan memfokuskan pada desain rangka dan damper (shock absorber) dan memproduksi part tersebut. Lalu kita akan meminta klien untuk mengetes-nya walaupun kita belum membuat mesin ataupun body-nya. Bahkan jika perlu, kita bisa memasang bodi atau mesin dari produk yang sudah pernah dibuat sebelumnya baik oleh kita sendiri atau produsen lain agar mobil bisa berjalan terlebih dahulu selama pengetesan. Jika ada ketidakpuasan dari klien, kita tidak usah repot-repot membongkar desain dari keseluruhan mobil. Setelah mendapat persetujuan dari klien, maka kita akan fokus untuk menyediakan fitur selanjutnya. Proses ini berjalan berulang-ulang hingga semua kebutuhan pengguna atas sebuah mobil tercukupi. Jika profesi Anda berkecimpung dalam pengembangan software atau aplikasi tentu Anda sudah mendapatkan gambaran singkat contoh agile dan waterfall dalam proyek yang Anda jalankan.

***

Jadi pada intinya, perbedaan metode agile dan waterfall terletak pada proses di mana agile lebih melibatkan klien / kustomer dalam  menyempurnakan bagian-bagian kecil dari sebuah produk. Sesuai dengan manifesto agile yang sudah kami sebutkan sebelumnya, produk yang diciptakan melalui metode ini cenderung akan lebih bisa menyesuaikan dengan perubahan-perubahan yang disebabkan oleh tren maupun inovasi baru. Memang penerapan metode ini tidak semudah teorinya. Perusahaan sekelas Toyota saja butuh waktu dan effort yang lebih untuk menerapkan metode agile ini dengan melatih karyawannya di level perencana maupun pelaksana.

Jika Anda ingin menguasai penerapan agile sesuai dengan PMBOK 6, Anda dapat mengikuti class of the month dengan materi “Agile Practice Guide in PMBOK 6” oleh Inixindo Jogja.

 

Mengenal MU-MIMO Pada Teknologi Wireless

Jika membicarakan teknologi jaringan wireless terutama Wi-Fi pada level pengguna pasti ada di antara kita yang menjadi pendukung fanatik atau pun penolak die hard. Mendukung atau menolak biasanya tergantung dari device dan kebutuhan. Orang serba simpel, tak mau ribet, dan kelihatan keapple-applean tentu banyak yang cinta mati dengan Wi-Fi dan merasa jijik dengan konektor RJ45. Sebaliknya orang yang suka nonton video streaming 4K dan para gamer tentu saja tak bisa hidup tanpa kabel ethernet.

Seperti yang kita ketahui bahwa Wi-Fi yang biasa kita pakai di coffee shop, perpustakaan, dan tempat umum memiliki beberapa kelebihan dan kekurangan. Kelebihannya sudah jelas yaitu pengguna tak perlu terjerat oleh kabel yang membatasi ruang gerak bahkan hanya untuk sekedar menggeser laptop. Sedangkan untuk kelemahan, kualitas koneksi Wi-Fi tentu saja kalah dengan kabel ethernet biasa apalagi jika jumlah pengguna dalam satu router cukup banyak. Tapi sekarang para fans wi-fi tak perlu berkecil hati lagi karena hadirnya teknologi baru pada wireless network yang disebut MU-MIMO

 

Apa itu MU-MIMO?

MU-MIMO adalah singkatan dari Multi User, Multiple input, Multiple Output. Walaupun singkatannya imut dan menggemaskan, MU-MIMO ini memiliki kemampuan lebih yang signifikan bila dibandingkan dengan generasi sebelumnya yaitu SU-MIMO (Single User, Multiple input, Multiple Output) yang mulai kita jumpai pada protokol 802.11n di sekitar tahun 2007. Pada MU-MIMO sendiri protokol yang digunakan adalah 802.11ac tapi tidak semua chipset Wi-Fi yang mendukung protokol 802.11ac juga mendukung fitur MU-MIMO.

Tidak seperti SU-MIMO yang hanya memiliki satu jalur untuk beberapa pun jumlah penggunanya, MU-MIMO menggunakan beberapa jalur terpisah untuk dapat digunakan oleh beberapa user. Jumlah jalur ini tergantung dari angka pada spesifikasi router atau access point. Router 2×2 memiliki 2 jalur yang berarti 2 user/device dapat mengirimkan request dan mendapatkan response secara bersamaan. Sistem yang sama juga berlaku untuk access point 3×3, dan 4×4.

 

Mengenal MU-MIMO Pada Teknologi Wireless 11

 

Bagaimana Cara MU-MIMO bekerja?

Seperti yang disebutkan sebelumnya, MU-MIMO membuat router atau access point bisa berkomunikasi dengan beberapa perangkat/pengguna dalam satuan waktu dengan beberapa jalur yang berbeda. Jika dianalogikan, MU-MIMO seperti memiliki beberapa kasir dalam sebuah supermarket yang dapat memecah antrian orang belanja. Secara umum jalur-jalur yang dimiliki ini terpisah secara spasial, jadi user yang berada di sebelah utara access point memiliki jalur yang berbeda dengan yang ada di selatan, barat, atau timur access point.

Keuntungan penggunaan MU-MIMO ini tidak hanya didapatkan dari perangkat yang telah mendukung MU-MIMO saja tapi juga pengguna yang perangkatnya belum mendukung MU-MIMO. Hal ini disebabkan karena jika banyak pengguna yang mendukung MU-MIMO dalam antrian tersebut otomatis jumlah antrian akan berkurang karena pengguna MU-MIMO tersebut terlayani dengan cepat. Selain masalah kecepatan, masalah keamanan bisa dijadikan alasan untuk menggunakan MU-MIMO karena sinyal yang dikirim atau diterima oleh access point MU-MIMO terenkripsi.

 

Keterbatasan MU-MIMO

Bagaimana sudah tertarik untuk membeli access point MU-MIMO? Jangan terburu-buru dulu! Selain kelebihan MU-MIMO yang sudah kami sebutkan di atas, MU-MIMO memiliki beberapa keterbatasan yang dapat membuat kita harus berpikir dua kali sebelum membeli access point MU-MIMO yang harganya tentu saja di atas access point biasa.

Keterbatasan MU-MIMO:

  • MU-MIMO mengharuskan router dan perangkat client harus mendukung teknologi ini. Jadi jika perangkat pengguna banyak yang belum mendukung MU-MIMO, membeli access point MU-MIMO adalah sesuatu yang sia-sia.
  • Performa MU-MIMO hanya terasa jika banyak pengguna yang terhubung
  • Pembagian jalur MU-MIMO spasial membuat kita tidak bisa berpindah pindah memutari router dan kemungkinan router akan memindahkan user tersebut ke jalur SU-MIMO
  • MU-MIMO tidak meningkatkan kecepatan upstream, jadi untuk pengguna yang membutuhkan upstream tinggi seperti mengupload konten video tidak seberapa merasakan perbedaan antara MU-MIMO dan dan Wi-Fi biasa.

 

***

 

Walaupun MU-MIMO punya banyak keterbatasan, pengembangan di teknologi jaringan masih belum berhenti untuk berusaha memecahkan masalah keterbatasan tersebut dan saat artikel ini dipublikasikan sudah banyak perangkat laptop atau pun smartphone yang sudah mendukung MU-MIMO.

Source Code Audit dengan SAST Tools (Tutorial)

Aplikasi yang berkualitas dimulai dari source code atau kode sumber yang berkualitas pula. Bila kode sumber yang dihasilkan oleh pemrogram (programmer) masih terdapat kesalahan atau bug, tidak mengikuti standar pemrograman yang baik atau masih menyisakan berbagai lubang keamanan, maka akan memberikan dampak yang negatif bagi jalannya aplikasi pada saat digunakan. Para peretas (hacker) akan mampu melakukan eksploitasi terhadap berbagai kerentanan yang terdapat di aplikasi tersebut sehingga dapat menyebabkan kerugian yang besar bagi perusahaan atau organisasi.

Untuk meminimalisir kerentanan yang bisa terdapat dalam aplikasi, maka perlu dilakukan pengujian atau audit terhadap aplikasi tersebut. Ada 2 (dua) pendekatan dalam melakukan pengujian atau audit terhadap aplikasi, yaitu Static Application Security Testing (SAST) dan Dynamic Application Security Testing (DAST).

SAST, juga dikenal sebagai white box testing, dapat menemukan berbagai kerentanan dan lubang keamanan dalam kode sumber aplikasi secara lebih awal dalam siklus hidup pengembangan aplikasi. Ini juga memastikan kesesuaian dengan pedoman dan standar pemrograman tanpa perlu melakukan eksekusi aplikasinya. SAST hanya murni melakukan analisis terhadap kode sumber untuk menemukan berbagai bug, ketidaksesuaian pemrograman dengan standar serta lubang keamanan yang masih terdapat dalam aplikasi.

DAST, juga dikenal sebagai black box testing, dapat menemukan berbagai kerentanan dan kelemahan keamanan dalam aplikasi yang sedang berjalan. DAST menggunakan teknik injeksi kesalahan pada aplikasi, seperti melakukan input data berbahaya ke aplikasi, untuk mengidentifikasi kerentanan keamanan umum seperti injeksi SQL (SQL injection) dan skrip lintas situs (cross-site scripting). DAST juga dapat menunjukkan masalah runtime yang tidak dapat diidentifikasi dengan SAST, misalnya masalah otentikasi dan konfigurasi server serta kerentanan yang hanya terlihat ketika pengguna melakukan login dan memasukkan data.

Salah satu alat bantu atau tool SAST yang dapat digunakan oleh seorang auditor saat melakukan pemeriksaan terhadap kode sumber dengan bahasa pemrograman Java adalah FindBugs. FindBugs merupakan suatu aplikasi gratis berbasis Open Source berlisensi LGPL atau Lesser GNU Public License yang menggunakan teknik analisis statis terhadap kode sumber Java untuk menemukan berbagai kesalahan pemrograman, lubang keamanan, serta ketidaksesuaian terhadap standar pemrograman yang baik dan benar. Situs web untuk FindBugs ada di http://findbugs.sourceforge.net/

Seorang pemrogram biasanya menggunakan tool IDE (Integrated Development Environment) saat mengembangkan aplikasi. Sebagai contoh untuk pengembangan aplikasi Java, pemrogram dapat menggunakan Eclipse atau NetBeans IDE yang memiliki berbagai fitur sehingga memudahkan dan mempercepat kerja pemrograman. Telah terdapat plugin FindBugs baik untuk Eclipse maupun NetBeans IDE sehingga fitur FindBugs dapat diintegrasikan dengan kedua tool IDE tersebut untuk melakukan teknik SAST terhadap kode sumber Java.

Berikut adalah cara menggunakan FindBugs dengan NetBeans IDE versi 8.2 yang telah terintegrasi. Pertama, pastikan telah membuat atau membuka project Java di NetBeans IDE serta telah membuka file yang berisikan kode sumber Java. Selanjutnya, untuk menjalankan FindBugs yang telah terintegrasi di NetBeans IDE sehingga dapat melakukan audit kode sumber Java tersebut, pilihlah menu Source dan kemudian Inspect seperti berikut:

Source Code Audit dengan SAST Tools (Tutorial) 12

 

Pada dialog Inspect yang muncul, pilih FindBugs di bagian combo box Configuration untuk menjalankan FindBugs sebagai berikut:

Source Code Audit dengan SAST Tools (Tutorial) 13

 

Bila belum pernah menjalankan FindBugs di NetBeans IDE sebelumnya, maka perlu melakukan instalasi terlebih dahulu. Pastikan sudah terkoneksi ke Internet sebelum klik pada tombol Install karena NetBeans IDE akan secara otomatis melakukan download dan instalasi plugin FindBugs sehingga terintegrasi dengan NetBeans IDE:

Source Code Audit dengan SAST Tools (Tutorial) 14

 

Setelah klik tombol Install maka akan muncul dialog untuk instalasi plugin FindBugs. Klik pada tombol Next hingga selesai, dan bila muncul License Agreement maka pilihlah “I accept” sebelum melanjutkan instalasi. Download plugin FindBugs akan dimulai secara otomatis setelah menyetujui License Agreement. Setelah download selesai maka akan muncul dialog konfirmasi untuk instalasi plugin FindBugs. Klik pada tombol Continue untuk melanjutkan instalasi hingga selesai, dan terakhir klik pada tombol Finish untuk mengakhiri instalasi FindBugs di NetBeans IDE. Akhirnya untuk menjalankan FindBugs, klik pada tombol Inspect sehingga muncul daftar temuan (bila ada) dari hasil teknik SAST seperti contoh berikut:

Source Code Audit dengan SAST Tools (Tutorial) 15

 

Panel Inspector pada bagian bawah menampilkan daftar temuan berbagai bug, ketidaksesuaian standar pemrograman dan lubang keamanan yang terdapat pada kode sumber. Bila melakukan double-click pada suatu temuan, maka NetBeans IDE akan langsung menunjukkan baris kode sumber yang bermasalah beserta penjelasan tentang masalah tersebut. Sebagai contoh, berikut adalah temuan adanya kerentanan cross-site scripting pada kode sumbernya:

Source Code Audit dengan SAST Tools (Tutorial) 16

 

Sayangnya aplikasi FindBugs memang hanya bisa digunakan untuk kode sumber dengan bahasa pemrograman Java saja, namun ada juga berbagai tool SAST lain yang dapat mendukung berbagai bahasa pemrograman. Salah satunya adalah SonarQube yang mampu menerapkan SAST terhadap kode sumber dari 25 lebih bahasa pemrograman seperti PHP, JavaScript, Kotlin, Swift, C#, Python dan ABAP.

Dengan demikian, seorang auditor akan mampu melakukan audit terhadap kode sumber secara cepat dan efektif melalui penggunaan teknik dan aplikasi alat bantu SAST seperti FindBugs dan SonarQube. Harapan auditor adalah bahwa daftar temuan yang didapatkannya tersebut akan dijadikan sebagai masukan bagi pemrogram agar melakukan tindakan korektif untuk memperbaiki serta meningkatkan kualitas dari kode sumber yang dibuat olehnya sehingga aplikasi menjadi lebih aman, handal, dan berkualitas.

Selamat belajar dan mencoba!

 

 

Konten tutorial ini ditulis oleh:

Andrian The

 

 

8 Situs Freelancing yang Direkomendasikan Untuk Programmer

Beberapa bulan yang lalu, kami sempat menulis artikel tentang tips menjadi programmer freelance. Setelah sekian lama, sebuah pertanyaan lalu muncul yang kemudian menjadi beban pikiran kami “bagaimana jika ada dari pembaca yang benar-benar resign dari pekerjaannya dan memutuskan menjadi programmer freelance?”

Seketika tim penulis Inixindo Jogja memiliki perasaan yang campur aduk, ada yang merasa bertanggung jawab, ada yang merasa bersalah, bahkan ada yang khawatir setengah mati bagaimana jika pembaca yang nekat tersebut diceraikan pasangannya, dihukum orang tuanya, atau jadi bahan obrolan tetangga gara-gara status ‘kerja serabutan’. Walaupun sebenarnya ada juga di antara kami yang cuek dan masih asik makan bubur kacang ijo di pantry, tapi kami sepakat untuk membantu pembaca yang nekat dalam mencari pekerjaan serabutan sebagai programmer atau developer lepas.

Biasanya karena sibuk coding, para programmer freelance kurang bersosialisasi dengan orang yang berpotensi menjadi klien mereka. Memang ada yang suka berkumpul atau ‘nongkrong bareng’ tapi itu pun biasanya dengan rekan seprofesi yang notabene adalah kompetitor mereka. Solusi untuk masalah ‘kurang main’ programmer freelance sebenarnya sudah ada sejak beberapa tahun yang lalu dengan hadirnya situs-situs cari kerja lepas.

Mirip dengan marketplace produk, situs-situs freelance dibuat untuk mempertemukan orang yang mencari pekerja dengan orang yang membutuhkan kerja tentu saja dalam konteks freelance yang berarti kontrak pekerjaannya per project. Dalam situs ini, kita sebagai freelancer harus bersaing dengan freelancer lain yang menawarkan jasa dengan skill tertentu. Si pemberi kerja biasanya memilih berdasarkan preferensinya sendiri-sendiri, ada yang menilai berdasarkan kualitas portfolio, pengalaman, popularitas, dan yang paling sering adalah harga.

Ya! Kami mengetahui betapa sakitnya freelancer yang handal dan memiliki jam terbang yang tinggi harus mengalah kepada fresh graduate atau juga mahasiswa yang memasang rate jauh lebih murah dibanding harga pasaran. Tapi bagaimanapun juga mereka tidak bisa disalahkan karena kita pernah mengalami betapa sulitnya membangun portfolio pada saat awal kita terjun di dunia freelancing.

Meskipun begitu, kita tak boleh menyerah begitu saja. Saatnya melebarkan sayap demi meningkatkan reach dari personal brand kita dengan memasang lapak di setiap situs freelancing yang ada di muka bumi! Yup, itu usulan dari digital marketing kami. Agak berlebihan memang, tapi paling tidak inilah delapan situs baik dari luar maupun dalam negeri yang bisa kalian coba agar kesempatan mendapatkan klien semakin besar.

 

  1. Sribulancer
    Jika kalian belum seberapa percaya diri untuk memiliki klien dari luar negeri, kalian bisa mencoba situs dalam negeri ini. ‘Act locally’ kata pepatah. Selain berkomunikasi dengan klien lokal lebih mudah, saingan kalian juga tak sebanyak situs internasional yang datang dari berbagai penjuru dunia untuk memperebutkan satu gelar yaitu deal dengan klien. Kekurangan dari situs ini adalah rate yang sudah ditetapkan oleh situs tersebut.  
  2. Freelancer
    Walaupun bukan berasal dari Indonesia, situs dari Australia ini memiliki basis pengguna yang kuat di Indonesia dan juga di seluruh dunia. Situs ini juga merupakan salah satu pionir situs freelancing.  
  3. Upwork
    Situs ini adalah paling populer di antara para developer walaupun sebenarnya situs ini menyediakan berbagai pilihan jenis pekerjaan. Sempat beken 2 tahun lalu, Upwork banyak menuai kritikan karena customer support yang buruk padahal Upwork mengambil komisi yang cukup besar yaitu sebesar 20%.  
  4. Fivver
    Situs ini sebenarnya lebih cocok untuk para freelancer di bidang kreatif seperti desain, animasi, dan musik. Meski begitu, situs ini juga menyediakan tempat bagi para freelancer di bidang teknologi seperti web & app development sampai ke database. Aura kreatif memang sengaja diciptakan oleh situsini dengan menyebut suatu pekerjaan dengan kata ‘gig’.  
  5. Gigster
    Kelebihan Gigster yang mungkin bisa menjadi panutan bagi situs freelancing lainnya adalah milestone pekerjaan yang telah ditentukan oleh Gigster. Milestone ini sangat realistis jika dibandingkan freelancer di situs lain yang menawarkan web development dalam satu hari saja (walaupun kita tahu itu hanya memasukkan data ke dalam template saja).  
  6. Toptal
    Salah satu unique selling proposition yang ditawarkan Toptal adalah kualitas dari freelancer. Website ini mengklaim bahwa mereka menawarkan developer pilihan top 3% yang artinya jika ada 100 developer dengan rate dan keahlian yang sama maka yang ditawarkan 3 developer peringkat teratas. Sampai artikel ini terpublikasi, kami masih belum mengetahui bagaimana proses screening yang dilakukan oleh Toptal.  
  7. Stack Overflow
    Kiblat untuk copy paste kode pemrograman ini juga menyediakan fitur marketplace pekerjaan. Sebagian besar project yang ditawarkan di sini bersifat long term jadi bagi yang gemar akan stabilitas ketahanan dompet tentu situs ini dapat dijadikan pilihan.  
  8. Hired
    Sistem yang digunakan Hired ini mirip seperti Tinder. Maksudnya, klien yang akan menghubungi programmer freelance hanyalah yang berstatus ‘match’ saja di mana kecocokan antara kebutuhan klien dan skill freelancer. Walaupun terlihat praktis, baik klien maupun freelancer harus melewati proses yang cukup panjang (sekitar 90 menit termasuk tes untuk freelancer). Karena proses yang agak rumit ini, kebanyakan project yang ditawarkan bersifat jangka panjang.

***

Itu tadi 8 situs yang dapat kalian jadikan referensi untuk mendapatkan gigs/project. Serta jangan lupa bahwa kebanyakan situs di atas mengambil komisi antara 10-30% dari rate yang kita tawarkan. Jadi perlu hitung-hitung lagi tentang neraca pengeluaran dan pendapatan kita untuk kebutuhan sehari-hari. Selamat mencoba dan terus belajar!

Container VS Virtual Machine

 

Salah satu kendala yang paling awal saat dihadapi oleh tim developer pada saat melakukan pengembangan app adalah kekhawatiran jika aplikasi yang mereka kembangkan tidak berjalan secara sempurna ketika ketika dideploy. Perbedaan konfigurasi di environment milik seorang developer dengan server atau dengan developer yang lain merupakan penyebab utamanya. Hal ini juga sering dirasakan oleh sysadmin ketika mereka hendak mengupdate kernel. Ada beberapa app dalam server mereka jadi bermasalah karena belum mendukung kernel terbaru.

Sebenarnya solusi untuk permasalahan ini sudah ada sejak lama dengan hadirnya teknologi virtualisasi. Ada dua macam teknologi virtualisasi yaitu virtual machine dan container. Apa saja perbedaan dua teknologi virtualisasi ini? Mari kita kupas satu per satu dari teknologi virtualisasi tersebut.

 

Apa itu Virtual Machine

Virtual machine (VM) adalah sebuah emulasi dari sebuah sistem komputer. Secara sederhana, virtual machine membuat kita bisa membagi resource hardware dari satu hardware fisik menjadi beberapa sistem komputer.

Sebagai contoh, kita memiliki satu PC yang memiliki prosesor dengan 4 core, RAM sebesar 8 GB serta harddisk 500GB misalnya. Tanpa VM tentu kita hanya bisa menginstall 1 OS atau beberapa OS tapi tak bisa berjalan bersamaan. Dengan VM, kita bisa membagi sistem komputer menjadi dua masing-masing memiliki prosesor 2 core,  RAM 4GB, serta harddisk 250GB dan tentu saja pembagian resource hardware tidak harus sama rata. Dengan ini, maka kita dapat menginstall OS di setiap sistem komputer dan dapat menjalankannya secara bersamaan sehingga kita seolah memiliki 2 PC yang berbeda.

Teknologi ini sering digunakan untuk server dan memunculkan istilah Virtual Private Server (VPS) tapi sedikit pula digunakan oleh app developer karena project yang sedang dikerjakannya memiliki platform yang berbeda dengan platform yang dimiliki.

 

Keunggulan VM

  • Resource hardware yang eksklusif sehingga tidak terganggu jika ada apps yang lain tiba-tiba membutuhkan resource yang tinggi
  • Memiliki management tools dan security tools yang sudah matang
  • Secara umum memiliki tingkat keamanan sedikit lebih tinggi bila dibandingkan dengan container

 

 

Apa Itu Container

Berbeda dari VM, container adalah sebuah virtualisasi OS yang dapat membungkus suatu aplikasi beserta dependency dan environment-nya. Setiap container ini memiliki process yang terisolir sehingga tidak mengganggu host OS ataupun container yang lain. Prinsip container ini mirip dengan kontainer yang ada di kapal kargo di mana kapal kargo tersebut diibaratkan sebagai sistem komputer.

Jika dibandingkan dengan VM, secara pengaturan kontainer lebih mudah. Hal ini disebabkan karena konsep berbagi resource hardware dari container lebih fleksibel bila dibandingkan VM. Sebagai contoh, tadi disebutkan bahwa kita mempunyai 1 PC dengan 4 Core, RAM 8 GB, dan storage sebesar 500GB. Katakanlah kita mempunyai 2 container dengan kebutuhan RAM berbeda. Beberapa apps dalam container A membutuhkan RAM 5GB sedangkan apps dalam container B membutuhkan RAM 2GB. Dengan container, kita tak perlu menset kebutuhan hardware resource setiap container karena berada dalam satu sistem komputer. Sementara jika kita memakai VM dengan hardware resource yang sudah kita bagi sama rata seperti disebutkan di contoh sebelumnya, kita tidak mungkin memasang apps di container A di salah satu sistem komputer karena RAM maksimal yang bisa kita pakai hanyalah 4GB.

Faktor portabilitas juga menjadi kelebihan yang dimiliki oleh container. Para developer bisa membagikan container dengan format ISO image ke setiap perangkat yang dia pakai ataupun ke developer lain.

 

Platform Container

Linux Containers (LXC)

Platform ini merupakan cikal bakal lahirnya container. Linux Containers (LXC) ini adalah virtualisasi OS yang memungkinkan kita menjalankan beberapa sistem Linux di dalam satu sistem komputer secara bersamaan. Tentu saja platform ini hanya berlaku untuk Linux saja.

Docker

Pada awalnya, project pertama Docker adalah membangun single app LXC container, mengenalkan beberapa perubahan pada LXC sehingga lebih portabel dan fleksibel. Lama-kelamaan Docker berkembang hingga memiliki container runtime sendiri.

 

Keunggulan Container

  • Fleksibel dan scalable
  • Mengurangi resource yang dibutuhkan dalam IT Management
  • Waktu yang dibutuhkan untuk mengemas dan memasang app dalam container lebih cepat bila dibandingkan dengan VM

 

 

VM vs Container (Final Round)

Secara singkat, perbedaan antara VM dan Docker dapat dijabarkan dalam tabel berikut :

 

Virtual Machine

Container

Berat

Ringan

Performa terbatas pada konfigurasi VM

Performa maksimum tergantung pada hardware fisik

Virtualisasi pada level hardware

Virtualisasi pada level OS

Waktu start up dalam hitungan menit

Waktu start up dalam hitungan detik

Terisolasi penuh pada level hardware sehingga lebih aman

Terisolasi pada level proses

 

Tentu jika melihat rangkuman perbedaan antara VM dan Docker pada tabel di atas kita tahu bahwa VM dan container memiliki fungsi masing-masing. Untuk project yang bersifat monolitik di mana setiap apps yang kita kembangkan membutuhkan environment dan dependencies yang tidak terlalu berbeda maka menggunakan VM lebih bijak. Akan tetapi jika kita menggunakan arsitektur microservices dalam pengembangan software, penggunaan container lebih dianjurkan.

***

Jika Anda tertarik dalam pengembangan software dengan arsitektur microservice menggunakan Docker dan Kubernetes, Anda dapat mengikuti workshop cloud native di Inixindo Jogja.