5 mitos di industri software development Indonesia

Standar

Sejarah mencatat kalau penggunaan komputer di Indonesia dimulai di sekitar tahun 1970-an dan cabang ilmu komputer atau teknik informatika mulai berkembang di Indonesia sekitar akhir tahun 1970-an. Bila memang benar cabang ilmu komputer masuk di Indonesia di tahun tersebut, berarti hampir 40 tahun industri software development di Indonesia tidak mengalami banyak kemajuan yang berarti. Kenapa demikian? Karena selama satu dekade belakangan, tingkat turnover di industri software development di Indonesia masih tergolong tinggi dibandingkan di industri lainnya, delivery date yang tidak sesuai perencanaan dan fitur-fitur yang tidak sesuai permintaan kostumer.

Namun walaupun dengan semua permasalahan pelik tersebut, masih banyak saja praktisi IT di Indonesia yang melakukan hal yang sama seolah-olah kegagalan dalam 40 tahun belakangan belum menjadi cukup bukti kuat untuk mereka merubah cara berpikir dan cara berperilaku dalam software development. Seharusnya orang yang telah gagal berkali-kali langsung belajar dari kegagalan dan tidak melakukan hal yang telah menyebabkan ia gagal untuk kedua kalinya, namun hal tersebut seolah-olah tidak berlaku di Indonesia karena banyak orang Indonesia yang menggunakan kaca mata kuda yang tidak memperhatikan perkembangan dan perubahan di belahan dunia lain.

Btw, baca selengkapnya disini aja ya kk :|

View story at Medium.com

Fancy Amount? :/

Standar

Nggak tau juga ini namanya apa :/ Saya sebut aja fancy amount.

Jadi ceritanya mau bikin format harga seperti yang ada di Traveloka. Tiga digit dibelakangnya jadi kecil.

Screen Shot 2014-12-28 at 11.34.53

Gak yakin ini codenya efektif dan optimal. At least it works

Kalo mau liat demo di CodePen http://codepen.io/mul14/pen/jEMpmP/

function fancyAmount(numbers) {

  var numbers = String(numbers);

  var small = numbers.substr(numbers.length -3)
                     .replace(/(.+)/, "<small>$1</small>");

  return numbers.replace(/(d)(?=(d{3})+(?!d))/g, '$1.')
                .replace(/(d{0,3}$)/, small);
}

Kalo ingat dan ada waktu, nanti di-optimize. :D
Atau kalo ada yang mau bantu, silahkan

UPDATE siangnya

Coba implementasikan di AngularJS. Tinggal jadiin filter. Misalnya

angular.module('App', [])
  // ... other code
  .filter('fancyAmount', function ($sce) {
    return function (numbers) {

       var numbers = String(numbers);

       var front = numbers.replace(/(d)(?=(d{3})+(?!d))/g, '$1.')

       var small = numbers.substr(numbers.length - 3)
                          .replace(/(.+)/, "<small>.$1</small>");

       var finalle = front.replace(/(.d{3}$)/, small);

       return $sce.trustAsHtml(finalle);
    }
  });

Lalu di HTML

...
<span ng-bind-html="123456789 | fancyAmount"></span>

Kenapa pake ng-bind-html dan $sce? :/
Karena kalau langsung, tag <small> akan di-escape.

Dengan sedikit bumbu CSS, outputnya jadi seperti ini :D

Screen Shot 2014-12-28 at 14.33.21

Manfaat Local History di IDE/Editor

local-history
Standar

Hohoo… Hari ini agak sedikit stress. Ceritanya saya buat private composer package untuk salah satu project. Setelah package itu di-pull dari repository dengan composer install, saya mengerjakan project seperti biasa. Tapi karena lagi agak malas, beberapa file di folder vendor saya edit langsung. Niat hati sih nanti di-push ke repo.

