the Young G

Into the age of probability

I am almost 26 years old this year and I have been a dedicated computer user for 19 years. I have been charmed and fascinated by the fact that I can move a plastic, rodent-like thing and make an impact on people. I recall the first language I tried to learn is C++ but I ended up drawn to C# and .Net for writing Windows Phone App. The word “instantiate” feels magical to me, for I have created something virtually yet I can see it and make changes to it, in my mind and in the computer’s memory. Since I wrote my first line of code, I know one thing - if I messed up my code, the code won’t work. Fix it, and try again.

That, my friend, is what this technology world has always meant to me. This is a world where you have to prove your knowledge. This is a world where we only have two answers: right or wrong. If computer says it is wrong, either you are wrong or something else is wrong. That is also what motivated me to study and work everyday, as my success proves my knowledge. My idol has been people like John Carmack who knows how to fast inverse square root with a magic number and used it towards something innovative. You know what I mean now. The finite, discrete outcome from what you choose to input to computer, from what you have learned, is what keeps me forward.

Fast forward to 2017, one year before I graduated high school, we all know what happened - a new paper was published, named “Attention is All You Need”. It laid foundation for GPT: Generative Pre-Trained Transformer. Of course I didn’t know about this paper at the time, but now almost everyone in the computer industry can recite you how GPT works now: you buy a bunch of GPU card, get a big chunk of training data, apply the contextualization algorithm from the paper for self-attention and signal transformations, and bam you have your LLM now (this is not for educational purpose). When GPT2.0 was released in 2019, I saw a lot of compliments from social media, so I did try on Huggingface. I still vividly recall that day. I was in my freshman writing class, distracted, and I put in the writing assignment prompt into the prompt. The thing it returned, was at best at middle school level, so I was not impressed.

My reflection on what LLM has evolved to today, is that I lacked the ability to predict the worst when not having the expertise to examine the issue thoroughly. I was naive and irrationally optimistic towards the evoluation of the LLM technology, since GPT 3/ChatGPT or other models at the time had their obvious flaws - hallucination, limited context window, etc. I didn’t buy what those industry leaders had to say since they would say anything to keep their stock price afloat. Three years after ChatGPT was introduced, we have several models that don’t hallucinate after 200k tokens. Did I say 200k tokens? Yeh their context window is now at 400k tokens now (context window is how much context/words the model can ingest in for the conversation; 400k tokens is ~300k words). And also, we now know how to delegate the models via natural languages. Models can write code within 10sec, debug it and run it; Models can write government documents within 10sec, critique it and revise it; Models can call your restaurants for reservations. In one way, now we have a technology that can literally does anything as long as it can be done on computer. I didn’t see this coming so soon.

US Tech industry is having its storm right now, as tech giants slash their employee numbers. They say it is AI innovation now so they can have less people to work on the same stuff. I call that bullshit for now, as we all know how companies like Oracle is having a smaller wallet as they invest in building more data centers to feed the AI. But we have to see that once we have a better model than today’s, it will know how to architect new applications and code it. And it will be a lot cheaper than hire a whole team. Now, being pessimistic since I am not an AI researcher (learned from my lesson), I think scaling law is still in effect. Give companies like Anthropic, OpenAI or Deepseek more computational power and time, they will have a more powerful and knowledgeable model with more parameters. So in the end, we are all going to be out of work. With robotics evolving, I would say no one’s job, even for plumber Mike’s job, is secure.

I have explained how ChatGPT works to my friends and parents, who know less about computer: it takes in your prompt, and generate a probability distribution of what to say next, sample it and then choose the highest probable word. So practically we have no control over what it will say back to you, although with the same prompt. It is not the technology I prepared myself to, I embarrassingly admit. With those LLM being the core of all the things that can substitute, you can call it agent, skill, or whatever, we no longer know what work it will create. But we know it is highly probable that it will be better than what a human can generate. How can we calculate our future’s probability, for individual and for society?

The fallen leaves tell a story.

In our home, across the fog, in the Lands Between.

Our seed will look back upon us and recall, An Age of Probability

概率时代

今年我快 26 岁了,而我做一个“重度电脑用户”已经 19 年。一直以来让我着迷的一件事,是我只需要移动一个塑料的、长得像啮齿动物的小东西(鼠标),就能对别人产生影响。我记得我最早尝试学的编程语言是 C++,但后来却被 C# 和 .NET 吸引,去写 Windows Phone 应用。“instantiate(实例化)”这个词对我来说带着某种魔法:我在虚拟世界里创造了某个东西,它在我的脑海里、也在计算机的内存里真实地存在着,我能看见它、修改它。从我写下第一行代码开始,我就知道一件事——如果我把代码写错了,代码就不会跑。那就修好它,再试一次。

朋友,这就是科技世界对我一直以来的意义:这是一个你必须证明自己懂的世界;这是一个只有两种答案的世界——对或错。计算机说你错了,要么就是你错了,要么就是别的地方出了问题。也正因为如此,我才会每天学习、每天工作,因为我的成功能证明我学到的知识。我的偶像是像 John Carmack 那样的人:他知道如何用一个“魔法数字”去算出快速反平方根,并把它用在真正创新的东西上。你现在懂我在说什么了吧——你输入给计算机什么、你学到了什么,就会得到有限、离散的输出结果。正是这种确定性,让我一直向前。

时间快进到 2017 年,也就是我高中毕业前一年。现在我们都知道发生了什么——一篇新的论文发表了,名字叫《Attention is All You Need》(注意力就是你需要的全部)。它为 GPT(Generative Pre-Trained Transformer,生成式预训练 Transformer)奠定了基础。当然,那时候我并不知道这篇论文;但现在,几乎每个计算机行业的人都能给你背一遍 GPT 的工作原理:你买一堆 GPU 显卡,找一大块训练数据,用论文里的上下文化算法去做自注意力和信号变换,然后“啪”一下,你就有了自己的大语言模型(这段不做教学用途)。2019 年 GPT-2 发布时,我在社交媒体上看到很多夸赞,所以我也在 Hugging Face 上试了试。我到现在还清晰记得那一天:我在大一写作课上心不在焉,把写作作业的题目当作 prompt 输入进去。它返回的东西,顶多也就初中水平,我并不觉得惊艳。

回头看大模型一路演变到今天,我意识到:当我没有足够专业能力去彻底审视问题时,我缺少一种“把最坏情况算进去”的能力。我曾经天真而不理性地乐观,觉得大模型的发展没那么可怕,因为那时的 GPT-3 / ChatGPT 以及其他模型还有明显缺陷——幻觉、上下文窗口有限等等。我也不太相信那些行业领袖说的话,因为在我看来,他们会为了股价稳定而说任何话。但在 ChatGPT 推出三年之后,我们已经有了好几个模型——在 20 万 tokens 的长度里几乎不再幻觉。你没听错,20 万 tokens。甚至现在很多模型的上下文窗口已经到了 40 万 tokens(上下文窗口指模型在一次对话中能“吞进去”的上下文/文字量;40 万 tokens 约等于 30 万英文单词)。而且我们也开始知道如何用自然语言去“委派”模型:模型可以在 10 秒内写代码、调试并运行;模型可以在 10 秒内写政府文件、批判它并修改;模型甚至可以替你给餐厅打电话订位。从某种意义上说,我们已经拥有了一种技术:只要某件事能够在计算机上完成,它几乎就能做任何事。我没想到这一切来得这么快。

