Search

Reinhart Previano K.

Do you love to Ctrl-K, Ctrl-/, or / ? Now you can do three of them (>_ )!

No results so far...

2023-02-11 11:09:21

Why text labels on Flutter's MaterialApp looks worse on iOS and macOS?
Cover image for Why text labels on Flutter's MaterialApp looks worse on iOS and macOS?

2023-02-10 13:27:42

Reorganizing my fast chargers.
Cover image for Reorganizing my fast chargers.

2023-02-09 14:42:21

Pernyataan resmi tentang kelanjutan Skripsi saya.

Sesuai dengan tema tahunan saya untuk 2023 (yaitu, "menjadi pribadi yang apa adanya"), saya percaya keterbukaan informasi adalah salah satu faktor penting agar saya dapat berhasil di dalam kelulusan ini. Dan setelah melihat dan mempelajari situasi pada beberapa minggu terakhir, saya harus terbuka untuk menyatakan bahwa saya tidak bisa menyelesaikan penyusunan Skripsi saya pada Semester ini, yang kebetulan deadline-nya hari ini. Di satu sisi, hal ini mengecewakan bagi saya dan orang tua saya. Selain akhirnya kami tetap wajib untuk membayar biaya BP3, saya akan dianggap gagal secara sistem/prosedur untuk menyelesaikan semua ini dalam 3,5 tahun. Namun, ada beberapa alasan penting yang perlu untuk saya bahas di sini. Pertama-tama, memang proses penulisan Skripsinya belum selesai. Dan karena banyak orang masih bertanya-tanya "kapan Skripsinya selesai" ke saya, saya memutuskan untuk mendokumentasikan progress tersebut ke dalam situs https://skripsi.reinhart1010.id. Mulai hari ini, saya memutuskan untuk memasukkan progress penyusunan Skripsi hingga level subsubsubsubbab, meskipun saya tidak menjabarkan semuanya untuk kepentingan pencegahan plagiarisme. Anda juga dapat melihat keseluruhan progress pengembangan dan pengumpulan aplikasi di bagian bawah website tersebut. Kedua, saya juga sempat mengalami berbagai kesalahan dalam segi planning dan komunikasi. Waktu itu saya tertarik untuk memilih Skripsi jalur publikasi artikel ilmiah, namun salah mendaftar ke Skripsi jalur umum (yang ada sidangnya) karena miskomunikasi dengan beberapa orang di dalam fakultas School of Computer Science. Saya akhirnya memaklumi semua kesalahan miskomunikasi tersebut, dan tidak menjadikannya alasan untuk mengeluh atau bermalas-malasan dalam menjalani jalur ini. Kemudian, saya juga perlu membahas soal target IPK final yang sedang saya kejar. Selama ini saya berhasil meraih IPK sebesar 3.90, yang meski kelihatannya sudah sangat tinggi, namun masih tergolong sebagai Magna Cum Laude karena Summa Cum Laude di BINUS hanya dihargai bagi mereka yang memiliki IPK 3.91 ke atas. Tipis sekali kan? Jika saya berhasil menyelesaikan Enrichment Program ini dengan nilai A, namun untuk Skripsinya A- (dengan bobot 3.67 bukan 4.00), saya masih tidak bisa untuk mengejar 3.91. Di sini, saya harus mengejar nilai A pada kedua tugas tersebut untuk dapat meraih 3.91. (Skripsi: MOBI6024, Enrichment Program Semester 2: RSCH6107, RSCH6260, RSCH6268) Dan terakhir, setelah melihat dan membantu teman-teman saya yang sama-sama menyusun Skripsi tentang pengembangan aplikasi mobile, saya menyadari bahwa kualitas aplikasi yang sedang saya buat itu jauh lebih tinggi daripada kebanyakan dari mereka. Mungkin bisa sampai tiga kali lipatnya dalam segi UI/UX, fungsionalitasnya (validasi form dll.), dan dokumentasinya. Akhir kata, saya bisa lega karena saya bisa meluangkan waktu yang lebih banyak untuk menyelesaikan Skripsi ini. Jika memungkinkan, saya juga akan memperkuat bagian pengujian dan evaluasi aplikasinya. Semua ini saya lakukan agar saya bisa lulus secara excellent, tidak hanya secara cepat.

