How to scout IT talent in Shanghai

IMG_4926So you setup shop in Shanghai and started to look around to extend your web-development team? A recurring question I’ve received is how we used to spot talent in Shanghai. We started by looking at the universities but ended up hiring over 10 people with the experiences below.

1. Not so good: visiting universities at random:

On a Friday afternoon in 2010, I walked into the East China Normal University in Shanghai. I explained the guards that I was starting a company and had the desire to meet some graduate IT students. Surprisingly, I was let through. Two finance students showed me around. They were interested in my intentions but couldn’t help me more then point me to the software development building. I was let inside but there were barely any students outside the library. And the ones inside looked too busy to be disturbed. The only thing that didn’t make that trip a total failure is that I could leave my flyers on the canteen wall. However, in the following week, not one call came in. (A seperate story is how we came back to the very same uni to find great interns later) I had to find another way.

2. Better: seeking students online

Back in the office the next week, I ousted my frustrations to a friend in HR. She pointed me to a recruitment network called Here is the thing with First off, it’s in Chinese but that shouldn’t hold you back. The other: most employers pay to create a company profile and a job profile and sit back while the applicants sign up. I made that mistake as well. The amount of time spent going through resume’s was enormous and I didn’t find any good applicants. Instead, I found a liking in the resume search bar. I was looking for a javascript frontend developer and was able to find a long list by narrowing down to our area in Shanghai and adding JS related terms (Like jQuery etc) into the searchbar. I then went over the remaining list and invited every candidate by telephone. This often resulted in a language/communication problem but when I did a follow up with a SMS in English I always got an answer. I usually setup interviews at coffee-shops and such. Be aware, like in every interview worldwide, that some might exaggerate their credentials. Mostly a gut driven decision to hire someone in the end I would say.

3. Best: Networking

The first team members joined with the 51job method. I then had less trouble finding additional candidates. Because I could speak out about the additional member that we needed and that would often lead to a trusted employee vouching for a friend, they usually came with a great addition to the team. At that point the company grew and we had enough Chinese employees and HR staff to take care of the remaining searches, I was just involved when we interviewed the IT related staff.

Search actively

The key takeaway I learned is to not wait for applicants to react to your job profiles. It’s way better to seek them out and the 51job website has helped me tremendously with this. At the time I tried finding team members at university, I had a wrong approach. A better way would have been to get in touch with the professors first before visiting (I learned that afterwards). Once you have a bit of a network, it’s easier to find people through your existing employees!

Reading /r/worldnews

Screen Shot 2013-08-11 at 14.16.04

I just created the feed and the first three articles come from three different countries.

Here is a RSS feed to the /r/worldnews sorted on ‘top today’ with a mod for direct access to the source. This feed will offer you a balanced overview of the news around the world.

Unbalanced worldnews views

Why? I try to keep up with a view of current events around the world. I’ve tried them all. From watching Bloomberg’s ‘first up Asia’ religiously, subscribing to the International Herald Tribune to reading Xinhua and Al Jazeera onine. I’ve even tried watching the Dutch ‘world’ news.

However, there is always a clear hidden agenda behind the news sources – which becomes clear when reading for example rightwing, or Chinese perspective on common matters, reading a single source could hide part or an entire story. Besides, I don’t want to spent a lot of times reading and comparing news because I consider reading news to be a distraction. I do want to stay up to date with current events.

Reddit – Wisdom of the crowds

This is why I am proposing to read my world news filtered through community site Reddit. Even though Reddit’s /r/worldnews is tainted with censorship accusements, it’s 4 million (largely American) users crowd voted news overview provide me with a balanced overview of today’s happenings.

The original concepts of news democratization, where all users are allowed to upload and vote on news, make sure you get a equal overview.

RSS feed

Simply add it to your RSS reader of choice and stay up to date. Yes it’s 2013 and I’m still consuming my news through RSS. I just created the feed and the first three articles come from three different countries.

You can find the feed here: /r/worldnews just load that into feedly and you are set.

From SVN to Gitlab on RHEL6

Edit: This howto isn’t finished. I was able to import SVN but didn’t get the repository to appear in Gitlab.