美国科技行业现在正处在风暴里——巨头们不断裁员。他们说这是因为 AI 创新,所以同样的事情可以用更少的人来做。就目前而言,我觉得这话很扯淡,因为我们也都看见像 Oracle 这样的公司需要裁员来省钱在投钱建更多的数据中心去喂AI。但我们必须承认:一旦出现比今天更强的模型,它就会知道如何架构新的应用、如何把它写出来,而且成本会比雇一个完整团队低得多。现在,鉴于我不是 AI 研究员(我已经从教训里学乖了),我会更悲观一点:我认为 scaling law(规模定律)仍然有效。只要给像 Anthropic、OpenAI 或 Deepseek 这样的公司更多算力和时间,他们就会训练出更强、更有知识、参数更多的模型。到最后,我们都会失业。再加上机器人技术也在进化,我会说,没有任何人的工作——哪怕是水管工老王的工作——是绝对安全的。

我曾经这样向朋友和父母解释 ChatGPT 的工作方式(他们对计算机了解不多):它读入你给的问题,然后生成“下一句话可能怎么说”的概率分布,从中采样,再挑选概率最高的那个词。所以从实践上讲,我们并不能真正控制它会回你什么——即使你用同一个问题。说实话,这不是我学习这么多年而做好准备的那种技术,我甚至有点羞愧地承认这一点。随着大语言模型成为一切可替代能力的核心——你可以叫它 agent、skill,或者任何名字——我们已经很难知道它会创造出怎样的工作。但我们知道一件事:它“很可能”会比人类产出的更好。那么,我们又该如何计算我们未来的概率——对个人,对社会?

……落叶捎来讯息:

在雾的彼端,我们的故乡,

在模型的治理之下,想必人们会如此形容──

那是个“概率时代”。

The End of One Era

Well it is 2026 already. If you take a look at my last post here, it was four years ago when I started my first job at Amazon. Welp, a lot has happened. I just got laid off, but I still feel lucky. Here is the pièce de résistance: I enjoyed my time at Amazon, but it started to feel less interesting and less learning for me. So I actually feel lucky to have Amazon pay me to switch jobs. Anyway, here are all the interesting bits I learned from my past 4 years without violating my NDA.

I joined Amazon back on Valentine’s day, 2022, and I was assigned to a team called Your Orders, which is mostly known for developing the order history page on Amazon.com (and all the other marketplaces around the world besides US). We also owned other pages like Order Details, mobile Product Owner Page. I vividly recall my first 1 on 1 with my manager before the start date, and I asked her what I should do to prepare myself for the role for it being the first actual tech industry experience for me. She said, well, reading Effective Java would be a good start. So I bought the book and read it. Three months after I joined, most of the changes I have made are on Perl-Mason. My knowledge on Perl was on the same level as my knowledge on developing quantum computers - close to none.

Why did my manager ask me to learn Java while we worked on Perl? It’s because Amazon is old. Jeff Bezos was working on a door panel in 1994 when Amazon started selling books online. When Amazon started selling other stuff than books around 1997, they created an architecture called Obidos which is a monolithic architecture for the whole website. Actually ‘architecture’ isn’t the right word, as it was basically a giant giant package. The engineers soon found the architecture hard to scale (ofc) so they started a new architecture called Gurupa, named after the Amazon river in Pará. This new architecture is written solely in Perl-Mason which I was too young to learn from school. BTW there is a lawsuit between Amazon and IRS which interestingly adds a lot of technical details about Gurupa. Check it out here.

So what changed? (Speculation (said confidently) as I didn’t talk to Amazon CTO or Bezos) Why do we need to use Java if Gurupa is already an improvement? Well, first of all, it is Perl. It makes you feel old when you look back on what you have written 3 months ago - you simply have to stare at it for a while before realizing what you did there; It’s utterly unreadable if author doesn’t like comment in code and has a bad variable naming habit. I spent hours looking through all the Perl files just to understand what that $s is and why it can call functions not defined in the package. Because of this, you can see how it would not be the teacher’s pet in colleges or online classes. Almost twenty years later, new engineers like me do not know how to read or write Perl. So here is the second point - Amazon cannot find low level engineers who can code Perl anymore. Oh-if I didn’t mention it, Gurupa is a monolithic architecture too. Bro Bezos replaced Monolith with another Monolith (but better, people can own their services packages now). Every deployment had to be coordinated weekly with people cross checking their changes, making sure they were not the one who blocks the whole company’s deployment.

Now you understand why a change was needed. Most my time I had with Amazon was trying to migrate that big old Perl stack off to Java and the projects derived from that goal. The migration was long overdue, as it should have finished before I joined Amazon. It was hard also - we are serving 30+ marketplaces over the world, while new marketplaces are launching. We had to ensure customers doesn’t notice the change, and we had to ensure we support all the things we have launched since 1995 while launching new features.

Anyway, during the first 3 years my effort was mostly in building the new Your Orders page. I was exposed to so many cool things at the same time it overwhelmed me for the first few months and I had serious imposter syndrome. Build system (brazil, you can ask ChatGPT what it is. It’s the best, the BEST building system I have ever used ever), native pipelines, code-based monitoring system, ticketing, federation system, codeless microservices, you name it.

I started my own project the second year I joined Amazon, trying to migrate the payment alert logics from Perl to Java. Essentially, previously we had this page central controller which calls a payment dependency and then replace the text in-place on the page, and we wanted to move away from that. In-place replacement on the page basically means you have to keep all the payment business logics in the page controller. Like this:

page.allPreparations();
alert = page.callPaymentDependencyAndTransformIntoPresentableAlert()
page.getAllContent()
if (alert) page.order.text.replaceWith(alert);
page.render()

And that’s bad. Having the business logics in our frontend service is already bad, not to mention we don’t own or know the busines logics. We are lucky that our services are already designed as tiered services, separating business logics, display logics from presentation logics, so we don’t have business logics in presentation layer; also we are lucky that our awesome team has just built a federation system to our services. Basically, federation system allows us to build a separate application solely for the purpose of sending display-ready page customization based on different use cases. So I scoped the work, talked to different teams, traverse through different payment methods (there are a lot of ways to pay for Amazon orders around the world; e.g. you can go to 711 to pay for your order in Japan) and solved those edge cases. An interesting thing was, the project was actually created before I joined but because of its ownership complexity and people moving around, it didn’t gain traction until I picked it up. I am giving myself a little trophy here. One thing to mention is Datapath (listen here to get more idea on the platform), which is a fast data access and data join platform. I dived into their codebase with one question in mind: how did they resolve the logic dependency with super fast latency? I can only say the code I have read are just pure brilliant.

I have more fun development stories to tell but I feel like I need to mention the operational side of things before dragging too long; so I will probably save the stories for the future. I cannot stress how lucky I feel jumping into a team who owns one of the most important pages on Amazon platform. It was a bless for a fresh graduate to touch services that have more than 30k+ transactions per second (PER SECOND!). My site here has 0.0005787 transaction per second. I learned how to design and implement distributed systems correctly so it won’t break under 3x the traffic during Black Friday. You would assume such teams get a lot of tickets, especially sev-2+s, but I actually only got paged twice during my last oncall and none during Black Friday. That’s the outcome from good design, good code, proper monitoring, and proactive incident prevention. I learned so much while not getting overwhelmed during oncall week, which is insane if you compare to other companies or teams (AWS, wink wink). But we do get customer service tickets though, and some of them are just… fun. I did resolve a ticket which claimed a customer was “having trouble seeing his orders when the Wifi is not connected”. Another classic one was “customer not being able to see the tracking of the order” and the phone was on Android Lollipop (released Nov 2014). Can’t do much for you bro except helping you find a newer phone on Amazon.

