Moto G 2015 (3rd Gen) vs. 2013 (1st Gen)

Since mid-2014 I’ve owned a mobile phone: a Motorola Moto G 2013 (1st Generation model). When shopping for a phone (since the last time I owned a mobile was in 2002 or thereabouts), the requirements were pretty simple: low-cost (I cannot justify spending US$600), worked with T-Mobile (i.e. used GSM), and was something I could buy immediately (vs. buying it through the carrier + paying monthly charges). My friend Liz recommended the Moto G.

In May 2014 I purchased the 16GB GSM model from Amazon for US$199.95, and I’ve been mostly happy with it (my biggest complaint has been the selfie camera brightness bug introduced in KitKat 4.4.3, which still exists even as of Lollipop 5.1). I was also a Motorola beta tester of Lollipop (I had a lot of UI-related complaints, some of which got rectified, others didn’t).

However, odds are the Moto G 2013 won’t get Marshmallow 6.0 (another example of Google and vendors focused excessively on their cash cow of forcing people to buy new phones just to get software updates), and I had begun to encounter several applications which really didn’t perform very well. And that selfie camera bug really pissed me off (yup, I’m OCD about bugs).

I began looking for a replacement phone with the same requirements as before, and of course was introduced to the Moto G 2015 (3rd Generation model). The 8GB model was US$179.99, while the 16GB model was US$219.99. The 2015 model included a microSD slot (the 2013 model doesn’t have one), and after doing some research I found that with Marshmallow you’d be able to use your microSD card for system space/storage; it didn’t make much sense to me to spend US$40 to get 8GB of space when I could spend US$14 and get a high-end 32GB microSD card. After reading several reviews of the 2015 model, I ended up purchasing the 8GB version from Amazon. The first one I received actually had dead pixels and a touch screen that seemed non-responsive about 20% of the time (more on that in a moment), so I got a replacement (which had no dead pixels).

Below are the reasons why I’ve chosen to return the 2015 model and stick with my 2013. This is literally the only “review” of this sort — specifically giving a negative opinion rather than a positive — that I could find, so apparently I’m in the minority.

Continue reading

Sharing introverted communication wisdom

I’ve been having a lot of interpersonal conflicts with people as of late, and after lots of introspection over several weeks, I decided to write down some thoughts I had. Below is what I put down this morning.

Being an introvert is difficult, given that American society caters to and is predominantly extroverted, but the world becomes a completely different place when you have people who are neglecting you either directly/intentionally or indirectly.

Those who aren’t introverted often seem to have difficulty understanding that our time alone (to recharge, recompose) doesn’t mean we don’t want contact, we just want contact that amounts something: something with weight or substance. Small 5-10 minute chitchats, or “conveniently short” texts discussing trivialities, do not make us feel appreciated nor do they give the impression the listener is applying empathy (trying to connect with their conversation partner) — instead, the introvert is left feeling unfulfilled and in many cases belittled. They feel like best-effort communication is being prioritised over quality.

In today’s world so many people “don’t have time” for X/Y/Z. The excuses are literally endless. I’ve always maintained that making time for things (especially people) you care for is always worthwhile. Rebuttals like “there need to be more hours in a day” are nothing but impractical and convenient excuses. If I can make time for you, surely you can make time for me — golden rule and all that.

I don’t think I’ve ever heard a person ask another “is the way we communicate fulfilling? Are you happy with how we talk?” Maybe those are questions that, if were to become more commonplace, would save more friendships and relationships.

I’m of the strong belief that this advice can apply to extroverts too, but it’s important to remember that the nuances and needs of introverts and communication are different.

小鸡小鸡 (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.