I’m taking a departure from my usual deep dive analysis to write this “under the hood” exploration of how I’ve been building this bilingual newsletter. I want to share some behind the scenes information, because I’ve always treated Interconnected as a product, not just a blog. Even though it is basically a blog at the moment, there are many things I plan to build on top of this foundation, and sharing the technology, thinking, design, and various experiments is a good way to keep myself honest and learn better in public. I plan to write a similar post like this every year going forward to share and track all the changes, new technologies I try, keep, abandon, as well as product ideas that are constantly floating in my head.

On another level, I’m motivated to share, because I hope it will help more people produce bilingual content and lubricate the information flow between two languages -- not just the English-Chinese pairing, but any pairing. As I noted (perhaps lamented) in my opening letter of last week’s Interconnected Weekly, there’s still so much that needs to be done to improve the information flow between the English and Chinese language world. The 16-days gap between Jack Ma giving his Bund Summit speech and my translating and publishing the speech is too long and too unreliable.

Tech Stack

I use Ghost as my publishing platform. It is a relatively new platform (started in 2013) that’s completely open sourced, just like its older brethren Wordpress (started in 2003). Ghost is built on the JAM stack (JavaScript, API, Markup), which is a hot and trendy way to build static websites that’s fast and lightweight.

I chose Ghost because: 1. I’ve had some experience customizing it when launching another blog called COSS Media (writings focused on the commercial open source ecosystem) last year; 2. I like its open source nature (versus its proprietary counterpart Medium), which gives me more control. As many of you know, I’m quite deep into open source and have written a lot about it, so it’s important to me to “eat my own dog food” too. Ghost also has built-in features for collecting subscribers and designing paid tiers, which I plan to use eventually. Of course, you can do all this in Wordpress too, but it’s typically done via plug-ins that end up bloating the website and degrade load speed -- something I want to avoid in order to give all readers a good experience, wherever they are on our planet. Fast load speed helps with SEO too.

It’s not all smooth-sailing with Ghost. Being a young platform, it has plenty of bugs and rooms for improvement. It currently lacks some table stakes features, like email open rate, forwarding tracking, and basic analytics around email interactions with subscribers. I have chosen not to obsess over these metrics for now, because it tends to take my focus away from writing, bad for mental health, and Google Analytics is a sufficient enough substitute. All of these features are on Ghost’s roadmap, so I’m willing to be patient, for now.

Ghost also has some small issues that are not deal-breakers, just annoying. For example, it has a subscribers dashboard that generates a line chart to show growth (cool!) but there’s a bug that makes the line flat (sad...).

This is a known bug and tracked publicly on GitHub, which is standard practice for any open source software. In open source, you can’t hide your problems; you just have to deal with them, in public.

For my purpose, the best part about using Ghost is its choice of using Handlebar.js to do its frontend templating and rendering, which is an open source, mature JavaScript framework (first commit was in July 2010). Being open sourced, mature, and a bit boring (instead of new and flashy) is good, because I know there’s enough tutorials out there to help me do customization on my own. If I want something more complicated, I can easily find skilled developers. Going into building Interconnected, I knew providing a good bilingual reading experience would be a challenge, so customizability was key.

The initial version of Interconnected was an anchor tag hack that I cobbled together where readers who want to read the Chinese version will jump from a link at the top to the halfway point of the page where the Chinese part starts, but can’t jump back. It works but it’s far from ideal. During my research when writing “GPT-3: An Abstraction of Time vs Money”, I discovered that OpenAI’s blog has a nice toggle experience between the English and Chinese version of its charter. I already knew that OpenAI uses Ghost to publish content, so the toggle experience could definitely be replicated on Interconnected.

Instead of coding the improvement on my own, I decided to look for help to speed up progress. I ended up hiring a contractor, who is already familiar with Ghost’s various theme templates to do ad-hoc improvements on a project-by-project basis. In addition to building the bilingual toggle, this contractor also built the archive section and many UI improvements to make reading here more effective. The combined cost of these three improvements is less than $200.

