Side project: Hackingchinese Resources

2 minute read

Out Of Date Warning

This article was published on 11/06/2014, this means the content may be out of date or no longer relevant.
You should verify that the technical information in this article is still up to date before relying upon it for your own purposes.

At the beginning of this year, the editor of the popular Chinese language learning blog, Olle Linge, reached out for a developer to help develop some projects around this topic. After some months of coding, tweaking, and initial user testing, we were able to recently launch the first project, Hackingchinese Resources.

Olle describes the motivation and use cases in detail on the blog, and even made a screencast on the goal and usage of the site. Our goal is nothing short of creating the ultimate collaborative collection of all kinds of learning resources for (primarily English-speaking) learners of the Chinese language.

Technical foundation

We initially tried using a Meteor site, Telescope, but settled with's code base for now, which can be found on Github. The main reason is that I am very familiar with developing and deploying a Rails app, not that much with Meteor. Besides that, having a document based approach instead of a JavaScript only single-page app is nicer for NoScript-users as well as various bots and crawlers that do not support JavaScript. is a Rails 4 application, which uses a MySQL database and Thinking Sphinx for search. I changed the backend to PostgreSQL only, which does have some search capabilities which are by far sufficient for the data volume. I also changed the design to resemble the original Hackingchinese Blog, but added responsive capabilities for a better appearance on mobile devices. Besides that, I really wanted to have small images similar to Reddit of the sites, so I employed a small crawler that grabs the open-graph or meta tag image, if supplied, or alternatively just makes a screenshot of the site using Wkhtmltoimage

Since the USP of our site, is the accurate classification of submitted material, Olle and Julien developed a systematic tag structure and Olle meticulously added and tagged all his bookmarks into the system which I integrated into the system.


Using a as a foundation sped up the development and I was very thankful that the site is OpenSource. However, the code base is currently not very well suited for further development, as there are no tests and the author didn't use very many Gems but instead rolled home-grown stuff for almost everything (pagination, authentication, unmaintainable search) and no admin interfaces. So later, when the site has a steady user base, a partial rewrite will be inevitable.

Besides Resources, we have another project coming later this year :).