Quyển 1: Onboarding
Chương 5: Private Repo
Thứ Sáu, 10 giờ đêm, ba tuần kể từ ngày mua cuốn sách.
Trong ba tuần đó, Vinh đã biến thành người dậy 5 giờ sáng - điều mà ba tháng trước anh coi là bất khả thi, ngang hàng với việc viết documentation đầy đủ hay deploy buổi chiều thứ Sáu. Báo thức 4 rưỡi, đánh răng, mặc áo thun cũ, xuống tầng dưới kéo chiếc Wave Alpha ra. Công viên Lê Thị Riêng, 5 giờ 15. Gốc phượng. Ghế đá. Mắt nhắm. Mười lăm, hai mươi, hai mươi lăm phút. Rồi về, tắm, đi làm. Bớt đau lưng. Ngủ ngon hơn. Code nhanh hơn, hoặc ít nhất, đỡ cáu gắt hơn khi code chậm.
Nhưng những thay đổi đó anh ghi rải rác khắp nơi: Ghi chú điện thoại, Moleskine, đôi khi ghi ra giấy note dán lên tường rồi quên mất. Không có hệ thống, không có version control.
Đến tối thứ Sáu tuần thứ ba, Vinh quyết định đủ rồi - phải chính thức hóa.
Anh ngồi trước laptop, màn hình GitHub trắng tinh. Trang "Create a new repository" đã mở từ mười phút trước, con trỏ nhấp nháy trong ô Repository name.
`cultivation_log`. Nhìn hai giây rồi xóa.
`qi_experiment`. Xóa.
`breathing_practice`. Quá rõ.
`project_x`.
Private. Không description, không README tự động, không .gitignore.
> Create repository.
---
Viết README trước — quy tắc số một: repo nào cũng cần README trước cả code.
Nhưng viết gì cho một project mà bản chất là "tôi mua cuốn sách 30 ngàn ở tiệm cũ, dịch bằng Google Translate, ngồi thở theo, và bụng ấm lên"?
Vinh gõ:
```
# project_x
Personal health & wellness study.
Tracking: breathing exercises, heart rate, environmental factors.
Self-experiment. No peer review. No medical claims.
```
Đọc lại, nghe học thuật vừa đủ. "Breathing exercises" - ai mà không thở. "Environmental factors" - người ta tưởng anh nghiên cứu chất lượng không khí Sài Gòn. Còn "No peer review" thì đúng nhất, vì đúng là không có ai review.
Thực ra cũng gần đúng. Anh đang theo dõi sức khỏe, chỉ là cái sức khỏe đó có phần không nằm trong y khoa.
---
Phần nặng là migrate data.
Vinh mở Ghi chú điện thoại - ba tuần ghi chép rải rác, phần lớn gõ vội bằng một tay lúc 5 giờ sáng, ngồi trên ghế đá, mắt đang nheo vì chưa tỉnh ngủ. Chính tả lung tung, viết tắt tùy hứng, đôi khi chỉ có con số:
```
ấm 7s
```
hoặc
```
0
```
hoặc
```
tại sao???
```
Chưa kể Moleskine. Lật mấy trang cuối - chữ viết tay nhỏ như kiến, ghi lúc vừa mở mắt sau khi ngồi thiền, tay còn run, đầu còn lâng lâng. Có trang viết được hai dòng rồi dừng, không rõ là hết ý hay ngủ gật lúc viết.
Copy tất cả, paste vào VS Code. Một đống text bẩn - tài liệu của một dự án mà lead developer đã bỏ việc giữa chừng, để lại technical debt cho chính mình gánh.
Dọn. Mỗi phiên thiền thành một commit, với format tự chế:
```
[session #XX] DD/MM | HH:MM | location | duration | HR | sensation | notes
```
Mười bốn phiên. Lướt qua, chọn mấy cái tiêu biểu.
Phiên 1. Thứ Bảy, phòng trọ, nằm trên giường, mười lăm phút, nhịp tim 78.
```
[session #01] Sat | 14:00 | home/bed | 15min | HR 78 | warm 2s | first attempt. legs numb. crow noise. "trào ngược?"
```
Bug đầu tiên. Mọi developer đều biết cảm giác này: chạy code lần đầu, ra kết quả lạ, không biết là feature hay bug. "Trào ngược?" trong ngoặc kép — anh viết lúc đó cũng không tin mình đang hỏi nghiêm túc.
Phiên 6. Thứ Tư, công viên Lê Thị Riêng, gốc phượng, mười hai phút, nhịp tim 65.
```
[session #06] Wed | 05:20 | park/phoenix-tree | 12min | HR 65 | warm 5-7s | OLD LADY FIXED BREATHING. config was wrong: mouth exhale → nose exhale + tongue palate
```
Ngày bà cụ sửa tư thế. Vinh viết "OLD LADY FIXED BREATHING" bằng chữ in hoa như commit message hotfix production gấp, vì nó đúng là hotfix - chạy sai config suốt năm phiên.
Phiên 10. Thứ Ba, công viên, mười tám phút, nhịp tim 62.
```
[session #10] Tue | 05:30 | park/open-bench | 18min | HR 62 | warm 4s | no tree nearby. sensation weaker. tried hard, no improvement
```
Phiên này đáng nhớ. Anh ngồi ghế đá giữa lối đi, không ở gần cái cây nào, cố thêm mười phút so với mọi lần. Kết quả: cảm giác ấm yếu hơn, ngắn hơn, dù nỗ lực gấp đôi. Lần đầu anh nghi ngờ có khi vấn đề không nằm ở anh.
Phiên 14. Sáng nay, hai mươi hai phút.
```
[session #14] Fri | 05:15 | park/phoenix-tree | 22min | HR 61 | warm 9s stable | longest session. eyes still brighter per observer (Duy, non-practitioner)
```
Hai mươi hai phút, phiên dài nhất. Anh không cố kéo dài - chỉ ngồi đến khi tự nhiên mở mắt. Mắt vẫn sáng hơn theo Duy, dù Vinh soi gương không thấy khác. Nhưng ánh sáng trong phòng trọ lúc 10 giờ đêm khác gì ánh sáng công viên lúc 5 giờ sáng.
Mười bốn commit, push hết. Trên GitHub, commit history xếp thành cột chấm xanh đều tăm tắp - đẹp, gọn, liên tục như một project đang chạy ổn.
---
Vinh pha cà phê. Cuốn sách không nói gì về cafein, nhưng anh tự rút ra: mỗi lần uống rồi ngồi thiền, cảm giác ấm đến chậm hơn. Đã cắt từ ba ly một ngày xuống một, ly tối thứ Sáu này là phần thưởng cuối tuần.
Uống xong, ngồi xuống, mở repo.
Review.
Không phải review code, mà review data.
Anh mở Google Sheets, copy số liệu từ mười bốn commit vào bảng, mỗi phiên một dòng: ngày, giờ, trong nhà hay ngoài trời, gần cây hay không, cảm giác ấm có hay không, thời gian ấm bao nhiêu giây, nhịp tim. Sort theo "cảm giác ấm."
Mười bốn dòng. Mười một "có," ba "không."
Ba dòng "không" là phiên 1, 2, 4 - ba phiên ở trong nhà, phòng trọ và sân thượng.
Mười một dòng "có" là toàn bộ phiên ngoài trời, không ngoại lệ.
Sort tiếp theo "trong nhà / ngoài trời." Ngoài trời: 11/11 có cảm giác ấm. Trong nhà: 0/3.
Không thể rõ ràng hơn được nữa!
Thêm một cột: "gần cây." Sáu phiên ngồi gần gốc cây - phượng, bàng, me - sáu trên sáu có cảm giác ấm, trung bình 7.5 giây. Năm phiên ngoài trời nhưng chỗ trống - ghế đá giữa lối đi, bờ tường, bãi cỏ - năm trên năm có cảm giác ấm nhưng trung bình chỉ 4 giây.
Ba biến số hiện lên rõ ràng: cây, ngoài trời, sáng sớm. Chúng giải thích gần hết data. Chỗ ngồi không quan trọng bằng thời gian, thời gian không quan trọng bằng vị trí, vị trí không quan trọng bằng có cây hay không.
Phiên 10 đập vào mắt: mười tám phút, ghế đá trống, cố gắng hết sức - bốn giây. Phiên 14: hai mươi hai phút, gốc phượng, thảnh thơi - chín giây. Cùng một người, cùng một buổi sáng, cách nhau vài ngày. Biến số duy nhất thay đổi là cây.
Cà phê đã nguội. Anh uống cạn, đắng ngắt.
---
Mở terminal, commit cuối trong đêm:
```
git add .
git commit -m "Review: 3-week data analysis (14 sessions)
Pattern detected:
- Outdoor AM sessions (5:00-6:30): 11/11 qi sensation (100%)
- Indoor sessions: 0/3 (0%)
- Near old trees: avg 7.5s warm sensation
- Open area, no trees: avg 4.0s
Hypothesis: Sài Gòn's linh khí distribution is location-dependent.
Effort is NOT the primary variable. Environment is.
Next: map tree coverage in nearby parks. Test different species."
git push
```
Ngả lưng ra ghế, đọc lại commit message. Bật cười - tiếng cười khẽ trong phòng trọ tĩnh mịch.
Tưởng mình đang chạy ML pipeline cho cultivation.
Nhưng đúng là vậy. Feature engineering: thời gian, địa điểm, gần cây. Target variable: cảm giác ấm. Model: logistic regression trong đầu. Kết quả: môi trường quan trọng hơn nỗ lực. Cây già hơn cây non, ngoài trời hơn trong nhà, sáng sớm hơn buổi tối.
Cái nóng Sài Gòn ban đêm không có linh khí. Phòng trọ Quận 4 không có linh khí. Sân thượng bê tông không có linh khí. Chỉ có công viên, lúc bình minh, gần gốc cây - chỉ ở đó, thứ gì đó mới chịu "chạy." Giống WiFi quán cà phê giờ cao điểm: chỗ mạnh, chỗ yếu, chỗ đứt hẳn. Phải tìm đúng node.
---
Vinh nhìn lại repo. Mười bốn commit, không collaborator, không issue, không pull request. Không ai review code, không ai flag bug, không ai comment "ê, naming convention sai rồi" hay "cái hàm này leak memory kìa."
Ba tuần qua chỉ có một người từng bắt bug cho anh là bà cụ ở công viên. Nhưng bà không biết đây là bug - bà thấy thằng nhỏ ngồi thở sai, sửa cho, rồi đi tập dưỡng sinh tiếp.
Không ai biết project_x tồn tại.
Có một khoảnh khắc - ngắn, thoáng qua - anh định copy link repo, dán vào Zalo cho Duy. Xem rồi xóa. Chỉ để có ai đó đọc một dòng commit message, thấy nó buồn cười, nhắn lại "mày điên à." Thế thôi. Một interactive, một user.
Anh không gửi. Xóa tin nhắn rỗng, đặt điện thoại xuống.
Tự review, tự commit, tự push, tự deploy vào chính cơ thể mình.
Cô đơn kiểu này không đau, chỉ yên - yên kiểu một server chạy một mình trong phòng tối, không ai ping, không ai connect, nhưng vẫn up.
---
Tắt laptop, nằm xuống, vẫn cầm điện thoại.
Mở Google Maps. Công viên Lê Thị Riêng. Phóng to. Trên satellite view, mấy gốc cây lớn là chấm xanh đậm trên nền xám bê tông. Xa hơn: 23/9, Tao Đàn, Vườn Lái Thiêu.
Nhiều cây, nhiều node, nhiều nơi để test.
Anh tắt đèn. Màn hình Google Maps sáng trong bóng tối, những chấm xanh lấp lánh như commit history trên GitHub graph.
Ba tuần nữa, anh sẽ có đủ data để so sánh.
Thảo luận
Bình luận chương
0 bình luận
Chưa có bình luận nào. Hãy là người đầu tiên bình luận chương này.