仙人掌之旅

上周去波特兰出差之后照例寻了个适合hiking的地方作为回程的中转站。这个季节大部分城市都还太冷,于是就又去了Phoenix。两年前从Phoenix向北去了Sedona,这次便决定向南去Tucson。

Tucson这小城以前听到过很多次,美剧Last Man on Earth设定的地点,以前IBM的一个朋友去出差的城市,也是另一个去东莞当教授的朋友之前战斗过的地方。从Phoenix出发一条大直路开上一个半小时就到,还蛮方便。

Tucson附近有个Saguaro National Park,翻译过来就是仙人掌国家公园,并不怎么知名。但作为一个NP爱好者我还是去了一个这儿的trail。Wasson Peak,全程8英里,上下一千多英尺,轻松愉快。一路上能看的就是各种各样的大仙人掌。这种Saguaro都有好几米高,看着很像一些三头六臂的巨人站得漫山遍野。小一点的各种仙人掌仙人球仙人鞭就更多了。同去的几位同学颇有几位和这些多刺植物进行了亲密接触。

这个trail本身除了仙人掌之外平平无奇。倒是起点处的Arizona-Sonora Desert Museum有些惊喜。这个地方虽然叫博物馆,但其实更像个动物园,两栖爬行飞鸟走兽一应俱全。里面还设计了一段模拟野生环境的步道,旁边圈养了几只鬣狗和Javelina。Javelina是Tucson这一带一种看起来像野猪但其实更偏犬科的动物,在围栏里悠闲地哼唧着吃草,还挺萌的。

第二天去了东边一个很受当地人欢迎的Sabino Canyon Recreation Area走了条叫Seven Falls的小trail。一路上依然很多仙人掌,在谷底的一条小河两边来回穿梭,每次都要踩着石头跳过去,还满欢乐的一个trail。尽头是一个七叠瀑布,不怕冷的几个小孩在中间的水池里游泳,拿岩石当滑梯玩,有种水上乐园的感觉。

值此疫病肆虐之际,一段小trip似乎也显得奢侈起来。但愿早日平息。

织梦岛

刚通关了Switch上的塞尔达织梦岛。蛮有诚意的复刻之作。流程比较短,大约20小时,作为一个全价游戏卖有点黑。官方中文很赞。

Image result for 织梦岛

这代塞尔达我初玩感觉画面很不错,但机制似乎都很老套,想想毕竟是复刻也就没太在意。然后玩着玩着注意到地图是个大方块儿,感觉是上古时代主机为了省资源会做出来的事儿。于是查了查才知道这代的原版是1993年出在Game Boy上的,那时候还是黑白液晶屏的时代,比后来流行的像素电子宠物还早。。立刻感到肃然起敬。这一代后来在Game Boy Color和3DS上分别复刻过,Switch上这已经是第三次复刻,在冷饭界也算是翘楚了。

Switch上这代诚意主要体现在画面上,很彻底的重制,很养眼的2D漫画风。音乐音效应该也是重制了。内容方面则无法和近年的塞尔达相比,主要还是怀旧。时时默念“这是个93年的游戏”就觉得这些谜题还算可以,以及塞尔达毕竟是塞尔达,即使是这么古早的版本也还是有不少亮点。这代还有好多马里奥的要素在里面客串。。感觉像是马里奥的制作组去兼职做了一下塞尔达。

织梦岛这代最大的特点可能就是地图小。。用尽了心思把各种要素排布在小小的一个岛上让你在这么一个巴掌大的地方转来转去还有种在不停前进的感觉。另一个特点就是剧情有点暗黑,虽然官方的说法是林克仍然在拯救世界但实际上很难甩脱他在毁灭世界的感觉。。

个人心目中的塞尔达排行3D第一是黄昏公主(荒野之息很接近,但是当年黄昏公主给我的震撼感还是更强一些),2D第一是缩小帽。从Switch荒野之息开始玩的新玩家有兴趣可以找来怀旧一下。

