Author: afiefhere

Bekraf Developer Conference

Bekraf Developer Conference

Minggu – Senin kemarin dateng ke salah satu acara dari Bekraf di Aston Simatupang Jakarta Selatan, Bekraf Developer Conference. Ini acara puncak dari rangkaian acara Bekraf Developer Day yang diadakan di beberapa kota sebelumnya.

Selayaknya sebuah konferensi, goal dari acaranya ini adalah merumuskan tantangan para developer dan solusi yang bisa disampaikan ke para pemangku kebijakan. Dari konferensi yang diadakan hingga jam 10 malam tsb, dirumuskan banyak tantangan dan solusi yang dapat kalian lihat disini.


Jadi Fasilitator di Indonesia Android Kejar

Google melalui Google Developers akhir tahun ini mengadakan Google Indonesia Android Kejar (page). Sebagai sarjana kurang ngajar dan developer yang pertengahan Oktober lalu sudah tidak di Inmotion lagi, gue gabung sebagai fasilitator.

Ini jadi pengalaman baru dan berbeda setelah sekian lama gak berada di depan kelas. Kalau di kesempatan lain diundang untuk mengisi workshop dengan kelas yang sudah disediakan, peserta yang jumlahnya sudah fix, dan amplop (ehem) yang jumlah isinya belum pasti namun bisa dipastikan ada isinya. Disini, setiap fasilitator mencari dan mengkoordinasi tempat untuk offline study group, menghubungi peserta untuk join di group whatsapp dan standby dengan problem mereka, serta sedari awal disebutkan rewardnya tidak disebutkan dalam mata uang.

Namun apa yang gue dapet disini jelas gak bisa dibandingkan dengan menjadi fasilitator di tempat lain pada tahun-tahun sebelumnya. Di program ini, gue yang lebih banyak bersentuhan dengan teknologi web, mau gak mau harus belajar Android Studio dengan java-nya yang amat kental. Dengan begitu, motifasi gue sejak tahun 2011 belajar development native android sedikit dipaksakan dan itu bener-bener berhasil bikin gue fasih dan pede untuk lebih dalem di development native android.

Sebelumnya, gue lebih banyak membuat dan mempublish aplikasi mobile dengan Ionic Framework ke playstore. Hanya ada satu aplikasi yang gue develop dengan Android Studio, aplikasi untuk event Google MakeTimeFly (contoh hasilnya) yang di develop selama dua minggu. Sebenernya gue cukup puas dengan aplikasi itu, namun karna waktu development yang cukup singkat, gak banyak konsep dasar yang gue pelajari.


My Spotify Playlist

Satu lagi yang menarik dari Spotify, Recomended Songs. Ketika membuat playlist, di bagian bawah daftar lagu playlist itu bakalan ada daftar lagu yang setipe. Gak jarang lagu-lagu itu juga asik dan cocok. Salah satu playlistnya yang gue buat disini


Playlist Kamis : Short Change Hero

Playlist Kamis minggu ini gue pilih Theme-Songnya Borderlands 2, Short Change Hero. Short Change Hero ada pada album The House That Dirt Built yang di release oleh Band Indie Rock asal Inggris, The Heavy. The Heavy sendiri merelease album pertamanya Tahun 2007 dengan genre Neo Soul.

Selain digunakan di Borderlands 2, Short Change Hero juga ada di trailernya Batman: Arkham City dan TV Serial Suits.

