小鸡小鸡 (Chick Chick) lyrics (Chinese and English)

Rollin’ WANG’s 小鸡小鸡 (小雞小雞 / xiao3ji1 xiao3ji1 / Chick Chick) video is currently a viral hit. It also happens to be one of the Mandarin videos that I absolutely love — it’s probably the only thing that makes me want to get up and dance.

I thought it’d be and maybe benefit non-Mandarin speakers to translate the lyrics. But honestly it’s not that hard: a lot of it consists of onomatopoeias (words imitating sounds), and the rapping part has no actual lyrical content (it’s just about making sounds that have a good rhythm).


Chinese (Simplified)

母鸡母鸡母鸡母鸡母鸡母鸡 咕咕day
小鸡小鸡小鸡小鸡小鸡小鸡 咕咕day
母鸡母鸡母鸡母鸡母鸡母鸡 咕咕day
公鸡公鸡公鸡公鸡 喔喔 喔喔喔
母鸡母鸡母鸡母鸡母鸡母鸡 咕咕day
小鸡小鸡小鸡小鸡小鸡小鸡 咕咕day
母鸡母鸡母鸡母鸡母鸡母鸡 咕咕day
谁偷了我的 Chua米 $^@#%?

咕咕day 咕咕咕咕day
咕咕day 咕咕咕咕day
咕咕咕 咕咕咕咕 咕咕咕 咕咕咕咕
咕咕咕 咕咕咕 咕咕day
喔喔 啊~~~ 喔喔啊~~~
叽 叽叽 叽叽 叽叽叽叽 叽叽
喔喔喔喔 喔喔哎~
喔喔喔喔 喔喔哎~
汪 汪汪 汪汪

么么咩~~ 么么咩~~
么咩么咩 么么咩~~
呱 呱呱 呱呱 呱 呱呱

喔喔喔喔 喔喔哎~ 汪汪
喔喔喔喔 喔喔哎~ 汪汪
咩~~ 哞~~ 咩~~ 哞~~
谁偷了我的 Chua米 $^@#%?

{cuckoo day chorus}
{random rapping}
{repeat of earlier verses}


Chick chick chick chick chick chick cuckoo day
Hen hen hen hen hen hen cuckoo day
Chick chick chick chick chick chick cuckoo day
Cock cock cock cock oh-oh oh-oh-oh
Chick chick chick chick chick chick cuckoo day
Hen hen hen hen hen hen cuckoo day
Cock cock cock cock
Who stole my Chua-mi[1] %^@#%?

Cuckoo day cuckoo-cuckoo day
Cuckoo-cuckoo-cuckoo day
Cuckoo-cuckoo day
Cuckoo day cuckoo-cuckoo day
Cuck-cuckoo cuckoo-cuckoo cuck-cuckoo cuckoo-cuckoo
Cuck-cuckoo cuck-cuckoo cuckoo day

Oh-oh ah~~~ oh-oh ah~~~[2]
Cheep cheep-cheep cheep-cheep cheep-cheep-cheep-cheep cheep-cheep
Oh-oh-oh-oh oh-oh-ai~[3]
Woof woof-woof woof-woof

Me-me-mehh~~ me-me-mehh~~[4]
Me-mehh-me-mehh me-me-mehh~~
Qua- quack-quack quack-quack qua- quack-quack

Oh-oh-oh-oh oh-oh-ah~[2] woof-woof
Oh-oh-oh-oh oh-oh-ah~[2] woof-woof
Mehh~~ mehh~~ mehh~~ meh~~[4]
Who stole my Chua-mi[1] %^@#%?

{cuckoo day chorus}
{random rapping}
{repeat of earlier verses}

[1]: I had absolutely no clue what Chua米 (Chua mi3 / Chua-mi) was. Some folks on Baidu also had the same question. Chua isn’t a Chinese word, 米 (mi3) means metre (unit of length). A couple people on Baidu said that “it was just a weird word the artist heard in a dream” and I’m inclined to believe that. One guy said that it’s some kind of chicken feed and is a colloquial term specific to Chengdu (capital of Sichuan province) but I find that highly dubious. In all likelihood it’s just Rollin’ WANG being weird and awesome. :-)
[2]: Imitating chicken “bawk” noise (sort of)
[3]: Imitating chicken clucking
[4]: Imitating sheep bleating (similar to “baa”)

Ruby warnings and scope

Today I wrote some Ruby code at work. We use Ruby 1.8 for reasons I won’t go into here. The code works fine, no issues. But we use Rubocop (under Ruby 1.9) to enforce consistent styles and also to look for any kind of oddity situations that might bite us.

Today Rubocop complained at me about my code. Likewise, many versions of Ruby complained in the same manner, excluding Ruby 1.8. Since the actual code I wrote wouldn’t make any sense to readers, I wrote a very easy-to-understand test case that reproduces the problem reliably, with lines 7 and 10 highlighted:

# Encoding: UTF-8

foo = true

if foo
  bar = 'something'
  puts bar
  [1, 2, 3].each { |bar| puts 'hello' }

The warning message, both from Rubocop under Ruby 1.9, and from multiple versions of Ruby via ruby -w natively:

jdc@ubuntu:~$ rvm list

rvm rubies

