When is Free not Free? When it is Verizon

Yes this is a "first world problem". I came across this "Free On-Demand Marathon" on Verizon FIOS. As I do not have a subscription to HBO I was eager to check out some of the movies. Remote on - navigated to the confusing UI, click on the clearly labelled "free" movie, then it ask me to subscribe...

Every reading the "fine print" on their webpage, I realized that all the good stuff is only available until Sept 22nd (yesterday). Could they at least update their webpage and their banner?

How to add additional storage to a QNAP NAS in RAID 1 (mirrored) configuration

I have been storing my important digital files on a RAID box for many years. I have a QNAP TS459 Pro+ that has one pair of 2T seagate drive in them. The 2T storage is almost full. This is a screencast on how I replaced the pair with a pair of WD Red drives, rated for NAS use. (WD40EFRX)

Conceptually the process is simple

The current setup is RAID 1, mirrored. That means each hard drive (HDD) has a complete copy of all the files. Simple pull old drive 1 out and replace it with a new one. The RAID system will copy the files onto the new drive. Then do the same for the second drive. But the actual operations is a little more complicated.

Actual Process

  1. Tell QNAP that we are to replace the hard drives, one by one:
    1. Under "raid management" , click the "Action" button and start the "Expand Capacity" action
    2. QNAP will display "You can replace this drive" for all the HDDs in the array. This does *not* mean you should pull the drive just yet:
    3. Select HDD 1, click "Change" to tell QNAP to stop using this drive.
    4. When QNAP displays "Please remove this drive", pull the drive out of the system and wait for QNAP to beep twice. (While you are waiting you can unscrew and replace the actual hard drive in the drive holder, ready for re-insertion).
    5. When QNAP displays "Please insert the new drive", plug the new drive into the slot.
    6. Be patience and wait (over 1 minute sometimes) for QNAP to beep and start rebuilding. Rebuilding will take hours.
    7. When QNAP display "ready" under status, the drives are back in RAID mode.
  2. Now repeat the same process for hard drive 2.
    1. Under "raid management" , click the "Action" button and start the "Expand Capacity" action
    2. QNAP will display "You can replace this drive" for all the HDDs in the array. This does *not* mean you should pull the drive just yet:
    3. Select HDD 2, click "Change" to tell QNAP to stop using this drive.
    4. When QNAP displays "Please remove this drive", pull the drive out of the system and wait for QNAP to beep twice. (While you are waiting you can unscrew and replace the actual hard drive in the drive holder, ready for re-insertion).
    5. When QNAP displays "Please insert the new drive", plug the new drive into the slot.
    6. Be patience and wait (over 1 minute sometimes) for QNAP to beep and start rebuilding. Rebuilding will take hours.
    7. When QNAP display "ready" under status, the drives are back in RAID mode.
  3. At this point, we have two new drives in the QNAP. But only the original capacity is being used. You need to tell QNAP to start using all the capacity.
    1. Under "raid management" , click the "Action" button and start the "Expand Capacity" action
    2. There is another "Expand Capacity" button now shown on the bottom of the screen. Click that.
    3. The QNAP will start the expansion process, which again takes a long time.
    4. Once that is done, you now have a RAID setup that make full use of the larger pair of hard drive.


This is a screencast showing the entire operations over two days, compressed:


I am happy that I did the drive replacement. I now have twice the storage, and also a pair of higher quality drives in my QNAP. The QNAP forum was a great source of information. I have received a lot of help when I ran into problems.

There are also two issues that makes this process more difficult than it should:

  • You need to wait a long time for the QNAP to recognize you have inserted a new drive. The first time I tried this I didn't wait long enough, thought something was wrong, and pulled the disk out again. I ended up having to rebuild the original drive (meaning wait another 12+ hours) and start over.
  • You cannot/should not pull the drive out until you click "change". When QNAP display the message "you can replace this drive" - it means you can replace this drive if you click "here/change". i.e. do not forget to click "change" before pulling the drive out.


Agile in China: Moving away from the factory worker mentality

The Agile software development mindset requires agile team members to be treated as knowledge workers. In the Chinese context, this may be harder than you think.

Rainy Day Solution, or the Low Cost of Labor

Umbrella Seller in Shanghai Subway Exit

Umbrella Seller in Shanghai Subway Exit

Chinese developers have realatively lower pay than the US. A good developer in Shanghai makes less than half, sometimes a third, of her Boston counterpart. General labor is even cheaper. Let me illustrate with an example:

