Been prototyping an AR toy for a potential application, and I've dug deep with Apple's ARKit and SceneKit.

In case you are still confusing the two: ARKit handles environmental recognition, telling the app if there's a surface in scene (and if so, how far away is this surface and how big is it); SceneKit handles 3D rendering of your custom objects.

To create a realistic rendering you'd want ARKit to recognize the environment and SceneKit to handle rendering.

To start, Apple has a nifty page on how ARKit works in mostly plain language.

There's also Apple's ARKit section in the Human Interface Guidelines. This section provides basic do's and don'ts on application and interaction design.

To get your hands dirty, Mark Dawson has a series of 4 posts on Medium (1, 2, 3 and 4) on how to:

  1. Set up your first AR app and understand the relationship between ARSession and SCNScene
  2. Detect surface with ARKit
  3. Apply physics to rendered 3D objects (apply gravity, allow objects to bump into one another, etc.)
  4. Apply realistic rendering (dubbed in the industry as Physics Based Rendering, or PBR)

The only quarrel I'd have is that Mark used Objective-C in his example. Most developers have moved on to Swift. Apple's official documentation is more or less tuned for the Swift community.

Understanding and applying PBR:

More in-depth articles on improving rendered results:

Some of my additional thoughts as a PM:

  • Hire a real 3D designer if your rendered 3D model goes beyond basic geometries. They know much better at modeling and generating proper texture layers and maps.

  • If you are trying to provide a fusion of real and virtual objects and your engineering team is not adept with SceneKit, tell them to go easy on research. Some basic lightings and physics are more than enough for a magical experience; you don't need those complex lighting, blooming effects, shape distortion or smoke particle effects... After all, you are aiming for realistic, not surreal. SceneKit is a big, big, big rabbit hole to go down.

  • Apple has also previewed ARKit 1.5 bundled in the upcoming iOS 11.3. Prepare for recognition of vertical surfaces and images. Horizontal surfaces will no longer be a dumb rectangle. The community has, been, fervert, about, these, updates so you may want to get inspired, too.

Been working for three days this week after Chinese New Year. Been playing Alto's Odyssey for at least 10 hours combined on and off work. Can't fucking put it down.

Alto's Odyssey

If you enjoyed its prequel "Alto's Adventure," this new game is a no brainer. It's soothing, challenging to the right amount, and full of details for you to discover. Experience day/night cycles and traverse through harsh conditions of sandstorms and heavy rains, or from time to time, lose yourself under the peaceful clear sky of a thousand stars.

Throughout the game, you will unlock new mechanisms and distinct areas that are refreshing and fun to play with. New elements such as balloons and wall riding (Hey, Lúcio!) expand verticality and enable insanely skillful combos for pro players.

Squint your eyes and you may find some kinks or bugs for the game to work out, but it is overall a serene and addictively fun masterpiece. Graphics are breathtaking, especially if you have an iPad or an Apple TV.

If you don't have a Nintendo Switch, get Odyssey today.

A few days ago I tried out Fiery Reader, in hope that it could improve my reading experience. I thought it might be a better fit than Reeder, an app I started using a little over a year ago. Turns out I was wrong, and here are the reasons why.

View of Hot Links

Fiery Reader’s one competitive feature is Hot Links. It scrapes URLs from all the unread articles you subscribe to, checks for multiple mentions, and decides if there’s important information buried beneath the pile of articles in front of you. For me, it’s easily 1,000 unread articles per week, and this feature could potentially cut my weekly reading time in half.

Fiery Reader, however, does not deliver the promised experience.

First of all, the list of Hot Links is not parsed or processed in any way. All you get is the raw url beginning with schemas such as https://. Only when you tap on the tiny expander do you see which articles mentioned the Hot Link.

Second, Hot Links are not displayed in an order that makes humanly sense. Take a closer look at the screenshot, and you will notice a lot of links are about Apple’s HomePod damaging wooden furnitures. These links are not put together, but spread across many groups instead.

One improvement I'd suggest is to group Hot Links by checking if different links appear in the same article. This will probably deliver a more coherent reading experience, by presenting “stories” instead of “links.”

Poor defaults

