Simon Willison’s Weblog
jordanhubbard/nanolang
- Jordan Hubbard vừa phát hành NanoLang, ngôn ngữ lập trình tối thiểu, thân thiện với LLM.
- NanoLang sử dụng cú pháp rõ ràng, hiện đại và yêu cầu kiểm tra bắt buộc, dễ đọc cho con người và hỗ trợ tạo mã AI.
- NanoLang biên dịch sang C để có hiệu suất gốc.
- Cú pháp của NanoLang kết hợp giữa C, Lisp và Rust.
- Tài liệu MEMORY.md cung cấp kiến thức cần thiết cho LLM để hiểu và tạo mã NanoLang.
- Kết quả từ thử nghiệm với LLM không thành công ngay lần đầu tiên nhưng thành công khi sử dụng Claude Code để xử lý mã lỗi.
- Kết quả thử nghiệm cho thấy LLM có khả năng giúp giảm bớt khó khăn khi khởi động ngôn ngữ mới.
Scaling long-running autonomous coding
- Wilson Lin tại Cursor thực hiện thí nghiệm với hàng trăm agents lập trình tự động cùng một lúc.
- Hệ thống sử dụng planners và sub-planners để tạo nhiệm vụ cho các workers thực hiện.
- Dự án xây dựng một trình duyệt web mới từ đầu, mã nguồn có hơn 1 triệu dòng code.
- Kết quả công việc được đánh giá bởi một judge agent xem dự án đã hoàn thành hay chưa.
- GitHub Actions CI đã gặp phải lỗi ban đầu, nhưng đã cập nhật hướng dẫn xây dựng trong README.
- Hướng dẫn xây dựng thành công dẫn đến việc tạo ra một cửa sổ trình duyệt hoạt động.
- Repository FastRender sử dụng Git submodules để bao gồm các tài liệu tham khảo của WhatWG và CSS-WG.
- Dự án này là nỗ lực thứ hai gần đây trong việc xây dựng trình duyệt web bằng mã lập trình hỗ trợ AI.
- Chất lượng sản phẩm đạt được có thể không cạnh tranh được với Chrome hay Firefox nhưng vẫn rất ấn tượng.
The Developing Dev
Airbnb Staff Eng on How To Not Get Stuck at Senior and Untold Rules of Calibrations
- Laurent Charignon từng là kỹ sư tại Stripe, Airbnb và Instagram, có kinh nghiệm quản lý.
- Anh gia nhập Airbnb với mục tiêu nâng cao năng suất cho các kỹ sư phần mềm.
- Laurent bắt đầu làm việc tại Airbnb trong nhóm hạ tầng kiểm thử, khi công ty đang ở giai đoạn đầu phát triển công cụ cho lập trình viên.
- Anh quyết định chuyển sang vai trò quản lý để hỗ trợ nhóm tốt hơn và phát triển sự nghiệp cho các kỹ sư trẻ.
- Laurent đối mặt với thách thức về động lực quyền lực khi trở thành quản lý của những người đồng cấp.
- Ông tin rằng việc hiểu và hỗ trợ nhân viên là rất quan trọng trong vai trò quản lý.
- Trong buổi gặp mặt đầu tiên với nhân viên, Laurent đã thể hiện cách tiếp cận hợp tác để giải quyết vấn đề.
Open Source Projects - Latest Discoveries
The definitive pure Rust implementation of the Git protocol
- Gitoxide là dự án tái triển khai toàn bộ hệ sinh thái Git bằng Rust.
- Dự án không chỉ là một wrapper quanh Git, mà là một cài đặt Rust hoàn chỉnh của giao thức và cấu trúc dữ liệu Git.
- Gitoxide bao gồm các crate Rust cho việc thao tác với Git như blobs, trees, commits, và protocols như “smart” qua HTTP hoặc SSH.
- Công cụ chính bao gồm ein (cho phân tích repo) và gix (chức năng Git chính).
- Gitoxide được thiết kế nhanh chóng nhờ vào parsing zero-copy và I/O bất đồng bộ.
- Chương trình đảm bảo an toàn với Rust, loại bỏ nhiều lỗ hổng bảo mật.
- Nó cho phép nhúng Git vào ứng dụng Rust mà không cần gọi dòng lệnh.
- Code của Gitoxide được tổ chức có cấu trúc, dễ hiểu và góp phần phát triển.
- Người dùng có thể cài đặt Gitoxide qua Cargo và thử nghiệm với các lệnh đơn giản.
- Dự án đang phát triển tích cực, với tài liệu và hướng dẫn trên GitHub.
The open-source frontend to watch YouTube without tracking
- Piped là một frontend mã nguồn mở cho YouTube, hoạt động như một proxy bảo vệ quyền riêng tư.
- Piped định tuyến yêu cầu qua máy chủ của nó, loại bỏ mã theo dõi, quảng cáo và JavaScript xâm phạm.
- Giao diện Piped nhẹ và nhanh, giúp tải video nhanh hơn trên các thiết bị cũ hoặc kết nối chậm.
- Không cần tài khoản, người dùng có thể quản lý đăng ký kênh tại trình duyệt mà không cần đăng nhập.
- Piped hoàn toàn mã nguồn mở, cho phép kiểm tra mã và triển khai phiên bản riêng.
- Piped cung cấp API cho các nhà phát triển, giúp tích hợp nội dung YouTube mà không gặp phải hạn chế của Google.
- Người dùng có thể truy cập Piped qua các instance công cộng, như piped.video, hoặc tự cài đặt qua hướng dẫn trên GitHub.
The open-source engine for real-time messaging without vendor lock-in
- Centrifugo là một máy chủ giao tiếp thời gian thực mã nguồn mở và tự lưu trữ.
- Nó hoạt động như một lớp kết nối có thể mở rộng giữa người dùng và backend ứng dụng của bạn.
- Centrifugo không phải là một giải pháp full-stack mà được thiết kế để làm việc cùng với backend hiện tại của bạn.
- Nó hỗ trợ nhiều giao thức như WebSocket, Server-Sent Events (SSE) và SockJS cho tương thích.
- Centrifugo hỗ trợ mở rộng bằng cách sử dụng Redis, KeyDB hoặc Nats cho thông tin liên lạc nội bộ.
- Nó bao gồm các tính năng hiện đại như thông báo tham gia/thoát, lịch sử tin nhắn và phục hồi kết nối cho mạng không ổn định.
- Để thử nghiệm, bạn có thể chạy Centrifugo qua Docker với cấu hình mặc định hợp lý.
- Bạn có thể truy cập UI quản trị tại http://localhost:8000 sau khi chạy máy chủ.
- Tài liệu chi tiết và ví dụ cho nhiều ngôn ngữ lập trình có sẵn trên GitHub để bắt đầu.
- Centrifugo cung cấp sự kiểm soát và tự do của việc tự lưu trữ mà không phụ thuộc vào dịch vụ bên thứ ba.
- Nó lý tưởng cho các dự án cần kiểm soát dữ liệu và chi phí dự đoán lâu dài.
- Sử dụng Centrifugo là một lựa chọn tuyệt vời cho các đội ngũ có khả năng triển khai và duy trì cơ sở hạ tầng của riêng mình.
The open-source alternative to Google Analytics you can self-host
- Rybbit là một nền tảng phân tích mã nguồn mở có thể tự lưu trữ, cho phép người dùng kiểm soát hoàn toàn dữ liệu của mình.
- Người dùng chỉ cần thêm một đoạn mã JavaScript nhỏ vào trang web để theo dõi số lượng trang đã xem và gửi dữ liệu tới server tự lưu trữ của Rybbit.
- Rybbit tập trung vào những thông tin thiết yếu như số lượt xem trang, khách truy cập độc nhất, nguồn giới thiệu và dữ liệu địa lý cơ bản.
- Dữ liệu phân tích không rời khỏi hạ tầng của người dùng, bảo vệ quyền riêng tư và quyền sở hữu dữ liệu (quan trọng cho các dự án nhạy cảm với quyền riêng tư).
- Giao diện điều khiển của Rybbit đơn giản và dễ sử dụng, tiết kiệm thời gian cho người dùng.
- Rybbit có cấu trúc nhẹ và hiệu suất cao, có thể chạy trên server VPS nhỏ mà không tốn nhiều tài nguyên.
- Rybbit là mã nguồn mở, cho phép người dùng kiểm tra toàn bộ mã nguồn và tùy chỉnh theo nhu cầu cụ thể.
- Cài đặt Rybbit dễ dàng thông qua Docker với một vài lệnh đơn giản.
The open-source engine for building React apps with a tiny footprint
- Preact là thư viện JavaScript nhẹ và nhanh, chỉ khoảng 3kb, cung cấp API tương tự như React.
- Preact duy trì các khái niệm cốt lõi như components, hooks (useState, useEffect) và virtual DOM.
- Preact hỗ trợ gần như đầy đủ tính tương thích với hệ sinh thái React và có thể sử dụng trực tiếp nhiều thư viện React phổ biến.
- Thư viện này không làm mới DOM, từ đó giúp dễ dàng gỡ lỗi và đọc mã nguồn.
- Nhiều công ty lớn đã sử dụng Preact trong sản xuất, chứng minh tính bền vững và hiệu suất của nó.
- Để bắt đầu với Preact, người dùng có thể sử dụng Preact CLI để tạo dự án nhanh chóng với lệnh
npx preact-cli create default my-preact-app.
- Việc chuyển đổi từ React sang Preact chỉ cần vài thay đổi cấu hình.
The open-source engine to build and manage your entire WordPress.com site
- Calypso là ứng dụng mã nguồn mở điều khiển giao diện quản lý WordPress.com, hoạt động như một “ứng dụng desktop” trong trình duyệt.
- Calypso tách biệt trải nghiệm quản lý frontend và backend, sử dụng REST API để giao tiếp với các trang WordPress.
- Nó cho phép quản lý toàn bộ các khía cạnh của một trang WordPress từ giao diện web, bao gồm đăng bài, xử lý bình luận, tùy chỉnh chủ đề và xem thống kê.
- Calypso được xây dựng chủ yếu bằng JavaScript, sử dụng Node.js, React, và Redux, mang lại giao diện người dùng rất nhạy.
- Kiến trúc của Calypso là ví dụ điển hình cho ứng dụng web hiện đại và phương pháp “API-first” hay “headless”.
- Các nhà phát triển có thể tìm hiểu về cách xử lý dữ liệu, chuẩn hóa trạng thái, định tuyến và xác thực người dùng qua dự án này.
- Bạn có thể trải nghiệm Calypso bằng cách truy cập WordPress.com và đăng nhập.
- Để phát triển cục bộ, mã nguồn của Calypso có sẵn trên GitHub và cần clone repository, cài đặt phụ thuộc, và chạy máy chủ phát triển.
Build and control your own Discord bot with complete JavaScript
- Discord.js là một module Node.js cho phép tương tác với API Discord bằng JavaScript đơn giản.
- Module này quản lý giao tiếp với máy chủ Discord, giúp lập trình viên tập trung vào logic của bot.
- Discord.js không phải là một “bot builder” với GUI mà là một thư viện cho phép lập trình viên xây dựng bot theo ý muốn.
- Thư viện dựa trên sự kiện giúp mã nguồn trở nên sạch sẽ và phản ứng tốt hơn với các sự kiện trong Discord.
- Discord.js có cộng đồng lớn, tài liệu phong phú và nhiều hướng dẫn cũng như mã ví dụ để học hỏi.
- Bắt đầu với Discord.js yêu cầu cài đặt Node.js, tạo ứng dụng và bot token trên Discord Developer.
- Các lệnh cơ bản cho việc bắt đầu bot bao gồm khởi tạo dự án, cài đặt Discord.js và viết mã cho bot.
- Ví dụ mã cho bot đơn giản trả lời “!ping” với “Pong!” khi được kích hoạt.
- Hướng dẫn đầy đủ có sẵn trong Discord.js Guide cho những ai muốn tìm hiểu sâu hơn.
- Discord.js mang lại sự tự do sáng tạo cho lập trình viên khi phát triển bot trên nền tảng Discord.
Hacker News: Best
🔥 Letter from a Birmingham Jail (1963)
💬 What came first: the CNAME or the A record?
- Vào ngày 8 tháng 1 năm 2026, cập nhật 1.1.1.1 làm giảm việc sử dụng bộ nhớ, nhưng đã gây ra sự cố DNS cho người dùng trên Internet.
- Nguyên nhân không phải là tấn công hay mất mát dịch vụ, mà là sự thay đổi thứ tự của các bản ghi trong phản hồi DNS.
- Một số phần mềm DNS mong đợi các bản ghi CNAME xuất hiện trước, và khi thứ tự thay đổi, việc phân giải bị lỗi.
- Cập nhật về thứ tự CNAME được giới thiệu vào ngày 2 tháng 12 năm 2025 và được phát hành toàn cầu bắt đầu từ ngày 7 tháng 1 năm 2026.
- Phản hồi chứa bản ghi CNAME đôi khi xuất hiện ở phần dưới cùng, sau câu trả lời cuối cùng, gây ra lỗi trong việc theo dõi chuỗi CNAME của các khách hàng DNS.
- Việc thay đổi mã đã tạo ra biến động trong thứ tự sắp xếp của các bản ghi, làm cho khả năng phân giải bị ảnh hưởng.
- Phân giải CNAME là quá trình mà các máy chủ công cộng như 1.1.1.1 phải đi qua nhiều tên để tìm địa chỉ IP cuối cùng.
- Phản hồi không đúng cấu trúc dẫn đến một số khách hàng không thể xử lý đúng cách, dẫn đến việc không tìm thấy địa chỉ IP tương ứng.
🔥 Apple testing new App Store design that blurs the line between ads and results
- Apple đang thử nghiệm thiết kế mới cho quảng cáo tìm kiếm trên App Store trên iPhone.
- Người dùng trên iOS 26.3 nhận thấy nền màu xanh xung quanh kết quả tài trợ không còn hiển thị.
- Sự khác biệt duy nhất giữa kết quả tự nhiên và quảng cáo là sự xuất hiện của biểu ngữ nhỏ “Ad” bên cạnh biểu tượng ứng dụng.
- Hiện tại, việc thử nghiệm có dấu hiệu là một giai đoạn A/B test.
- Apple đã được hỏi về sự thay đổi này và khả năng mở rộng trong tương lai.
- Thay đổi này có thể liên quan đến thông báo tháng 12 về việc kết quả tìm kiếm sẽ bao gồm nhiều kết quả tài trợ hơn.
- Việc loại bỏ nền xanh làm cho các quảng cáo xuất hiện một cách tích hợp hơn trong danh sách.
- Điều này có thể làm khó khăn cho người dùng trong việc phân biệt nhanh chóng quảng cáo và kết quả tự nhiên.
- Nó có thể không tốt cho trải nghiệm người dùng nhưng có khả năng tăng tỷ lệ nhấp chuột, từ đó tăng doanh thu cho Apple trong lĩnh vực quảng cáo.
🔥 American importers and consumers bear the cost of 2025 tariffs: analysis
- Bài báo của Lück et al. được xuất bản trong tạp chí Nature Communications.
- Các tác giả bao gồm 27 nhà nghiên cứu từ nhiều tổ chức khác nhau.
- Nội dung bài báo chưa được công bố công khai.
- Tác giả có sự tham gia của nhiều chuyên gia trong các lĩnh vực như khoa học môi trường và công nghệ khí hậu.
- Nghiên cứu có thể liên quan đến các chủ đề như khí thải carbon và chiến lược giảm thiểu tác động môi trường.
- Thông tin chi tiết và kết quả chưa được công bố trong tài liệu này.
🔥 GLM-4.7-Flash
- GLM-4.7-Flash là mô hình MoE 30B-A3B mạnh nhất trong lớp 30B, cung cấp tùy chọn triển khai nhẹ với hiệu suất và hiệu quả tốt.
- GLM-4.7-Flash có các chỉ số hiệu suất benchmark như sau: AIME 91.6, GPQA 75.2, và τ²-Bench 79.5.
- Mô hình hỗ trợ khung inference vLLM và SGLang cho việc triển khai tại chỗ.
- Để cài đặt vLLM, người dùng sử dụng pip với chỉ dẫn cụ thể từ nguồn GitHub.
- SGLang cũng yêu cầu cài đặt từ nguồn và cập nhật transformers lên phiên bản mới nhất.
- Cú pháp lập trình mẫu cho GLM-4.7-Flash được cung cấp để thực hiện inference.
- Để khởi chạy mô hình với vLLM, cần chỉ định các thông số như kích thước tensor-parallel và các phương pháp giả lập.
- Đối với SGLang, lệnh khởi chạy cũng yêu cầu thông số cấu hình như kích thước TP và thuật toán giả lập.
- Nếu cần trích dẫn công trình nghiên cứu, có hướng dẫn cụ thể để thực hiện.
🔥 Article by article, how Big Tech shaped the EU’s roll-back of digital rights
- Phân tích của Corporate Europe Observatory và LobbyControl cho thấy Big Tech can thiệp vào các đề xuất Digital Omnibus của EU, nhằm giảm quy định về kỹ thuật số, bao gồm GDPR và AI Act.
- Vào cuối tháng 11 năm 2025, Ursula von der Leyen công bố đề xuất Digital Omnibus, được coi là cuộc tấn công chưa từng có vào quyền số và an ninh dữ liệu.
- Digital Omnibus suy giảm quy định bảo vệ dữ liệu và trách nhiệm của chính phủ và công ty, tạo cơ hội cho các kỳ phùng địch thủ của Big Tech.
- Đề xuất này gây ra sự chỉ trích mạnh mẽ từ nhiều tổ chức xã hội dân sự và được Politico gọi là dấu chấm hết cho “Brussels effect”.
- Big Tech đã chi tiêu cho vận động hành lang hơn 151 triệu euro mỗi năm, tăng 33,6% so với năm 2023.
- Các thay đổi đề xuất của Commission đối với GDPR có thể làm hạn chế quyền của người dân và củng cố mô hình kinh doanh dựa vào việc thu thập dữ liệu của Big Tech.
- Commission dự định không xem dữ liệu tạm thời (pseudonymised data) là dữ liệu cá nhân nếu công ty không thể xác định người dùng, làm giảm khả năng bảo vệ của GDPR.
- Quy định mới cho phép công ty tự xác định khi nào dữ liệu của họ không thuộc phạm vi GDPR, tạo điều kiện cho việc lạm dụng dữ liệu.
- Các công ty như Meta và Google có thể kiểm soát dữ liệu cá nhân hơn bằng cách tuyên bố rằng dữ liệu không thể truy nguyên về cá nhân.
🔥 Amazon is ending all inventory commingling as of March 31, 2026
💬 Wikipedia: WikiProject AI Cleanup
- WikiProject AI Cleanup là một sáng kiến trên Wikipedia nhằm cải thiện chất lượng bài viết về trí tuệ nhân tạo.
- Dự án có 217 điểm đánh giá và 84 bình luận từ cộng đồng người dùng.
- Mục tiêu của dự án là xác định và sửa chữa các vấn đề trong các bài viết liên quan đến AI.
🔥 Radboud University selects Fairphone as standard smartphone for employees
- Radboud University sẽ phát Fairphone làm điện thoại thông minh chuẩn từ ngày 1 tháng 2 năm 2026.
- Quyết định này dựa trên lý do bền vững, tiết kiệm chi phí và hỗ trợ quản lý.
- Fairphone có các bộ phận dễ thay thế như pin và màn hình, kéo dài tuổi thọ của thiết bị.
- Sản xuất Fairphone sử dụng vật liệu tái chế, như nhựa và nhôm, và chú trọng đến điều kiện làm việc an toàn.
- Nhân viên có thể nhận Fairphone mới hoặc điện thoại Samsung đã qua sử dụng nếu đáp ứng yêu cầu kỹ thuật và tuổi đời.
- Nhân viên có iPhone cũ từ đại học có thể tiếp tục sử dụng, nhưng không có iPhone trả lại nào được cấp lại.
- Nhân viên cũng có thể yêu cầu SIM RU để sử dụng với điện thoại riêng, nhưng không được hoàn trả chi phí.
- Fairphone có tổng chi phí thấp hơn so với các thiết bị tương đương do tuổi thọ lâu dài.
- Radboud University chỉ cần quản lý một mẫu điện thoại, giúp giảm hàng tồn kho và tăng tốc độ hỗ trợ.
- Fairphone cung cấp bảo hành năm năm và hỗ trợ phần mềm dài hạn lên tới tám năm.
- Điều này giúp giảm nhu cầu thay thế thiết bị nhanh chóng, phù hợp với chiến lược tuần hoàn của đại học.
🔥 A decentralized peer-to-peer messaging application that operates over Bluetooth
- Bitchat là ứng dụng nhắn tin phân cấp, hoạt động trên mạng lưới Bluetooth mesh.
- Không cần internet, không có máy chủ, không cần số điện thoại.
- Ứng dụng truyền thống phụ thuộc vào hạ tầng trung tâm có thể bị giám sát hoặc kiểm duyệt.
- Bitchat tạo ra mạng lưới giao tiếp tạm thời chỉ bằng các thiết bị gần nhau.
- Mỗi thiết bị đóng vai trò là cả khách và máy chủ, tự động phát hiện và chuyển tiếp tin nhắn.
- Phương pháp này đảm bảo chống kiểm duyệt và độc lập với hạ tầng.
- Mạng lưới vẫn hoạt động trong thời gian không có internet, thiên tai, biểu tình hoặc tại những khu vực kết nối hạn chế.
- Phiên bản iOS/macOS có mặt trên App Store và hỗ trợ từ iOS 16.0+.
- Phiên bản Android có mặt trên Play Store và hỗ trợ từ Android 8.0+.
- Mã nguồn của ứng dụng có sẵn trên GitHub.
- Phần mềm được phát hành vào miền công cộng.
My First Finance Project: When Diversification Doesn’t Diversify
-
Tôi bắt đầu học về tài chính sau khi đọc một số cuốn sách thú vị và nhận thấy sự khác biệt lớn giữa báo cáo của truyền thông và thực tế ở Campuchia.
-
Tôi quyết định nghiên cứu mối quan hệ giữa rủi ro và lợi suất điều chỉnh rủi ro của các quỹ ETF theo dõi các chỉ số quốc gia có rủi ro cao và thấp.
-
Trong quá trình nghiên cứu, tôi phát hiện ra việc chọn ETF giúp tránh các vấn đề như bias sống sót và thay đổi phân loại quốc gia.
-
Việc lập trình cho dự án dễ hơn mong đợi nhờ dữ liệu tài chính đã được xử lý sạch sẽ, chỉ cần sử dụng các Pandas dataframes.
-
S&P500 đã vượt trội hơn cả Thị trường Frontier và Thị trường Mới nổi khoảng 10% mỗi năm.
-
Số liệu cho thấy khi S&P500 giảm, Thị trường Frontier còn giảm mạnh hơn, với mức giảm lên tới 85-91% so với S&P trong 10 tháng tồi tệ nhất.
-
Kết quả phân tích cho thấy các thị trường này không cung cấp sự bảo vệ đáng kể trong thời điểm suy thoái, mặc dù về lý thuyết có thể mang lại lợi ích phân tán.
-
Dự án này đã dạy tôi rằng để hiểu rõ hơn về các chỉ số tài chính, tốt hơn là nên có một vấn đề cụ thể để nghiên cứu.
The RAM Pandemic
- Nâng cấp PC trở thành sản phẩm cao cấp do nhu cầu AI tiêu tốn tài nguyên phần cứng (IPC2U, 2026).
- Giá DDR5 tăng mạnh khi các nhà sản xuất chuyển đổi dây chuyền sản xuất để đáp ứng nhu cầu của trung tâm dữ liệu AI (2024–2026 Global Memory Supply Shortage, 2026).
- HBM, loại RAM chuyên dụng cho AI, sản xuất tốn gấp ba lần nguyên liệu thô so với DDR5 thường (Sauter, 2026).
- Các công ty công nghệ lớn như Samsung và SK Hynix tái phân bổ dây chuyền sản xuất để tăng lợi nhuận, tạo ra thiếu hụt nguồn cung cho người dùng cá nhân (Saleem, 2026).
- Dự báo thị trường cho hai năm tới cho thấy giá phần cứng cao sẽ duy trì trong dài hạn (Temsamani, 2026).
- Nhiều thiết bị đã bị rút giảm RAM từ 16GB xuống 12GB hoặc 8GB (IDC, 2026).
- Các nhà máy sản xuất bán dẫn mới sẽ không đạt công suất đầy đủ cho đến năm 2027 hoặc 2028 (Hornbeck, 2026; Micron, 2026).
- AI được dự đoán sẽ tiêu thụ đến 70% tổng số chip nhớ toàn cầu vào cuối năm 2026 (Hunt, 2026).
- Nhu cầu AI khiến nhiều tài nguyên công nghệ được sử dụng cho các tác vụ không có giá trị lâu dài, đặt ra câu hỏi về tính bền vững của việc tiêu thụ này.
- Thời đại coi RAM là hàng hóa giá rẻ đã kết thúc, và người dùng cá nhân phải cạnh tranh với nhu cầu lớn từ AI.
- Ngành công nghiệp phải tìm giải pháp cân bằng giữa nhu cầu AI và khả năng cung cấp, nếu không sẽ có nguy cơ giá tăng mãi mãi.
Deploying a Real React App on an Ubuntu VM with AWS and Serving It with Nginx
- Hướng dẫn này mô tả cách khởi tạo máy chủ Ubuntu trên AWS EC2 và triển khai ứng dụng React qua Nginx.
- Bạn cần có tài khoản AWS, hiểu biết cơ bản về dòng lệnh Linux, và một công cụ SSH.
- Khởi tạo EC2 với tên tùy chọn, chọn AMI Ubuntu Server 22.04 LTS, loại instance t3.micro, và thiết lập cổng cho SSH và HTTP.
- Sao chép địa chỉ IP công cộng của instance để dùng cho kết nối SSH và truy cập ứng dụng.
- Cài đặt Node.js và npm, xác thực việc cài đặt thành công.
- Cài đặt và khởi động Nginx, kiểm tra trạng thái hoạt động.
- Clone mã nguồn ứng dụng React về máy chủ và chỉnh sửa thông tin cần thiết.
- Cài đặt dependencies và xây dựng ứng dụng để tạo thư mục build/ chứa tệp tĩnh tối ưu.
- Phục vụ ứng dụng React qua Nginx bằng cách sao chép nội dung build vào thư mục root tài liệu của Nginx.
- Cấu hình Nginx cho ứng dụng Single-Page và khởi động lại dịch vụ Nginx.
- Kiểm tra triển khai bằng cách truy cập vào địa chỉ IP công cộng và xem ứng dụng trong trình duyệt.
Implementing Copy-to-Clipboard in Rails 8: The Modern Way
- Tạo controller Stimulus cho Rails 8 bằng lệnh:
bin/rails generate stimulus clipboard.
- Cập nhật file
app/javascript/controllers/clipboard_controller.js để xử lý sao chép văn bản từ input, textarea hoặc các phần tử HTML khác.
- Sử dụng API
navigator.clipboard để sao chép nội dung và hiển thị thông báo thành công.
- Trường
successDuration mặc định là 2000ms, có thể thay đổi trong HTML (data-clipboard-success-duration-value).
- Ví dụ sử dụng gồm hai kịch bản: sao chép từ input cho URL và sao chép văn bản cố định từ div hoặc span.
- API
navigator.clipboard yêu cầu phải chạy trên HTTPS để hoạt động trên môi trường sản xuất.
- Nếu nút bấm chứa icon, thay vì thay đổi
innerText, sử dụng CSS class để ẩn hiện các phần tử span khác nhau cho icon và văn bản “Copied!”.
🐛 QA is Dead (Long Live the Agent): How Cursor’s “Bug Bot” Fixes Code While You Sleep
- Phần tốn thời gian nhất trong lập trình phần mềm không phải là viết mã mà là gỡ lỗi.
- Fix bug truyền thống là 10% lập trình và 90% tái hiện lỗi (Cursor blog).
- Cursor vừa ra mắt Bug Bot, một Autonomous Agent giúp tự động tái hiện bug mà không cần người dùng cung cấp thông tin chi tiết.
- Bug Bot quét toàn bộ codebase và hiểu các phụ thuộc, gọi API, và logic quản lý trạng thái liên quan đến lỗi.
- Bot viết kịch bản tái hiện lỗi và tự động chạy nó, tự điều chỉnh cho đến khi tái hiện lỗi thành công.
- Khi có kịch bản tái hiện thất bại, Bot phân tích và sửa đổi kịch bản để đạt được kết quả chính xác.
- Sau khi tái hiện thành công, Bot tìm cách sửa lỗi nguồn dễ dàng hơn cho LLM.
- Bug Bot thiết lập các vòng phản hồi, không giống như nhiều AI công cụ ngày nay chỉ đơn giản trả mã.
- Kiến trúc của Bug Bot bao gồm: Trigger, Planner, Executor, và Evaluator.
- Vai trò của nhà phát triển đang thay đổi từ “Viết logic” thành “Thiết kế hệ thống viết logic”.
- Manual QA không chết nhưng đang giảm tải, vai trò của QA engineer đang chuyển sang xây dựng các đại lý tự động mới.
- Bug Bot là một dấu hiệu cho thấy tương lai gần sẽ có nhiều AI hỗ trợ trong quy trình làm việc.
Framework Yorgunluğu ve RustAPI’nin Doğuşu: Geliştirici Deneyimini (DX) Geri Kazanmak
- Framework Yorgunluğu, geliştiricileri sürekli yeni araçlar öğrenmeye zorlayarak tükenmeye sebep oluyor.
- RustAPI, bu karmaşıklığa ve yorgunluğa tepki olarak geliştirilmiştir.
- RustAPI, “Facade Architecture” (Ön Yüz Mimarisi) kullanarak uygulamanın bakım yükünü azaltır.
- Yeni kütüphane sürümleri, mevcut kodun çalışmasını etkilemez.
- RustAPI, JWT, CORS, Rate Limiting ve otomatik OpenAPI desteği sunar (“Batteries Included” felsefesi).
- Sadece 5 satır kod ile REST endpoint’i oluşturulabilir.
- RustAPI, token maliyetlerini azaltmak için TOON (Token-Oriented Object Notation) formatını kullanır.
- TOON, JSON’a göre %50-58 oranında token tasarrufu sağlar.
- RustAPI, saniyede ~185.000 - 220.000 istek karşılayabilme kapasitesine sahiptir.
- Kullanım kolaylığı ve performans arasında bir denge sağlar.
- RustAPI, “trait bound” hataları ve versiyon uyumsuzlukları sorunlarını çözer.
- Modern geliştirici deneyimi (DX) sunarak iş mantığına odaklanmayı kolaylaştırır.
🚀 Deploying a Highly Available Web Application on AWS using ALB & Auto Scaling (Beginner-Friendly)
- Sử dụng các dịch vụ chính của AWS: VPC, Application Load Balancer, Auto Scaling Group, EC2, và NAT Gateway.
- Kiến trúc tuân theo các nguyên tắc tốt nhất của AWS như an ninh mạng, khả năng sẵn có cao, và tự động mở rộng.
- EC2 instances không có địa chỉ IP công khai; chỉ ALB được công khai ra internet.
- Thiết kế một VPC an toàn với CIDR: 10.0.0.0/16 và tạo 4 subnet (2 public và 2 private).
- Tạo Internet Gateway và kết nối với VPC để hỗ trợ ALB và NAT Gateway.
- Tạo NAT Gateway trong public subnet với Elastic IP để cho phép EC2 private truy cập internet an toàn.
- Cấu hình bảng định tuyến cho public và private subnets một cách chính xác.
- Cài đặt Security Groups cho ALB (HTTP) và EC2 (HTTP chỉ từ ALB, SSH từ IP của bạn).
- Sử dụng Launch Template cho EC2 với AMI Ubuntu 22.04 và cấu hình Auto Scaling Group với các tham số tối thiểu và tối đa.
- Xác minh hoạt động của ALB bằng cách sao chép tên DNS ALB và kiểm tra sự phân phối tải và khả năng mở rộng tự động.
- Dự án có mã nguồn và tài liệu chi tiết trên GitHub: https://github.com/IrfanPasha05/aws-alb-autoscaling-project.
- Kiến trúc này thường được sử dụng trong môi trường sản xuất và trong các vai trò DevOps & Cloud Engineer.
Speeding Up PostgreSQL in Containers
- PostgreSQL là nút thắt cổ chai chính trong quá trình chạy thử nghiệm với thời gian hoàn thành hơn 1 giờ (nguồn: thực tế).
- Hoạt động TRUNCATE sau mỗi thử nghiệm làm tăng thời gian chờ do PostgreSQL phải đồng bộ hóa dữ liệu tới đĩa.
- PostgreSQL tiêu tốn 81.7% CPU chỉ để thực hiện một lệnh TRUNCATE, kéo dài hơn 15 giây.
- Điều chỉnh cấu hình PostgreSQL với ba thay đổi đã cải thiện hiệu suất đáng kể:
- Thêm cờ –nosync để bỏ qua các lệnh fsync(), giảm thiểu độ trễ trong môi trường CI.
- Tăng POSTGRES_SHARED_BUFFERS lên 256MB để cải thiện khả năng lưu trữ dữ liệu.
- Sử dụng tmpfs cho thư mục dữ liệu, loại bỏ hoàn toàn việc I/O đĩa.
- Kết quả là thời gian chạy thử nghiệm giảm từ khoảng 60 phút xuống còn 10 phút, cải thiện gấp 6 lần.
- Các bài kiểm tra trước khi tối ưu hóa tốn 25-30 giây, trong khi sau khi tối ưu hóa, thời gian giảm còn 0.4-0.5 giây.
- Lợi ích lớn nhất đến từ việc giảm thiểu I/O đĩa trong các hoạt động TRUNCATE và khởi tạo cơ sở dữ liệu (nguồn: số liệu thực tế).
Data Engineering Uncovered: What It Is and Why It Matters
- Data engineering là việc thiết kế, xây dựng và duy trì hạ tầng cho dữ liệu chảy từ nguồn đến đích.
- Data Engineers chịu trách nhiệm thu thập, chuyển đổi và lưu trữ dữ liệu cho phân tích.
- Quy trình này thường được gọi là ETL (Extract, Transform, Load) hoặc ELT (Extract, Load, Transform).
- Data engineering giúp tạo ra báo cáo tức thì và nguồn dữ liệu chính xác cho tổ chức.
- Ba vai trò chính liên quan đến dữ liệu là Data Engineer, Data Scientist và Data Analyst, mỗi vai trò có trọng tâm và kỹ năng khác nhau.
- Data engineering có thể phù hợp cho những người thích giải quyết vấn đề và xây dựng hệ thống đáng tin cậy.
- Chuỗi bài viết này sẽ cung cấp kiến thức về kỹ thuật và công cụ trong data engineering, cùng với lộ trình phát triển nghề nghiệp.
Cloudflare Workers performance: an experiment with Astro and worldwide latencies
- Cloudflare Workers cho phép lưu trữ trang và chạy mã mà không cần quản lý máy chủ.
- Tài nguyên được phân phối toàn cầu giúp giảm độ trễ và tăng khả năng mở rộng.
- Nền tảng phát triển bao gồm nhiều công cụ như lưu trữ, cơ sở dữ liệu, và AI.
- Có cấp độ miễn phí đủ cho hầu hết các dự án nhỏ.
- Không phù hợp cho các ứng dụng lớn và phức tạp.
- Tốn kém hơn khi xử lý mã API/SSR lớn.
- Không thích hợp cho các tác vụ yêu cầu tài nguyên cao như mô hình thống kê hoặc tính toán khoa học.
- Kết nối dài hạn không được khuyến khích, nên sử dụng polling thay vì giữ kết nối mở.
- Dự án được chứng minh là ứng dụng “Quote of the Day” được lưu trữ trong KV store.
- Đã thử nghiệm độ trễ thực tế từ nhiều khu vực với kết quả là độ trễ ở Frankfurt là 30ms, Paris là 33ms.
Let’s Build with AI Like It’s 1998
- Tôi là một full-stack developer và digital designer với hơn 10 năm kinh nghiệm (không nguồn).
- Portfolio của tôi được thiết kế theo phong cách Windows 98 và lấy cảm hứng từ MySpace (không nguồn).
- Dự án được triển khai trên Google Cloud Run, cho thấy cơ sở hạ tầng có khả năng mở rộng và tích hợp trực tiếp trang web (không nguồn).
- Ứng dụng được xây dựng như một ứng dụng web kiểu OS hoàn toàn tương tác, sử dụng React và Vite (không nguồn).
- Giao diện sử dụng 98.css làm cơ sở phong cách và CSS tùy chỉnh cho hành vi phản hồi (không nguồn).
- Tính năng tương tác bao gồm một media player tích hợp SoundCloud, trò chơi Pong và Notepad Messenger (không nguồn).
- Ứng dụng phục vụ bởi server Node.js + Express, xử lý routing SPA và tài sản tĩnh (không nguồn).
- Dự án kết hợp thiết kế hoài niệm với kỹ thuật hiện đại, thể hiện sự kết hợp giữa giao diện biểu đạt và kiến trúc sản xuất (không nguồn).
Querying & Filtering in Oracle Databases: What Actually Clicked for Me As a Beginner
- Học cách truy vấn và lọc các dòng dữ liệu trong SQL với bảng toys.
- Tạo một bảng toys với các cột toy_name, colour, và price (Oracle).
- Sử dụng câu lệnh SELECT để chỉ chọn các cột mong muốn thay vì tất cả bằng SELECT *.
- Phân khu vực dữ liệu qua câu lệnh WHERE để lọc xếp loại đồ chơi theo màu sắc.
- Phân biệt giữa AND và OR; AND được xử lý trước OR.
- Sử dụng dấu ngoặc đơn để nhóm các điều kiện trong SQL.
- Thay thế nhiều điều kiện bằng câu lệnh IN để làm cho câu lệnh sinh động và dễ hiểu hơn.
- Sử dụng BETWEEN để xác định các khoảng giá với hai giá trị biên bao gồm cả hai đầu.
- Khả năng sử dụng LIKE với ký tự đại diện (%) để tìm kiếm các mẫu cụ thể trong dữ liệu.
- NULL không giống như các giá trị khác và không thể so sánh trực tiếp bằng cách sử dụng dấu “=”.