What do you do when you are caught without an umbrella on your way to work? In Shanghai an Unbrella seller will pop up at each exit. We even joke that we can who is an organized person by looking at people's umbrella at the office. The subway exit umbrellas often have recognizable prints.

In Hong Kong you will not find such vendors. instead you will see umbrella vending machines that accept payment by the HK Octopus card, a stored value smartcard that can be used on public transits, convinent stores and more. The Octopus card is a internationally famous successful technology project.

Hong Kong Subway Unbrella Vending Machine

Hong Kong Subway Unbrella Vending Machine


Overtime Mentality

In many companies overtime ( 加班 ) is not only expected, but budgeted. Often developers are paid for their scheduled overtime. "Work more hours" is the standard answer to any problems. Reminding the reader of the classics, The Mythical Man-Month and Brooke's law: "Adding manpower to a late software project makes it later". Factory work with interchangable workers doing manual work may benefit from overtime. But software development does not.

What to do?

A good agile team needs each team member to take personal responsibility of the work. To prepare for that, management need to respect each team member. Acknowledge each member as a knowledge worker, who needs time to think, and time to recover. This may not be a welcomed idea to traditional bosses, but it must be done.

Are you Chinese?

It is always this crowded on weekends

It is always this crowded on weekends

Today after lunch at Luziazui (陆家嘴) financial district I helped a European tourist couple take a picture of them in front of the Oriental Pearl TV Tower (东方明珠). They then asked me how to get to the metro station, which is a common questions that I have answered many times even from Chinese tourists. After giving them a detail set of directions, one of them asked me: "Are you Chinese?" Instinctively I answered "Yes".

She commented "Your English is very good!" I smiled and wave goodbye to them, did my bit for Shanghai Tourist Relation today.

How to change ear tips on the Bose QuietComfort 20i headphones without breaking them

If you are looking for a noise cancelling headphone, the Bose QuietComfort 20i is your top choice. After you bought yours, I am sure you want to experiment with the different sized ear tips -- and that is when the trouble starts.

The Bose ear tips attach to the headphone in a very different way than all other earbuds style headphones that I used. Instead of just snapping onto the earbuds over some sort of ridge, there are two additional little plastic wings/tags that the ear tips must fit over. If you are not careful, you will break them when you try to remove the ear tips.

To help you not break them, here are some close up pictures of those wings/tabs. Study their locations. Also watch this video instruction by Bose. Then carefully remove and replace the ear tips as instructed.

Remote fish feeder using littleBits new Cloudbit

Can a just turned ten years old and his eight years old sister, never used littleBits before, create a project using littleBits and the Cloud module? Will our betta fish be fed in time?

We are a family of casual makers. My just turned 10 years old, Gab, and his sister Morgan both have a lot of Scratch experience but never used littleBits. We got onto the beta test list for the cloudbit module and was sent a cloudbit (Thanks littleBits!). I purchased the premium kit so that we have more parts to play with. With them in hand, Gabriel is tasked with first trying out the littleBits and then create a project with the betta cloudbit module.


Gabriel and Morgan like the LittleBits system. "Robotics but simpler" is his immediate reaction. Morgan commented that the color coding of the module helps him locate and organize his work. He likes all of the sensors and output devices. He has used the pico board with Scratch before, but the pressure sensor and the pulse module is new to him. One of his favorite output is the vibration module, another new device.

The Bad

Two criticism from Gabriel is that

  1. the fan is not strong enough
  2. we wish the servo would "spin around all the way".

And most importantly the cloud module response time is very slow. In fact sometimes it seems to not work at all. We tried using twitter and SMS to trigger action on the littleBits and often it either is very slow or not worked at all.

Yum Yum Fish Feeder

After brain storming a bit we decided to build a fish feeder, as Gabriel's daily task is to feed our only family pet ORO (Octo Rainbow Odo) beta fish. With a cloud powered fish feeder, we can feed the fish when we are not home. Seems easy enough? But Gabriel insisted on feeding ORO's daily 3 fish pellets one at a time. If we throw all three pellets in, the fish gets confused and sometimes does not eat the pellets.

Which Output Module

Prototype Testing

Prototype Testing

We started brain storming and experimented with each of the outputs to get ideas. Because Gabriel and Morgan has started building another project using the servo module, they wanted to use the servo with some sort of cardboard attachment to push the pellets into the fish bowl. But the pellets are too small to make this work effectively.

