With great power, comes great responsibility

With great power, comes great responsibility.

Setahun lalu, bertanding adik-adik saya di Mataram, Nusa Tenggara Barat, di OSN 2014. Ada video menarik yang diputar ketika pembukaan OSN di sana; ada dokumenter dua orang alumni OSN dan IOI, yaitu Handayani, salah satu siswa inklusi yang meraih medali perak OSN PKLK 2013 (dan saya bangga pernah bertemu beliau ketika penutupan OSN 2013 lalu), dan Derianto Kusuma, peraih medali emas OSN 2003, co-founder Traveloka.com.

Video tersebut (di atas) saya share di timeline saya di Facebook tanggal 3 September 2014, persis setahun lalu, ketika saya menjadi mahasiswa baru Politeknik Negeri Bandung. Video ini memberi saya motivasi yang cukup besar saat itu, menyadarkan saya kuat-kuat bahwa saya adalah alumni OSN 2013, dan saya berhasil menyisihkan sekian ribu peserta dari level OSK hingga OSP.

Masalahnya bukan saya berhasil menyisihkan mereka; masalahnya bukan saya adalah alumni OSN 2013. Tetapi, masalahnya adalah pertanyaan yang diberikan Derianto di menjelang akhir video,

Kalian perlu bertanya pada hari ini, apakah pantas kalian di sini?

Lanjutkan membaca With great power, comes great responsibility

Google Punya Logo Baru!

Pagi ini, saya ingin menambah beberapa fitur di website JTK. Karena widget RSS tidak berfungsi (karena servernya harus melalui proxy supaya bisa tersambung ke Internet—ada yang bisa bantu?), saya kemudian mencari solusinya di Google.

Sebenarnya mulanya biasa saja. Hingga kemudian ketika akan meng-close tab-tab yang ada, saya heran,

“Logo website apa itu?” tanya saya dalam hati.

Lanjutkan membaca Google Punya Logo Baru!

Programming?

Apa yang saya senangi? Banyak. Mendengarkan musik, membaca, menulis, sesekali bernyanyi.

Tapi di luar itu semua, ada satu hal yang ketika melakukannya, ada adrenalin yang terpacu, ada nafas yang memburu, ada rasa ingin tahu yang butuh terpuaskan ketika melakukan suatu aktivitas yang disebut programming. Entah itu pada kegiatan-kegiatan competitive programming atau pada kegiatan programming yang normal.

Lanjutkan membaca Programming?

Lifecycle Sebuah Windows App

Dalam merancang sebuah Windows App, kita perlu tahu bagaimana sebuah aplikasi “menjalani kehidupannya”, karena skema hidup Windows App sedikit berbeda dengan aplikasi desktop pada umumnya. Dengan memperhatikan lifecycle sebuah aplikasi, kita bisa menghadirkan user experience yang nyaman bagi pengguna App kita.

Secara umum, lifecycle (daur hidup) sebuah Windows App bisa digambarkan dengan state-diagram berikut:

Lanjutkan membaca Lifecycle Sebuah Windows App

Windows App Cert Kit: Periksa App Sebelum Upload ke Store

Salah satu tahapan yang akan dilalui App kita sebelum ditayangkan oleh Microsoft di Store (baik Windows Store maupun Windows Phone Store) adalah pengujian. Semua aplikasi yang akan ditayangkan pasti diuji dulu secara otomatis. Beberapa aplikasi akan diuji secara manual, tapi mayoritas tidak akan melalu pengujian manual lagi.

Nah … kayaknya repot ya kalau misalnya buat App yang ukurannya besar, terus sudah upload lama-lama (apalagi kalau pakai koneksi umum di Indonesia — lain hal kalau misalnya pakai koneksi di kampus :D), terus ternyata hasil pengujiannya gagal?

Untungnya, Microsoft punya aplikasi Windows App Certification Kit. Aplikasi ini sudah include dengan Windows Development Kit yang bisa diinstal bersama Visual Studio. Dengan aplikasi ini, kita bisa menguji App yang sudah dibuat secara lokal. Konon katanya, kalau sudah lolos pengujian di sini, kemungkinan besar akan lolos juga di Store karena metode pengujiannya sama.

Lanjutkan membaca Windows App Cert Kit: Periksa App Sebelum Upload ke Store

