00.00
Harry Chang
|About
About
Updates
Projects
Gallery
Blog

與 harrychang.me 的 365 天:關於心血來潮以及擁有網路的一角

Date

April 12, 2026

Tags

Web DevelopmentRetrospectivePersonal
Loading
與 harrychang.me 的 365 天:關於心血來潮以及擁有網路的一角
←Back to Blog

365 天前,我錯過了一座山,卻建了一個網站。關於缺席、模仿,以及學會在繞著空缺生長。

我沒爬的那座山

2025 年 4 月 7 日。我的同學們正為大霸尖山打包,一趟穿越台灣高山、為期四天的徒步壯遊。一場成年禮。那種人們幾十年後還會記得的旅行。

我什麼也沒打包。

前一年的氣胸,意味著我不能冒險前往海拔 2,500 公尺以上的地方。醫生的命令。沒有商量餘地。所以當大家都在準備攀登時,我在準備如何面對留下來。

因環境而生的孤獨,有一種特殊的質感。你不怪任何人。你甚至也不怪這個情況本身。你只是以一種自己沒有選擇的方式獨自面對前方四天空白,卻沒什麼計畫來填滿它們。

同學的群組不斷跳出裝備檢查與天氣更新。我調成了靜音。房間太安靜了。我打開 YouTube,讓演算法發揮它的作用。就這樣,凌晨兩點的我正在看作品集拆解影片,點著時間軸,暫停下來瞇眼研究那些我還叫不出名字的間距。

我用太多作品集影片填滿了那些日子。

其中一部影片中 Joseph Zhang 的網站徹底抓住了我。三欄式設計。雜誌排版般的精準。那種看起來毫不費力、但大概花了好幾個月的極簡對齊。我看了兩遍,然後打開 Figma,匯入他的整個網站,只為了盯著看東西究竟是如何對齊的。

到了 4 月 13 日,我有了一個能運作的網站。

六天。從無到有,到完成部署。從孤獨到一個我可以指著說:這東西存在,因為我讓它存在。

我不確定「防衛機制」是不是個正確的說法。但我也不確定它是錯的。

偷竊

讓我老實交代第一個版本是怎麼來的:我偷了它。

不是惡意。沒有全抄。但這個過程與其說是「原創」,不如說是「激進的致敬」。我把 Joseph 的網站匯入 Figma,把 Figma 檔案丟給 Vercel 的 v0,然後看著它吐出一個大抵能運作的排版。那個至今仍支撐著我 About 區塊的三欄式結構?那是他的。我太喜歡了,實在捨不得換掉。

第一天之後的所有東西都是我的。但地基是借來的。鷹架是別人的藍圖。

我覺得大家太少談論這件事了。創作過程,尤其在網頁開發中,往往始於模仿。你看到某個好東西。你弄清楚它為什麼好。你重建它,直到理解得你夠了解它才開始偏離。偏離便是原創所在,但模仿是學習發生的地方。

第一個讓我覺得真正屬於自己的功能,是圖片表框系統。我一直很喜歡照片周圍的白框,但我痛恨直式圖片因為要配合橫式圖片的寬度,而佔據更多視覺空間。所以我為桌面版做了一個系統。初次渲染使用 skeleton loaders。載入完整圖片時,無論長寬比如何,都能保持一致的邊框線條。花的時間比預期長得多,主要因為最佳化載入時間是真的難,即使有 Gemini 幫忙。

那套 skeleton 系統至今仍讓我有點陰影。邏輯與效能調整都把我推得比預期更遠。但當它終於成功運作時,我感覺自己贏得了什麼。

改變與留下的

一年足以讓一個網站面目全非。我的沒有。

演變是一層一層發生的。首先是國際化,一個在英文與繁體中文之間切換的客戶端 React Context。接著是部落格區塊,重新思考了內容如何呈現與渲染。然後是 Turborepo 重構,一次架構大改,為了讓應用程式之間共用元件,並為我姐的個人網站打下基礎。最近一次,標題字體從 Space Grotesk 換成了 Artific Variable,一套來自 Powertype 的字型,風格介於瑞士風精準與真實個性之間。那種花十分鐘就能完成,卻要花三個星期才停止自我懷疑的改變。