2023-02-08 11:13:00

UMKM vs Investor: Startup digital tidak bisa mengabdi kepada dua tuan.
Cover image for UMKM vs Investor: Startup digital tidak bisa mengabdi kepada dua tuan.

2023-02-07 11:04:37

Udah mau setahun nih, apa kabar Leslar Metaverse?
Cover image for Udah mau setahun nih, apa kabar Leslar Metaverse?

2023-02-06 12:11:55

Custom fonts for Misskey!
Cover image for Custom fonts for Misskey!

2023-02-05 11:51:53

Twitter-active Cupertino productivity fan name needed!
Cover image for Twitter-active Cupertino productivity fan name needed!

2023-02-04 11:32:57

Selamat tinggal WFO 9-to-5!

Minggu depan adalah minggu terakhir saya akan bekerja 9-to-5. Dan akhirnya saya bisa bebas. Yey! Kebiasaan yang akhirnya bisa saya tinggalkan itu membuat saya berpikir untuk dapat bekerja di luar jam kerja tersebut. Dan terlebih lagi, bukan perdebatan sekedar Work From Office (WFO) vs Work From Home (WFH). Tapi Work From Anywhere (WFA) dan lebih lagi, Work From Anywhere, Anytime (WFA+). Untuk bisa mencapai WFA+, sudah jelas saya harus berpikir untuk bekerja secara non-konvensional, meskipun sama-sama di dalam industri IT. Ini yang akan menjadi misi selanjutnya yang akan saya tempuh sebelum lulus kuliah.

2023-02-03 09:02:12

A "code, not content" clarification.

A few weeks ago I asked every developer to stop and focus on writing quality code, not quality content. And it may be ironic that we instead posted new blog posts at this site every day. So, to reassure some of my readers on this site: I'm not actively coding, yet. That's partly because I have some more paperwork to do for my CS bachelor thesis. I do consider writing these blogs, which does not always have to be about programming, as a personal exercise to keep my mind warmed up when I'm taking some break from continuing my thesis. I'll very likely to return to code mid-February, preparing some initial work for the new Teropong "Fediverse API client" and another new app for one of my communities. That said, we have prepared many awesome things, just like last month, to put inside our next Site and Infrastructure Updates which primarily covers Reinhart Maps and some internal server improvements. Stay tuned for more announcement, projects, and of course, more piece of code!

2023-02-02 10:43:38

Membela DEV-C++