The default theme in Fiery Reader is neat and clean, but it doesn't strike me as design work from someone who truly understands reading. To start, the margins in article view are too wide, leaving little space for the text. Use of color on links and block quote borders are distracting, and the floating toolbar is too intrusive for a focusing mind. The Avenir font family provides a thin and light feeling to the theme, but the developer didn't compensate for that with larger font size and line height. It’s true that all of the above can be fine tuned but it is really some hard work on users’ side.


Comparison: article view of Fiery Reader (left) and Reeder (right)

The default list view looks okay. Images are given the right aspect ratio, and headlines are stressed with larger and bolder text. I personally want to know the source of an article from list view and it’s possible to find it from preferences. So far so good.

Until... I found out this beautiful default list view is actually dubbed "Custom" in preferences. And whichever built-in article list style you'd like to switch to, you are treated with weird wide margins on the side. Preview images are now tall and thin, rendering many 16:9 hero images non-informative at all. And once you switch off from the default theme, there’s no going back unless you delete and re-install the app. Weird.

Article list

Default theme (left) looks OK. But you can’t go back once you switch to another preset (such as “Regular” on the right)

That, added by the fact you can’t access appearance settings directly from article list view, makes adjusting the themes a painful experience. It took me 30 minutes to make sense of all this and I’m all done making another effort.

To sum, using Fiery Reader makes me appreciate Reeder even more. Non-distracting and efficient themes are something I took so granted for with Reeder.

More often than not, designing an app is about making sense of content hierarchy and making judgement calls. The customization freedom that comes with Fiery Reader is not what a premium iOS app should be.

Tiny annoyances

On top of those poor design choices, Fiery Reader has some more annoyances that also pushed me to have it deleted:

  • Article view takes a fraction of a second to load, even if everything’s been “cached.”

  • In any view, the floating toolbars designed for iPhone X (presumably) takes up too much space with the paddings and margins. On a phone without a 1:2.1 aspect ratio screen, the toolbar is way too much of a distraction than it is useful and elegant.


With all the demanding features and designs, Fiery Reader is not something I’d like to invest in. I’d probably pay twice as much for Reeder and rest assured that the design choices are carefully made, than to have the customization possibilities and not know what to do with them.




2017 年过去了,我很怀念。这一年玩了不少好游戏,想在这里针对 2017 年推出的单机游戏进行一个前五名的总结。游戏不仅是社交的,也可以是内向的、沉稳的。我是一个独立游戏的重度玩家,也是一个横版动作类游戏的资深粉(更是一个没有 Nintendo Switch 的人)。望这个 Top 5 榜单能多少把乐趣带给更多的人。


No. 5: Severed


Severed 是一个剧情依托的 boss 战游戏。你要控制主角在复仇心的驱使下一步步寻找杀害自己家人的凶手,揭示关于自己身世和所处世界的最终秘密。

作为水果忍者和无尽之剑系列作品的老玩家,我对 Severed 的操作轻车熟路——以适当的角度切对正确的东西就能干掉敌人,步步为营向前进。爽快的击杀手感外,Severed 对敌人的设计和关卡的难度进行了巧妙安排,基本能让游戏难度处于有挑战性却又不令人抓狂的地步,实属难得。配合超燃的背景音乐,Severed 直接吃掉了我一个下午的时间,从开头打到结尾。虽然游戏可玩性不强,但乐趣享受一次便也足矣了。

No. 4: Cosmic Express

Cosmic Express

Cosmic Express 是一个走可爱风格的智力游戏,每一关都是一个精心设计的迷宫。你要在星空车站中设计轨道部署,接上外星小生物并把他们送到目的地,最后还要把列车送到出口才能前往下一关。


和开发商的前作 A Good Snowman is Hard to Build 一样,Cosmic Express 每一关的设置都十分精妙,多种过关方法的设计也让我赞叹不已,很难相信这是一个独立开发的作品。如果你单纯想找一个烧脑的解谜游戏,Cosmic Express 会是你花的最值的钱——玩了快一年了还没通关呢。

No. 3: Factorio


“沙盒游戏的终极形态大抵如此。” 这就是我对 Factorio 的第一印象。