Looking back, I did feel the pressure increasing as I know more and more about the services, frameworks, and tools. Mostly because I now know how to improve them. I spent a significant amount of time last year streamlining my workflow, while improving our team’s workflow. I did launch a bunch of stuff last year, and if you see the “Ask about your purchases” pills on your Amazon app, that’s my work too. One day before the layoff, I had my last 1 on 1 with my manager. She told me I had a good performance standing among the team, and the next morning our whole team was just gone. I guess performance and luck don’t always intersect.

My God, In God We Trust
But we never really know what got discussed
Click boom! Then it happened
But no one else was in the room where it happened

新的一集

这篇文章是ChatGPT翻译的我的英文博客。翻的挺好,拿来用了。 This post is the Chinese translation of my The End of One Era post. You can check it out here

嗯,已经 2026 年了。

如果你翻翻我上一篇博客——没错,那已经是四年前了:我在亚马逊开始了人生第一份正式的工程师工作。这四年发生了太多事。我刚被裁了,但说真的,我居然还觉得自己挺幸运。

重头戏来了:我确实享受在亚马逊的日子,但到后面,它越来越不“刺激”,也越来越不像是在学习了。所以从某种意义上,我甚至觉得自己赚到了——亚马逊等于给我发了一笔“转行补贴”,鼓励我去换个环境继续成长。

总之,下面这些就是我过去四年里学到的有趣东西(当然,不会违反 NDA)。


我是在 2022 年情人节那天入职亚马逊的,被分到了一个叫 Your Orders 的团队(负责“订单相关体验”的一整套页面与服务)。这个团队最出名的产品,就是 Amazon.com 上的 订单历史 页面(以及除美国以外的各个站点)。我们也负责一些其他页面,比如 订单详情、面向移动端的一些订单/购买相关入口页。

我到现在都记得入职前跟经理的第一次一对一沟通。我问她:这是我第一次真正进入科技行业,我应该提前做点什么准备?她说:“读《Effective Java》吧,是个不错的开始。”

我很听话:买了书,读完了。

然后三个月后我发现——我做的大部分改动,都在 Perl-Mason 上(Perl 语言的一套网页/模板框架,偏“老牌 Web 栈”那一类)。

我对 Perl 的理解程度,大概和我对“如何开发量子计算机”的理解差不多:接近于零。


那你可能会问:既然我们天天写 Perl,为啥经理一上来叫我学 Java?

答案很简单:亚马逊很“老”。

1994 年亚马逊刚开始在网上卖书的时候,贝佐斯还在搞门板(door panel)那种“车库创业”级别的活。到 1997 年左右,亚马逊开始卖的不只是书了,于是他们做了一个叫 Obidos 的东西。它是早期的“大一统网站架构”,你可以理解成一个超级单体。
说它是“架构”都抬举它了,它更像一个巨大到离谱的大包:一个包,装下了整个世界。

后来工程师发现这玩意根本不好扩展(那肯定的),于是又开了一个新架构:Gurupa,名字来自巴西帕拉州(Pará)的亚马逊河支流。这个 Gurupa 完全用 Perl-Mason 写的——这种东西我在学校里根本不可能学到。

顺便一提:亚马逊和 IRS 之间有过一个诉讼,判决书里居然带了不少 Gurupa 的技术细节,属于“法律文书里掺技术干货”。链接在这:here


好,那新的问题来了:

既然 Gurupa 已经是升级版了,为啥后来还要迁移到 Java?

(以下属于“我没跟 CTO 或贝佐斯开过会,但我会用十足自信来推测”的部分。)

第一点:因为它是 Perl。

你写 Perl 有一种很神奇的体验:你回头看自己三个月前写的代码,会觉得像在阅读陌生人留下的密室遗言。你得盯着它看一会儿,才能想起来:“哦……原来我当时是这个意思。”

如果作者还不爱写注释、变量名随缘,那就更刺激了。我曾经花了好几个小时翻 Perl 文件,就为了搞懂那个 $s 到底是什么东西,以及为什么它能调用一个在 package 里根本没定义的函数。

这也解释了为什么 Perl 很难成为大学课程里的老师最爱语言。二十年过去,新一代工程师(比如我)基本都不会读、也不会写 Perl 了。

第二点:亚马逊很难再招到愿意写 Perl 的新人了。你不能指望 2020 年后毕业的人,突然热爱 2000 年代的 Perl-Mason 生态。

第三点(也是关键):Gurupa 其实还是单体。
单体架构:很多功能堆在一个巨大应用里,改动和发布容易互相牵连。)

说白了就是:贝佐斯把一个单体换成了另一个单体(只是更好一些:至少大家可以“拥有”自己的一块服务包,不至于全员共用一坨泥)。但单体的本质没变:部署还是得集体协调。

每周部署都像集体开会:互相交叉检查,确认自己不会成为那个“一个提交卡住全公司发布”的罪人。


所以你就理解了:改是一定要改的。

我在亚马逊的大部分时间,都在做一件事:把那套又大又老的 Perl 技术栈迁移到 Java,以及围绕这个迁移目标衍生出来的一堆项目。

而且这件事不仅该做,还是早就该做——按理说应该在我入职之前就迁完了。

难点也非常现实:我们服务全球 30+ 个站点,同时新站点还在不断上线。迁移过程中必须做到两件事:

1) 客户最好完全感觉不到变化;
2) 我们要一边支持从 1995 年以来所有历史遗留功能,一边继续发新功能。

简单总结:边开车边换发动机,还不能让乘客察觉抖了一下。


前三年,我的主要精力就是“新 Your Orders 页面”的建设。

那段时间我第一次感受到什么叫“大厂体系”:酷的东西多到让人晕眩。前几个月我直接被淹没,冒名顶替综合症拉满。

构建系统(Brazil——亚马逊内部的构建/依赖/发布相关工具链之一)、原生流水线(自动化 CI/CD 流程,负责构建、测试、部署)、代码化监控(监控规则也像代码一样可版本化管理)、工单系统(处理需求/缺陷/事故的流程平台)、联邦系统(federation system:把页面需要的数据/组件从多个后端聚合到一起的机制)、无代码微服务(codeless microservices:用配置/模板生成、少写业务代码的服务形态)……你能想到的都能在那儿看到。


入职第二年,我开始做一个“属于自己的项目”:把页面处理支付出错的逻辑从 Perl 迁移到 Java。

以前的做法大概是这样的:页面有一个中央控制器(page central controller:页面请求的“总入口/总调度”),它去调用支付相关的依赖,然后把生成的文案“直接在页面内容里就地替换”。我们想摆脱这种模式。

因为“就地替换”意味着:你把一堆支付业务逻辑塞进了页面控制器里。
像这样:

page.allPreparations();
alert = page.callPaymentDependencyAndTransformIntoPresentableAlert()
page.getAllContent()
if (alert) page.order.text.replaceWith(alert);
page.render()

这当然不妙。

把业务逻辑塞在前端服务里,本身就已经很糟了;更糟的是,那些业务逻辑我们甚至不拥有、也不真正理解。我们只是“展示订单页面”的团队,却要在前端处理“支付世界观”。

好消息是:我们的系统本来就是分层的,业务逻辑、展示逻辑、呈现逻辑各司其职;再加上我们团队刚好做了一个 federation system。

这个 federation system 的作用可以理解成:我们可以构建一个独立应用,专门负责根据不同 use case 产出“可以直接展示”的页面定制内容,然后由页面去消费这些结果——页面不需要懂业务,只需要展示。