There is a certain SVN project that i’ve moved to gitlab over the weekend. It started with installing the RHEL6 environment, moving all the revisions there with gitlab and then setting up svn-git.



Since it was the first time I was installing gitlab, I looked online for a howto guide. I stumbled upon the automatic script by mattias-ohlsson which didn’t work so well for me. The automated script kept returning error messages regarding an outdated ruby version, which my sudo user indeed was having. I didn’t want to wrap my head around that misery and instead made use of these directions made by Torey Maerz. I didn’t run the script automatically but triggered each command manually. Some notes:

At one point whilst compiling the bundles for gitlabhq, I got into trouble because I had no pg_config, instead installed postgresql-devel.x86_64 and after that the package compiled correctly.

Then passenger came with the directives:

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.10/buildout/apache2/
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.10
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p448/ruby

So I put these in my httpd server, together with the directive to turn se_linux off. Yes naughty.
setenforce 0

and then setup my virtual host as follows. Be sure to use a real domainname, as I had trouble getting gitlab to work on an IP.

<VirtualHost *:4000>
  ServerName <domainname.tld>
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /var/www/gitlabhq/public
  <Directory /var/www/gitlabhq/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews

Now we adjust the username and password, be sure to do so. That ‘5iveL!fe’ password is floating all over the internet.


Login to the RHEL6 machine and import the svn-git:
install svn-git
yum install ruby rubygems
gem install svn2git

Next is the svn2git import. The followin command was rambling for about 6 hours for a 10 Gb repository. I’d recommend executing the svn2git command with the ‘time’ flag. I also had to ‘nohup’ the command to safely execute on my wifi connection.

time svn2git http://<domain><reponame>  -v --username joop

If you run into an error “the variable $u was not defined“, don’t worry I solved mine with this this fix. It seems like a harmless patch.

Then you can import your project into gitlab using:
1. Copy bare repositories to /home/git/repositories
2. Run bundle exec rake gitlab:import:repos RAILS_ENV=production

Celebrating summer

Due to Suna’s business trip in the UK, I’ve decided to have some time off with friends. So we organized a ‘back to basic’ evening where we would camp outside. It was fun setting up the camp, go for a swim and build a fire to prepare food on. We chatted away into the evening and I was so tired I slept very deeply. The next morning I woke up by the sound of birds and a ship that was passing by. Even though of all the trouble, I was very relaxed from the camping experience!

We took it easy in the morning and headed back, actually just in time because a huge thunderstorm broke loose as soon as we came home. We enjoyed this summer storm with a coffee at the shack in the backyard. When my friends left I went to see a football match in Amsterdam with my family; the first half was quite boring so I nearly fell asleep but the second half was very exciting!

Chinese Brands Climbing the Curve

Roughly a decade ago, Stan Shih, chairman of the Taiwan-based Acer Inc. coined the term ‘Smiling curve’, which pointed out that Chinese manufacturing added little value. They lacked the high value steps of the production chain, like R&D and marketing.

When I read this for the first time, I asked Twitter to list three influential Chinese brands. No satisfying reply: LG? (Korean) HTC? (Taiwanese)? It made me painfully clear that Chinese brands had a long way to go.

These days I’m back in The Netherlands and it’s somewhat a different world. Innovation aside, it seems that Chinese brands are entering the European households. I noticed a banner for a Chinese bank at the airport. My sports team is sponsored by a Chinese company.

And as mentioned before, these days the phrase “You should not worry about China making cheaper products, you should worry about China making better products”. comes to mind. No wonder Apple is opening an R&D center in Shanghai.

Reading that, I went online and asked the same question from five years before, the first European reply included: Alibaba, China Mobile, Huawei.

Seems that China is getting successful at climbing the curves of the smile.

Lean more about Chinese brands: PDF

Living Outside Asia, Customer Service and Transportation