Ntah apa yang ada dipikiran saya saat itu. Setelah aplikasi berjalan sebagaimana mestinya, saya hapus folder vendor lalu saya lakukan composer update. Dan, seperti yang sudah diduga, file yang sudah di-edit menjadi seperti awal lagi :| Oh God, Why? Dan karena folder vendor ini termasuk folder yang masuk dalam list .gitignore, jadi tidak bisa di-restore dengan VCS (kecuali pernah pake git add --force, lalu commit).

Local History for Rescue

Setelah beberapa jam mencoba mengumpulkan kembali serpihan code sebelumnya dari otak, akhirnya saya ingat dengan local history. Biasanya saya menggunakan vim, tapi kebetulan saya menggunakan IDE dari JetBrains. Solusinya simple banget, cukup dengan right click di folder atau root project, lalu pilih Local History > Show History. Kita bisa mencari file-file berdasarkan perubahan yang pernah kita lakukan. Baik itu perubahan langsung dari IDE, maupun perubahan dari luar. Kita bisa memilih hanya file tertentu yang di-revert, suatu folder ataupun keseluruhan perubahan. Atau bisa juga dengan copy paste hanya pada bagian yang dibutuhkan.

Fiuhh… Thanks JetBrains :D

Berikut penampakan Local History

local-history

Vim

Bila anda juga pengguna vim, sebenernya ada fitur yang serupa. Setiap kali anda edit file akan dibuat file .swp. Sebaiknya dari awal sudah dikonfigurasi agar file backup ini dipisah dari working folder. Detailnya bisa pelajari disini http://vim.wikia.com/wiki/Remove_swap_and_backup_files_from_your_working_directory

Saya belum pernah coba, tapi sepertinya “plugin” ini layak untuk dicoba:
https://github.com/hjdivad/vimlocalhistory
https://github.com/serby/vim-historic

Sepertinya saya harus explore fitur vim yang ini. Btw, punya info vim plugin lain? :/

How to access database in Homestead

homestead-mysql-pgsql
Standar

Anda bingung bagaimana cara mengakses database yang ada di dalam Homestead? :/

Video yang didemonstrasikan di Laracasts menggunakan SequelPro. Bila saya menggunakan salah satu distro Linux atau Windows, apakah saya harus install aplikasi desktop seperti MySQL Workbench dengan ukuran file yang besar? :O Heeelp!!

Padahal saya hanya mengakses hal-hal yang sederhana. Terlalu berlebihan rasanya kalau harus install aplikasi semacam MySQL Workbench, HeidiSQL, Navicat, blabla…

Jangan takut jangan khawatir, berikut cara alternatif yang lebih hemat.

Command line

Ini cara paling mudah. Jika anda sudah install MySQL/PostgreSQL client berbasis CLI di host machine, cukup jalankan command tersebut dan ditambahkan port.

MySQL

mysql -u homestead -psecret -P 33060

PostgreSQL

PGPASSWORD=secret psql -U homestead -h localhost -p 54320

Web

Anda bisa menggunakan web server di host machine. Ntah itu Apache HTTPD, nginx, LiteSpeed, IIS, atau apapun yang bisa menjalankan PHP. Kalau belum terinstall web server, anda menggunakan PHP built-in server.

Anda bisa menggunakan database client apapun yang berbasis web. Misalnya PHPMyAdmin, Chive, MyWebSQL, atau apapun yang berbasis web. Dan tidak harus berbasis PHP. Tapi disini saya beri contoh menggunakan Adminer.

Letakkan file Adminer ditempat yang seharusnya. Misalnya di /var/www/adminer atau di ~/public_html/adminer. Tergantung konfigurasi web server anda.

Sebagai contoh, saya meletakkan di ~/webapp/adminer. Lalu saya jalankan PHP built-in server.

php -S localhost:8000 -t ~/webapp/adminer

Bila kita buka localhost:8000 dari browser, akan muncul Adminer.

Untuk MySQL tinggal masukkan saja:

Server: 127.0.0.1:33060
Username: homestead
Password: secret

