Company news & announcements, IT insights, tech news from Tokyo, tech tips from the dev team, and more.Sign up for our RSS feed while you are here

QOR 1.0 Released (the SDK for E-Commerce & CMS development in Go)

TOKYO, Japan — April 21, 2016 — The Plant today announced that QOR, its open source SDK for E-Commerce & CMS development, is now available in version 1.0. For this public release QOR has been completely rewritten in Go.

QOR is a versatile SDK that gives developers the freedom and capabilities to create cutting-edge platforms & web apps. For this first public release we have focused on rewriting and providing all the libraries and widgets necessary for building a CMS, in the upcoming releases we’ll be adding e-commerce specific widgets and modules to the core libraries.

Launching E-Commerce in Japan (APAC)

If you want to get into the APAC region and start offering goods or services here, Japan is a great choice to get your business going.

Japan – the 4th largest market for e-commerce globally – where 1Gbps fibre-optic connections to the home are nothing special, and more or less everybody owns a smartphone (or several!) is a very attractive place to start e-commerce in the APAC region.

Integration tests in Go

We wanted to add real browser integration testing to our new project QOR. After investigating several libraries, we decided to use agouti. It’s a bit like a Go version of Capybara. After spending several days with it I managed to get CI setup and several tests working. This blog will introduce our experience with it and I hope you will find it helpful for your own projects.

Automated Browser Testing on Internet Explorer with Capybara

A project we are working on has a fairly comprehensive (if not entirely stable) suite of integration tests, that we run via aJenkins whenever we make a change to the project.

Most of the team develops on OS X using Safari or Chrome, and the CI system runs the test suite on against Firefox running in an Xvfb session.

This covered most of our bases, but for a long time we’ve ignored the Elephant in the room that is Internet Explorer. We’d poke at it in a VM once new features were basically finished, but not in any systematic or automated way.

So finally we decided to make some time to invite IE to party with the other cool kids.

Why we choose PDF to post to Evernote

On one of our projects, Evernote is one of the services that users can share data to. Every time users update some data, changes will be posted to Evernote as an Evernote note. But we found some problems when we tried to create an Evernote note via Evernote API.

Don’t Make Localisation an Afterthought

So, you have developed an application. And now you want to make your product available to a larger international audience, who’s first language is not English.

Your app is “done” you don’t really want to invest money into localising it in another language, so the cheapest option: you hire a translation company, get a translation a few days or weeks later and that’s it, right?

Think twice.

Apart from the design and layout of your app, the right wording can make and break the usability of your product.It is not to be taken lightly.

How Do I Optimize Our KPI System

We have a daily rake task to calculate KPIs for our Rails app. But the problem is that it’s getting slower and slower as we’re getting more and more users. Part of the task is calculation of statistics of user states, which are mainly retrieved from a table calleduser_activities.

From RDS to optimizing a MySQL Server on AWS

Optimizing a MySQL Server is a concern for many. Here are some of our own findings after deciding we needed to move from RDS to MySQL but were still faced with DB performance issues.

Watching your data “grow up”

Now that we have started our closed beta of Qortex – our splendid and brand new communication platform – I would like to talk about what thinking went into creating it and why we needed to build our own platform rather than just use what was out there.

We were spread out over 5–7 platforms, which in itself isn’t necessarily bad, as long as those “realms” are mostly isolated and used by people who never cross over into each others’ realms. Which wasn’t really the case after a while…

Correcting E-mail Addresses Typos with Mailcheck.js

For one of The Plant’s biggest sites we have started usingmailcheck.js to offer corrections when there is a typo in the domain part of an e-mail address. When an e-mail address is entered and the domain part is spelt slightly differently to one of many known domains, mailcheck.js offers this known domain as a suggestion. We present this suggestion to the user, which need only be clicked to make the suggested correction.

Techforce: Introducing HTML5 (part 1)


The HTML5 work stems from the WHATWG(Web Hypertext Application Technology Working Group), and their focus is the development of HTML and APIs for web applications.

HTML5 is an exciting new standard for web design and development.

HTML5 is stable enough for use today and is supported on all modern browsers, including IE9,10.

TechForce: IPtables Intro

In this week’s TechForce, Frank Yue gives an introduction to IPTables and provides us some interesting examples of how they can be used to solve different problems.

TechForce: Benchmark Go closures

Using closures comes with a performance costs compared to just using normal functions or anonymous functions. I benchmarked 3 scenarios for using closures, normal functions or anonymous functions.

  1. Using anonymous functions (inline functions that do not reference any variables outside).
  2. Using closures (referencing to variables outside of the function).
  3. Direct normal function calls.

Here is the benchmark I wrote…

TechForce: Making a simple full-text search with Golang and Redis

With Redis’s rich support for Sets, we built a fast, realtime, full-text search.

TechForce: A case study of Redis

Redis is one of the open source projects I’m currently most interested in. As a key-value store, Redis has the abillity to store data via its datatypes. In this article I will try to show the process of how we design and implement a simple clone of Twitter written using Ruby and Redis as the only database.

TechForce: Goroutines and Channels

In this week’s TechForce Junbin explores Goroutines: how they compare to processes and threads, how to create a Goroutine, how to communicate between multiple simultaneous Goroutines with channels. He then explains the potential pitfall and solution of shared variable names in simultaneous Goroutines.

TechForce: Building a Web Chat with the Go programming language and HTML5 Websockets

Aaron demonstrates how to use the Google Go language and HTML5 Websockets to implement a simple web chat application in this week’s TechForce

Our new code manufactory

As you will have noticed by now, we have a completely new website. Just in time for this we have also moved our office in China to – what else – a plant. The new office in Hangzhou is now in a historic building, an old silk weaving mill and factory, surrounded by smaller buildings all with sawtooth roofs. We couldn’t ask for better branding.

How I learned to stop worrying and love Kanji

Living and working in Japan for 15 years, most of this time in companies where the foreigner count is below 3 and making daily use of Japanese written and spoken, has its virtues. Chinese characters can be utilised as a bridging element between several Asian languages, since they carry meaning independent of the spoken language, beyond language borders.