Implementasi Asynchronous pada Feed Reader (C#)

Kemarin, saya share mengenai teknik pemrograman asynchronous pada C# menggunakan await dan async. Sekarang, saya akan coba kasih contoh nyata dari kode program POLBAN News Reader yang saya buat. 🙂

Jadi, pada aplikasi saya ada sebuah class bernama FeedDataSource yang berfungsi menampung daftar item dari RSS website POLBAN dan mengambil item-item tersebut. Daftar item ditampung pada sebuah properti Feeds seperti berikut:

private ObservableCollection<FeedItem> _Feeds = new ObservableCollection<FeedItem>();
public ObservableCollection<FeedItem> Feeds
{
    get { return _Feeds; }
}
Lanjutkan membaca Implementasi Asynchronous pada Feed Reader (C#)

Asynchronous dengan “await” dan “async” pada C#

Dulu, saat saya sering membuat halaman-halaman web sederhana, saya beberapa kali memanfaatkan asynchronous programming untuk beberapa keperluan. Secara sederhana, asynchronous programming adalah teknik di mana suatu fungsi berjalan dengan thread yang berbeda dengan thread utama, sehingga bisa menjalankan dua atau lebih fungsi dalam waktu yang bersamaan.

Sebagai contoh, jika saya memiliki fungsi getData() yang berfungsi mengambil data siswa dari http://mhs.polban.ac.id/ misalnya, maka waktu prosesnya akan bervariasi pada berbagai kondisi. Jika kondisinya stabil (baik pada client maupun pada server) maka delay yang dirasakan mungkin tidak signifikan.

Namun, bagaimana jika kondisinya tidak stabil?

Lanjutkan membaca Asynchronous dengan “await” dan “async” pada C#

Universal Apps, Write-Once-(Almost)-Run-Everywhere

Seumur-umur membuat software (kecil-kecilan), saya baru tahu beberapa waktu terakhir kalau di ekosistem Windows Apps saat ini ada konsep Universal Apps. Pertama kali mendengar istilah ini, saya pikir dengan Universal Apps kita dapat membuat suatu aplikasi Windows Apps dan aplikasi yang sama juga berjalan di Windows Phone.

Well, setelah baca-baca di berbagai sumber (terutama MSDN), asumsi saya ternyata “benar” untuk Windows 10. (Yeay! Write once, run everywhere!) Apalagi santer dibicarakan di berbagai rilis-rilis yang kita baca kalau Windows 10 ini memang akan jadi one OS to rule them all. Di Windows 10, ada suatu konsep bernama Universal Windows Platform yang intinya setiap device yang berbeda (desktop, mobile, …, bahkan Xbox) memiliki implementasi Windows Core yang sama, sehingga aplikasi yang dikembangkan dapat memanfaatkan core tersebut untuk mampu berjalan di berbagai device.

Nah, bagaimana untuk adiknya, Windows 8.1?

Lanjutkan membaca Universal Apps, Write-Once-(Almost)-Run-Everywhere

“Apa Obsesimu di JTK?”

Update terakhir pada 2 Oktober 2016, dengan mengupayakan tidak ada perubahan sudut pandang waktu tulisan ini.

Setidaknya sudah tiga kali selama berada di Jurusan Teknik Komputer dan Informatika (JTK) Politeknik Negeri Bandung saya diminta untuk menuliskan mengenai hal yang satu ini: obsesi. Pertama, ketika saya mewawancarai kak Mita Kania Dewi; kedua, ketika mewawancarai kang Rahmat Zulfikri; ketiga, ketika diminta oleh kak Trisna Ari Roshinta.

Apa pula makhluk bernama obsesi ini? KBBI edisi keempat mendefinisikan kata obsesisebagai berikut (setelah di edisi sebelumnya, sebagaimana diungkap oleh dosen saya, KBBI sempat memaknai kata ini hanya dari sudut pandang psikologi dan berkonotasi negatif):

obsesi /ob-sé-si/

1. n ide atau perasaan yang sangat merasuki pikiranmencari jalan ke Kepulauan Nusantara merupakan ~ bagi orang Eropa pada abad ke-15

2. n Psi gangguan jiwa berupa pikiran yang selalu menggoda seseorang dan sangat sukar dihilangkan:

(Emphasis mine.)

Dan memang, bagi saya obsesi ini menjadi penting keberadaannya. Menjadi pembeda antara “hidup yang sesungguhnya” dengan “hidup yang sekadar hidup”.

Kalau hidup hanya sekadar hidup, kera di rimba juga hidup. Kalau kerja hanya sekadar kerja, kerbau di sawah juga bekerja.

Prof. Dr. H. Abdul Malik Karim Amrullah (Buya Hamka)
Lanjutkan membaca “Apa Obsesimu di JTK?”

Repositori Lokal Linux Mint 17 Qiana

Hal yang saya lakukan ketika baru melakukan instalasi Ubuntu (dan turunannya, seperti Linux Mint yang saya gunakan sekarang) adalah mengganti sumber repositori yang digunakan ke mirror-mirror yang ada di Indonesia (seperti Kambing UI, atau FTP ITB, dan mirror lainnya). Ketika saya sempat mencoba Ubuntu 14.04 LTS beberapa waktu lalu, saya menggunakan mirror ITB.

Ketika saat ini saya menggunakan Linux Mint 17 Qiana, saya menemukan bahwa ITB tidak melakukan mirror terhadap repositori Linux Mint. Hasil Google-ing singkat menunjukkan bahwa Kambing UI dan repositori UKDW-lah yang melakukan mirror terhadap repositori Linux Mint.

Sehingga, saya membuka Terminal dan mengetikkan …

sudo nano /etc/apt/sources.list

Tapi ternyata, hal ini yang saya temui:

Lho, ke mana puluhan baris yang biasa saya temui di /etc/apt/sources.list milik Ubuntu itu?

Lanjutkan membaca Repositori Lokal Linux Mint 17 Qiana