关于本站 About This Website
开发这个网站的心路历程 The story behind building this website
这个网站几乎完全是通过 Vibe Coding 搭建的,我自己的代码贡献率不足
10%。技术栈选用了 Astro + Tailwind CSS。我没有用 Claude Code 这类
Agent,而是全程跟
Gemini 3.0 Pro 对话,一点点把结构搭起来的,整个基础框架大概花了
20 个小时。接下来我想先聊聊为什么要折腾这个网站,再说说一些具体的设计思路和内容安排。
I built this website almost entirely through Vibe Coding,
with a tech stack of Astro + Tailwind CSS. My own code contribution is less
than 10%. Instead of a coding agent like Claude Code, I talked my way through the entire
structure with
Gemini 3.0 Pro, step by step — the basic framework
took roughly 20 hours. Here's why I bothered building this, followed by some of the
design decisions and how the content is organized.
为什么写这个网站 Motivations
折腾这个网站,最大的动机是想培养自己"主动思考"的习惯——逼着自己靠持续输出,把性格里那点自驱力压榨出来。开始写这些代码的时候,我刚结束浑浑噩噩的大二上学期:那半年接触了太多以前没想过的事,人变得有点迷茫和烦躁,混着混着就过去了。这个网站,算是我想做出改变的第一步。
另一个目的是想实践费曼学习法——强迫自己把学到的东西用人话写出来,挺考验理解深度的。我一直觉得自己不太擅长表达想法和感受,这也算是给自己下的一个战书。
还有一个不起眼的动机:我想让这个网站本身成为“我是谁”这个问题的答案,而不必再靠某个名号或称谓才能标识我自己。
其实建站这个念头我大一上学期就有了。当时刚学完 HTML、CSS 和 JS
基础,每天刷各路大佬的博客,却始终不敢动手——原因很简单:我觉得自己太普通了。别人有响当当的
title
和能力,我连自己专业课笔记都整理不明白,考试还得靠前辈的“学习大礼包”续命。我总觉得自己写的东西太浅,连
AI 答得都不如,写出来又有什么意义?于是我无数次在终端敲下
npm create astro@latest,又无数次心虚地 rm -rf。
但既然你能看到这段文字,说明我最终还是一定程度上和这份“冒名顶替感”和解了。说服自己的理由很朴素:反正怎么做都不可能完美,一直盯着厉害的人看、困在完美主义里,就永远迈不出第一步。这个网站不是找工作用的简历,也不是炫耀成就的陈列室,它就是一个种点花草、记录思考的“数字花园”。我希望它能记下我从小城走到大城市求学路上的挣扎和成长,见证我对“意义”这件事一路笨拙的追寻。
谢谢你读到这里。哪怕这些文字显得幼稚浅薄,写下来这件事本身,对我来说就已经有意义。如果这些碎碎念刚好也给你一点启发,或者让你也起了记录点什么的念头,那就更好了。欢迎随时给我
The biggest reason for building this site was to cultivate a habit of actually thinking things through, rather than skimming the surface — I wanted the act of publishing to force out whatever self-discipline I actually have. I started writing this code right after a hazy, unproductive fall semester in my sophomore year: six months of running into things I'd never had to think about before, feeling lost and a little on edge the whole time. This site was my first attempt at changing that.
Another goal was practicing the Feynman Technique — forcing myself to write down what I've learned in plain language is a real test of how well I actually understand it. I've never thought of myself as good at putting thoughts and feelings into words, so this is also a bit of a personal dare.
One smaller motivation: I want this site itself to be my answer to "who am I" — not a job title or anyone else's label doing that work for me.
Honestly, the idea came much earlier, back in my first semester of college. I'd just
picked up the basics of HTML, CSS, and JS, and spent my days reading blogs by people who
actually knew what they were doing — but I never dared to start. The reason was simple:
I felt too ordinary. Everyone else seemed to have real titles and real skills, while I
couldn't even organize my own course notes and leaned on upperclassmen's study guides to
survive. I kept thinking: my writing is shallower than what an LLM would say, so what's
the point? So I typed
npm create astro@latest more times than I can count, and quietly rm -rf'd it just as many times.
But since you're reading this, I clearly made some kind of peace with that impostor feeling. What convinced me was simple: nothing was ever going to be perfect anyway, and staring at people more impressive than me was just another way of staying still. This site isn't a résumé, and it isn't a trophy case — it's a digital garden where I plant things and write down what I think. I hope it ends up documenting the whole messy climb from a small town to wherever I end up, and my clumsy, ongoing attempt to figure out what any of it means.
Thanks for reading this far. Even if this all sounds a little naive, writing it down
already makes it worth something to me. If any of this happens to spark something for
you — even just the urge to start writing your own — I'd be genuinely glad. Feel free to
设计细节 Design
这一部分聊聊几个小组件的设计思路,以及一些有意思的小细节。
A few notes on the design decisions behind some of the components, and details I like.
统一基准外观 Unified Default Layout
灵感来自 Siddhartha Mukherjee 的个人网站——他的博客用统一的黑色边框,读起来很干净(现在这个网站似乎已经更新了设计版本,不再是原来黑色统一边框的设计,但我仍然保留这份灵感的来源,更新于2026年8月)。我的整体外观是在
#2d3748 的深色背景里,抠出一块白色区域作为内容主体。
大字号居中页面标题和斜体描述的设计灵感则来自 Brandur 的网站。
Inspired by Siddhartha Mukherjee's
personal site, whose posts sit inside a consistent black border — clean and easy to read
(this website seems to have updated its design since then, and no longer uses the
original unified black border design, but I'll still keep this source of inspiration,
updated in August 2026). My overall layout cuts a white content area out of a dark #2d3748 backdrop.
The page titles and descriptions borrow from Brandur's site.
导航栏设计 Navigation Bar
经典的左右布局:左边站名,右边主要页面链接。导航栏在“初始状态”和“滚动状态”下样式不同——初始时和白色主体背景融为一体;向下滚动后会展开至全宽,加上背景色保证可读性,我还加了一点“磨砂玻璃”效果,能隐约看到滑过去的内容。
A classic layout: site name on the left, main links on the right. It behaves differently depending on scroll state — blending into the white background at first, then expanding to full width with a background color for readability once you scroll. There's also a subtle "gross glass" effect that lets you faintly see content sliding underneath.
页脚设计 Footer Design
页脚很简单,主要是版权信息、社交链接,和那句放在最下面的引言。为了呼应它想说的事,这段文字加了一点“呼吸感”的交互——指针从上面略过时用光影晕染和微小的上浮做出回应。配合顶部一道若隐若现的渐变分割线,页脚收得很轻,不抢正文的注意力。
The footer is simple — copyright, social links, and that one line at the very bottom. To match what it's saying, the text has a subtle "breathing" interaction: instead of a hard layout shift, it responds to your cursor with a soft glow and a slight lift. Paired with a faint gradient line up top, the footer closes things out quietly, without competing for attention.
双语切换 Bilingual Toggle
为了让中英切换够顺滑,用了一套基于 Nano Stores
的轻量方案:系统会记住你的语言偏好,刷新或下次再来都不用重选。渲染上主要靠改变 HTML
根元素的
data-lang 属性,来控制中英文内容的显示和隐藏。
交互上,切换按钮有个动态焦点:当前语言保持清晰,未选中的会变模糊。它还有个"锁定机制"——如果某篇文章我还没来得及翻译,切换按钮会自动锁住,弹出一个小提示告诉你,免得你点过去看到一片空白。
For a smooth bilingual experience, this site runs on a lightweight setup built with Nano
Stores: it remembers your language preference across reloads and future visits. Under
the hood, content visibility is controlled by toggling the data-lang attribute
on the root HTML element.
Visually, the toggle has a dynamic focus — the active language stays sharp, the inactive one fades into a blur. There's also a "locked" state: if a post hasn't been translated yet, the toggle locks itself and shows a small tooltip, instead of letting you click through to a blank page.
邮箱防爬 Email Protection
之前明文邮箱被爬虫薅去发过垃圾邮件,所以联系方式里的邮箱做了一层防护:源码里不出现明文地址,等你真正
把光标悬浮、聚焦或触摸到链接时,才会在浏览器里现场解码出来。这挡不住专门针对性写脚本的人,但已经足以对付正则匹配批量扫描
@ 符号的爬虫。
My email got scraped once and buried in spam, so the contact link is protected a little: the real address never appears in the page source, and only gets decoded in the browser once you actually hover, focus, or tap the link. It won't stop someone determined to target this site specifically, but it's enough to dodge the bots that scan pages for anything shaped like an email address.
卡片展示 Card Layout
博客列表页用了卡片加“时间轴”的设计:系统按年月自动分组,按时间倒序排列,左侧一条线把同一个月的内容串起来。每篇文章像时间轴上的一个节点,鼠标悬停时节点会点亮,背景也有细微变化,用来引导阅读视线。
The blog list uses a card-based timeline: posts are grouped by year and month automatically, newest first, with a vertical line connecting posts within the same month on the left. Each post acts as a node on that timeline — hovering lights it up and subtly shifts the background to guide your eye.
其他参考 Other References
这个网站还参考了不少其他网站的设计和内容,包括但不限于:Shu Ding、谢益辉、Paco Coursey、黄玄、Andrej Karpathy、Derek Sivers 和 Anthony Fu。
特别感谢 A神(Arthals) 的个人网站,是最早激励我搭这个网站的原因。
This site also borrows from the design and content of others, including but not limited to: Shu Ding, Yihui Xie, Paco Coursey, Hux, Andrej Karpathy, Derek Sivers, and Anthony Fu.
Special thanks to Arthals's personal site, which is what first pushed me to build my own.
网站内容 Content
这个网站主要分成 博客、随笔 和 微实验室 三个核心内容板块,这不是提前规划出来的架构,而是写着写着才发现——脑子里其实住着几种很不一样的表达欲:有时候想把一件事认真讲清楚,有时候只是想把一个念头倒出来,有时候纯粹是自己瞎琢磨。硬塞进同一种格式里,哪种都写得别扭,索性就分开了。至于每个板块具体装了什么,主页的导览和它们各自的页面已经说得很清楚,这里就不重复了。
Splitting the site into a blog, thoughts, and a mini lab wasn't really planned - it's something I noticed while writing: there are a few different urges in my head that want very different formats. Sometimes I want to properly explain something. Sometimes I just want a thought out of my mind. Sometimes I'm just messing around. Cramming all of that into one format never worked, so I split it up. What's actually in each one is already covered on the homepage and on their own pages — no need to explain it twice.
版权与开源声明 Copyright & License
本站所有原创文章、文字及视觉内容,如无特别声明,均采用 CC BY-NC-SA 4.0 协议许可:你可以自由分享和演绎这里的内容,但请注明出处,不能用于商业目的,二次创作也要沿用同一协议。
这个网站的模版,我打算稍作调整后开源,敬请期待。
Unless otherwise noted, all original writing and visuals on this site are licensed under CC BY-NC-SA 4.0: you're free to share and adapt it, as long as you credit the source, don't use it commercially, and license anything derived from it the same way.
I plan to open-source the template behind this site after a bit more cleanup — stay tuned.
更新于:
Updated:
Thanks for reading