=* ruby-1.8.7-p374 [ x86_64 ]
   ruby-1.9.3-p547 [ x86_64 ]
   ruby-2.1.0 [ x86_64 ]
   ruby-2.1-head [ x86_64 ]

# => - current
# =* - current && default
#  * - default

jdc@ubuntu:~$ rvm 1.8.7-p374 do ruby -w ./x

jdc@ubuntu:~$ rvm 1.9.3-p547 do ruby -w ./x
./x:10: warning: shadowing outer local variable - bar

jdc@ubuntu:~$ rvm 2.1.0 do ruby -w ./x
./x:10: warning: shadowing outer local variable - bar

jdc@ubuntu:~$ rvm 2.1-head do ruby -w ./x
./x:10: warning: shadowing outer local variable - bar

jdc@ubuntu:~$ rvm 1.9.3-p547 do rubocop ./x
Inspecting 1 file


x:10:21: W: Shadowing outer local variable - bar
  [1, 2, 3].each { |bar| puts 'hello' }

1 file inspected, 1 offense detected

I’m a C programmer (and also do assembly and Perl), so am quite familiar with -Wshadow, so the message itself made sense (most of what I found on Google were Ruby coders not understanding the message). But what didn’t make sense is that there was no shadowing violation here — the code within the if has a different scope than within the else. There is no way possible for these two to “share” scope, unless the language was horribly brain-damaged.

Simply renaming the variable bar (in either scope, but not both) rectifies the “problem”.

So, Ruby… do you simply not understand scope, or does your warning mode — which it appears very few people use (otherwise I’d have expected this to come up by now, and that’s pretty disappointing in itself) — simply have bugs (someone’s bison/yacc code is broken somewhere)?

It never ceases to amaze me how much advocacy there is for Ruby, that has either awful design decisions or bugs (it doesn’t matter to me which). Nothing’s perfect, but I would expect a language that’s been around since 1995 (with Ruby 1.8 being out as of late 2003) to have their ducks in order by now.


Like NES/Famicom games? Good! So check out Brad Smith’s upcoming NES/FC game called Lizard:

There are fully-playable demos available for NES/FC (specifically a ROM file which you can use on your favourite emulator), PC (Windows), and Mac (OS X). Linux is a possibility if folks donate enough.

So stop reading this and go donate + help out. Every little bit counts! :-)

Personal NES/Famicom and SNES/Super Famicom nostalgia

I’ve kept a lot of memoires from my childhood, though not as many as I’d have liked. But the one subject matter I tried very hard to hold on to was anything relating to the NES/Famicom or SNES/Super Famicom.

Given my previous blog post, I decided I’d make a short itemised list — with photos, if available — of just some (hardly all!) of the things I’ve done or kept over the years:

Continue reading

Diggin’ In The Carts

Almost exactly 1 year ago I wrote a short blog piece titled The influences of female NES/Famicom music composers.

Since I follow lots of Japanese NES/Famicom music-oriented folks on Twitter, it came as somewhat of a surprise that as of last week, Red Bull Music Academy released the start of a series called Diggin’ In The Carts, which delves into the history of Japanese video game music through interviews with classic video game historians, as well as actual composers:

Due to lack of energy in the evenings (work has been keeping me pretty busy), I haven’t had a chance to watch any of the series — until this morning. Needless to say, I have what is probably the biggest smile on my face in many years. This is something I have dreamt of since probably 10 years old.

Oracle Java 8 (JRE 8) and Windows XP 32-bit failure

So JRE 8 is out, which is probably great for everyone except those running a 32-bit desktop OS.

You see, jre-8-windows-i586.exe (the “Windows x86 Offline” version), nor jre-8-windows-i586-iftw.exe (“Windows x86 Online” version) won’t run. Windows immediately comes back with a missing symbol dialog box that reads:

The procedure entry point RegDeleteKeyExA could not be located in the dynamic link library ADVAPI32.dll.

Why is this? Because RegDeleteKeyExA isn’t available in Windows XP 32-bit, only 64-bit. This brings into question the sanity of whoever built the installer. They should have used RegDeleteKey for 32-bit OSes.

It seems Oracle has dropped Windows XP 32-bit support entirely, except that’s both true and not true (keep reading). If they want to stick to their guns on that, they should stop saying “Windows x86″ and start saying “Windows Vista/7/8 x86″, in addition to actually changing the JRE so that it doesn’t use any 32-bit Win32 API calls any longer.

The amusing part is that the issue is only with the installer: JRE 8 itself works fine on XP 32-bit. Thanks, Oracle! Oh, and this isn’t the first time they’ve done this.

EDIT: Amusingly, JRE 7u55 is out, but the Certified Systems Configuration list doesn’t list Windows XP as a supported OS… yet the installer works just fine on XP. Oh Oracle… *facepalm*

Bitcoin/Dogecoin and large blk0001.dat and blkindex.dat files

I participate in Dogecoin mining, and at one point tried Bitcoin mining (in earlier days) but decided it wasn’t worth the tradeoff (electricity in Silicon Valley is expensive). Regardless of which “coin”, the overall problem I’m about to discuss is the same.

The wallet softwares (ex. dogecoin-qt.exe, bitcoin-qt.exe, etc.) download a massive number block chains. If you’re curious about the innards, see here.

Continue reading