技術細節對在乎技術細節的人很重要。(如果想看完整的技術架構解析,請見專案頁面)。給他們:Vercel 上桌面與行動裝置皆達 100 的 Real Experience Score,即便在 24 小時內有 4,000 名訪客。FCP 約 1.55 秒。LCP 約 1.66 秒。CLS 0.01。我為這些數字跌了夠多個坑,以至於它們與其說是指標,不如說是我與 Chrome DevTools 爭論後的紀念品。

但數字不是重點。

留下來的東西更重要。三欄式排版。沒有 hero section。那些拒絕被快速掃過的長段落。那些隱藏的細節:頁尾的 Spotify 整合、藏在角落的留言板、那個要求你「對焦」才能離開的桌面 404 頁面。這一年來,這些都是刻意為之的選擇。現在它們依然是。

我稱這個網站為「永遠未完成的作品」。我以前說這句話時帶點歉意。現在我把它當作一種意圖的表明。完成從來不是目標。網站隨著我成長。隨著我改變。未完成,才是它的特色。

加入對話之前

這是出乎我意料的:這個網站會在我尚未踏入的房間裡,替我發聲。

今年稍早,我寄了一封冷郵件給一位我欣賞其研究的教授。就是那種請求佔用對方十五分鐘,並祈禱他們不會直接把信封存的那種信。我在信尾附上了我的網址,幾乎像是順手寫上的。

教授當天就回信了。當我們碰面時,對話切換了方向。不需要解釋自己是誰,網站已經替我做了。專案、部落格文章、攝影集。少了點面試,多了點雙向討論。少了點「證明你自己」,多了點「跟我多聊聊這個」。

一份 PDF 履歷同樣可以列出這些成就。但履歷是你填寫的表格。網站是你建造的空間。這種差異是感覺得到的,縱使它無法衡量。

我也用這個網站來接洽。我在一個臉書社團裡發了一篇文,沒什麼長篇大論,只是列出我能幫上什麼忙,然後看著網站處理剩下的工作。那一篇文章在 24 小時內帶來了超過 4,000 名訪客,就是我前面提到的那波流量。有些人為了技術規格而來。有些人為了關於電影、攝影或絨毛玩偶的部落格文章而來。這個網站為每個人提供了一點東西,卻不強迫每個人都在乎同一件事。

它在我加入對話之前就確立了我是誰。這絕非小事。

靜靜的反叛

我開始將這個網站視為一種抵抗。不是戲劇化的抵抗。不是首頁放宣言的那種。只是一種拒絕照著所有人預期,去建造的安靜姿態。

沒有 hero section。沒有開場動畫。長篇文章開頭沒有 TL;DR。沒有為點擊率最佳化的演算法。

取而代之的是:以意圖驅動的導航。留長段落給願意讀的人;隱藏的細節給留下來的人。桌面版滑過才會出現的 Spotify 狀態,多數人從未注意到。需要滑到底才能找到的匿名留言板。埋在桌面版頁尾、在行動版上隱形的理念頁面。

這是篩選。我知道這是篩選。這個網站的設計旨在獎勵注意力與耐心,這也意味著它的設計會流失那些兩者皆無的人。有人會說這是個錯誤。有人會說我把可能想觸及的受眾排除在外了。

也許吧。但那些真正留下、真正閱讀、真正發現隱藏角落的人,他們會發聲。他們會提到游標點擊時濺起的火花。他們會在匿名板上留言。他們會提起我幾個月前寫的東西。這種篩選,在我眼中沒有商量餘地。

還有另一件事。建造作品集這個行為本身,迫使你去整合。它迫使你決定什麼重要、展示什麼、隱藏什麼,如何呈現自己。拋開求職或申請的實用性不談,這個過程本身就有其價值。你必須思考自己是誰。你必須選擇你想如何被認識。

這很稀有。多數平台並不要求你統整,它們要求你在它們限制內表演。LinkedIn 給你一個頭像欄位、一個標題,以及一串經歷清單。Medium 給你一個要追逐的演算法。表格是預製的。你只要、也只能填寫進去。

個人網站沒有固定的欄位。你打造欄位。而在打造的過程中,你會發現自己真正想說的。

為什麼你該擁有一個

我不打算告訴你去建一個網站。那不是我的立場。但我可以告訴你擁有一個網站為我做了什麼,你可以自己決定這些是否適用於你。

