QIAOPANG.COM · 陈天(TYR CHEN)2013–2026 精选技术与随笔文集 · 共 260 篇按时间顺序浏览(2013 → 2026)↗
程序人生 · 陈天文集QiaoPang · Systems, Craft & Agentic Era
时间轴 ↗

Arcblock 北京黑客松,你来不来?

Arcblock 北京黑客松,你来不来?

Hackathon,黑客马拉松,或者黑客松,是程序员们喜闻乐见的一种愉悦心情,开阔眼界,碰撞灵感的活动 —— 一群人,在一段特定的时间内,相聚在一起,通力合作,针对某个主题,编写点有意思的程序,应用,或者产品。根据 wikipedia 的记载,hackathon 起源于 OpenBSD 的一次密码学活动:「OpenBSD 于 1999 年 6 月 4 日在卡尔加里举办的一次密码学开发活动上第一次使用了该术语。在那次活动中,10 名程序员相聚到一起商讨如何避免由美国密码学软件出口规定引起的合法性问题」。在那之后,hackathon 遍地开花,有程序员的地方,便少不了由 pizza,软饮,噼里啪啦的绞盘敲击声,角落里间或传来的欢呼声交织成的 hackathon。

就像小孩子们在游乐场放飞自我一样,程序员在 hackathon 的世界里尽情挥洒汗水,探寻个人能耐的边界。工作上的苦楚,生活中的琐事,朋友圈里的焦虑,在这一刻都不复存在。沉浸于其中的每个人,眼睛盯着屏幕,双手飞快地,铿锵有力地在键盘上敲击,仿佛在演奏悠扬轻快的卡农,又仿佛《通缉令》里织布机上辛勤劳作的梭子,永不停歇地谱写下一个「上帝密码」。

对 arcblock 来说,让区块链技术的开发和应用变得越来越友好是我们的使命。我们正在打造一系列的工具来达成这个使命。Open Chain Access Protocol,或者说 OCAP,是我们打造的第一个核心服务。我们读取公链上的数据,将 block/transaction/accounts 等信息索引出来,构建了一个基于 Aurora 的 Postgres Cluster,方便对数据进行 OLAP;以及基于 Parquet 格式的文件集,存储于 S3 之上,方便离线分析。在这些数据的基础上,我们搭建了一套基于 GraphQL 的 API 服务,对外提供数据的访问。整个系统的结构如下:

Arcblock 北京黑客松,你来不来?

API 服务的最大问题是不够直观,因而我们围绕着 OCAP API 提供了前端的 playground,方便大家实验和探索;当你在探索的过程中有了些许灵感,迫不及待想要做点什么的时候,我们提供了 javascript / nodejs / iOS / android 的 SDK,方便大家将灵感快速 MVP 化 —— 甚至,我们还贴心地为前端的同学提供了 react / vue 的 starter projects,一键带你飞上云端。下面是我们两周前在 Bellevue 举办的 hackathon 的一个作品,直接基于我们的 react starter project 和我们提供的 GraphQL subscription 功能:

Arcblock 北京黑客松,你来不来?

讲到这里,我相信有些同学会问,为什么我们要采用 GraphQL 作为 API layer?

GraphQL 自 facebook 在 2016 年推出以来,并未大红大紫,究其原因,还是后端实现起来有些复杂,和工程师已有的知识体系(以及运维体系)有所冲突。我在两年前的文章:GraphQL,你准备好了么?有过一些分析。Arcblock 之所以采用 GraphQL,是因为我们觉得它的思想 —— 减轻客户端的学习成本和使用成本,很契合 arcblock 的让 blockchain app 开发变得简单便利的使命。我们不但在 OCAP API 上采用 GraphQL,我们几乎 all in GraphQL —— 所有对外(或者未来可能对外)的 API,我们都采用 GraphQL。为此,我们打造了一套叫 Goldorin 的工具(尚未开源),来减轻 GraphQL 的开发。工程师只需要撰写 yaml 格式的 API 描述文档,Goldorin 会生成 Absinthe,Ecto 等相关的代码,最后工程师只需要在生成的 resolver 里面做完形填空,填写如何 resolve 各个 field 的函数即可。通过 Goldorin,GraphQL notation / schema 等一系列繁琐的事情都被工具完成,开发的难度被大大降低。不仅如此,最近我们还在思考:如何构建一个内部的服务,让前端的同学只需要提交 yaml,描述好她希望使用的 API,后端自动生成并部署 stub API,提供理性的 stub data,供前端调用。这样,前端就不需要巴巴等着后端提供支持,才能完成下一步的工作。