于是我把范围定义清楚,去对齐不同团队,梳理各种支付方式(全球在亚马逊买东西的支付方式多到离谱;比如在日本你甚至可以去 711 现金付款),把一堆边缘情况逐个补齐。

更有意思的是:这个项目其实在我入职之前就有人建了,但因为归属复杂、人员流动、协调成本高,一直没真正推进。直到我把它捡起来,它才终于跑起来。

所以我决定给自己颁个小奖杯:🏆(允许我自嗨一下。)

这里还要提一下 Datapath(一个面向低延迟的数据访问/聚合平台,强调“快”和“能 join 多源数据”)。想更直观理解平台可以听这个:here。我当时带着一个执念去读他们代码:他们到底怎么在极低延迟下处理复杂逻辑依赖?

只能说——我读到的实现,真是漂亮。


我还有很多好玩的开发故事可以写,但再写下去这篇会太长,所以我先讲讲运维这一面,开发故事留到下次。

我真的非常非常庆幸自己进了一个负责亚马逊最关键页面之一的团队。对一个刚毕业的人来说,能直接摸到 每秒 3 万+ TPS 的系统(TPS:transactions per second,每秒处理的请求/交易量),这简直是“新手村直接进地狱副本”,但偏偏你还能活下来、还能学得很爽。

对比一下:我的个人网站大概只有 0.0005787 TPS。

在这种环境里,你会被迫学会怎么把分布式系统设计对——不然黑五流量涨三倍的时候,系统就会用崩溃告诉你什么叫现实。

你可能以为这种团队天天被事故轰炸,特别是 sev-2+ 级别的事件(事故严重等级 2 及以上)。但说实话:我最后一轮 oncall(值班轮值:随时响应线上问题)只被 page 在白天叫过两次,黑五期间一次都没有。

这不是运气,这是“好设计 + 好代码 + 好监控 + 主动预防事故”的结果。

而且最离谱的是:我在 oncall 周学到了很多,却完全没有被压垮——如果你对比其他公司或团队(AWS,懂的都懂),你会知道这有多不常见。

当然,客服工单还是会有的,而且有些工单非常“人类观察学”。

比如我处理过一个:客户说“没连 Wi-Fi 的时候看不到订单”。
还有一个经典:客户说“看不到物流信息”,然后我一看设备:Android Lollipop(2014 年 11 月发布)。

兄弟,我也没法替你的老古董手机做啥……我最多只能帮你在亚马逊上挑个新手机。


回头看,压力确实是越来越大了。不是因为事情更难,而是因为你知道得更多——你开始看到系统哪里可以更好、流程哪里能优化、工具哪里该升级。

去年我花了不少时间优化自己的工作流,同时也推动团队工作流变得更顺。

我也上线了不少功能。如果你在亚马逊 App 里看到 “Ask about your purchases” 那些小药丸(pills:App 里的小提示/快捷入口样式),没错,那也是我做的。

裁员前一天,我跟经理做了最后一次 1 on 1。她还告诉我:我在团队里的表现挺不错。

结果第二天早上,我们整个团队就没了。

我想,表现和运气并不总能相交。


My God, In God We Trust
But we never really know what got discussed
Click boom! Then it happened
But no one else was in the room where it happened

The Room Where It Happens

Hey

Hey.

It is almost a year since I wrote on this blog last time. The internship last summer turned out not to be great. I finished my undergrad degree. I moved twice.

There are so much to talk about right now with all the things I have been through and the totally different world. I will try to keep up the blog just as a new sport. I know there rarely is any viewer and that is actually a relief for me. If no one is reading, I can express freely.

On the tech side, I pinned most fintech companies on my blacklist now. I have been asked many times by different fintech companies about possible jobs and I politely refused or ghosted them (sorry). I am not against money technology, I really don’t. I really wish I can make something that makes me money directly. It’s just my past experience as a Fintech intern does not call to me as a tech zealot. Developers or other tech-related jobs are just the backups to the sales, and all the dirty work fell down to them, and that is not what I anticipated. I had many conversations with the CTO of my past company, and while I do agree customers should be focused first (I work at Amazon now and “customer obsession” is the phrase I hear everyday) I don’t believe customer obsession equals to crappy tech works. Tight deadlines do not equal to non-documentation and maaaaaasive messy codebase setup. No. It’s not a way to maintain future business and hell you will see more and more developers reject working on such codebase. In Chinese there is a lingo for such codebases: 屎堆, meaning shitpile. No one wants to dig the legacy shitpile, so we just keep shitting on it until someone is required to hold his breath and go in dirty. We just hope we are not the ones forced to stain ourselves.

I have started at Amazon for three weeks now and so far it’s good. It’s better than I thought because of all the Blind posts I read before I join (I have mixed feeling about the PIP policy), but it is not as depressing as those victims stated (survivorship bias?). My manager is kind and helpful and so is my onboarding buddy. There is many internal tools and lingos and they make me confuse from time to time but at least I am learning. I used to disagree about the software engineering being a MS major, but now I understand there can be many different little things to learn. That’s some insight one can never learn from school I guess.

I don’t really want to talk more about my life in this post since I am listing its theme to tech. So that’s about it I guess, I promise I will write more often.

Stay well.

Before Final

Hi everyone.

It has been so long since I last updated my site. A lot of stuff is changing.

For Cachecash, we are rewriting the codebase with python now. It will not run as fast as golang (of course) but for the sake of readability, we have to use a more intuitive language at this moment with better comments and documentations. A lot of structures have to change because of the lack of channel and thread support in python, but we will figure it out once we have some time.

BTW, since I am graduating next semester, I surprisingly found myself not so hateful towards school now. It’s amazing. Please don’t change me back in the next two weeks.

I am not doing the todo list project now because I ran into Notion. I use it for everything now and I am more than happy about it. I made my first build of my own todo list and the moment I learned how to use Notion I literally cried for a second. It is more than my expectations. Good job.

Oh yeh I was recruited to be the SWE intern at MarketAxess. It’s a fintech company and I really want to try it out. I have been learning finance courses for two years now and frankly they bored me hard. Only the mathematical models are interesting like GARCH and so on. Can’t wait to apply my knowledge in Machine Learning and finance models to a trading program. I might open a gofundme project when that happens because my debit account won’t allow me to take the risk of market.

I have been thinking more stuff in social science than computer science. I was reading a book regarding the money flow in the world and for a quick second I thought capital inheritance should not be a thing. I was shocked by the thought because of its socialism core but it intrigued me to read more into capitalism and communism.

Anyway, life has been good. My cat has been taking care of me really well.

I will see you in the summer.

Hi

Hi It’s been a while.

I am working on stuff. So just a quick hi.

I made a decision

I made a decision.

After reviewing my disappointing academic gain in this remote semester even though the grade is good, I decide to make something that I can have passion about. For the first time I decide to make an application that is cross-platform (I used middlewares like Electrons before but never really tried it on different platform) and useful for me.

For now, I think I am going to make a todo list that is suitable for me. The most convenient todo list I used before was microsoft todo, but there are more functionalities that I would like to have on my own and many existing functions I would like to cut off. For me, the items in the todo list does not need start/finish time, since I always urge to finish all the things on the list as soon as possible. Setting those things up actually wastes time. For now, I just want a list with item description that is short but enough for memorizing, and a status showing if it is done or not. If it is done, it automatically disappears, so I don’t have to delete them one by one in the list even though they are done (please microsoft why would I want to see the stuff I have done already).