2019

2019-2020的跨年时刻,莫名其妙的喝迷糊睡了过去。醒来还发现给一个大家纷纷在发Happy New Year的群里回了条不着边际的德文消息,估计是因为戴着表睡觉误回的。也是比较诡异的一次跨年了。

回想2019年最主要的主题一定是Flux。从年初三个founder加两个工程师的minimal team,到年末十一个人和两个待入职。年初的时候产品看起来还像个课程作业,年末的时候产品已经像模像样经历了无数次sales demo。创业的一年跟想象中差不多,ship东西很快,有点辛苦,但整个公司的节奏保持了开头所定的“养生”基调。It’s a marathon, not a sprint. 可惜的是大客户的合同还没最后签下来,希望2020开年不久有惊喜。

今年生活的最主要变化是搬了新家。搬了之后这一年住得挺爽的。之前找房子的时候我总是不太确定高层有风景有多大价值,住了一年之后觉得对我来说很有价值。。搬了之后xw又开始enjoy她缓慢的选购家具之旅,桌子买了四个月,窗帘买了十个月。下一步是椅子!

今年的旅行比往年少一点,从自己的bucket list上划掉了ArchesNorth Cascades, Virgin Islands,Niagara Falls这几个地方。用掉了前司馈赠的机票跟爸妈去了趟张家界。Flux在同一个airbnb搞了两次offsite,lol。总的来说也算不错。

游戏方面今年的基调是少而精。毕竟没有太多时间去试雷。。

  • 年初几乎完美了DQ11
  • 鬼泣5随意通关了事。
  • 只狼半途而废,确认了我实在不怎么买魂系游戏的帐。
  • 为了怪物猎人世界Iceborne又搭起两台PS4玩了许久。
  • Astral Chain打到最终boss停下了一直还没拾起来。
  • 过去这几周在进行火纹风花雪月二周目,很快就通。

今年的桌游也是一样的调调。年初两个人Gloomhaven在桌子上铺了得有一个月,天天在地下城里踢门。年中买今年大热游戏Wingspan的时候凑单买了Gaia Project。Wingspan玩了一阵子就觉得中看不中用丢下了,反倒是Gaia Project很快就玩出了醍醐味,半年怒开了三十局。按照一局四小时算,也是个白金游戏的时间投入了。此物是我们今年的年度桌游无疑。

2020希望达成的几件事:

  • Flux继续做下去。做好。
  • 养猫。
  • 去冰岛或者阿拉斯加。

US Virgin Islands

月初的时候突然很想休假,于是就订了一周来US Virgin Islands的行程。这地方从纽约来很方便,四小时的直飞,不需要签证。除了汽车靠左行驶之外其他都跟美国一样。两年前这儿被飓风破坏得很厉害,还好现在重建的已经差不多了,旅游起来并没有什么不便。我是感恩节之前这周来的,刚刚开始进入这儿的旅游季,但游客还是挺少的,各种地方都不怎么需要预约,停车也很容易。这儿的游客感觉一多半都是游轮停靠一日游的,我在的这周有一天有三四条游轮靠港,于是那天就感觉到处都忙一些。

停靠的游轮

国家公园

我来这儿是住在机场所在的St. Thomas岛,这个岛有个城市,居民比较多,商业也比较多。旁边的St. John岛则大部分都属于Virgin Islands国家公园。我来的第二天就乘汽车轮渡去了St. John岛。这个国家公园主要就是一条路,沿途有各个海滩和观景点,hiking trail并不多。我去了这几个海滩:

  • Trunk Bay:可以租浮潜装备。拍出来很好看。有个浮潜的”underwater trail”但其实一般。
  • Hawknest Beach:可以浮潜。珊瑚和鱼还可以。
  • Francis Beach:这个地方我走了一个小trail才到海滩,不推荐这个trail。。路上除了一个修了一半废弃的房子之外没太多好看的。这儿也可以浮潜,据说是一个有可能看到海龟的点因为海底的水草比较多。然而我并没有看到,只看到一大群黄色的小鱼。
  • Maho Beach:这儿是另一个比较有可能看到海龟的地方,我在这儿看到了两只!先是一只小的,还不时浮上水面换气。然后又看到一只大的,背上还吸着两条看起来像小鲨鱼的”suckerfish”。