A recurring theme in our household; comparing our life in east Asia to that here in Europe. I know we shouldn’t generalize because people live in bubbles but we can’t help it. The topic goes back a few years, when talking to a Korean friend at a Daejeon bar in 2008, we ordered beer with one of those remote tokens with buttons (beer/bill etc) that are common every where these days. He was surprised these weren’t common yet in the, what he called developed world. (even though South Korea is
developed, it arrived at such standards much much later) He was surprised that I praised the technology in Korea. He expected all of that would be more than common. It wasn’t.

So while a developed country might seem more comfortable, and there are lot’s and lot’s of perks, some things just haven’t arrived yet; Traveling back and forth to Korea can feel like a time travel. That feeling is probably due to the little things; Opening doors with keypads, watching TV in the metro, faster trains etc etc.

Second recurring theme is that of customer service. Chinese customers are raising the bar for service expectations as competition is fierce. Our feeling in The Netherlands is that customers simply don’t expect high customer service.

I’ve asked some friends from Asia that moved to Europe and North America. A Chinese replied on Weibo:

Life quality here is definitely better than in China. Air quality, food quality and so on. But because the smaller population, it’s not very convenient. Especially public transportation. The subway has only two main lines in this city and the taxi’s are too expensive. Most people living downtown have to buy a car.

Talking to them, the recurring theme seemed to be: Transportation. On the food part, friends were divided. Chinese seem to be able to get their foods abroad and thought food quality improved. Korean and Taiwanese friends seem to miss their home food (fruit!) a lot.

In the end, if you have a choice… one should just be happy where he/she resides I suppose. There are pro’s and con’s at every corner of the earth.

Vagrant Up

Somewhat smarter working method for web developers: When building projects, work inside virtual boxes instead on your workstation directly. Why? Each project has it’s own characteristics and software dependancies. Each programmer added on the project has to spent time configuring his or her workstation to your project.

Does the following sound familiar?

We work with OSX so you better bring a mac. No, your are running 5.3, our project is build for PHP 5.4. You need to set the following env variables. Allow .htaccess. Oh, why don’t you have Git? And GD? etc etc.

You know what I mean right? Meet vagrant.

Interpreting the guide below and my brief experiement this morning, Vagrant allows quick starting (and sharing) of Virtualization boxes on workstations. A new employee enters the project, receives a laptop with instructions on how to pull the right vagrant/puppet setup, types ‘vagrant up’ and has a Linux distro of our choice with the right software installed due to chef firing up.

If this triggers your interest, I followed the instructions by ShawnMcCool on Github this morning and already moved one project inside the box. I’m going to experiment a bit more before I move all projects.

Vagrant / Chef instructions by ShawnMcCool on Github

Quick Glance at I3 Window Manager

I have been using the i3 window management over the weekend.

Now, what is i3? i3 is a tiling window manager created by Michael Stapelberg. Tiling means that instead of the floating windows on your conventional windows or mac desktop, windows are presented in tiles.

I just happened to pass by it and got intrigued. Working a lot in terminal emulators, I sometimes wondered what the desktop experience could be without all the clutter and the heavy use of mouse gestures. A tiled desktop essentially means that your applications are always visible and you have a clear overview. Applications will not hide behind each other but are displayed next to each other. Furthermore, there is no desktop. when you add a window, it’s added and your
screensize is reduced, unless you select a stacking mode.

I watched a presentation of Michael and he explained that the tile based window manager isn’t new. There was one before called ‘window manager improved’, then followed ‘windown manager improved improved’ and thus the name of his version became ‘i3’.

After playing with it for some time, I decided that I’ll keep it for some time longer. However, at work I still use OSX.

Thinking about all those OS’es reminds of a quote by David Field:

The thing about an Operating System is, you spend a huge amount of time invested with it, be it on your Mobile or Desktop its a very personal experience. You put your choice of apps, and your data on it, and spend most of your day using one, in some cases you probably spend more time with your OS than the people you care about. Its a personal choice you’ve invested in, one which is you’re tool of choice.

In the end it’s about picking the tool to do the job. Seeing a different approach to a method we’ve all be aquanted to is a fresh breeze. I can’t wait to work with it some more.

The Big 30

This week will mark my 30th birthday; Since it’s a round number it sounds like a milestone. Wowzers: 30 years… Old for some, young for others.