實務上的理由很明顯,我不贅述。個人網站能以履歷無法做到的方式展現能力。它給你一個可以分享的網址。它讓你能在自己的條件下被 Google 到。很好。

比較不那麼顯而易見的論點是:擁有網路世界的一角,這件事本身就有意義。

我們的數位足跡有太多是租來的。Instagram 擁有你的照片。LinkedIn 擁有你的職業身份。Medium 擁有你的文章,或至少擁有圍繞著文章的脈絡。這些平台可以改變他們的演算法、服務條款,甚至整個商業模式,而你毫無還手之力。你是房客,不是房東。

個人網站是財產。微小的財產。在宏觀下微不足道的財產。但當我在這裡寫一篇文章,我不會想著互動指標或熱門話題。我想的是,我有沒有說出想說的。段落有沒有落在對的地方;照片放在這裡是否恰當。

這是租借與擁有的差別。不完全是控制權。是那份寧靜。

給想嘗試的人

如果你想知道細節:我在筆電用 VS Code 開發,在 Obsidian 裡寫作,用 Vercel 的免費方案部署,偶爾想起來時去看一下 Google Search Console。沒什麼後台。沒有資料庫 CMS。一切都活在 Markdown 檔案裡,用 Git 進行版本控制。這套做法對我有效,因為我對程式碼自在,對後台過敏。

如果你不是,Framer 大概是客製化程度最高的 no-code 選項。把 Notion 當作網站來用也挺有意思,尤其如果只想專注於文字。我個人都沒用過,所以請帶著適度的懷疑來看待這個推薦。

工具遠不如開始本身來得重要。「準備好了沒」終究只是事後諸葛。你總是跌進大坑後,才知道自己會做哪些不同的選擇。網站會教你它需要成為什麼樣子。請假設你已經準備好了,縱使這個假設很天真。特別是當它很天真時。

留下的空缺

一年前,我無法和同學一起爬那座山。

一年後,我依然不確定自己是錯失了某些重要的東西,還是找到了更好的。大概兩者皆是。那趟旅行必然難忘。共同的體能挑戰總會以特殊的方式加深友誼。我永遠不會知道在高山上發生了什麼對話,哪些笑話變成了只有他們懂的暗號、哪些時刻以我無法參與的方式將人們繫在一起。

但我有這個。一個從孤獨中長出來的網站,長成了我引以為傲的東西。一個替我說話的空間。一個屬於我的網路角落。

山還在那裡。如果肺部允許,或許總有一天我會去爬。那不會是同一趟旅行了。它無法找回我錯過的笑話,或我未能參與建立的羈絆。那個空缺在我缺席的情況下,早已自行闔上。

有些空缺會在你不在場時自行闔上。你只能繞著它們,繼續生長。


致謝

  • 封面照:Der arme Poet by Carl Spitzweg, Public Domain, Link。詩人將他的閣樓變成了一個世界。不是無視漏水的屋頂與嚴寒,而是置身其中。網路的某些角落,也如此開始。
  • 設計靈感來自 Joseph Zhang,他的三欄式版面我借了就沒還過
  • 原始碼公開於 GitHub,採 CC BY-NC 4.0
  • 以 Next.js、React、TypeScript、TailwindCSS,以及過量的固執打造。
Knowledge Graph
Full Graph →
Next Up

十七格寬:一個樂高風扇架,以及為何不需要「長大」

Loading
Harry Chang/Chi-Wei Chang 張祺煒 LogoHarry Chang/Chi-Wei Chang 張祺煒

Building highways when lanes feel too narrow. Sometimes it's sharp, sometimes it's f/1.5 blur.

Curious? So am I. — chiwei@harrychang.me

Guestbook

Did something connect? Or break? Leave a note.

Socials

  • Email
  • Discord
  • LinkedIn
  • GitHub
  • Telegram
  • Instagram
  • Medium
  • Schedule
  • Book a Meeting

Resources

  • Links
  • Spotify
  • Letterboxd
  • Résumé
  • Setup
  • Reading List
  • Design System
  • Knowledge Graph
  • RSS Feed

Site Map

  • About
  • Updates
  • Projects
  • Gallery
  • Blog
  • Privacy
  • Manifesto
  • Source Code
  • Report an Issue