I think for software like this simplicity is the key. It should be simple enough that users don’t have to waste ten minutes setting up stuff to do for next week. If you are done with an item, click on the button and boom it’s gone forever. Maybe I can add a counter somewhere just to tell myself how many things I have done today.

Anyway it should be a challenging thing to do since I have never developed something from the ground up totally by myself but I will see. It should be fun.

I also would like to talk about my work at BD but I don’t think it is a good time now so I will save it for future. Classes are fine, life is a bit boring 24h indoor. So good I guess.

Mid-College Discovery

I just finished my Machine Learning midterm, which was one of the most stressful midterms this semester, and it was surprisingly good.

I mean of course I made mistakes, like I totally forgot the gradient of the ridge function when performing a gradient descent (I thought it would just be the partial derivative when I was taking the test, but in fact I have done the reviewing on the subject the night before; so I guess my mind was just too anxious). But overall, I appreciate my effort and I believe I can get a good grade out of it.

The subject I want to talk about todayis about college and how I feel about it as a CS student. I have been thinking about this for some time now and I want to pout it out.

For starters, let me put my attitude here: I can live with the system, but I don’t like it. Especially when the tuition of these colleges are surging madly ($70k per year for four years and that’s without the living expenses. I can buy a HUGE house in the suburb and live probably a happy life with that money), students are forced to be driven by their future earning and student debt. And with the higher tuition, students are having greater expectation of what college diploma can do for them; but ironically, it cannot do much. The best opportunity for college students to have a somewhat great job is majoring in computer science. If you do, you might have a chance to catch a job in the big companies in silicon valley and repay your college debt in like five to six years. It’s crazy. Can you even imagine repaying your college tuition in five to six years? Too short for average people. When I was in high school, there were rumors about a certain teacher who still did not finish his college debt ten years after being a teacher. The time I heard about it, I laughed; and now I realized I was really immature. It’s just sad.

The CS major is a dilemma as well. After being admited as a CS student in NYU, I was really excited to meet others who have the same passion in computer with me, but I couldn’t find many. The most frequent reason I heard about why you go for CS was “it’s just good pay.” I do respect their decisions, but the reality does frustrate me. I just feel sorry for those who are putting pressure onto their shoulder when studying something they don’t really like. On the bright side though, there are people growing passion for this major and they progress fast. But overall, I do expect to meet someone who has similar experience as me, being a script kid in elementary school, trying jailbreak and hackintosh in middle school, etc. I guess I just havn’t met with all of my classmates yet.

Another thing about CS is the curriculum. There was a really BAD course that I HAD to take in my freshman year called “Intro to CS”. That course is a perfect reflection of what CS major has become in many universities in my opinion – a relentless machine that tries to spit out “programmers” to industry but fails for many people. The core idea of “Intro to CS” was to introduce the new CS students what the industry is like and what tools they use. I do like the theory of the course (we all gonna work someday right?), while it ignores the fact that programming for a product is nothing like studying CS in university; a lot more middlewares are used and the scope of “programming” is just too wide to reach for a single programmer. Ultimately, the course became a mixture of different software tryout every week and HTML coding. To be honest, from what I was told, most students are confused between VM and docker since they were introduced briefly in consecutive two lectures and I think one hour for each lecture is not enough for both students and professors to transfer knowledge about those two things. In the end, many students just go to office hours and follow TAs’ instructions to finish their homework. As soon as the professor realized we needed a focus on the course, he turned the course into a intro to web programming and finished the semester with it. I do not blame the professor for the course setting, he is a great professor in my Intro to OS class; it’s just there are too much gap between programming in academic and industry setting.

But the question comes: should the university adapt what the industry needs for undergraduate curriculum? With such high tuition, what is the goal of university now? At least the major is called “computer science” with “science” in it, shouldn’t the students study more science of CS than “this is what you do when you work for big corp”? Even if the university decides to suit students for job is better than preparing them for a scientific research route, how will it work for students without real engineering experience?

It’s not a failure. It’s just confusion.

Some Thoughts

I have been through a rough week and while I have not finished my Machine Learning homework (I still have about two hours so I’m fine I think) I decide to write about what have happened since my last serious writing on this blog (which is a long long time ago).

I am having trouble executing my weekly plan right now because there are always something that would mess up my sleep timer. But thanks to COVID I can sleep during class time and use another time to watch the recording. Actually that makes my class easier in some ways, since I always find classes too slow and got bored really easily and now I can just speed the recording up.

Since March I have been spending time on a project named Cachecash (link in my about page if you are interested), and it was a hard time at first understanding anything at all. But reading the dissertation was fun, and now I work for no pay at a Indian start-up who uses the project’s code base. It would be my first official CS-related internship but I do not really feel the work tension, might because of the remote working thing or because of the start-up being in its early phases and only a few people are full-time employees. I am trying my best fitting my schedule in but I guess I still cannot make it up to what the company expected. They are ambitious, which is putting me under some stress. I like the job overall.

So this semester I am a TA (finally). It was kinda surprising that professor chose to reach out to me instead of other A students (about eight of them), but I know I deserve it. Overall that’s good and gosh that’s good pay too.

I am tutoring OS in Trio program now, and that’s fine. OS in my opinion is fairly easy, might due to my early history messing with different OS when I was about 12 and experiences in Hackintosh. Although I did not really understand much at that time, it helps.

I recently learned a word called “quarter-life crisis” and I think I am having one right now. As a junior, I can already see the end of my undergrad life while I have no sense where I should go after. Maybe MS or even PHD but gosh 5-7 years? It’s gonna kill me. I know I would regret straightly going into corporate world and there is no such thing as “go for a job then come back for higher degree” for me. I would definitely be stuck on the dollar sign and never let it go. Besides, even though I love computer science and I know many different fields that may interest me, still I can only select one once I choose to go to a grad school right? I don’t want to be the guy who spent two years learning how to fix pagers in 2000 (my father told me one of his friend did).

Peer pressure is high too when most of my friends are getting offer from FB, MS, Google, you name it. THe rest of them are getting into BSMS as well. I fucked up my freshman year or I would do BSMS as well. I know I would regret this for the rest of my life but there is no one to blame on. Ah geez every time I throw back I wanna throw up.

Ok. Tech thoughts:

After reading Robert Collins’ blog about his experience in Cachecash back when they were a start-up, I was little bit frustrated because of the speed issue they could not fix; I mean they were MIT scholars and they couldn’t do it, which putting me into little chance to fix it. But this comes to my mind yesterday:

So normally, according to Cachecash protocol, a client would have to brute force through the colocation puzzle to gain trust from publisher and cache, and that is the part using most resources, both computing and bandwidth. In order to get faster, Nicole from the Indian start-up BlockDeliver found out the easiest way is to make the chunk bigger. Understandable, when the data chunk is larger, the number of bundles needed is smaller, hence less transactions and transmissions will happen. Ok. Less chucks also means less colocation puzzle steps will be required to brute force through to get the solution. Like this:

Data Chunk 1

"CAPNet ScreenShot"

But what if, let’s say theoretically, instead of looking for a simpler, less secure hashing algorithm to boost the speed, we let the publisher handle a part of the colocation puzzle. So instead of running between the chunks, we put a location puzzle in a single truck then return to the publisher a hash to the solution. In order to confirm every chunk is received, each chunk will be cut into different size between 1024 to 2048 bytes to ensure speed. The size cut will be a secret key only publisher know so if every chunk has returned the hash and all verified, publisher will determine if the size cut is the same, and then confirm the escrow to the cache.

But all those are just some random thoughts, I will look into it once I can.

Back to ML homework buddie.