https://twitter.com/lynxluna/status/1619905514279948288?s=20&t=dZEzElWym8Og7ZCAMCtrgg Sebenarnya, ada beberapa alasan mengapa banyak masih banyak kampus yang menggunakan DEV-C++. Meskipun kelihatanya sudah jadul. IDE adalah singkatan dari "Integrated Developer Environment", alias aplikasi khusus untuk membantu kamu membangun program dengan mudah dan cepat. 1. DEV-C++ masih bagus untuk dasar-dasar pemrograman dan competitive programming. Pertama-tama, beberapa universitas mengajarkan bahasa C hanya untuk mengenal dasar-dasar pemrograman dan untuk mengajar competitive programming. Di Universitas Bina Nusantara, misalnya, soal-soal ujian untuk mata kuliah COMP6047 - Algorithm and Programming dan COMP6048 - Data Structures sendiri adalah murni soal competitive programming. Apalagi untuk mata kuliah berikutnya, COMP6049 - Algorithm Design and Analysis, setiap mahasiswa diwajibkan untuk mengikuti kontes pemrograman tahunan ICPC Indonesia National Competition (INC) sebagai salah satu syarat kelulusan dari mata kuliah tersebut. Berbicara soal competitive programming... Beberapa kontes pemrograman termasuk ICPC melarang setiap peserta untuk menggunakan fitur code suggestion dan code completion seperti IntelliSense di Visual Studio dan Visual Studio Code. Ada juga yang mengatakan bahwa salah satu tujuan mahasiswa diajarkan untuk memakai DEV-C++ adalah agar mereka terbiasa untuk tidak menggunakan fitur tersebut, apalagi dalam kontes-kontes pemrograman. 2. DEV-C++ masih mudah dipasang. Kedua, memang DEV-C++ adalah salah satu IDE yang sangat mudah untuk dipasang. Hanya unduh dan klik instal. Berbeda dengan Microsoft Visual Studio (bukan Visual Studio Code) yang membutuhkan puluhan GB untuk dapat dipasang dengan benar, karena Visual Studio juga memasukkan berbai SDK yng diperlukan untuk membangun aplikasi yang berjalan di perangkat Windows. Dengan DEV-C++, Anda juga tidak perlu untuk memasang compiler secara manual, seperti Clang dan GCC serta menggunakan environment tertentu seperti MinGW, Cygwin, ataupun WSL. 🍎🐧 Bagaimana dengan pengguna macOS dan Linux? Pada waktu itu, saat saya masih cinta-cintanya dengan Linux, saya akhirnya memakai IDE yang mirip dengan DEV-C++. Yaitu Geany. Tampilannya juga sesederhana DEV-C++, dan saya seringkali berpindah IDE antara DEV-C++ di kampus dan Geany di rumah. Geany sendiri sebenarnya juga sudah tersedia di Windows dan macOS, dan bagusnya Geany juga bisa mendukung bahasa pemrograman lainnya seperti Python. 3. DEV-C++ juga mengingatkan bahwa tidak semua IDE itu seindah Visual Studio Code, produk JetBrains, dan Xcode. (Pengguna Vim dan Neovim minggir dulu...) Tidak semua IDE punya tampilan yang bagus. Beberapa codefluencer (atau yang saya sebut sebagai "Recycled Developers") di Twitter pasti merekomendasikan entah VS Code ataupun produk JetBrains (IntellIJ, PHPStorm, PyCharm, WebStorm, dsb.) dengan tampilan yang modern dan lebih familiar kepada kebanyakan pengguna. Tapi, jangan salah. Jika kamu sedang menimba ilmu menjadi enterprise software engineer untuk aplikasi desktop/PC, ada kalanya di mana kamu harus berhadapan dengan IDE-IDE jadul ini karena perusahaanmu telah bertahan menggunakan SDK dan framework jadul yang sudah tidak di-update bertahun-tahun. Saya tahu, membangun enterprise software ini tidak semudah membangun startup aplikasi mobile yang bisa mengadopsi teknologi-teknologi terkini. Tidak semua IDE seindah itu. Dan DEV-C++ adalah salah satunya, seperti tidak bisa move on dari tampilan era Windows 95.

2023-02-01 12:06:52

Should developers generalize or specialize?

The skill and career journey I've adopted so far is the diamond approach: As a beginner, it's okay to specialize on one thing before moving to others. But specialization should have its limits. I started myself in late-2013 as a (HTML and CSS) web developer, learned more about the DOM, and responsive design, before generalizing myself to use more and more web libraries and frameworks. Getting yourself in either generalization's or specialization's comfort zone is risky, because: Generalization could mean that you've tried all of these technologies but still have little average experience on these, and Example: I've learned today's great web frameworks (React, Vue, Svelte, CodeIgniter, Laravel, etc.) but I still don't understand how to optimize my apps created by each framework Specialization contains a risk of working with aging pieces of tech Example: I'm doomed as a desktop app/program developer; people are care those smartphones and tablets when I can just make Java-based desktop programs. This diamond approach is indeed a repeating pattern. After re-specializing yourself from generalization, you'll need to re-generalize again before specializing on another one. This is great because one day, you'll become a generalist who also specializing on each fields. Or in other words, a multiple-T-shaped developer, or even a comb-shaped one. You can learn new, emerging things very quickly due to your past, specialized experiences. And you'll be different to those who just either want to stick with one or two languages/frameworks or just want to learn as many things as possible.

2023-01-31 12:31:05

15,000 emails. 8 months. All delivered to you from the only one roothouse.