还有同学会问:为什么你们的后端架构在 elixir 之上?

这两天在 Bellevue 举办 Elixir US 2018 conference,Arcblock 是赞助商之一。我在站台的时候,也有很多人问我这个问题。技术是为产品服务的。如果你看上图 OCAP API 的架构,不难发现,里面有很多 micro service 的点,而 elixir 的基石 —— erlang/OTP,天然就是 micro service —— 每个 gen_server,都可以被视作一个 micro service。不仅如此,它还完整支持了使用 micro service 不得不做的很多仪式:比如说服务注册和发现(Registry),监控(link / monitor),自我治愈(supervision tree),集群管理(distributed erlang)等等。所以其他软件架构做起来复杂,憋半天才憋出一个 NB 的解决方案的事情,在 elixir 下,自然得仿佛在做新手上路的练习。比如 OCAP API 里面提供的实时币价 price_in_usd,它的 resolver 就是一个 gen_server 而已。

此外,elixir 可能有 nodejs(apollo)外最成熟(最漂亮)的 GraphQL 实现。借助 Absinthe + Phoenix,我们可以轻松实现复杂的 subscription API,并且,运行在一个若干台机器组成的 cluster 里面。跨机器的不依赖第三方(比如 redis / kafka)的分布式 subscription 方案,可能仅有 elixir 的方案可以放心部署在 production,并 scale out 到数十台机器。需要支持规模更大的用户时,现有的 elixir 的 Phoenix pub/sub 方案又很容易集成第三方的工具 —— 所谓可箩可御,不过如此。

扯远了。回到 hackathon。

我们充分理解参加一次 hackathon,你所付出的宝贵的时间成本 —— 毕竟,匀出一整天宝贵的周六,不陪孩子玩耍,不陪老婆(老公)逛街(打游戏),花上据说又在「杀死」一千万北京青年的,不知道有多久的通勤时间,来参加一场 blockchain 领域的 hackathon,如果得不到些什么,似乎说不过去。所以我们提供了一些小礼物和小奖品(当然我相信你不太会冲着这个而来),以及精心准备了两场 talk。第一场会深入浅出介绍 bitcoin / ethereum,以及他们技术实现上的特点;第二场会介绍 arcblock 的技术栈,技术选型,OCAP API 的架构,以及如何使用 OCAP SDK 构建应用。我们希望通过这两场讲座,把我们 arcblock 对 blockchain tech 的认知,毫无保留地分享给大家。当然,讲座以外的时间,我们也会为大家解答币价以外的,任何有关 arcblock / bitcoin / ethereum 的问题;当你在 hack 的过程中,出现的任何技术问题,我和我们的技术团队,也会第一时间和你探讨和处理。

为了保证 hackathon 的参与质量,此次 hackathon,在注册时我们会收取 50 元的门票,然后现场签到者我们即时微信转账返还全额门票。这是吸取了我们第二次在 Bellevue 举办 hackathon 的教训 —— eventbrite 上注册了太多人,使得我们担心活动场地无法容纳全部参与者,于是提前结束了注册,结果活动当天 80% 的参与者都没有出现,白白浪费场地资源和别人的机会。

下面是活动详情:

  • 时间:9/15 周六 9:30am - 7:00pm
  • 地址:优客工场(酒仙桥),北京市酒仙桥路兆维工业园C3号楼2层(地铁 14 号线将台站附近)
  • 报名链接:http://www.huodongxing.com/event/8456393424200 (也可点击「阅读原文」直达,或者在 huodongxing.com 里搜索 arcblock,在相应活动下点击「我要报名」)