Here are some best practices when working with remote contract developers: figure out exactly what you want first, down to the smallest details, before approaching anyone. Using contract developers can be very efficient and cost effective when there is a clear example to replicate, but they are not good (nor should they be) at designing and iterating on half-baked ideas with you. That’s also why, generally speaking, building a startup product with contract developers during its rapid prototyping and discovery phase is a bad idea.

In other words, contractors are good for cloning, not creating.

Bilingual Writing Process

I start every post in English first and usually get to a draft that is 85% done before starting on the Chinese version. In the beginning, I used Baidu Translate to turn the 85% done English version into a 50% done Chinese draft, before writing on top of it. I now use DeepL for the same purpose. I think DeepL is slightly better than Baidu Translate, but currently don’t have a strong opinion about either one; both work well done.

The process I apply to the Chinese version is what I call “trans-creating”, a term one of my former colleagues used, which I really like. It’s not a straight-up translation, but a re-creation in a different language. Because I’m the original creator of both, it’s not necessary to stay true to one version or the other -- the goal is to communicate ideas and information in the language they are being conveyed in, properly and naturally.

For example, the English version may contain certain companies, market concepts, and acronyms related to China that require additional context for the readers to understand, but are obvious for Chinese readers, thus the added background may be omitted in the Chinese version. Certain idioms and humor in the English version simply don’t translate well in Chinese, so the same part may be told in a more straightforward way in the Chinese version.

One surprising thing I discovered during this twice weekly “trans-creation” process is that writing the Chinese version actually helps improve the English version, because it more effectively exposes imprecisions, inaccuracies, and poorly written passages.

Writing is a draining process. Writing bilingually can be extra draining. And when you are drained, dumb mistakes and typos happen. (I loathe typos, because I think it’s the most disrespectful thing a writer can do to a reader.) To shore up quality, I hired an intern a couple of months ago, who is perfectly bilingual (much more so than me) to edit all my writings, plus doing additional research and product development projects. They (not a typo, but the preferred pronoun) also log all my mistakes along with examples of proper usage, so hopefully my own writing will improve over time.

I have been extra energized and motivated since this intern came on board; their contribution is immediate! I pay them a monthly stipend -- best money I’ve ever spent. (Treat your interns well!)

Future Product Improvements

Interconnected, as a product, still has a long way to go. While the English-Chinese toggle has made reading one specific post between the two languages better, the entire website is still more English-centric, which isn’t as friendly to my Chinese reading audience.

There are many multilingual websites out there, but most of them are corporate sites with limited content -- a form I find ill-suited for consuming long-form writing. There has to be a better design for bilingual and multilingual consumption. (If you have design ideas, please share them with me!)

Ghost’s built-in email template is also not flexible -- you cannot toggle or easily navigate between the two language versions, which is why I’ve started appending a message at the top of every email to guide my Chinese readers with the best way to consume my posts. (If you received this post via email, you would have seen it.) This is an area where I hope Ghost will offer more customizability. It’ll be the next big improvement I plan to tackle.

Lastly, I have plans to build more complex offerings on top of this foundation -- a community, a paid layer, a place for more interconnected, interdisciplinary knowledge exchange via multiple mediums, like audio, video, chat, and simulation games. Interconnected is a 10 year project for me; we are only in the 10th month.

I hope this “under the hood” post provides some useful information on how to build a bilingual newsletter -- an undertaking entirely doable and replicable by anyone. And I look forward to writing this post again a year from now and share the continuous evolution of Interconnected.

If you like what you've read, please SUBSCRIBE to the Interconnected email list. To read all previous posts, please check out the Archive section. New content will be delivered to your inbox (twice per week). Follow and interact with me on: Twitter, LinkedIn.


一改往常的深度分析文章,今天写的是篇关于《互联》“幕后”的探索,介绍一下我是如何打造这个双语博客的。我想分享这些幕后信息的原因是因为我一直把《互联》当作一个产品来做,不只是个博客。尽管它现在基本上就是个博客,但我计划在这个基础上做很多东西。所以分享幕后关于技术、设计和各种各样的产品试验,可以要求自己保持诚实,不忘初心,同时也可以更好的做到“公众学习”(learning in public)。我计划每年都写一篇类似的文章,分享和跟踪《互联》的所有变化,包括我尝试、使用、放弃的新技术,以及不断浮现在脑海中的各种点子。