[soundcloud url=”https://api.soundcloud.com/tracks/30980670″ params=”auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true” width=”100%” height=”450″ iframe=”true” /]


Playlist Kamis : Supermassive

Supermassive. Band dari California Utara. Album barunya, major major, berisi 12 track yang enak di telinga. Satu lagu yang membuat gue suka dengan album ini adalah sittin here. Temponya pas buat mencegah kantuk sembari ngoding.

Lagu ini pertama gue denger dari video Strormtrooper mainan Longboard.

[soundcloud url=”https://api.soundcloud.com/tracks/231557588″ params=”color=0066cc&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false” width=”100%” height=”166″ iframe=”true” /]

Info lebih detail tentang band ini dan 11 lagu lainnya bisa dibuka di supermassiveandfriends.com.



Ionic Side Menu dan Dokumentasi

Satu hal yang membosankan ketika ada teknologi baru yang belum dipelajari adalah membaca dokumentasi. Banyak programmer nemu masalah dan berakhir di stackoverflowPadahal jawaban dari pertanyaan yang ada ujung-ujungnya juga kembali ke dokumentasi.

Salah satunya Ionic Side Menu. Berjuang membuat ukuran lebar side menu yang dapat dikostum dengan membuat javascript sendiri untuk override fungsi di ionic. Tapi ternyata fungsi untuk mengubah ukuran dapat dilakukan dengan satu baris tambahan perintah, width.

<ion-side-menu side="left" width="80">

Lesson Learned : Baca Dokumentasi


Hadapi dengan tegar, atau menyerah pada kegelapan

Rabu lalu gue tumbang. Pulang pergi Bandung – Padalarang tiap hari ditambah load kerjaan cukup banyak membuat gue harus istirahat total di Hari Kamis. Dan Alhamdulillah, Jumat gue udah fit kembali dan siap untuk menerjang jalanan menuju Dayeuhkolot demi GDGPrime.

Namun, alam semesta punya cerita lain. Diturunkan hujan di hari ini, anugrah tiada tara. Hujan yang ditunggu sejak lama meskipun membuat gue terhambat lalu batal hadir ke acara. Dan sore ini pun tetap mengantar sang nona mengajar.

Baru genap sehari bugar, sudah siap menerjang hujan. Kini semua terserah gue. Hadapi dengan senyuman tegar, atau menyerah dan mengutuki kegelapan.
ヾ(⌐■_■)ノ Kini, saatnya jemput istri.


Mencoba Grunt : The Javascript Task Runner

Bertahun – tahun berinteraksi dengan Javascript, akhirnya kemarin gue coba Grunt. Awalnya gue skeptis, namun setelah melihat banyaknya repository projek-projek bermaanfaat di Github yang menggunakan Grunt, gue luluh. Ada dua hal yang gue butuhkan dari grunt. Concatenation & Minification.

Tujuan utama dari Grunt adalah automation. Sama seperti tujuan dasar programming, to automate processes. Sebelum menggunakan Grunt, gue menggabungkan beberapa file javascript secara manual, lalu mengkompresinya melalui http://jscompress.com/. Gue melalukan hal itu karna dulu gue pikir proses itu hanya dilakukan pada tahap selesai development. Proses manual yang cukup panjang itu tidak begitu terasa karna hanya dilakukan sekali, ketika upload ke server publik. Tapi nyatanya, revisi tetap membutuhkan update. Dan gue harus melakukan proses itu ketika ada update ke server.

Dengan Grunt, gue bisa mengautomasi penggabungan beberapa file javascript kemudian mengkompresi ukurannya sehingga ready untuk distribusi. Yang dibutuhkan oleh grunt, hanyalah file package.json dan gruntfile.js. Mendefinisikan dua file tersebut memang cukup memakan waktu. Tapi proses tersebut hanya dilakukan sekali. Selanjutnya, otomatis!

Untuk mempermudah proses development. Gue membuat template untuk concatenation minification. Template ini bisa digunakan untuk projek lain, hanya perlu mengganti beberapa parameter pada gruntfile.js.

module.exports = function(grunt) {

  // Project Configuration
  grunt.initConfig({
  	pkg: grunt.file.readJSON('package.json'),
  	concat: {
  		options: {
  			separator: ';'
  		},
  		dist: {
  			src: ['js/*.js'],
  			dest: 'build/<%= pkg.name %>.js'
  		}
  	},
  	uglify: {
  		build: {
  			src: 'build/<%= pkg.name %>.js',
  			dest: 'build/<%= pkg.name %>.min.js'
  		},
  	}
  });

  // Load the plugin that provides the "uglify" task
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // Default task(s)
  grunt.registerTask('default', ['concat', 'uglify']);

};

Di dalam `grunt.initConfig`, gue mendefinisikan parameter `pkg`, parameter ini berisi objek yang diambil dari file package.json. Di dalam file package.json berisi

{
  "name": "vlp-js",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-contrib-concat": "^0.5.1",
    "grunt-contrib-uglify": "~0.5.0"
  }
}

Selanjutnya, gue coba paparkan penjelasan beberapa baris kode pada gruntfile.js.

concat: {
	options: {
		separator: ';'
	},
	dist: {
		src: ['js/*.js'],
		dest: 'build/<%= pkg.name %>.js'
	}
},

Parameter `concat` berisi konfigurasi untuk menggabungkan beberapa file. Didalamnya terdapat parameter `options`, lalu `separator`. `separator` berisi string pemisah antar file ketika disatukan. Gue mengisi `;` agar tidak terjadi error kalau ternyata pada baris terakhir setiap file ada yang tidak diberi titik koma. Lalu terdapat parameter `dist` yang maksudnya adalah ‘distribusi’ berisi `src` dan `dest`. `src` merujuk pada file-file yang akan digunakan. Pada contoh diatas gue menggunakan asterik untuk menyeleksi semua file .js pada folder js. `dest` merujuk pada nama file gabungan dari setiap javascript tersebut. `<%= pkg.name %>` akan merujuk pada nama projek yang didefinisikan pada file `package.json`.

uglify: {
	build: {
		src: 'build/<%= pkg.name %>.js',
		dest: 'build/<%= pkg.name %>.min.js'
	},
}

Selanjutnya, `uglify`. Cara kerjanya adalah menghapus newline  pada file dan membuat beberapa nama variabel menjadi lebih pendek. Dengan begitu, ukuran file javascript pun akan menjadi lebih kecil. Pada parameter ini, kita mengatur sumber file pada parameter `src`. Dan nama file setelah diminifikasi pada parameter `dest`.

grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');

grunt.registerTask('default', ['concat', 'uglify']);

Baris kode diatas berguna untuk me-load plugin yang akan digunakan, lalu menggunakannya pada fungsi `registerTask`.

Sebelum menjalankan grunt, jangan lupa install semua dependensinya dengan perintah `npm install`Capture

Jalankan `grunt`, dan cek folder build. Akan ada dua file. File hasil gabungan, dan file gabungan yang sudah diminifikasi.

Capture2Selesai. 🙂


Banyak maunya

Gue pernah denger ejekan “orang miskin banyak maunya”. Gue sedikit setuju dengan hal itu, kecuali soal miskin. Karena, anonim dari miskin adalah kaya. Dan orang kaya juga terkadang banyak maunya. Oke, kalimatnya gue ganti jadi “orang yang kekurangan, lebih banyak maunya.”

Logikanya, orang yang berkecukupan, akan segera mendapatkan apa yang dia pengen. Pengen baju baru, segera beli. Pengen mobil baru, segera ada. Pengen beli game baru, segera klik, bayar, dan main. Kaum ini gak punya wishlist di steam yang menumpuk, karna setiap nemu game bagus, punya cukup kredit buat beli.

Sedangkan yang kekurangan. Pengen baju baru, masukin wishlist. Pengen mobil baru, masukin wishlist. Pengen game baru, masukin wishlist. Ketika akhirnya ditanya maunya apa, munculin wishlist panjang. Dan begitulah, orang yang kekurangan, lebih banyak maunya. Sedih, ya? Eh, Ada yang mau ngasih Intel Galileo, gaes? ?

sekian.