Kotlin, the JVM I like
People a lot smarter than me will have no problem building complex applications in Java. If you can tame all the ceremonies, Java can be used to create great things. I saw that first-hand. Huawei OCS was built in Java. A fork of Spring Boot was what we used in DANA as our core payment engine. It is considered the King of financial services everywhere in the world. Now, while I understood some Java, I never really managed to build any serious work with it. I mentioned how ugly Java looked to me. That was mainly because I learned by copying. In order to understand a programming concept, the most optimal way for me to learn is to find an example, then rewrite it down by hand. I will copy one line, run it, see how far that runs or hit a wall, try to understand why that happens, then add the next line by hand again. I can learn very fast doing this. ...
Java Never Stuck with Me
It might come as a surprise for anyone who knew me personally, but I used to despise programming. I am what can be considered a late bloomer. My first introduction to a proper programming was in first year of university: Algorithm and Data Structure class. So I never developed natural interest on this topic, I need the good grade as the initial motivation. We used C back then and I can’t tell you how much I hated it. Not the class itself, but making the C language do what I want it to do. Google was not as helpful back then, I did not even remember if stack overflow was around, and no LLM for obvious reason. I fight this battle only with the good old “Introduction to Algorithms” book. ...

What a Three Years
Been three years since my last post. What a difference three years make. I relocated to Japan, wife started school, we lost her father, wife got a job, I practiced half-marathon, ran half-marathon, ran a second half-marathon, wife quit her job, our son was born.
Run R in Google Colab
Google colab offers a way to easily run R commands. It is really useful for someone like me who simply wants to try R but does not want to download and set-up the tools needed to run R. There are two approaches, one is to create a new notebook with R runtime, the other one is to execute a single cell with R script inside pre-existing python runtime notebook. New R Runtime To create a new notebook with R, simply go to the following url http://colab.to/r. It will resolve to https://colab.research.google.com/notebook#create=true&language=r which is the url for creating google colab notebook with R runtime. ...
Create Florence Nightingale's Coxcomb Diagram with Python
This is my implementation of the famous coxcomb diagram of excess death from Crimean War created by Florence Nightingale in 1858. It highlights the portion of death that occur from preventable cause such as disease and infection instead of direct battle-inflicted wound. This diagram been used to illustrate the power of visualization to empower decision making. I realized that using computer to resolve the proportion makes the chart emphasize the excess death even further than what Florence Nightingale presented. ...
Integrate Utterance to Blog Posts
Utterance is a comment widget that leverage github issues to bring discussion to our blog. I have been looking for a discussion tool for a while now, but none seems suitable. Lots of hexo-powered blogs use disqus for discussion, however I felt overwhelmed with the many configuration of disqus. The appearance is very cluttered as well. I just need a simple discussion widget that will let user identify themselves before commenting, but hexo as a static page generator doesn’t make use any kind of database storage so authenticating would need to be taken care of by third party. ...
Read Google Spreadsheet as Pandas DataFrame
We can read our google spreadsheets via pandas to be used in our analysis. We just have to get this part of the sharing URL https://docs.google.com/spreadsheets/d/[sheet_id]/edit?usp=sharing and the sheet name, then put it into this format https://docs.google.com/spreadsheets/d/[sheet_id]/gviz/tq?tqx=out:csv&sheet=[sheet_name]. We can then put this url into pandas.read_csv(). And of course I build a react app for this. It’s this one. Because why not.
Coffee Analytics 1 - How to Tell if Changing Grind Size Results in Better Brew
TL;DR the smaller grind size behaves pretty much the same with larger grind size. There might be other more important factor at play, or there are too little observation to make a confident conclusion. It’s now been two years since I seriously started making my own coffee. COVID-19 pandemic really brings out my inner barista. Before the pandemic and the ensuing restriction hits, I always buy my coffee. But now I weigh my coffee, hand grind beans right before brewing, 3D print custom tools to help me brew better, and watched James Hoffmann videos to know the latest poison to buy. ...
How to Embed Images Hosted on Google Drive
Embedding image URL from google drive is actually easy. We just have to convert the URL we got from google drive from this format https://drive.google.com/file/d/[image_id]/view?usp=sharing to this format https://drive.google.com/uc?export=view&id=[image_id]. Even easier, just use this tool I make: gdrive-url-converter I build this tool using React as I have not got a chance to play with React for a long time. It is a good exercise to flex my front-end muscle. ...
Does FromSoft explicitly program Malenia to skip waterfowl dance?
Hidetaka Miyazaki and Fromsoft has a portfolio of hard and challenging bosses in their games. However, in their latest game Elden Ring, one particular boss has been making a scene online, so much so that videos of her have popped up on my Youtube recommendation before I even purchase the game. She heals with every connecting hit, her move set is unforgiving, she attacks as soon as we try to heal, and one particular move of her is near-impossible to dodge or block. The only way to avoid this attack is to git gud! ...