Screen Shot 2014-10-21 at 18.57.58

Untuk mengakses PostgreSQL, jangan lupa ganti dengan PostgreSQL. Lalu isi dengan:

Server: 127.0.0.1:54320
Username: homestead
Password: secret

Screen Shot 2014-10-21 at 18.56.56

Akses dari Homestead

Buka file Homestead.yml. Tambahkan beberapa mapping

folders:
  - map: ~/webapp/adminer
    to: /home/vagrant/adminer

sites:
  - map: adminer.app
    to: /home/vagrant/adminer

Jangan lupa tambahkan sesuatu di /etc/hosts. Jika menggunakan Windows tambahkan sesuatu di %System32%\drivers\etc\hosts

Buka adminer.app:8000 dari browser.

MySQL/PostgreSQL
Server: [boleh dikosongkan karena default localhost]
Username: homestead
Password: secret

Yummy… cara ini sangat hemat dan dapat dengan mudah diakses di komputer lain. :p

Keyboard Tweak: Remap Escape to Caps Lock

IMG_3553
Standar
Jump to How to

Sebelumnya sudah disinggung sedikit di postingan sebelumnya Vim in my life. Kali ini dibahas lebih detail. Dan saya asumsikan menggunakan keyboard dengan standard layout, bukan seperti HHKB, TREK, ataupun Kinesis.

Jadi… Kenapa di-ganti? :|

Sebelum dijawab, saya tanya dulu. Seberapa sering anda menekan tombol Escape dan Caps Lock ? :/ Nah loo… Bisa jawab nggak?

Hmm… kalau saya sih sangat jarang memanfaatkan fungsi Caps Lock, dan lebih sering memanfaatkan fungsi Escape. Setau saya Caps Lock ini hanya untuk membuat huruf menjadi upper case, yang mana hal itu bisa digantikan dengan tombol Shift.

Dan juga, tombol Caps Lock ini lebih besar ukurannya dan lebih mudah dijangkau oleh jari daripada Escape.

So, karena dua asalan itulah saya pikir lebih baik juga tombol ini bertukar tempat. Atau, malahan fungsi Caps Lock dibuang aja ya? :/

Saya akan bahas caranya untuk Mac OS X, Linux dan Windows.

How to

 

Mac OS X #

Untuk OS X, gunakan Seil yang bisa di-download dari sini https://pqrs.org/osx/karabiner/seil.html.en

Klik “Change the caps lock key”

Screen Shot 2014-10-09 at 15.05.27

Baca instruksi warna orange.

Screen Shot 2014-10-09 at 15.15.41

Buka “System Preferences”, “Keyboard”, tekan tombol “Modifier Keys…” di kanan bawah.

Screen Shot 2014-10-09 at 15.06.47

Ganti “Caps Lock” menjadi No Action

Screen Shot 2014-10-09 at 15.07.08

Kembali lagi ke Seil. Ganti key code menjadi 53.

Screen Shot 2014-10-09 at 15.15.41

 

Linux #

Di Linux ada banyak cara. Tergantung pakai desktop environment-nya. Bisa dengan menggunakan dconf-editor atau gnome-tweak-tool. Tapi cara yang saya gunakan dengan menggunakan Xmodmap. Perlu diingat, cara ini hanya berjalan diatas XServer. Jadi tidak bisa digunakan di tty.

Xmodmap

Buat file baru ~/.Xmodmap (sebenernya nggak harus ini sih). Isi dengan

"keycode 9 = Caps_Lock NoSymbol Caps_Lock"
"keycode 66 = Escape NoSymbol Escape"

Lalu jalankan xmodmap

xmodmap ~/.Xmodmap

Tada… Caps Lock dan Escape sudah bergantian tempat.

Jangan lupa tambahkan ke startup. Bisa itu di startup session atau di file yang di-initialize saat anda login seperti ~/.bash_profile, ~/.zprofile, ~/.config/fish/config.fish.

 

