I am passionate about adopting new technologies and thrive in dynamic environments.
Hế nô anh em, lại là Dũng đây, lâu lắm rồi mới ngồi viết bài dài trên blog...
Nói trước cho anh em đỡ kỳ vọng: tôi không soán ngôi được thí chủ gì đó làm cái Misa trong 1 ngày đâu, khó vãi, cái app của tôi phải mất mấy ngày lận :v
Lại cuối tuần rồi, lại rảnh nên tôi ngồi kể anh em nghe vụ tôi vừa "phản bội" Apple sau 6 năm, kể kỹ hơn cái status trên Facebook một chút, có thêm tí kỹ thuật cho anh em dev nào tò mò =))
Sáu năm trước tôi bỏ hoàn toàn điện thoại Android để dùng full các sản phẩm của Apple. Lý do thì chẳng có gì cao siêu, cái hệ sinh thái tiện quá. Chép trên điện thoại thì sang Mac dán luôn, tin nhắn cũng đồng bộ, với cả tiện nhất cái khoản đang họp có cuộc gọi cũng không phải lục túi quần, thích là tắt luôn trên máy tính.
Dùng lâu thành nghiện. Chứ trước đó thì vẫn phải tự gửi tin cho chính mình để chuyển một cái link, 1 cái ảnh, nghĩ lại thấy thời đó mình cũng khổ thật.

Nhưng tôi chưa bao giờ hết nhớ Android. Nhớ cái cảm giác được vọc, được tùy biến, được làm chủ cái điện thoại của mình, muốn cài gì, chỉnh gì là quyền của mình.
Mấy lần định quay lại rồi lại thôi. Lý do thì anh em nào đang cầm Android mà ngồi Mac chắc hiểu:
Từng cái riêng lẻ thì nhỏ thôi, nhưng gom lại cả ngày thì nói chung là bất tiện vch. Ngoài kia cũng có vài app làm việc này, nhưng cái thì bắt tạo tài khoản, cái thì đẩy dữ liệu lên server của họ, mà tôi thì không thích tin nhắn với OTP của mình đi vòng qua máy chủ của ai đó.
Nên là tuần trước tôi quyết định tự xử luôn, ngồi cùng mấy con AI làm.
Nói cho công bằng thì AI không làm ra sản phẩm thay tôi, nó chỉ nén khối lượng việc vài tuần vào gọn mấy ngày thôi. Tôi chia việc kiểu như đi làm: một con lo phân tích kiến trúc, một con đi đào API của Android với macOS, một con chuyên soi bảo mật và viết test. Còn tôi thì đóng vai PM kiêm kiến trúc sư, chạy qua chạy lại giữa mấy con, đọc lại cái nó viết, cái nào sai thì bắt làm lại.
Chủ yếu tôi quyết mấy món liên quan đến mã hóa đầu cuối, kiến trúc blabla. Mấy cái đó không phải sinh ra từ một câu prompt, mà từ cách tôi muốn bảo vệ dữ liệu của chính mình. AI nó có nhớ Android đâu mà quyết =))
Phần này anh em nào không quan tâm kỹ thuật thì lướt qua nhé, tôi giải thích kiểu ngồi trà đá thôi.
Thứ nhất, không có tài khoản, không có server giữ dữ liệu. Điện thoại Android tự chạy một server nhỏ, Mac ở cùng mạng wifi thì tự tìm thấy nó, hai bên nói chuyện trực tiếp với nhau qua WebSocket. Toàn bộ dữ liệu như copy paste, SMS, thông tin cuộc gọi đều đi đường này. Với iPhone, iPad, khi không chung mạng thì có một relay nhỏ đứng giữa chuyển hộ, nhưng relay này chỉ chuyển gói tin đã mã hóa, không đọc được nội dung và cũng không ghi lại.
Thứ hai, mã hóa đầu cuối luôn bật, không có nút tắt. Lúc ghép nối, Mac hiện mã QR, điện thoại quét là hai bên trao đổi khóa với nhau, từ đó mọi thứ đi qua đều được mã hóa. Tôi cố tình không làm nút tắt, vì cứ có nút tắt là sẽ có người tắt cho "nhanh" =))
Thứ ba, tính năng nào chạy riêng tính năng đó. Copy paste có lỗi thì SMS vẫn chạy, SMS trục trặc thì cuộc gọi không bị kéo theo. Khi hai máy kết nối, hai bên báo cho nhau mình hỗ trợ cái gì, cái gì cả hai cùng có thì mới bật. Bài học này tôi học từ đi làm, một module chết kéo sập cả hệ thống là ác mộng.
Thứ tư, Bluetooth để dành cho một việc duy nhất. Câu tôi hay tự nhắc là "WebSocket cho dữ liệu, Bluetooth cho giọng nói". Android từ bản 10 trở đi chặn app thu âm cuộc gọi, nên muốn nghe gọi trên Mac thì gần như chỉ còn đường Bluetooth. Phần này đang làm dở, đang phải test trên máy thật với cuộc gọi thật, chưa dám hứa gì.

Đến giờ thì nó cũng gọi là hòm hòm rồi, một số tính năng "lõi" mà cái app này có:
... còn nhiều cái hay ho nữa mà chưa xong, như nghe gọi trên Mac, dùng camera điện thoại làm webcam, mở tiếp trang web đang đọc dở trên máy kia. Mấy cái này đang ở giai đoạn thử nghiệm, xong cái nào tôi kể cái đó.
Nó cũng không phải phần mềm điều khiển từ xa, không soi màn hình điện thoại của anh em. Nó chỉ chuyển tín hiệu từ điện thoại lên đúng cái màn hình anh em đang nhìn.
À mà quên mất, Apple nó đặt tính năng này là Handoff, tôi không nghĩ được tên nào hay hơn nên đặt là HandLive :v chắc vài bữa nữa đổi kaka. Mà slogan cũng đang nhờ AI nó đặt cho, "Không bỏ lỡ tín hiệu nào", vì đúng là tất cả những gì tôi cần chỉ có vậy: điện thoại kêu gì thì cái màn hình tôi đang nhìn cũng biết cái đó.
Giờ thì tôi đã cầm lại Android được mấy hôm, và cái Mac vẫn chưa "dỗi" tôi lần nào =))
Tôi cũng build bản beta lên rồi, học đòi mở mã nguồn hoàn toàn, anh em nào muốn vọc vạch hay dùng thử thì tải về chơi thử. Beta nên lỗi chắc chắn vẫn còn, anh em gặp gì cứ comment hoặc mở issue cho tôi nha, tôi sửa liền.
Link đây anh em: github.com/HandLive
Anh em cho tôi xin mỗi repo 1 star nha :D