- Hướng dẫn mã nguồn mở giải thích từng bước cách chỉ với điện thoại thông minh vẫn có thể code ở bất cứ đâu, bất cứ lúc nào
- Có thể truy cập máy tính từ xa và chạy mã trực tiếp trong terminal bằng Tailscale, Termius, Claude Code
- Máy tính cần duy trì kết nối Internet 24/7, còn trên điện thoại cần thiết lập VPN và SSH client
- Bao gồm các mẹo giúp tăng hiệu quả phát triển trên di động như xem trước website, truy cập cơ sở dữ liệu, quản lý bản ghi phiên làm việc
- Một cách tiếp cận thực tế giúp mở rộng năng suất và mức độ tự do của lập trình viên bằng cách duy trì môi trường phát triển ngay cả khi đang di chuyển
Tổng quan về Doom Coding
- Doom Coding là cách code trong terminal bằng điện thoại thông minh, một đề xuất cho hoạt động hiệu quả để thay thế Doom Scrolling (lướt vô nghĩa)
- Chỉ cần có kết nối Internet là có thể code ở bất cứ đâu
- Tác giả nhắc đến trải nghiệm truy cập máy tính ở Philadelphia từ Đài Loan để phát triển prototype
- Hướng dẫn này được cấu thành như một chỉ dẫn từng bước có thể thiết lập trong vòng 5 phút
- Dự kiến sẽ có cập nhật so sánh về các công cụ code di động mới nhất (ví dụ: Claude Code on the Web)
Chuẩn bị
- Máy tính có kết nối Internet hoạt động 24/7
- Điện thoại thông minh
- Tài khoản đăng ký Claude Pro
Tổng quan cấu hình
- Xây dựng môi trường phát triển từ xa bằng Tailscale, Termius, Claude Code
- Có thể truy cập trực tiếp terminal của máy tính từ điện thoại thông minh thông qua VPN và SSH
Bước 1: Thiết lập máy tính
- Tắt chế độ ngủ để máy tính luôn bật
- Cần bật SSH/đăng nhập từ xa
- Cài đặt và đăng nhập Tailscale
- Cài đặt Claude Code
Bước 2: Thiết lập điện thoại thông minh
- Cài ứng dụng Tailscale và đăng nhập bằng cùng một tài khoản
- Cài Termius (SSH client trên di động)
- Kiểm tra địa chỉ MagicDNS (ví dụ: my-computer.tailnet-name.ts.net)
- Tạo host mới trong Termius
- Label: tên kết nối
- Hostname: địa chỉ MagicDNS
- Port: 22
- Username/Password: thông tin đăng nhập máy tính
Bước 3: Kết nối và code
- Bật Tailscale VPN trên điện thoại thông minh
- Trong Termius, chọn host rồi kết nối
- Chạy lệnh
claude trong terminal rồi bắt đầu code
Khắc phục sự cố (Troubleshooting)
- Biện pháp khi kết nối thất bại
- Kiểm tra xem Tailscale VPN đã được bật chưa
- Kiểm tra biểu tượng chấm tròn màu xanh cạnh thiết bị trong ứng dụng Tailscale (nếu không có thì có vấn đề mạng)
- Kiểm tra trạng thái nguồn và mở khóa của máy tính
- Khi cấp lại nguồn, bắt buộc phải mở khóa
Thực hành tốt nhất (Best Practices)
- Ghi lại tiến độ
- Khi kết thúc phiên, hãy yêu cầu Claude cập nhật
CLAUDE.md
- Xem trước website
- Xem cơ sở dữ liệu
- Đánh dấu trang các website hữu ích
- Lưu các trang phát triển thường dùng như Google OAuth, GitHub để có thể truy cập ngay từ ứng dụng Chrome
Kết luận
- Doom Coding là một phương thức code từ xa thực tế giúp tiếp tục phát triển ngay cả khi đang di chuyển
- Người dùng được khuyến khích chia sẻ best practice và các trường hợp ứng dụng của riêng mình
- Dự án khép lại bằng lời chào “Happy Doom Coding!”
6 bình luận
Á, xin làm ơn đừng để công ty nhìn thấy bài này.
hahahahahahahahahaha
Hóa ra không phải là kiểu
doomđóĐây đúng là DOOM thật rồi.
Haha, chắc đây là lần đầu tiên mình thấy vui chỉ với file README như vậy.
Ý kiến trên Hacker News
Vì không muốn để máy tính bật 24/7, tôi đã tạo ra một cách giải quyết đồng thời tiết kiệm điện và tự động khởi động
ssh-wol-proxy mà tôi làm sẽ gửi gói WOL đến máy đích khi có kết nối SSH, rồi giữ kết nối cho đến khi máy khởi động xong
Sau đó tôi cấu hình debian-autoshutdown để máy tự tắt nếu không có lưu lượng SSH trong 15 phút
Làm vậy thì chỉ cần SSH từ laptop hay điện thoại là máy chủ sẽ thức dậy trong vòng 30 giây. Không cần bấm nút vật lý
Tôi đã ghi lại quy trình chi tiết trên blog của mình, và hiện đang phát triển phiên bản “machine on proxy (mop)” để bật từ xa Proxmox VM
Tôi dùng terminal trên Android và Claude Code để code ngay cả khi đang di chuyển
Khi ở cùng gia đình, tôi vẫn vừa nấu ăn hay dọn dẹp vừa trò chuyện với Claude để phát triển phần mềm
Với prompt khoảng 500 từ, Claude đã dùng nmap để quét cổng mạng, fuzz bằng cURL, rồi tìm API của cầu nối Hue và một chiếc TV Samsung cũ để tạo script điều khiển đèn cùng một remote HTML+JS
Điều thú vị nhất là lúc Claude ra lệnh cho tôi nhấn nút trên cầu nối Hue để lấy API key
Kết quả là tôi đã hiểu được cấu trúc xác thực của Hue, chế độ Entertainment, và cả giao tiếp dựa trên websocket của SmartThings. Việc học được ngần ấy chỉ với 500 từ là một trải nghiệm đáng kinh ngạc
Nó có đủ ít lỗi để đạt mức năng suất thực tế khi vừa sửa file vừa chạy utility hay không, và liệu chỉ Claude mới cung cấp được kiểu tính năng này hay không
Tôi đã thấy nhiều bài viết nói về việc dùng VPN để code bằng điện thoại, nhưng tự hỏi liệu dùng Claude Code qua giao diện email có tốt hơn không
Ý tưởng là gửi email yêu cầu Claude làm việc, rồi nếu cần thêm thông tin thì Claude sẽ hỏi lại qua mail và mình trả lời để tiếp tục chỉ đạo
Có vẻ cũng có thể gửi ảnh chụp màn hình kết quả chạy chương trình. Trông đơn giản hơn VPN, nên tôi tò mò không biết nhược điểm là gì
Nói thật thì code bằng điện thoại khá thú vị, nhưng tôi không muốn làm vậy trong thực tế. Nếu phát triển nghiêm túc thì cuối cùng laptop vẫn cho trải nghiệm tốt hơn nhiều
Tác giả dùng ứng dụng SSH Termius và Mosh để giữ phiên làm việc, rồi dùng tmux để tiếp tục công việc
Tôi cũng làm gần giống vậy, nhưng thay vì Mac ở nhà thì dùng Linode VPS giá $5. Có vẻ đây là cách mà Pieter Levels(@levelsio) đã phổ biến đầu tiên
Trước đây tôi nghĩ có một chu kỳ qua lại giữa tính toán cục bộ và terminal từ xa, nhưng giờ có vẻ đang chuyển sang cấu trúc từ xa kép (điện thoại → máy tính → máy chủ Claude)
Ngay cả với tư cách nhà nghiên cứu, AI coding vẫn là một lĩnh vực mà tôi chưa thật sự bắt được cảm giác. Nhưng trên điện thoại thì vì gõ phím bất tiện nên nó có vẻ vẫn có ý nghĩa
Nếu dùng Android thì chỉ với QPython cũng đã đủ để code. Có vẻ chẳng cần phải phụ thuộc vào một máy tính từ xa luôn bật 24/7
Việc có thể code bằng cách trò chuyện trên điện thoại tạo cảm giác như một thay đổi lớn
Trước đây code trên điện thoại rất khổ sở, nhưng nếu là kiểu hội thoại thì có khi lại tốt hơn
Giờ đã có thể sửa bug trên giường hoặc tạo MVP khi đang di chuyển
Nếu muốn một cách tiếp cận nhỏ gọn và tích hợp hơn, tôi khuyên dùng trình xây dựng ứng dụng mã nguồn mở tinykit mà tôi tạo ra
Nó có các dịch vụ tích hợp như cơ sở dữ liệu, file, xác thực, thanh toán giống như Lovable, và có thể tạo ứng dụng chỉ với một file Svelte 5. Nó dựa trên Node + PocketBase nên chạy tốt cả trên VPS $2
Tôi dùng toad và opencode để hiện thực hóa ngay những ý tưởng chợt nảy ra. Rất tuyệt để ghi lại suy nghĩ xuất hiện bất ngờ, nhưng có giới hạn với các dự án lớn
Tôi đã dùng bàn phím hacker tùy biến (có các phím ctrl/meta cho GNU screen, emacs) cùng một SSH client bản fork suốt nhiều năm
Ngay cả khi gập Pixel Fold lại, tôi vẫn đạt năng suất gần như tương đương; còn khi mở ra thì màn hình và phím lớn hơn nên thoải mái hơn
Tôi đang rất mong chờ Click Communicator sắp ra mắt
Tôi định viết lại toàn bộ thiết lập của mình thành bài và công khai mã nguồn
Nếu dùng ngôn ngữ súc tích như Clojure thì trên điện thoại vẫn ổn, nhưng cú pháp dài như Java thì khó chịu vì giới hạn 80 ký tự
Có người đùa rằng thay vì gọi là “đăng ký Claude Pro”, nên gọi là ‘Doom Slopping’ thì hợp hơn
Code trên điện thoại không phải chuyện mới. Trước đây cũng đã có nhiều người phát triển trực tiếp bằng tmux
Ở một số nơi, người ta không có laptop nên điện thoại là phương tiện phát triển duy nhất
Tuy vậy, các hình minh họa trong bài lần này khá buồn cười