Windows #

Gunakan AutoHotkey yang bisa di-download disini http://ahkscript.org/download/. Pilih aja yang installer kalau bingung.

Setelah instalasi selesai, jalankan AutoHotkey. Nanti akan muncul di system tray seperti ini.

10-10-2014 1-49-41 AM

Klik 2x, atau klik kanan open. Akan muncul seperti ini.

10-10-2014 1-50-09 AM

Klik File, pilih “Edit Script”

10-10-2014 1-50-44 AM

Buat script seperti ini

Capslock::Esc
Esc::Capslock
SetCapsLockState, off
Suspend On
Send, {ESC}
Suspend Off
return

Save, lalu Reload.

10-10-2014 1-51-33 AM

Sekarang, tombol Caps Lock dan Escape sudah berganti posisi.

Jika ingin setiap kali log in AutoHotkey ini jalan, cukup masukkan AutoHotkey ke startup folder.

10-10-2014 1-55-00 AM

That’s it… Mungkin diawalnya akan kesulitan. Biasa itu… sama seperti kali pertama naik sepeda atau berenang. Tapi setelah beberapa jam, atau mungkin hari, anda akan terbiasa dan merasakan nikmatnya :p

Hohohohooo :O

Trik Instalasi Vagrant Box

vagrant-cloud-laravel-homestead
Standar

Ntah kenapa setiap kali mau install homestead melalui vagrant box add laravel/homestead sangat lambat. Padahal ukuran file hanya berkisar 755 MiB (v0.2.0). Jadi solusinya paling mudah adalah download manual dari http://cabinet.laravel.com/homestead-0-2-0.box.

Setelah selesai download, add secara manual dengan

vagrant box add homestead-0-2-0.box

Tetapi dengan cara itu versi homestead akan dianggap versi 0. Kita tidak bisa menggunakan parameter --box-version kalau install box secara manual.

Screen Shot 2014-10-06 at 18.39.17

Bandingkan dengan Ubuntu box dibawahnya yang ada versinya. Jika versinya ini 0, akan kesulitan jika kita mau menggunakan beberapa versi Homestead. Bisa saja sih kita ubah namanya. Misalnya menjadi laravel/homestead-0-2-0 atau hanya homestead-0.2.0 tanpa nama vendor, dengan cara menambahkan parameter --name. Tapi… euuyyhh @,@

So, solusinya adalah install box dari Vagrant Cloud dengan cara

vagrant box add laravel/homestead

Tunggu kira-kira mulai proses download, lalu cancel dengan Ctrl+C.

Cek directory ~/.vagrant.d/tmp. Disitu ada file temporary baru box77efe8fc4223b8475e871defc7c83573aea72b50.

Copy file homestead-0-2-0.box ke ~/.vagrant.d/tmp/box77efe8fc4223b8475e871defc7c83573aea72b50.

Misalnya di sistem saya

cp ~/Downloads/homestead-0-2-0.box ~/.vagrant.d/tmp/box77efe8fc4223b8475e871defc7c83573aea72b50

Lalu lakukan lagi proses install box melalui Vagrant Cloud.

vagrant box add laravel/homestead

Tada…!! Langsung 100% :p

Screen Shot 2014-10-06 at 18.50.37

Dan sekarang, cek dengan

vagrant box list

Ngahahahaa… :v

Screen Shot 2014-10-06 at 19.03.52

Update 19 Desember 2014

Homestead v0.2.1 download disini http://cabinet.laravel.com/homestead-0-2-1.box (924 GiB).

Untuk pengguna Windows, lokasi temporary vagrant box ini ada di %UserProfile%\.vagrant.d\tmp. Apa itu %UserProfile%? :/ Anda harus mengenal Windows anda sendiri. Itu environment variable yang default ada di Windows. Itu sama dengan C:\Users\Username. Kalau bingung, silahkan lihat GIF dibawah :D

vagrant-box-tmp-location