另一个促使我分享这些幕后信息的原因,是我希望能帮助更多人出版双语内容,润滑两种语言之间的信息流 -- 不仅仅是中英文搭配,而是任何两种语言的搭配。正如我在上周的《互联周刊》里的开篇信中所指出(或是感叹)的那样,在改善中英文两个世界的信息流畅方面,还有很多需要进步的地方。从马云发表外滩峰会演讲到我翻译并发表他的演讲之间的这16天时间,隔得太长了,太靠不住了。


我用Ghost作为写作和出版平台。它是一个比较新的平台(2013年开始)和它的“大哥”Wordpress(2003年开始)一样,是完全开源的。Ghost建立在JAM Stack(JavaScript、API、Markup)上,是种快速、轻量的静态网站建设方式,现在很火,很时髦。

我选择Ghost是因为:1. 我在去年做了另一个名为COSS Media的博客,当时用的就是Ghost,所以已经有些使用它的经验 (COSS Media专注写关于开源商业化的生态);2. 我喜欢它的开源性质 (相比于它的闭源同行Medium),我有更多的自控权。很多读者都知道,我对开源的研究相当深入,也写了很多相关的文章,所以知行合一,使用我自己研究并推崇的开源性质平台,对我来说很重要。Ghost还内置了收集订阅读者和设计付费层的功能,这些功能我也打算以后使用。当然也可以在Wordpress上实现这些功能,但通常是用各种插件来实现,最终会使网站臃肿,网页速度变慢。为了给所有读者一个快速良好的体验,无论他们在地球的哪个角落,我想避免这种问题。网页速度快对SEO也有帮助。

使用Ghost并非一帆风顺。作为一个年轻的平台,它有很多问题和改进空间。目前,它缺乏一些标准功能,如邮件打开率、转发跟踪,以及邮件与订阅者之间互动的一些基本数据和指标。我选择暂时不纠结这些指标,因为天天刷指标看往往会干扰我对写作的注意力,对心理健康也没什么好处,Google Analytics已经足够了。所有这些功能也都在Ghost的产品路线图上,目前我愿意耐心等待。










我写中文版的过程叫"转译" (trans-creating),是一个前同事用的词,我很喜欢。这个过程不是直接翻译,而是用一个不一样的语言进行再次创作。因为我是原创作者,所以没有必要忠于一个版本或另一个版本,最终目标是用不同的语言准确而自然地传达思想和信息。


在这个每周两次的 "转译 "过程中,我发现了个令我有点小惊讶的现象,那就是写中文版的过程非常有助于改进英文版,因为它能更有效地暴露出不精确、不准确和写得不流畅的段落。


自从这位实习生加入后,给了我更多的动力,TA的贡献立竿见影! 我每月给TA发津贴 -- 这是我花过的最值的钱。(大家要好好对待你的实习生!)




Ghost自带的邮件模板也不灵活 -- 无法切换两种语言版本来直接阅读。这也是为什么我开始在每封邮件的顶部附加一段话,来引导中文读者到最佳的阅读方式。(如果您是在邮箱里收到这篇文章的话,就会看到这段话。)这是我希望Ghost能够进步的一个方面,在邮件模版上提供更灵活的定制能力。这也是我计划实行的下一个重大改进。

我还计划在现有的基础上构建更复杂的产品 -- 社区,付费层,通过音频、视频、聊天和模拟游戏等多种媒介进行更多的互联、跨学科的知识交流。《互联》对我来说是一个10年的项目,而我们才刚刚进入第10个月。

我希望这篇 "幕后"文章分享了些关于怎么做一个双语博客的有用信息。这是个任何人都可以做到的事情。我期待着一年后再写这篇文章,分享《互联》背后的新发展。