在这个复古风的游戏里,你可以从零创造自己的工业帝国,从原料开采、加工到最终的组装制造,全部都在你的掌控之中。从工厂的部署到传送带、储物箱 buffer 的设计,都是你发挥创意的空间。布局完成后你还要不断根据现有的生产目标调整产品线,一步步优化生产流程,应用各种运筹学原理和报表工具让自己尽快完成火箭研发的终极任务,逃离所在的异星地(没错你一开始出现在一个外星球上)—— YouTube 上看到有人 2:52 完成了任务,真是佩服呢!


No. 2: Cuphead


“TT 你听说过魂斗罗么?” 当我兴高采烈给李响介绍 Cuphead 时,他突然这么问我。

论玩法,Cuphead 作为横版动作 + boss 战游戏,主角可以使用不同武器打子弹出去,确实和魂斗罗很像。就连难度都是魂斗罗般的经典设置——打通一个关卡大概需要几十次的重新尝试,不断磨练自己的技巧,并且要对关卡中出现的障碍和敌人了如指掌方才能九死一生通关继续。在抓狂后你会发现这个游戏贴心地提供了简单模式,在终于尝试二十次通关之后你又会发现,简单模式打通是不能帮助你进入下一个世界的🙂️

论画风,Cuphead 还是和魂斗罗差别很大的。二十世纪三十年代美国电影的画风被 Cuphead 表现得淋漓尽致,挑战失败时 boss 那个合辙押韵的嘲讽也是一段段读起来非常有趣的文字。

在可玩性上,由于 Cuphead 不同的 boss 会有各自的优势劣势,你就要不断调整自己的武器和护身符配置,充分发挥自己的长处,尝试不同的通关策略。

No. 1: Splasher


我从小就是横版动作类游戏(Platformer)的狂热粉。Splasher 大概是 2017 年我买到的第二超值的游戏(第一显然是 Overwatch)。

作为一个快节奏的横版动作游戏,Splasher 的手感无可挑剔——毕竟是 Rayman 系列作品的设计师 Romain Claude 另起炉灶的作品。要知道在这类游戏中,只有拥有完美的手感,设计师才敢在关卡设置和难度安排上放开手脚,否则玩家一次次重试关卡只会觉得是游戏机制设计的问题,并非自己水平有限。

在难度安排上,Splasher 循序渐进,不断引入更复杂的地形、新的喷射超能力和越来越难对付的敌人。关卡设计和流程效果结合,说是为横版过关游戏设立了有一个新标杆绝不过分。

回头数数,发现今年发生了好多事。2016 年底毕业就开始找工作,找了半年,干了半年,十一月回国了;中间出去玩了三趟也是冒险和各种愉快的旅程。2017 年新年计划一共三条,只做到一条就是夏天几乎爬遍了温哥华附近想爬的山。之前觉得理所应当会发生的事没有放进新年计划,比如 “在温哥华找个工作先干两年看看”……

于是真要让我说 2017 年有什么感悟,就是觉得新年计划这种事都是没有用的——这个世界上没什么认准了就要削尖脑袋干一整年的事情。也不要用新年计划骗自己,企图盘活本来就要死掉的、不打算做的事情。更不要被新年计划碍了手脚,本来不该也不想做的事情却因为放进了计划逼迫自己去执行。

所以说啊,与其定计划其实不如一直督促自己不断去触碰边界,尝试一些新的东西。读书也好、看电影也好,都是很舒适的触碰边界的方式。除此之外认识新的朋友,去一些 community club 或者做一些之前没做过的事情、学一个新的东西也都算,很感谢身边有能推动我不断尝试新东西的朋友们,都给我带来了成长和不一样的视角。2018年,希望这样的势头还能继续。

话已至此,2018年我就没什么具体的事情想计划了。打算在未来这一年进行三个 personal project 的尝试吧,有一两个心中有了雏形。希望能在工作之外通过这些尝试去探索更大的世界。

What will you miss the most?




“也许是日料吧,北京没有好吃又便宜的日料。” 有的时候我也这么说。九月底回国吃的那波通惠河畔的日本居酒屋,又贵又难吃也真是不想说话了。


后来再想想,觉得花钱也买不来的,大概只有 Tim Hortons。