也许,这样一场 hackathon,能够小小抚慰你那颗天天无聊 996 都磨出茧子的,并不安分的心?

也许,这样一场以码会友的活动,能够找到自己事业上的「虚竹」和「段誉」?

也许这样一场小小的活动,对你而言就是亚马逊河边煽动翅膀的蝴蝶?

我们诚挚地欢迎你的到来。

我们 arcblock,自八月初举办第一次 hackathon 以来

虽然滴答滴答走着的时钟在

我参加过好些次 hackathon。这其中有公司内部组织的,也有第三方举办的 —— 五道口的格子间,国家会议中心敞亮的会议厅,旧金山市中心的万豪, 贝尔维尤的 city center plaza,都留下过我的足迹。

就我个人的感受而言,hackathon 的质量

一般来说,公司内部的 hackathon 的质量跟公司的大小成反比。hackathon 本来是一种放飞自我,随心所欲做点什么的娱乐,在大公司里变得郑智化,庸俗化。大公司里的 hackathon,一般获奖的团队可以拿 CEO award,在公司大会上受到领导接见。团队除了得到一笔不菲的奖金外,在下一个 performance review cycle 里,还能得到升职加薪的实惠。因而在 hackathon 的时间段内开工的,乐呵一下的项目往往受不到待见,最终抱得桂冠的往往是提前很久准备的,质量颇高的产品,甚至有些项目直接拿在研产品的一部分来充数。最后的 demo 环节,听众们欣赏到的不是程序员特有的磕磕绊绊的演示,卡壳后冻人心脾的冷笑话,运行到一半 crash 掉的产品;而是精妙绝伦,每个环节都无懈可击的演示,以及完美到失真的 PPT。听这样的 demo,你会产生这样一种错觉:为什么这样的「商务演讲」不是讲给穿阿玛尼西服的,而是讲给穿格子衫的我?

第三方举办的 hackathon 要好很多,大家的功利心小了不少,很多小规模的 hackathon 更像是以码会友的交友大会。我身边有在 hackathon 上看对眼的:hackathon 期间结成了深厚的友谊,hackathon 之后经常联系,做点小项目什么的,后来有了一些累积,干脆双飞创业去了。

MORE IN 工程管理与职场

同专栏延伸阅读

查看「工程管理与职场」全部文章 →

暴走的程序员

今天一篇 "a sad day for rust" 霸榜了 hacker news。actix-web 的作者 fafhrd91 在无法忍受 "unsafe shitstorm" 之后,决绝地将这个在各大评测网站名列第一的 web 框架下线了。一时间社区叫苦不迭,所有使用了 actix-web 作为依赖的项目,都受到影响。这件事的影响力虽然不如之前让半个互联…

天叔奇谈 (2013–2020)2,451 字 · 5 分钟

实习生娜娜

我对实习生的要求,除去学习能力外,便是足够长的实习时间。所谓「足够长」,我的定义是至少两三个月。小于这个长度,往往还没有开始贡献有价值的工作,实习生便带着写满好话的评定拍屁股走人了。 娜娜本来原定是六月初来实习的。然而因为她学校办理 EAD(Employment Authorization Document)令人发指的低效,她最终八月初才来报道。这个暑期,我…

程序人生 (2015–2019)4,528 字 · 10 分钟

ArcBlock 一周年

(一) 这是我开过的最艰难的一次长途了。从家到 springfield(中转站)570 英里,我早上 8:30 出发,下午 4:50 到。进入 Oregon 之后,天就跟漏了似的,一路时断时续的暴雨,有的山路已经形成洪流,车驶过的时候,轮胎被水流带着,方向盘都有些不听使唤。好在一路车少,有惊无险。 - 程序君 04/28/2018 岁月如梭,光阴似箭,湾区的…

天叔奇谈 (2013–2020)6,593 字 · 15 分钟