We tried the fan, but it is too weak to blow the very small fish pellets down a chute. (Dad's mental note: perhaps concentrating the airflow would have helped). Then we settled on the vibration module.

First prototype

We build a little chute with a toilet paper roll (from the standard family maker material inventory?). Taped the vibration module to it and crumbled up there bits of paper as test pellets. It worked ! Gabriel built a stand to hold the chute and off we went testing the prototype. For testing we just used the roller switch as the controller to speed up our test time. It worked pretty well, but...

When we put the actual tiny fish pellets on the chute, they would not move. The fish pellets are too small and too light. The vibration module does not create enough 'shake' with the toilet paper roll.

Final Device

We had bits of paper laying around, so we build a very simple chute with a piece of paper. A lighter chute means stronger shake? Dad's extra input is to put a fold at the end of the chute to hold the pellets better. This works. We hooked everything up, tested with the roller switched and it worked. We tested the cloud module before to make sure the IFTTT recipes worked. We replaced the roller switch with the cloud module, setup the fish feeder over the fish bowl, and fed our fish via SMS remotely.

You can view the project on the littlebits website for more details.

Project Video

Our brainstorming notes for this article

Chinese Postman Canvas Bag

I have a thing for bags, from Jack Spade to my recent order of their Waxed Canvas bag from Wear Gustin. I walked out of my apartment building in Shanghai today and see this beauty - a real bicycle used by our local postman for delivering mail to my building. Take a look at that bike and the canvas bags on it. well worn but functional.

Enjoy the pictures.

EventDove is much more then a EventBrite Clone

I learnt of EventDove several years ago via my Boston connections. I even used it once at a small local event in the Boston area, but honestly did not find it particularly different from eventbrite. I was so wrong.

I attended a talk by Jun Chang, the CEO and founder of EventDove in Shanghai. She gave a very personal talk about the company and it's business model. My key takeaways make me believe that this company is going to be very successful:

EventDove focuses on B2B

While the EventDove platform clearly is useful for event registration services for events of any size, (there is a free plan), the company is focused on servicing large scale, repeated customers. EventDove often provide back end system integration with their larger customers to provide many features that may not be visible to the event attendees. This provide a high barrier of entry for competitors, and high exit costs for their integrated customers.

These integration reaches beyond event organizers. It can include event revenues operators as well, which are a source of new customers.

A customer is a customer when they are paying for the service

Jun stress that while she values all customers who uses her platform, paying customers are where she is concentrating her companies resources on. The initial paying customer based is most important. Having worked with many start ups, I completely agrees with her. A start up sometimes too eagerly chases after potential paying customers by listening to their non paying customers too much.

O2O - Online too Offline (and back)

This is a key feature of EventDove that I did not see before because I did not attend a large scale event serviced by EventDove. Their platform has significant feature set to support onsite registrations, badge handling and much more. It is geared towards a large scale event hosted at a convention type venue. These onsite, off line features, with venue system integration, create another high barrier of entry for competitors.

EDM and Data Mining

As EventDove is used by more and more conference venues, with it's integration with both the event organizers and venues, it has access to a large data set of attendees. While currently the platform can feed this data back to the conference organizer for used in the electronic direct mail (EDM) marketing, is it possible for EventDove to mine this dataset across events and organizers?

Jun also mentioned that events in China a slowly moving away from focusing on big name speakers as the key marketing source. As the event organizers focus more on the content of the events, and the quality of the attendees, (think barcamp) can EventDove leverage it's combined attendee dataset and provide social networking features like meetup.com?

Standards and Platform

If EventDove is the first platform to integrate event organizers and event venue operators, it has the potential to set the standard for data exchange in this space.  Will it become *the* platform for large scale event hosting?


I want to end this summary with a fun fact. The "Dove" in the name EventDove has a meaning that perhaps get lots in the English name. Doves can also be referring to carrier pigeons. They carry information back and forth. EventDove then is a platform for information exchange between event organizers, attendees and venue operators!

Localized Advertisement in China

Some brand, like Apple, is such a global brand that it can use mostly standardized advertising across the globe. However in general is it possible to have one standard universal story for the entire world? Or is a localized story more effective?


Here is an example from a Chinese company point of view. I saw this ad on a Shanghai subway car. It is for a job board company called liepin.com.

Even if you do not read Chinese, can you guess what is the copy? If you guessed the left pane says something like "I lost my job", and the right pane says "you are hired" you will be very wrong.

The left pane says:

When I went home during Chinese New Year (a very common thing to do for Chinese, travelling to their family home to spend time with the extended family) I saw my parent's getting so old, I tell myself I want to give them a better life.

The right pane says "headhunters will recommend great jobs, changes start at liepin (the advertiser)"

Local Story

It is a very common story for adult children to return to their family home to visit their parents during the big Chinese New Year (Spring Festival 春节). There is also a (older) cultural expectation and responsibility to support your parents. Therefore this advertisement story is quite powerful. Would this work in the US? Absolutely not.


How Not to Peel a Garlic in 10 Seconds

This video from saveur.com has been making the rounds on the Internet. It is entertaining, but really?

  1. If you following his directions, timing yourself, you will find that it took more than 10 seconds
  2. If you have a tight counter, you will spend time cleaning up after you smashed the garlic
  3. Do you have two big metal bowls?
  4. Add in the time it takes to pick each clove out of the bowl
  5. and what's wrong with garlic hands? I love garlic, and the small of it.

I personally prefer the way of smashing each clove with the side of chef's knife and hand peeling each clove. Much more satisfying to be "one with the garlic"...

Agile in China, Stand Up Meetings

As the start of a serie of articles on Agile in China, this is a some what lighter first post.

I send this to my teams today:

Better Stand Up meeting for scrum

Last week I attended a very good seminar by an international Agile expert. He says it is very important to keep stand up meeting short. He said one good way to have shorter meeting is to stand on just one leg during the stand up meeting.

I know this is not easy but we should try. It will also give us stronger legs. Good for soccer (or dancing! )Let us try this in today's stand up meeting.

(Bad Chinese translation:)

上周,我参加了一个国际敏捷专家的研讨会。他说,保持站立会(standup meeting)议短这是非常重要的,一个好办法是用一条腿站立。 

我知道这并不容易,但我们应该尝试。它也会给我们更强的腿。适合足球 ! (或跳舞?) 请大家在今天的站立会试一试。



If you have read this far, I hope you are laughing rather then shaking your heads. Humor I believe is part of having an agile and growth mindset. My teams, unfortunately for me, was not tricked by this all.

Barcamp Shanghai 2014

One of the best way to meet interesting people is to attend barcamp. I went to the first barcamp in Boston 7 years ago. In fact 2014 is likely going to be the very first year I am going to miss attending BarcampBoston 8 because I am in Shanghai.

Luckily there is barcamp Shanghai 2014 ! I went yesterday. Met a bunch of interest people. Gave a presentation on my experience in creating and running an after school Scratch club. These are the slides:

The video that I showed is here, originally created for the MIT ScratchEd site:

Raspberry Pi gets a Real Sound Card from Wolfson and Element14

I have been a big fan of the Raspberry Pi. It brings easy, affordable, high level computing tinkering to the masses. It is great for makers, educators and tinkerers. Today it gets a new sound card with lots of features from Element14. From their website:


  • 3.5 mm jack (4-pole) for a headset/boom mic combination for gaming or VoIP applications
  • 3.5 mm jack for microphone input
  • On-board MEMS microphone
  • 3.5 mm jack stereo line input for connection to devices such as digital audio players (iPod etc.) or mobile phones
  • 3.5 mm jack stereo line output for connection to devices such as external stereo amplifiers or powered speakers
  • S/PDIF input and output
  • On-board class D power amplifier for external speakers, with connection to external power source if needed.
  • Small pin header for extra functions if they are low cost, already on-chip, and don't require any further components
  • Raspberry Pi form factor

Note very important note is that this Wolfson Audio Card is only compatible with Raspberry Pis which feature the P5 pads, which can be found on Revision 2 Raspberry Pis onwards.

What makes this bitter sweet for me is that I am really into computer music. After I built my first "computer" when I was in high school, the first addition to it is a sound card. The computer is based on a SC/MP MK14 board. The "sound card" that I designed and built is based on the General Instrument AY-3-8910 chip.

Now years later, my kids can do the same with slightly more powerful hardware and software.

Teaching Younger Kids Programming using Scratch

IMG_3452Learning to code is all the rage these days.  While I do not completely agree with teaching programming for programming sake, I strongly believe that computational thinking is a crucial skills for children growing up in the 21st century. Scratch from MIT is a platform designed to effectively teach kids, including college students, computational thinking via programming using Scratch. But how young can you start? After running after school Scratch classes for a few years with K-6 kids, this is what I found about getting younger, 6 -7 years old, to use Scratch:

Attention Span

Any parents of a 6 years old can tell you, getting a 6 years old to sit down and focus for more than 20 minutes is difficult. Doing scratch at home actually is easier as there are less distraction. But do not count on being able to create a large Scratch project on one sitting.

Reading Skill


Scratch is very visual, and most basic blocks are color and shape coded. So one does not have to be able to read all the text on the blocks to use them. However it can get slightly frustrating if a child cannot find the blocks that she wants to use. One way to help is to prepare some basic blocks that the child may need, either by dragging them into the scratch area, or by printing them out on a piece of paper so that the child can just visually try to match the blocks.

Explain and re-enforce the color coding scheme: Block for movements, purple for looks (say blocks), etc will help.

Writing Skill

Similarly, if the child is going to have her characters say things (which is a good idea), she needs to be able to type, and spell. Some children gets frustrated, especially if they are aware that they “need” to spell the words correctly, when typing. Most often the parents get more frustrated as they see their children struggle to spell. My recommendation? Does not matter. What’s wrong with a character saying “trhjhirj ffweg3sffs” !!?

Mousing Skill

This can be a problem. Scratch is very much drag and drop. Depending on the amount and type of computer usage the child already has, using the mouse can be challenging. Drawing with the mouse is another skill that a child may not have developed. Here, Macs and one button mouse have an advantage. But a child will learn very quickly.


For younger kids, sometimes just drawing sprites using the built in costume editor is fun enough. In a Scratch class, I usually get one younger kids that end up just using Scratch for drawing 90% of the time, and that’s fine.

Story Telling

The next step from drawing can be just adding say and wait blocks to their sprites. This way, one or two characters in a Scratch project can act out scenes, sometimes from their favorite book or TV (yikes) shows. At least this makes the child a digit content creator instead of a content consumer.

Scratch Cards

The Scratch team at MIT created a series of one page handouts called Scratch Cards. They are designed as mini activities that can be used in Scratch workshops. Because the activities are short, and usually the blocks are printed on the cards, they can be a great resource for quickly doing some project in Scratch. It always, always bug me that they do not just sell physical versions of these cards. Instead you need to download the PDF, print and laminate them. But they are very useful.


A great way to learn Scratch, and it is built into the philosophy of Scratch, is to learn from each other by remixing each other’s project. Remixing is built into the Scratch platform. The only downside of learning by remixing is that often a child will get caught up looking for fun games to play on the Scratch website and forgets to remix. Especially for younger children some supervision is advised.



Lego sells a set of kits under the name WeDo that can be programmed using Scratch or their own software. I highly recommend this as another activity for learning to use Scratch. Unfortunately all the cool Lego stuff are only available from their education division. ( )But individuals can buy directly from them. The kits are expensive, but they are good. One small catch right now is that the new version of Scratch, because it is web based, does not yet work with WeDo. So you have to use the older version (1.4) if you want to use WeDo. See some examples in this video, pass the 2 minutes mark.

Learning to Learn

So there you have it. I have seen many young kids starting off struggling with Scratch at 5 or 6 years old, and turned into a very competent Scratchers in one or two years. The skills and fun they acquired make it all worth it. One of the most important skills a child can acquire is to learn to learn:

“The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn. ” - Alvin Toffler

Squarespace has a URL formatting problem

I really like Squarespace. Their support of many of my favorite podcast (penaddict, ATP) helps. I have started to recommend and use Squarespace for many of my nonprofit websites (Fiske School PTO). Recently I started to convert some of my other blogs (loftykids.org) over. Immediately I run into a big problem. When Squarespace import (or create) a blog, it requires the blog entries to live under a suffix within the site's URL scheme. For example, the default suffix is "blog". This means all the blog entries will be of the form:

... etc ...

There is no way to not have the /blog/ or /anything/ suffix, for example the following URL is not possible:


Currently most blog based website removes the suffix and use some sort of date notation only in the URL. The site of Matt Mullenweg, founding developer of Wordpress, is a good example. Squarespace however cannot serves blog pages using this convention.

URL Mapping

Squarespace does have a URL mapping settings, where you can map one URL to another. However the mapping is a literal mapping. It does not support wildcard. i.e. you have to manually enter each page name. So you have to create a long list of URLs and issue permanent redirects for them one by one using this setting option. This is the only solution.

Customer Service

Squarespace always have great customer support. They respond to email or chat inquiries very quickly. This time is no different. I have to give kudos to the customer service reps that handle my inquiry regarding this bug. Stephanie D took my issue and spent a lot of time trying to get a definitive answer to whether this can be avoided with their tech team.