在 Purely Canadian 的光环下,Tim Hortons 有很容易让长期居住在加拿大的人对它有别样看法。

一般的食物体验是一个有限体验,始于购买、终于消费。Tim Hortons 店面遍布各个角落,在最热闹的城市里和我去过最小的小镇上都能买到他的 dark roast 或者 steeped tea。这样的存在,带来的则是一个无限延伸的食物体验。你和 Tim Hortons 每一次的交集都在拓展和丰富这种体验。

比如第一次来加拿大玩,十月的秋风里,和郭先生在尼亚加拉瀑布旁的 Timmy 买了一个牛肉奶酪帕尼尼,配一个中杯热巧克力。

比如无数个上仨小时数学课的下午,我们会去 Sauder 楼下的 Timmy 买一个小杯咖啡,或者买个 Ice Capp 来日过这些课。


比如在大雪纷飞积雪没踝的那天中午,睡了懒觉起床出溜着去街角的 Timmy 吃早饭看新闻。

比如冷冷冰雨的12月3号,收到了找工作申请的最后一个拒信,决心当年好好庆祝毕业不再找工作了,在地铁旁的 Timmy 里捧着热茶,Thomas 在 iMessage 里告诉我一切会好的。

还有无数个 Tim Hortons,在旅途的路上,在商场的角落里,在从公司走路需要二十分钟来回方便翘班的加油站旁,在各种你需要它出现的地方。这种温暖和陪伴的感觉没有什么别的品牌能给我。Starbucks 比起来真的屁都不是。



ALL SOLD OUT! Thanks for checking things out.

Hello beautiful people, friends, and strangers:

Here is a list of all the stuff I'm selling/giving away. Let me know if you are interested in any of these! AVAILABLE by the end of the month — not today.

Send me a message on WeChat/Messenger if you have me, or send an email via Craigslist. 微信搜 “fifty8”。

🌇🌄🎆 PICTURES/图在此: Dropbox

Kitchen stuff

下边这些看着给就好 Leave me a loonie for:

  • 电饭锅 Rice cooker, 1 yr old, not a nice one tbh
  • 锅碗瓢盆 Pots and pans: 32cm pan, 12cm pan, 22cm pot
  • 锅碗瓢盆 Plates big and small
  • 锅碗瓢盆 Bowls
  • 晾碗的架子 Dish drying rack
  • 没开封的洗碗机皂块 Cascade dishwasher pods, 60, unopened

Non-kitchen stuff

  • 🚲 捷安特21档变速自行车送头盔、灯、U型锁、挡泥板 GIANT Bike, 21 gears, with helmet, lights, U-lock, mudguards. $75
  • 📺 显示器 20" monitor with DVI/VGA, as seen on HP. Can supply adaptors as needed. NO direct HDMI support. Almost 2 yr old. $40
  • Printer (Canon MX492), color, wireless, with extra b/w cartridge and a stack of paper. $20
  • Vacuum as seen on Amazon, $25


Bought these on IKEA in January 2017. Essentially letting them go for 1/4 - 1/3 of the original prices.


运送烦请自理 I'd have to ask you to handle shipping. 大部分东西月底可出 Most available at the end of the month.

最近这俩礼拜在学习双拼,因为觉得手机上和电脑上打字想要走得快似乎还是应该有比全拼更好的办法。算上回国的一个礼拜,最近的微信啊短信啊,包括搜索地图大众点评啊,不管是在 Mac 上还是在 iPhone 上,键入的内容大多用的双拼输入法。

简单来说,双拼输入法通过一套特殊的键位让你打两个键就出一个字。例如 ongS 替代,chI 替代……这样一对声母韵母组合构成了双拼输入法的基本框架。



双拼输入法最让我膈应的是,苹果在 iPhone 上使用了搜狗键位布局,因此第二排的字母键凭空在最右侧多了一个 ; 用来替代 ing。例如你写 “北京” 要写成 BZJ;。这个键的出现直接让这一排的字母通通错开了位置。这直接造成了盲打肌肉记忆失效。