Update

So I just updated my site today and I plan to write on this site frequently.

Stay tuned!

The Beginner's Guide

Starting

"The Beginner's Guide"

Author: Mozhe Ye Translate: G Y

Original Work in Chinese

I really like Davey Wreden’s work, and I wrote “The Stanley Parable: A Carnival of Anti-design and Fantastic Philosophy” seven months ago. But after some time, I did not try his second game “The Beginner’s Guide” or even write a review, because I knew it would be a game that is hard to comment.

After William Pugh, the co-developer of The Stanley Parable, left the studio, the sense of humor in the studio seemed vanished with him, leaving The Beginner’s Guide fulfilled with Davey Wreden’s dull, repetitive, obscure and heavy emotion.


“The Game Without Player”

“The Beginner’s Guide” does not deconstruct the play element in the game because many kinds of “simulation games” have already done that. Instead, “The Beginner’s Guide” tries to catch the existence of “Player,” and the idea of anti-participation or the bigotry “Coda” expressed in the game.

So let’s start with Coda’s games.

Please think about a question first: Could games ever be “unplayful”? And can games have no players?

In every game design book, all seasoned designers are trying to tell you - “You should let “players” playtest your games, and improve the game with feedbacks continuously,” or “make games players love,” or “we should follow “Player-Centric Design” and making players interested in our games is our priority,” etc. This is also an inner paradox for media expressing themselves when thinking about “games as art” as a game designer. Although Rembrandt’s “De Nachtwacht” is a product of a commercial order, thinking with the logic of modern art: “art is an expression and exaggeration of ego, so why should I care about players during the design process?”

“No art is meant to entertain others.” Why should games have to be “playful”?

When games are transforming from an entertaining object into a way to build experience with the multimedia technology, they closely connect with modern art. And Coda’s game follows the logic of modern art, when his experience constructed may be more impressive and private than the installation art in modern art museums, because it should not be “view-only,” but with participation (there have been many attempts such as “The Static Speaks My Name,” “Gone in November,” and “Tale of Tales”)

“Playful” and “entertaining,” are like the perspective rule which has been limiting modern drawing for hundreds of years or the traditional Christian aesthetic standard, “is not or no longer the things that are inseparable in us.”

Coda’s work is not only “unjoyful,” but “unplayable.”

Coda’s work is closed. Programming has already locked in the rules. It is like a safe with designer’s notes inside, and shall never be opened again. During the production, Coda put his conversation with his ego, his loneliness, his craziness and fanatics behind the door you will never trespass. These are the “invisible things in work”, just like Picasso’s drafts before his final painting. They are work with solid content, but meant to be replaced. Or, they are never meant to be shown. What if the game only shows the players little part of the whole? You can never ask games to show you all the content, just like you can never totally figure out Shakespeare’s literature, or the meaning of this real world.

Something

Robert McKee mentioned writers in the twentieth centuries, such as Virginia Woolf, James Joyce, and Samuel Beckett, who all emphasize the importance of “cutting the connections between artists and the outside reality, to further cut down the connection between artists and the majority of audiences.” He reasoned Dadaism, Stream of Consciousness, Theatre of the Absurd and more as “a conceal of the artists’ private world; and the entrance of this world is controlled by the artists.”

Coda stands on the top of his work, watches the players indifferently like a cold sculpture. Players are not guests who need to be entertained and ingratiated, but passengers outside the show windows who would pass quickly and can only take a glance inside then leave. He inverts the relationship between players and designers in modern game design methodology. He is like Nietzsche who reevaluate everything. Coda is not a designer. Coda is God.


“A God Who Dies” ——- Coda is not only the God for games. He is a God for himself. He makes games for himself.

When one moves his motivation of making games from pleasing players to pleasing himself, his games are no longer games, but a diary he writes to himself just for locking down his memory. When he leaves his thoughts behind the door that will never open, he burns his memory to leave them in the past forever and hopes will never remember.

Coda’s presentation on his work is not only his portfolio but his growing memory, his notebook. The door puzzle which shows up many times, forms an organized factor in his games, just as himself saying goodbye to the past over and over again. Only forgetting the past during the struggling present, can make him to the future. 已往之不谏,来者之可追(A Chinese poetic way to express the meaning of last sentence).

That reminds me of a theory of Micro Game shared by someone in AMAZE Indie Game Festival:

“Game production can be a way to try out and practice your design theory, or a way to your self-catharsis, or self-care, or your therapy, or your life snapshot, or even a way to communicate.”

“When Games become the real ‘art,’ its purpose directs to the producer himself.”

Charles Baudelaire thinks modern people can only use ascetic practices to make their own body, behaviors, feelings, emotions, even his existence, to be art. In his opinion, people as modern citizens should not explore themselves, looking for their mysteries or hidden truth, but “creating themselves.” The modernization of art does not make people free themselves in their existences but force them to face the task, which is, to build themselves.

When making games becomes a lifestyle and game texts become one’s diary, players then can only be the friends who would never understand each other. The rules set the comfort zone of the producers, limiting those emotions that they don’t want, and are not willing to share. Just as everyone who walks is lonely, his inner tiding emotions and thoughts are not for sharing. Because if they do so, they can be as ludicrous as putting themselves into a zoo, letting others watch and comment publicly.

Something


“The Arrogator” ——- So the narrator in the game “Davey Wreden” is not only a peeper, but an arrogator.

In the process of presentation, to facilitate players’s move, the protagonist “Davey Wreden” helps us a lot in exploring it. He helps us to modify Coda’s games, to make them “playable.” He makes the walls transparent to show us the hidden items, enter some rooms that are meant to be locked or open the jail that is supposed to be opened in one hour, and solves the puzzle which should take you one hour to think about - you can know the result instantly, instead of suffering from those tedious process.

At the end of the game, we even know he has modified the content, for example, adding light towers to emphasize the game’s meanings, organizing the work into chapters to show closer bonds between each of Coda’s work, improving the credibility of his words commenting on Coda’s work. If the producer Devid Wreden (himself, not the narrator) has made a game using only single piece of Coda’s work, it would be a very impressive User-Experience project, such as “stay in jail for one hour,” or “flying thoughts behind the door you can never open.”

But the most impressive resolution is:

Davey Wreden did not show his work using the logic of artwork. He connects these work by creating a narrator “Davey Wreden” who tries to interpret Coda’s work. The interpretation not only shows his thoughts and creativity in a low tier but also shows high-tier prudence by using interactions between the narrator, the arrogator and the game itself. And the thing makes the whole mechanics perfect is: the arrogator he creates, is “David Wreden”, himself.

He even gives a real email address in the game.

As a game which shows its “meta” element since the first voiceline, it easily confused the players using complex multilayer structure in meta-texts (the narrator’s lines), and implants the question of “Is the narrator misinterpreting these games?” into players’ mind after “tricking” players about commenting on the work. That is important.

Just like you who sit in front of the screen and read this article, you may say “oh so that’s what it is” after reading and close this web tab with satisfaction. But the way how texts can be understood is open. Neither you nor I, nor the writer has the absolute right to explain the work. We can only explain those “maybe” but not “it has to be.”

The sin of the narrator “Davey Wreden” is not his endeavor to interpret Coda’s work, but trying to replace every possibility with his absolute explanation. When he tries to characterize Coda to be “a Coda who is desirous of others’ understanding” even by modifying the game code to form a harmony between his interpretation and the work, he arrogates.

