选举2029:介绍
自我开始开发英国2029选举网站已经超过8个月了,现在是时候写一篇介绍性文章,以便后续深入更详细的技术主题。
2024年,在英国大选宣布后不久,我在https://jonskeet.uk/election2024创建了一个小型网站,最初是为了跟踪Sam Freedman的选举预测并与实际结果进行比较。网站的范围有所扩大,但从未打算做得特别精致或面向广大受众。从第一次代码推送到选举之间的总时间大约为4周。
然而,在选举日当天,我决定我非常享受这一经历,于是当天注册了election2029.uk域名,创建了一个新的GitHub仓库和一个新的GCP项目,并推送了一个初始的占位页面。有关2024年网站的更多细节,请参阅我早先关于选举之夜的帖子——我不打算回顾任何技术细节,除非是为了比较的目的。
对于2029年的网站,我有更广泛的目标受众和更长的时间尺度。我怀疑很少有“小型”项目(就贡献者数量和预期花费的时间而言)的截止日期像这样长。我们还没有下一次英国大选的日期,但我有理由希望它会在2029年——我个人猜测是2029年5月。如果我们预计对下一次选举的兴趣在2028年底或2029年初开始升温,那么从首次注册日期到网站真正需要具有相当吸引力的时候,我还有超过4年的时间。
选举日期是一个有趣的截止日期,因为它既是“非常慷慨的”(我从未在如此长的时间尺度上工作过),又非常紧迫(如果它在选举后一天才完成,那就毫无意义)。
该网站已经(2025年3月)具备了我预期包含的大部分功能,因此我希望大部分数据模式是合适的,即使数据的呈现方式会发生很大变化。即使在过去的8个月里,我在技术方面也获得了许多乐趣,并希望通过博客文章分享其中的很多内容。
这篇文章不涉及任何技术方面,但我认为值得概述一下我想要实现的目标。
需求
- 对选举爱好者和普通公众都有价值且信息丰富。(我认为思考“普通选民”想知道什么可能是最大的挑战之一。)
- 对用户完全免费——没有订阅、广告,甚至没有cookie。
- 对用户快速——我认为没有任何页面不应该在眨眼之间加载,并且它应该真正使用非常少量的数据。(外部JavaScript库可能是数据传输的主要部分,而这些只有在您想要查看可视化(如地图、图表或桑基图)时才需要。)
- 对我便宜——我不应该最终担心网站每天花费多少,除非它变得非常流行,出乎意料地……即使在我最疯狂的梦想中,这也只可能在选举活动本身的几周内产生财务影响。(作为对此的注意事项,我正在考虑在某个时候支付广告费用,如果我认为我有一个值得访问的网站,但发现很难获得关注。显然,我很希望在一个流行的播客或类似平台上被提及,然后通过口碑获得流量。)
- 对我有趣——如果这开始更像是一件苦差事而不是乐趣(并且假设在那时我没有重要的用户基础会感到失望),我可以直接关闭它。不过,我认为这非常不可能发生。
- 事实性——这不是为了表达我的政治倾向,也不是练习政治分析的机会。在选择包括哪些民意调查等方面总是存在潜在的偏见风险,但实际上我怀疑我会排除任何主流内容。(我不会做538风格的民调机构评级。)
未来的帖子
我预计会随着时间的推移撰写以下主题的帖子——我怀疑有些帖子会包括多个主题。
- 高层架构和技术选择
- 数据模型:ElectionContext和ElectionCoreContext
- 第三方API和数据转换
- 存储选择(Firestore和文件)
- 玩转JavaScript
- 在1MB文档中存储超过200万个邮政编码
- 不变性、记录和性能
- 业余项目中的多环境
- 在Cloud Run中黑客一个“后台服务”
如果您希望我涵盖任何其他主题,请在评论中告诉我。