搜狗双拼的键位布局并不那么高效。如果你想打 “今天天气真好”,基本上是一个双手并用的过程,两手配合不管是在 Mac 上还是在 iPhone 上都能顺利打出一套组合,因为 Qwerty 键盘就是这样设计的—— Qwerty 为英文设计,而全拼接近英文规则。

但是在双拼里,“今天天气真好” 变成了 “JN TM TM QI VF HK”。就这六个字里,在 Mac 上 J 和 N 都是右手食指,V 和 F 都是左手食指,挪动之间让双拼按键少带来的速度优势荡然全无——至少我觉得我要在很长时间之后才能针对双拼优化自己的手指位置,这又是很大的一个阻力。


iPhone 的双拼输入法并没有很好的自动纠错功能,而当你用全拼输入法打字,打得很快的时候,“Jim Tian Tiab Qi Zgen Hao” 它也能给你纠错成 “今天天气真好”。这些智能的功能在双拼输入法中并不存在,你错了一个字母就是错了一个字母,这句话直接拉回去修改。

如果硬要我猜测,拼音全拼的规则毕竟有限,因此通过算法 iPhone 全拼键盘能够处理掉很多不存在的拼音组合。在双拼输入法中,大部分的拼音组合都在拼音组合中存在,智能纠错的功能恐怕很难做好。

换句话说,双拼输入法减少了敲击键盘的次数,也减少了计算机接受的信息量。而信息量本身则是自动纠错算法的必需品。这意味着十年前为了提高打字速度的双拼设计,由于按键数量少,反而在这个智能当道的 2017 年显得很落后




例如当你想从 Safari 地址栏直接进入某个网站的时候,你会习惯性地打出 实际上你只是想去。不因为别的,就是切换规则真的挺累。而在全拼输入法中,按键是一一对应的,能让你流畅自然地打出中英混合的句子。


有不少应用对双拼的支持不完全。比如微信在添加一个新标签(例如 “北京”)的时候,你会输入 BZJ; 然后你就获得了一个新标签 “BZJ”,因为微信觉得分号是一个分隔符。还没选择待选词语,已经输入的字符就被当作标签内容的全部自动保存了。




现在对于很多准备出国的人而言,英语学习都是从 90 年代或者 00 年代初期开始的。那时候起个英文名觉得特别洋气,也让面对一班中国学生的外教长出一口气。

但问题是,出国了你会发现所有人里中国人、香港人和台湾人最喜欢起一个中文名,而且女生居多。我觉得我至少认识 4 个 Vivien、5 个 Alex,3 个 Chris、一万个 Rebecca 和两个强行在字母表上靠前的 Aaron。

但是你要知道,起一个和自己名字毫无关联的英文名真是太过时的事情了。出国这么久我没见到过任何一个印度人用一个英语名作为 preferred name,也没见到哪位中东的朋友在缩写自己名字之外再起个新名字的。

那么在 2017 年的今天,中国朋友们该如何起一个英文名呢?为了解决大家的困惑,特意奉上起名指南三部曲,希望能有所帮助。


如果你的 given name 只有一个字,用自己的真名真是再合适不过的事情了——还没听说哪个中文名对外国人有发音障碍,除非你有 q 或者 zh 在名字里🤷‍♀️

所以如果你叫王超、张然、李天、丁卯、赵宏,不如就管自己叫 Chao, Tian, Mao, Hong 大家很快就叫习惯了。

至于一些和英语发音规则不同的地方,不断纠正或顺其自然就好了。就好像现在没人管 Javier 叫扎维尔,或者管 Sean 叫西恩一样。


现在出国的不少朋友都是两个字的 given name,这时候拼音 legal name 就显得非常拗口。如果你觉得自己名字不好念的话,其实有一个非常简单的办法,就是——去掉一个字!

比如《守望先锋》周美灵就叫 Mei,我的一位同学某振然就叫 Ran。两个字里挑顺嘴的那个读拼音就好了。



这时候请参考近两年热播的新剧,你可以从里边选一个比较正经的角色,用他的名字就好了。注意不要选到谐星,或者别的什么奇怪的名字。比如就算你喜欢漫威你也不要管自己叫 Rocket 或者 Groot。你也不要起一个 Jojo 这种嘻哈天王般的名字,自己恐怕承受不起哦。