Bachmanity Bytes:向硅谷致敬(以及玩弄 Kotlin 的借口)

发布: (2025年12月7日 GMT+8 10:45)
7 min read
原文: Dev.to

Source: Dev.to

Bachmanity Bytes:向硅谷致敬(以及玩转 Kotlin 的借口)封面图像

如果你在技术行业工作过并且看过 Silicon Valley,你会发现它意外地贴近现实。
那些更爱愿景而不是细节的 VC?再熟悉不过。那些大家仍保持乐观的转型会议?真的会出现。工程师们围绕代码风格展开激烈辩论?罪名成立。

每次重看一集,我都能在其中认出自己职业生涯的片段。Gavin Belson 的企业口号?我也听过那种演示。Hooli 的工程师们在构建宏大项目?这正是创新的常态。Russ Hanneman 在社交活动中的那股能量?你大概也遇到过类似的人。

该剧在 2019 年结束,但它捕捉到了技术文化中永恒的东西。因此,我自然而然地决定用唯一会的方式向它致敬:构建一个完全没有必要的东西。

没有人要求的前提

你知道世界真的不需要什么吗?另一个名言网站。我做了一个 Silicon Valley 的名言生成器,采用残酷的 80 年代终端美学,看起来像是博物馆展品《计算机是个错误》里的展品。

真的有人需要每日的 Gavin Belson 智慧吗?不(好吧,也许会有人)。这会改变谁的生活吗?绝对不会。我还是把它部署到了 Google Cloud,当然啦。

欢迎来到 Bachmanity Bytes

为什么选 Kotlin?因为它真的很好用

通常,这类简单的 Web 应用会用 JavaScript 来实现。我选择 Kotlin,因为它真的很好玩——Java 去做了心理治疗,回来后变成了更好的人:拥有全部的能力,却没有冗余的样板代码。

技术栈

  • Kotlin – 为了那甜美的空安全
  • Ktor – 因为 Spring Boot 感觉像是把喷火器带到点蜡烛的仪式上
  • kotlinx.serialization – JSON,不会让我想把笔记本扔出窗外
  • Google App Engine – 为了在晚上 11 点玩转 IAM 权限的乐趣

架构(随意使用“架构”一词)

┌─────────────────┐     ┌─────────────────┐
│   Ktor Server   │     │   Clikt CLI     │
├─────────────────┤     ├─────────────────┤
│  /api/daily     │     │  daily          │
│  /api/random    │     │  random         │
│  /              │     │  serve          │
└────────┬────────┘     └────────┬────────┘
         │                       │
         └───────────┬───────────┘

              ┌──────┴──────┐
              │ QuoteService │ ──→ 80 条智慧语录
              └─────────────┘

每日名言使用 LocalDate.now().toEpochDay() % quotes.size 来挑选语录,所以每个人每天看到的都是同一句。我把这称作“特性”。

没有人要求的 CLI(但我还是做了)

因为单纯的 Web 应用不够“过度工程”,我还用 Clikt 做了一个 CLI。现在你可以在终端里直接获取 Silicon Valley 的智慧。

# 获取今天的名言
bachmanity-bytes daily

# 想要点随机的?随机名言
bachmanity-bytes random

# 想看剧集细节?加上详细模式
bachmanity-bytes daily -v

# 本地启动 Web 服务器
bachmanity-bytes serve -p 3000

示例输出

"Not hotdog!"

  — Jian-Yang

加上 -v 参数时:

"Not hotdog!"

  — Jian-Yang (S4E4)

实用吗?不。但在一次令人沮丧的编码时段里敲 bachmanity-bytes random 并得到一点幽默,还是挺有满足感的。

“设计”(故意加双引号)

我想要一种残酷的 80 年代美学——硬朗的边角、终端氛围、黑底绿字。

body {
    background: #0a0a0a;
    color: #00ff41;
    font-family: 'VT323', 'Courier New', monospace;
}

黑色背景、霓虹绿文字、CRT 扫描线。我用了 AI(感谢 Claude)来完成样式和前端功能,因为人生太短,没必要在 CSS 上纠结,只想搞点好玩的东西。

部署到 App Engine:一次奇妙的旅程

  1. 运行 gcloud app deploy
  2. 遇到关于存储桶的权限错误
  3. 去 Google 搜错误信息
  4. 运行某条 IAM 命令
  5. 因为换行把命令粘错了
  6. 最终成功运行
  7. 这才意识到其实直接用 Cloud Console UI 就能搞定

部署后会在无人使用时自动缩容到零(几乎总是如此),因此运行成本几乎为零。

名言

80 条精选语录,包括:

  • “这家伙他妈的干!” — Russ Hanneman
  • “不是热狗。” — Jian‑Yang
  • “我不想生活在一个别人把世界变得更好,而比我们更好的世界里。” — Gavin Belson
  • “那只熊沾满了蜂蜜。” — Jared Dunn

全程披露:这些名言是用 AI 生成的。它们并不保证 100 % 与剧集吻合,我也没有逐一核实。如果 Jared 从未说过 “那只熊沾满了蜂蜜”,我也不想知道。它已经是“官方”了。

我真正学到的东西

  • Ktor 很好用 – HTML DSL 干净,内联 CSS/JS 在小项目里完全没问题。
  • App Engine 仍然在用 – 一旦弄清权限的舞步,就相当简单。
  • 构建无用的东西很有趣 – 有时你只想在霓虹绿的终端里看到 Gilfoyle 的金句。

试一试

在线体验地址:

代码仓库在 这里。它和你预期的一样乱:CSS 与 JavaScript 都是内联的,所有代码集中在几份 Kotlin 文件里,并且可以编译——基本上已经可以用了,对吧?

结论

我真的花了好几个小时去搭建一个没人会用的名言网站吗?是的。学到了 Ktor 并刷新了对 App Engine 的认知?同样是的。Erlich Bachman 会感到骄傲吗?他大概会想要拿走 10 % 的股份。

如果你也想浪费时间去做同样毫无意义的项目,我强烈推荐。它比心理咨询便宜,而且比无意义的刷屏更有生产力。

Back to Blog

相关文章

阅读更多 »