Trunk Bay

去完这些海滩之后我便一路开到了最东边的Salt Pond走之前查到的一个徒步路线(Salt Pond to Ram Head)。这个路线总共往返2.5英里,我去之前以为是小菜一碟,结果走得异常艰苦。这个trail大多是在海边走,几乎没有什么阴影。在30度的天气里晒着太阳hiking还是有点可怕的。更恐怖的是沿着海边走的时候旁边的海水还会反射阳光,有种被双面烘烤的感觉。

这个trail会路过一片散落着很多白色珊瑚的海滩,还会看到各种本地动植物。有一种红色个头很大的寄居蟹,会在路上走来走去,见到人就装死。还有长得有点少儿不宜的仙人掌。Trail最后爬上一个叫Ram Head的小山头,第二天我在博物馆看历史的时候看到说St. John曾经奴隶和奴隶主打仗,最后很多奴隶被逼到这个山头自杀了。。地方虽小历史却很real。

寄居蟹
珊瑚

St. Thomas

我之后的两天行程基本就在St. Thomas盘桓,比较空。。很多时候都是坐在海滩上看书。有一天搞了一次Scuba潜水,是我第一次潜水还蛮激动的。试过之后觉得还不错,在珊瑚礁不那么浅的地方可以离要看的东西更近一些。不过控制上浮下潜什么的还是有点难的。。好几次莫名其妙的就浮起来或者沉下去了。相比之下浮潜容易掌握许多。在St. Thomas我去过的这几个海滩里面强烈推荐Coki Beach,很多大鱼,而且会游得很靠岸边。基本上在齐腰深的水里就可以看成群的鱼了。我潜水也是在这里玩的。Sunset Harbor Beach在一个resort里面,是个不错的看日落的地方,旁边吃饭的Sunset Grill也不错。

去了一个TripAdvisor上review很好的海盗博物馆,看起来很游客向。看完之后出乎意料的觉得还不错。里面讲了一堆US Virgin Islands当年是如何成为海盗乐园的。还有现代如何打捞这附近的沉船里的文物。有个模拟打捞硬币的机器就是个大型抓娃娃机。

这儿两年前那次飓风还是很严重的。有几个大酒店直接就完全毁掉了。现在去玩最明显的痕迹是路边随处可见遗弃的车辆。有的车窗被砸,有的长满藤蔓,还是有点独特的。

另外这几个岛上到处都是野生的鸡。一开始我是在一个炸鸡店旁边看到,还以为是他们散养的。后来在各种地方看到,才确认这些就是野生的。。我在Sapphire Beanch躺着的时候有几只鸡在旁边绕来绕去的,还啄了我脚一下。

岛上的local food种类不多。一个是pate,大概就是大个儿的炸饺子,一个是炸鸡便宜好吃。餐馆倒是很多,好一点的基本都在各个度假酒店里,去吃吃也不错。

岛上的蚊子很多,很凶猛。作为一个很招蚊子的人我在这儿这几天基本是靠两种药过活:蚊不叮和叮不怕。。即使deet喷雾不离身,蚊子也总会见缝插针的叮到我,隔着衣服叮也已经是家常便饭。我感觉后来去海滩的一大动力就是可以跳进海水止痒。这岛上好多地方都标榜是Paradise,要我说,得没有蚊子才是天堂。。。

很多人都说BVI (British Virgin Islands)更好一些。我这次折腾了一趟轮渡去St. John之后不想再折腾轮渡了就没去。下次好了。

