Nikku

19 April 2019

Nikku is my latest side project that I’ve been working on since early April 2019. It is a BRSTM player on the web.

2018 in Review

I started this post pretty late in the year. I hope I could finish it in time.

So 2018 had been a mixed year to me. I had fun, I cried; I met new people, I said goodbye; I reminisced with the past, I started to plan for the future.

Learn to Count in JS!

In the past few weeks, I suddenly recalled of an interesting problem I faced during my days in Competitive Programming world. It was called “Make*me-an+[integer!]“, a problem posted in Internet Problem Solving Contest 2015 problemset (link to problem)

The gist of the problem statement is as such:

Output a list of valid ECMA-262 expression of the number 0 to 1000 (inclusive) using only the characters !, [, ], +, , and/or *, in which the correctness is determined by the value and the type of the expression itself.

For example, !![] evaluates to the number 0 (this is a valid output), and +!![]+[+[]] evaluates to string “10” (this is invalid, as the output type need to be evaluated as type number too).

The problem has two subtasks: the easy subtask is to produce the outputs where each expression uses no more than 200 characters; and the hard subtask limits the expression to use no more than 75 characters.

During the competition itself, I solved the easy subtask, but now I was quite interested in solving the hard subtask because … why not? Hahaha. In total, I spents around 2 weeks (including the many off days in between as I wasn’t in the mood for coding).

So, let’s get into the problem.

June 2018: Explore Canada

Back in June 2018, I’ve taken a very long leave to go for a vacation with my family to Canada. The main purpose was to attend my brother’s PhD convocation, with side purpose of having a well-deserved vacation. I haven’t been taking any week-long leave since January. Even for Chinese New Year, I only took 1 day of leave. So yeah, this time, I took a leave for 3 weeks, encompassing almost the whole month of June. I only had 6 working days in June 2018. …

This is not a thought

18 March 2018

Zen, isn’t it?

Recently, I have some encounters of this zen topics: on YouTube video, on a Geekcamp 2017 talk, and on a podcast.


Kurzgesagt: Emergence

The YouTube video that I encounter was a video by Kurzgesagt on the topic of emergence. It talks about when a living being is by itself, it is pretty stupid, but when it become collective, intelligence emerged.

  • There is no wet, but collectively, there is wetness.
  • There is no city, but collectively, there is a city.
  • There is no society, but collectively, there is a society.

Geekcamp: meta-circular programming language interpreter.

What if we make a programming language interpreter, using the programming language itself, and later use this interpreter to interpret it’s own source code. This is what is meant by meta-circular.

There is no program, the source code is representation of the program.

Similarly, there is no interpreter, the source code is representation of interpreter. Hence, if a source code of an interpreter of a language is written on the language itself, theoretically, it should be able to interpret itself, right?


Podcast. Radiotopia Showcase: Ways of Hearing.

The podcast series is about analog and digital recording.

Digital audio is for machine. Song recorded using analog recorder could have a faster beat around chorus. Digital made it even and regular, made the beats tied to a clock.

A record is a performance of the song at that time of recording. This means that there is no song, there is a representation of a song.


This is not a thought. This is a representation of a thought itself.