Advent of Code (AoC) adalah acara tahunan yang dibuat oleh Eric Wastl, bentuknya berupa puzzle programming yang diberikan sejak tanggal 1 hingga 25 Desember . Acara ini sudah ada tiap tahun sejak 2015, tapi saya baru mendengar dan mencoba pada tahun ini.
Saat artikel ini ditulis, sudah hari ke 13, dan saya masih setia mengerjakan tiap hari. Saya tidak tahu apakah saya akan punya waktu setiap hari sampai tanggal 25, karena tiap hari soalnya bertambah sulit. Tapi karena acara ini menarik, saya ingin sharing, siapa tau ada yang ingin mencoba juga, karena soal dari hari pertama sampai ke 13 ini masih cukup mudah, masih bisa dikejar.
Apa sih bedanya Advent of Code ini dengan tantangan programming lain? Saat ini ada banyak sekali challenge lain, misalnya: LeetCode, Project Euler, CodeWars, dsb. Sebenarnya semua kembali ke preferensi masing-masing, tapi ada beberapa alasan kenapa saya suka AoC.
Sebagai catatan: saya tidak suka competitive programming, walau dulu sempat coba-coba banyak hal mirip AoC, semua akhirnya berhenti. Misalnya ketika saya login lagi ke Project Euler, ternyata terlihat bahwa belasan tahun lalu saya mencoba beberapa puluh soal awal, lalu berhenti.
Waktu saya membaca harian Kontan di iPad, saya melihat ada bagian rekomendasi di depan. Saya jadi bertanya-tanya: kalau mengikuti rekomendasi ini apakah bakal cuan? ataukah ini rekomendasi ampas? Rekomendasinya bentuknya seperti ini: ada tulisan singkat, dan ada rekomendasi dari 3 orang di 3 sekuritas. Kadang rekomendasinya akur: “buy”, “hold”, “sell”, atau yang lain, dan kadang bisa berbeda pendapatnya.
Setelah saya lihat arsip Kontan, kolom rekomendasi ini sudah sejak lama (2010), tapi saya cuma tertarik rekomendasi 5 tahun terakhir ini saja. Untuk menganalisis data, saya perlu:
Banyak yang sudah berkecimpung di dunia IT, tapi masih sering bingung dengan masalah nama domain sampai hosting, di tulisan ini saya akan berusaha menjelaskan dengan sederhana. Hal yang membuat bingung adalah karena satu perusahaan kadang menyediakan semua layanan sekaligus.
Masalah satu perusahaan melakukan banyak hal yang sama ini bisa dianalogikan dengan tukang jahit. Jika saya ingin membuat baju di tukang jahit, saya akan menyerahkan saja semuanya, termasuk membeli bahan, mengukur dsb, bahkan andaikan ada jasa laundry setelah jahitannya selesai, akan saya minta lakukan sekalian. Padahal untuk yang mengerti kain, mereka bisa membeli kain sendiri. Sebagian orang punya polanya sendiri, sehingga tukang jahit tinggal memotong dan menjahitkannya. Sebagian mungkin datang cuma ingin minta tolong bagian tertentu karena tidak punya mesinnya di rumah.
Nama domain dan registrar
Kita membeli nama domain di sebuah registrar. Ini sekedar seperti mendaftarkan nama perusahaan pada pemerintah. Mereka sekedar mengecek: namanya sudah dipakai atau belum dan memberi hak untuk memakai nama perusahaan itu. Dengan membeli domain, kita cuma memiliki hak untuk memakai nama itu. Sama seperti pemerintah yang sekedar memberi hak memakai nama perusahaan saja, kita tetap perlu menyewa (atau membeli) kantor sendiri, mendaftarkan nomor telepon, dsb.
Saat ini ada jasa mendirikan perusahaan, mulai dari jasa notaris, sampai memberikan alamat kantor (dishare dengan banyak peruashaan lain) dan nomor telepon. Kebanyakan jasa hosting domain memberikan layanan lengkap seperti ini, tapi saya ingin menjelaskan di sini tiap langkahnya supaya jelas.
Ketika registrasi domain (membeli domain), kita akan diminta mengisi data diri, dan apa nama domain yang kita mau. Setelah membeli, kita dapat nama domainnya, dan diberi isian: mau diisi dengan name server mana. Jadi tugas dan fungsi registrar hanya itu saja.
Nanti akan saya jelaskan apa itu name server (atau lebih lengkapnya: name server pada DNS). Analogi sederhana setting DNS seperti ini: ketika mendaftarkan nama perusahaan, akan ditanya nomor kontaknya, jika ada yang bertanya nama perusahaan ini (alamatnya di mana, teleponnya berapa, dsb) siapa yang harus dihubungi.
Kalau kita tidak mengisi name server mana yang akan dipakai, maka domain itu terdaftar tapi tidak bisa diakses. Biasanya karena registrar juga punya layanan lain, ini akan diisi secara default dengan name server milik perusahan tempat Anda membeli domain.
Jangan bingung jika ditanya dua name server, tujuannya adalah supaya ada cadangan kalau salah satu tidak bisa diakses.
Nama domain ini bisa ditransfer ke registrar lain. Biasanya kita akan diminta mendapatkan key dari registrar lama, untuk dimasukkan ke registrar baru. Registrar yang baik tidak akan menghalangi proses ini, tapi yang nakal akan berusaha mempersulit proses pindah domain ke registrar lain.
Sejak dulu kami jarang menonton siaran TV, dulu kami memutar film dari PC biasa (dengan Linux), beralih ke pemutar media khusus (Asus OPlay), pindah ke Raspberry Pi, lalu mini PC (Windows), dan sekarang akhirnya memakai Mi TV yang memakai Android TV plus TV yang lama saya tambah Google Chromecast With Google TV.
TV kami umurnya sudah lebih dari 7 tahun, dan sudah berkali-kali berencana ganti, tapi selalu ditunda. Masalah utama di TV yang lama adalah: hanya ada 1 port HDMI. Saya sudah coba beberapa HDMI switcher supaya bisa banyak HDMI, tapi entah kenapa selalu bermasalah dengan TV ini setelah beberapa minggu dipakai. Resolusi TV ini juga terbatas: hanya Full HD (1080p), sedangkan konten 4K sudah mulai umum saat ini.
Sebelum memakai Android TV
Dulu awalnya memakai PC untuk media player, karena memang belum ada device khusus yang bisa dipakai. Berikutnya memakai Asus OPlay, tapi ternyata softwarenya tidak dikembangkan lagi dan tidak mendukung banyak fitur yang dimau.
Sempat juga saya bereksperimen dengan mini Android TV stick di tahun 2012-an, tapi waktu itu masih terasa sangat terbatas. Banyak aplikasi tidak dirancang untuk TV (platform Android TV sendiri baru dimulai 2014).
Setelah sempat suka sekali memakai produk Apple dari jaman masih Power PC (dan bahkan sejak 6502 di Apple II/e), sampai membeli produk Macbook Intel yang pertama, saya kemudian tidak suka memakai Apple . Tapi belakangan ini saya mulai lagi memakai produk Apple (Mac Mini, Mac Book Pro, iPhone, iPad, dan Apple Watch), walau tetap memakai produk lain juga.
Di posting saya tahun 2015 itu saya menyebutkan mulai menghindari Apple karena faktor: harga, dan masalah software dan juga kualitas hardware yang saat itu menurun.
Komplain Lama
Sejujurnya: alasan utama saya memakai lagi berbagai produk Apple karena ada beberapa pekerjaan yang membutuhkan, dan pekerjaan tersebut yang mendanai pembelian produk-produk Apple yang saya pakai. Jadi faktor harga yang dulu saya bahas di posting lama tertutupi karena dibayari. Masalah upgrade sebenarnya masih menyebalkan, tapi sepertinya harus diterima.
Secara software: macOS tetap menyebalkan untuk developer, masih lebih enak memprogram di Linux atau Windows. Tapi sayangnya beberapa hal hanya bisa dilakkan di macOS, yaitu hal-hal yang berhubungan dengan development iOS dan juga kadang dibutuhkan untuk pentest aplikasi iOS. Beberapa hal sudah membaik sejak komplain tahun 2015 yang saya tulis, misalnya sekarang macOS sudah punya Hypervisor dan file systemnya sudah diupdate menjadi AFS.
Saya sudah pernah mengalami masalah kehilangan data: komputer dicuri (waktu jaman kuliah), harddisk rusak, server cloud yang harddisknya rusak. Saya juga pernah memiliki masalah dengan account google, jadi saya tidak pernah percaya 100% dengan layanan cloud.
Saya pernah menulis tentang pentingnya backup untuk solusi ransomware. Di tulisan ini isinya lebih teknis, tentang berbagai software yang saya pakai untuk backup saat ini (rsync, rclone, borg backup, syncthing, seafile dan git).
Inspirasi membuat tulisan ini adalah karena salah satu dedicated server yang saya pakai harddisknya tiba-tiba rusak. Saya sudah menduga hal ini suatu saat akan terjadi karena 4 tahun yang lalu saya mendapatkan servernya dengan harga promo, dan saya cek umur harddisknya sudah cukup tua ketika menerima server tersebut.
Sebagai catatan: servernya hanya saya pakai untuk kegiatan pentest karena penyedia jasanya tidak memfilter paket dan tidak memberi warning jika ada kegiatan scanning dari server di sana. Saya pernah mencoba beberapa hosting yang akan langsung mematikan server dan mengemail saya, memberi tahu bahwa host Anda mungkin kena malware dan mencoba menyerang host lain (padahal ini scanning). Karena itu saya tidak keberatan jika data server ini hilang, tapi bayangkan jika ini terjadi di server Anda.
RISC-V (baca: Risk Five) adalah instruction set architecture (ISA) yang sifatnya terbuka, jadi yang mengimplementasikan ISA ini tidak perlu membayar royalti ke pihak tertentu. Ini tidak seperti ARM atau x86 di mana yang mengimplementasikan perlu membayar royalti. Mirip dengan ARM, ada berbagai versi ISA ini yang bisa dipakai mulai dari microcontroller sampai desktop.
Beberapa tahun terakhir sudah mulai ada yang mengimplementasikan RISC-V versi microcontroller (pernah saya bahas di sini) dengan harga relatif murah. Ini hanya bisa menjalankan Linux versi non-MMU. Kemudian sudah ada yang membuat versi desktop (SiFive HiFive Unmatched) tapi masih mahal. SBC dari Beaglebone sudah dibuat tapi masih untuk developer. Tapi bulan Mei lalu ada SBC baru yang relatif murah (99 USD) dan sudah bisa dipesan dari AliExpress.