It was June 2021 and we were trying to send emails for those joining HISHOT 2021, an online community seminar held by the Computer Science Studient Association of BINUS University (HINTI BINUS). If we decide to use Gmail, well, one day Google could ban us if we send more and more automated emails in the long-term. Good thing that the web hosting service behind himti.or.id also offers a SMTP email service, which we can use instead to send to them on behalf of noreply@himti.or.id. The web hosting provider rate-limits the inbuilt SMTP service to the maximum of 200 emails per hour. But just to be safe, we're just going to use a half of them. That means we have to schedule the emails to be sent at a constant rate. Sure, we can use a MySQL database to store the pending emails, but Reinhart doesn't want to run and cron PHP scripts inside the remote server. At the end of the day, he decided to write a Python script and run them on his own PC. But one question remains. Is there a better way than just letting that big laptop to run scripts 24/7? Do we have a more energy-efficient way to do this? Apparently before Reinhart got his first Raspberry Pi 3 as a birthday gift and later bought an Orange Pi Zero, and they're both unused. So we decided to try the smaller house, and oh boy, we made it root. Hey, you may already read about Shift's log about sending emails before. But sure, everyone's working to get the job done. Here we fetch all draft messages to the roothouse befor asking her to deliver one-by-one. And spoiler alert, the roothouse is getting bigger! Version 0: A greedy Python script. We first iterated on creating a simple Python script which does these things: Get a list of draft emails, straight from a remote MySQL database For each emails, send them via SMTP Simple, right? The original script really worked well. However, another problem came when the script needs to fetch all of the pending emails. Or in other words, if there are 1,000 email messages waiting to be sent, the script horribly fetches ALL of them before being able to be sent. Well, that's too much and we should fetch them little by little. Not to mention there could be some messages which we need to prioritize for and to let Shift recover again when the script crashes. Version 1: A slightly efficient script. Then we decided to send emails by priority levels by upgrading the database and our SQL query. And as expected, this version worked even better especially when queuing low-priority emails (e.g. attendance receipts and e-certificates). We also tried to fetch at most 50 pending emails per batch, before sending and re-checking them, so the overall delivery time can be significantly improved. Additionally, we started to accept and parse email messages written in Markdown so yeah, we can finally make your next emails from HIMTI less boring. HIMTI's Unified Registration system also used Markdown for creating event announcements, and we're very happy to integrate that into our emails. This version worked well until we had to think about delivering e-certificates for HISHOT 2021. No, not by sending a OneDrive or Google Drive link to the list of e-certificates, but attaching them directly into the message. So here comes Version 2. Version 2: Because e-certificates broke our script. Sending e-certificates are much slower than regular, plaintext/HTML/Markdown emails for one reason: they're huge. There are two main strategies for this, whether the script is instructed to fetch the file locally and add them to the email list, or by including the entire attached message into the database. We ended up choosing the latter one because that means we can also send anything beyond images and e-certificates. So as usual, we upgraded the database and script, but then the hosting provider blocked our websites for storing too much data inside the database. That's quite a bummer, though, that we have to regularly clear sent emails from the database to be able to schedule new emails for more people. Version 3: Concurrency. As this great email delivery solution for HISHOT was adopted to more HIMTI events, including TECHNO 2021, COMPUTERUN 2.0, and HIMTI ELECTION 2021, we realized that we have to upgrade our infrastructure to be able to send more emails, for more events and people! We also realized that not every message have to be sent over the himti.or.id SMTP server. For example, internal message for event committees when a new participant have registered and paid for the event. That's why we decided to use Shiftine's private email address to send these committee messages. And more than that, we start to use GitHub Actions to help us check emails more regularly, being able to sleep() when there are no more emails to send. We can also prioritize and strategize the delivery of different emails from separate events, like sending HIMTI ELECTION receipts during the day and COMPUTERUN 2.0 reminders during the night. Some personal reflections. Yeah, that was great! I was able to share my "can't hibernate, i'm overpowered" spirit to help people in the real world. And as I now help to maintain BINUS Today's list of articles as part of my chore, seeing those sent emails feels like a nostalgia for me. Oh, right, you can check out our final code at https://github.com/alterine0101/emailer.py/.

Copyright © Reinhart Previano K. | Privacy Policy