Understanding the producer by his work is the way of interpretation “Davey Wreden” (the narrator) tries to mislead us to. But it is also the way David Wreden tries to eliminate. That is the way which shatters the relationship between producers and their work. Interpreters look through the pinhole of games, states their definite explanation of games and the producers, and leaves no rest space but desperation to designers.

Something

The end of interpretation should be the work. Not the producer.

Is Coda, the creator of all those games, even similar to the words “Davey Wreden” said? Does he really need others’ understanding, comments, or compliments? The compliments towards Davey Wreden’s interpretation makes Davey feels good, but what do those compliments and “understanding” mean to Coda?

The man who stands behind The Beginner’s Guide is the real David Wreden, the narrator “Davey Wreden,” and also the producer Coda. He is the narrator who creates The Stanley Parable. He smiles with his faint heart and his pain. His emotions and values are built based on others’ compliments.

He may want to cut the unbilical cord connecting him with his past, just like the door you must close before moving on; He may want to put down his burden, his fragile proud based on others’ comments. Those things may be the load which drags him from the future, or from himself. It cuts his putrid body like a scalpel, force him saying goodbye to his past.

He may want to be Coda, the man who has his admiration, the man who lives in his past and future.


Appendix I ——- https://www.youtube.com/watch?v=4N6y6LEwsKc


Appendix II ——-

After the release of The Stanley Parable, Davey Wreden underwent a dramatic change in mind. He published these article when he got an award on 2013.


So I finished the comic, and read back over it, and thought to myself “There’s no way I can post this online.” The point of the comic was purely just to clarify that financial and critical success does not simply make your insecurities go away. “If you were insecure about other peoples’ opinions of you and addicted to praise in order to feel good about yourself, the dirty truth is that there is no amount of praise you can receive that will make that insecurity goes away. What fire dies when you feed it?” But if I go posting on the internet about how awful I felt receiving all these Game of the Year awards, no one is going to take that seriously. “Oh, yeah, we get it, real rough life you’ve got there. Sounds pretty miserable to be loved for your art. Maybe go cry about it into a pile of money?” And then of course I’m back in the problem I was trying so hard to avoid in the first place, where I’m stressing out about peoples’ opinions of me and forgetting simply to feel good about myself. I want to be able to like myself and my work, but it becomes SIGNIFICANTLY harder once people on the internet start asking you to feel ashamed of yourself. It’s really really hard to ignore. So either I share this thing that is simply True, that is a representation of what I actually felt at this time, and risk being shamed for it, or I hide it away and continue to pretend that success means you never feel shitty about anything ever again in your life. I’m going to post it here, but I also decided to write this preamble to contextualize it. If you do decide to read the comic, all I can ask is that you enter into it open-mindedly. You may not agree with or understand my feelings, but I guarantee you they are True, they are what I felt at that time. If you’ve read this and still think to yourself “oh come on, this guy can’t be serious, there’s no way that receiving game of the year awards would cause anyone to feel upset,” then I’d perhaps tell you that it’s unlikely that the rest of this post will convince you, and maybe now would be a good time to stop reading? Obviously you get to do whatever you want, that’s how this creator/audience thing works, and no matter what happens I’ll be fine. But I want to stress that the weight I have carried is real and it is heavy. And despite my trepidation about posting this online, I really do want to share it with you. I want to be able to show you this weight, to put you in my head. I am compelled to. It is just in my blood. I have no other explanation. Thank you for joining me.


“Game of the Year” ——- Basically here’s what happened: after the launch of Stanley Parable, I became a bit depressed. Largely this is because in those months, SO much attention was directed at the game and at me personally. And while I could not even begin to put into words how utterly grateful and astonished and humbled I am by the enormous response to Stanley Parable (all of you are the reason I can now devote my life to this kind of work), those months after launch were intensely intensely stressful. People don’t just play your game and then shut up, they’ll come back to you in force and really let you know how it made them feel. The vast majority of the response to Stanley was extremely positive, some of it was also extremely negative. I had emails from people who told me I had forever changed the way they saw the world, emails from people who wanted me to know I was a spineless coward who should hate himself, emails from people asking for advice and for tech support and to look at their work and just talk about what they’d been up to, emails from fans and journalists asking over and over and over and over and over where the idea for the game came from, until the answers to those questions simply became stock and lost their meaning and even I began to lose track of where the idea had actually come from. Thousands of people asking you to carry some amount of weight for them, to hear them, to talk to them, to tell them that things are going to be okay, to not turn them away. I tried, I did the best I knew how to do, but after a certain point the many little requests added up and their collective weight broke my back. I couldn’t do it any more. I couldn’t talk to more people. I couldn’t continue to use other peoples’ opinions of myself to feel good about myself and about my work. Every time I turned to someone else’s opinion of the game, I felt less sure of my own opinion of it. I began to forget why I liked the game. I was losing the thing I had created. So I withdrew. I basically checked out of the world, told people “I’m just gonna be by myself for a while.” I had never done that before. I spent a few months not really talking to anyone. It was lonely, but it was nice. Then toward the end of 2013, news outlets begin releasing their Game of the Year awards, and Stanley Parable is back in the spotlight. Suddenly the personal requests start flooding back in again. Suddenly I am the object of peoples’ emotional baggage again. The GotY awards did not cause me to be depressed, they simply unearthed a depression I had been harboring and trying to bury since the launch of the game. But for whatever inexplicable reason, I felt depressed and anxious again. (part of what made the depression worse was that being given awards actually did not help me feel any better. “Is something wrong with me??” one tends to ask in a situation like this) So: to help myself better understand and isolate the feeling of depression around the GotY awards, I wrote and drew a comic to explain what I had been feeling. It was simply the best expression I had for the thoughts and emotions that were running through my head at the time at the time, I just wanted to put it into some words to help make it less nebulous and unknowable. I wanted something I could hold in front of myself and say “This. This is what I am experiencing.” It’s nice to get it out of your head.


If you try to understand, this might be the best beginner’s guide ever. A best, sincere gift from an artist who goes through such vicissitude.

Meet Vegas. 2003

这篇文章是我爸在2003年写的小文章,我觉得很有意思就放上来了。Credit to my Dad.

从奥兰多飞拉斯维加斯,四个多小时的行程而已.出发时奥兰多的太阳刚刚升起,到达拉斯维加斯却已是夕日西沉了。这就是时间和空间交合的魔术。心想幸亏不是每天乘飞机东西穿梭,一天的时间被压缩至四个小时,亏大发了。 ­

一出机场,一辆加长林肯等在门外,肥胖的黑人司机一见到M君就大叫:HEY HEY HEY HEY,LUKAS!并且十分恭敬地拉开车门。M君虽然不会讲英语,自己的英文名字却能听懂。只见他点点头向黑司机稍作致意,昂首阔步走入车内,两腿分开坐下。 ­

我和C君交流了一个会意的眼神:如此看来,中国人民真的站起来了! ­

我们住M&M饭店,超五星的豪华饭店。虽然在豪华饭店林立的拉斯维加斯算不得顶级,因其开业时间早和M&M电影公司在影视业不俗的表现,使得其声名远播,客来如潮。作为M&M标志的那头大狮子,雄踞大堂正中,呲牙咧嘴,傲视天下。 ­

我们住豪华套房,里面的设施没有十分的特别之处,似乎和我们之前所住希尔顿饭店的大套房差不太多,只是供应了矿泉水,而且在醒目处摆放了110伏到220伏的插座转换器。M君向我们抱怨饭店没为他安排总统套房,我和C君身上还多少残留些菜根心理,有些卑微地表示豪华套房还行,可以凑合。惹得M君忍不住向我们感叹: ­