最后提一句US VI的亚裔游客奇少。。我来的几天虽然看到了几个中日泰餐馆,但一个亚裔游客都没看见,也是有点稀奇了。其实这儿对美国东部的人来说挺不错的,比夏威夷方便,比坎昆nice,不妨一来。

Born Remote

Cross-posting a blog post I wrote for Flux Engineering Blog.

Flux started as a remote company, with Max and Nick in California and me in New York. We had known each other for a long time and decided to build Flux as a distributed company from day one. Now Flux has three offices: San Francisco, New York, and Portland.

We are often asked how we handle the remote situation because it’s not very common to see an early-stage startup so distributed. My one-sentence answer is to see it as an advantage.

There are some benefits we can easily see in distribution:

  • Bigger talent pool. So you can hire people from multiple locations without needing them to move.
  • Lower cost, to company and to individuals. Bay Area and NYC are notoriously expensive. Portland is much more affordable. One of our team members actually moved from SF to Portland. We are all glad Flux can provide such an opportunity for him.

But what about the shortcomings? Communication gaps? Hard to bond? Below I’ll talk about what we do to make a distributed teamwork. Some shortcomings can actually be turned to advantages if handled well. That’s why I say we should see distribution as an advantage.

Asynchronous By Default

As a tech company, a majority of our production activities are software development, which is usually done better when people can focus without too much “tapping on the shoulder”. A distributed team structure makes “asynchronous communication” our default mode.

One signature of asynchronous communication is to do daily standup on Slack. We use a bot from Standuply and named it “Standup Steve”. Everyone answers questions from the bot, and compiled answers are posted on a channel. In this way, we get the basic caught-up without the hassle of dialing in a crowded call for 15 minutes.

For a given development task, an initial discussion usually happens in a weekly meeting, which is the only default synchronous communication step that circulates info to get everyone up to speed. Most following work happens asynchronously: writing design documents, coding, reviewing, testing, shipping.

We still do quick calls spontaneously from time to time, but the default way is to communicate in non-interrupting ways such as comments on tickets, wiki, and pull requests.

The default asynchronous communication pattern also enables more flexible work hours. We tend to do more communication and real-time collaboration during the overlapping hours between east and west coasts, and treat non-overlapping hours (morning ET and late afternoon PT) as unofficial “quiet hours”. If someone wants to travel somewhere (like Hawaii) and work remotely, or someone sometimes has an odd cycle (like a real night owl), it can work well as long as they follow the rhythm and people know when to expect them online and open for calls.

A side bonus of asynchronous communication is more knowledge gets written down. It’s natural to write a self-explanatory document to initiate a discussion, which naturally becomes the document and keeps records of some considerations. For deeper tech design discussions, it’s often more efficient that way, because people need time to digest and think things through.

Connect as Human

Human is social. People build initial trust more easily by seeing each other and feel they spend time together. This is true for remote/distributed teams and is probably the biggest “obstacle” people have in mind for remote working. There are a few things we do in Flux to make sure we connect in a more human way, besides codes and documents.

For example, we always turn videos on when having meetings. Face time, even through video, is precious. And it helps convey emotion better and reduce misunderstanding. That’s why we often see intense arguments, sometimes irrational, happen in emails or comment threads, but video or in-person discussions rarely escalate as quickly. We also grow more aware of this “phenomenon” and would switch to video calls whenever some discussion on Slack gets complicated.

You can actually have fun on video calls. Last month we did our first “board game afternoon” on Zoom! We played Avalon with the help of a brilliant website Avalon.fun. It was an absolute blast! Games flew smoothly, so many fun moments!

We also do whole-company offsite! This week is the second time we gather from three cities to one place to spend a few days together. It’s useful to build initial connections and trust. And some “downtime” to connect outside work is invaluable in the long run. Flux is still small enough we can get everyone together and literally stay under one roof (a moderate house rental from Airbnb).

Last but not least, we have a few channels on Slack as our “water cooler” place, where we post funny stuff from internet or have casual chats. At this “family” stage, everyone knows everyone outside work. Personal details bond people together.