- Jul 17, 2025
According to the central limit theorem, the sum of some i.i.d. samples is normally distributed in the limit of large sample size. This fact can be used to implement a multi-pass Gaussian blur filter, where the total number of passes is equal to the number of samples used in the averaging. Through this, we can also see a nice relation to the heat equation, which is not surprising since the heat kernel is a Gaussian function.
- Oct 31, 2023
“It’s the weekend and you’ve just completed a seance with friends. After communing with the dead, you realize a mysterious message was left behind.” What is the decoded message? Use your Ruby skills to find out!
- May 7, 2023
Many languages support breaking out of nested loops, such as Perl, Java, JavaScript, C#, etc. Languages that have goto
can also do this easily. However, in most other languages, it is not easy to break out of nested loops. I want to introduce a way to do this in Ruby.
- Dec 5, 2022
The number of days in a week is prime, so we cannot utilize weekly periods to help us remember periodical events unless the period is a multiple of 7. However, there may be something that we need to get reminded of which happens once per two days or three days. For example, I wash my hair once per two days and wash my clothes once per eight days. To solve the problem, I wrote a Ruby program to help remind me of those routines.
- Nov 28, 2022
I use udev and systemd to send a notification to my phone via ntfy automatically whenever my laptop is discharging.
- Nov 8, 2022
After some comparison among solutions, I use KaTeX to typeset math in my emails.
- Apr 27, 2020
DSL means domain-specific language. Ruby is a powerful script language in terms of building DSLs (as sublanguages of Ruby). In this article, I implemented my idea of a DSL with commands split by space. For example, you may just write a b c
to run the commands a
, b
, and c
one after another! This trick is heavily applied in my project alda-rb. How do I achieve this?
- Apr 14, 2020
I have got tired of letting GitHub Pages to run Jekyll for me. I cannot use custom plugins! I decide to run Jekyll myself and push the built result to GitHub repo. I wrote a script to do this.
- Apr 8, 2020
In this article, I present minimal examples of a RM game. They only illustrate the basic concepts of how a RM game is structured and what is the running logic of it.
- Feb 9, 2020
Monkey-patching is a powerful tool in programming. In this article, I used techniques of Ruby metaprogramming to define a series of methods def_after
, def_before
, etc. to help monkey-patching. They look graciously in that we can use it to shorten the codes for monkey-patching (avoiding aliasing and repeating codes).