“三代才能出一个贵族啊。” ­

赌城所有大饭店的一楼都是赌场,这才是M君此行的真正目的地。想一想,M&M饭店不会总是出动加长林肯迎接每一位造访拉斯维加斯的中国人。我们打电话联系饭店的时候,M&M饭店有关人员调出了M君往来拉城的生活记录,欣然为我们一行提供了免费的豪华套房,并且告诉我们,在这里吃喝拉撒睡将全部免单。这不可能是慈善,只能说明一个问题:M君从前在拉城的活动足以让他们刮目相看。这个长着五短身材,小学五年级文化的胖子用赌桌上的挥洒让自己形象高大,成为拉斯维加斯的贵人。他的光辉形像应该储存在很多大饭店的电脑里,这就是为什么那位黑司机一见到他就毫不迟疑地大叫“LUKAS”的原因。至于C 君和我,祖上世代耕读传家,别说三代,五代之后能不能出一个贵族尚不得而知。所以在拉斯维加斯,我们暂时只能屈尊做两个看客,还有点类似于随从那种。 ­

洗漱停当下楼吃饭,二三楼全是餐店,汇聚了世界各地的大餐,欧亚非拉一应俱全。M君问我:想吃点什么?我看了看C君。C君幽默地说:只吃贵的,不吃对的。这话我们一听都明白:平时那些让我们见了痛恨手长衣短,马瘦毛长的大餐,今天我们要一试端倪了。比较来比较去,还是从中国的SEA FOOD吃起吧。 ­

M君点菜,却不认识英文。只好由C君在点菜单上乱划一气。不一时,鲍鱼,龙虾,象拔蚌…琳琅满目地摆在了我们面前,那阵势让人惊叹。只见C君几口划拉掉一只鲍鱼,对盘底鲜美的鲍鱼汁视而不见,叫来WAITER说: ­

“ 味道不错,再来五只!”气概之大前所未有。 ­

我晕。 ­

当我们三人终于吃饱,桌子上还留下两只半大龙虾十分哀怨地趴着。我们免不了对菜肴作一番评论,最后一致认为:大龙虾太油,最不合胃口。从此以后我对大龙虾的态度有了根本的转变,从敬畏到鄙薄。 ­

侍者拿来账单,上书: USD1786,C君签了房号,走人。当夜我睡觉之前大略算了一下我们那一天的消费:海鲜馆的晚饭,巴西森巴舞会酒吧的门票和酒水,日本厅的夜宵,共计美金3888,一个吉利数字。久居美国的C君一再叮嘱我在美国要把美金当人民币用,美金一元即人民币一元。我却很不争气地暗暗把它们折成了人民币,乖乖,我们三张嘴划拉掉国人一年的收入。 ­

晚饭后我们直奔一楼赌场,M君早就在抓耳挠腮,坐立不安了。整个一楼光怪陆离,人声沸腾.一排排老虎机摆成阵势,不时能听见硬币啪嗒啪嗒掉进纸杯的声音。(当夜我在老虎机上输掉美金三百大元,直到现在还觉得硬币从老虎机吐进纸杯的啪嗒声是世上最美的音乐。),每一张转盘都围了很多人,转盘一停,要么是一大哄的欢呼,要么是众口一声的叹息。M君不玩老虎机(太没技术含量,比较符合老人或孩子,另外,既然老虎机是每个赌场最赚钱的赌具,肯定有不少的猫腻,“明人不吃暗亏.”他说)。M君也不赌转盘,这东西转起来一点准头都没有,当夜我看见连续23盘都开红,让一帮为开绿下注的赌客不停的叹息。 ­

百家乐是M君的最爱,他只赌这个.公平而且自由,赌资大小自己可以决定,而且可以“FREE HAND”(这是他说得最多也是说得最到位的英文)。百家乐的赌戏好像专为他这种身份的赌客而设。 ­

我们在贵宾区找一个位置坐下,这里异常地安静,每一位赌客都油光水滑,声色安定。没有人为了输羸大声吆喝。显然这是上等人的处所。 ­

走过来一位高挑的中国姑娘,坐到了圆台后面。她是发牌员,因为M君没有赌伴,只好与赌场赌,发牌员旁边还坐着一个赌场的代表,每一个赌场都有来自世界各国的发牌员,有的放矢地为来自世界各国的赌徒服务。其中中国人不少,一则因为国内的富人来这里的越来越多,国内鲜有他们挥洒的地方,拉城是他们梦中的天堂(有研究者说:事业成功的人基本都有好赌的天性。)二是因为中国人在美国滞留的人多,能在赌场里工作是一个很不错的机会。 ­

C替M买了8万美金的筹码,一场豪赌正式开始。 ­

要承认我是第一次近距离地接触真正的赌戏。M君斜叼香烟,横披衣裳。动辄将手边的一大叠筹码一齐推出,让赌场的代表也诚惶诚恐。 ­

作为中国人的自豪感油然而生。 ­

犯得着大呼口号艰苦奋斗才能树立国人的自信吗兄弟们,来拉斯维加斯看一看中国人怎样下注吧,在外国人的诚惶诚恐人注视下,我们绝对有理由昂起高贵的头颅。 ­

C君低头在一个本子上画着M输赢的轨迹。大体上成一条上扬的弧线。这也能基本代表M君这一生不俗的运气。 ­

连续三盘都是M扫钱,M君气色很好,(但绝对没有眉飞色舞)。他面前高高垒起的筹码估计已有15万美元了。又一轮发牌,M君第一张是3,第2张是10,第3张是4。他凝神想了一分钟有余。看了一眼C画的弧线,说: ­

“FREE HAND” ­

重新发牌,M君手下三张牌加起来19点。他将所有筹码全部推出,大喊一声:“SHOW HAND!”。 ­

对方16点。M君一把赢回15万美金。乖乖!我和C君不失时机,各抽红1千美金。 ­

接下来M君的情绪有些高涨,他连续放弃好几把开牌机会以稳定一下自己的心情。然后断断断续续把筹码增加到35万左右。 ­

“走吧,回房休息,明天继续玩。”此时我和C君开始劝他到此为止。 ­

他却有些不耐烦了: ­

“怎么,怕赌场没钱了?”口气稍显张狂。 ­

赌场当然是不可能没钱的。我们只好听之任之。 ­

又一把开始了,C君的弧线已经快上扬至最高点。M君手上的牌加起来17点,还要不要呢?他想了又想,先要了一张牌,然后速度极快地将手边所有筹码全部推出。 ­

SHOW HAND! ­

开牌,最后一张是5,而对方刚好开出21点。 ­

输彻底了。 ­

回房睡觉。 此日无话。 ­

­

接下来的两天我们在拉斯维加斯掏空了所有口袋,包括能在美国搞到的所有美元全部扔进了赌场的钱柜。赢了的不算,光本钱总共大概40万美金。去机场的时候,坐在加长林肯里的M君咬牙切齿,直怪钱带的不够。 ­

“下回我拿一百万来,不信不赢。”他说。 ­

对于在国内拥有一个大型集团公司的他来说,拿个一百万美金是不在话下的,但“不信不赢”却是不可能的。 ­

你见过赢钱的赌徒会拿钱走人吗?肯定没见过吧,他们输光了才走。 ­

飞机在拉斯维加斯的上空缓缓划过,目力所及一片苍黄。赌城本就建在一片沙漠之中,飞过拉城的繁华就是四周沙漠漫延的荒凉,虽对立却统一。 ­

我想跟M君讨论一下这里面的哲学问题,但我不确定他听不听得懂。­