Malleable Media and AI-Driven Interface InventionPhương tiện linh hoạt và phát minh giao diện do AI thúc đẩyTools for Thought and Personal Software VisionsCông cụ hỗ trợ tư duy và tầm nhìn về phần mềm cá nhân

English · Tiếng Việt

Mặc định · 19px

Ẩn tất cả cũng ẩn các nút hình trong nội dung.

Ẩn tất cả cũng ẩn dấu ghi chú và phần bài học tổng hợp.

App Silos and Malleable Substrates · Tools for Thought and Personal Software VisionsCác ốc đảo ứng dụng và nền tảng linh hoạt · Công cụ hỗ trợ tư duy và tầm nhìn về phần mềm cá nhân

Bản chép lời tương tác

Malleable Media and AI-Driven Interface InventionPhương tiện linh hoạt và phát minh giao diện do AI thúc đẩy

This talk explores how combining composable software architectures with AI coding agents can break down monolithic app silos and liberate user interface invention. Through live demonstrations of deeply extensible text editors and active reading environments, the speakers show how declarative facet systems allow non-programmers to prototype complex dynamic media without gatekeepers, while examining the cognitive costs and educational mindset shifts needed for future interface design.Bài nói chuyện khám phá cách kết hợp kiến trúc phần mềm có khả năng kết hợp với các tác nhân lập trình AI để phá vỡ những ốc đảo ứng dụng nguyên khối và giải phóng khả năng phát minh giao diện người dùng. Qua các phần trình diễn trực tiếp về trình soạn thảo văn bản có khả năng mở rộng sâu và môi trường đọc chủ động, các diễn giả cho thấy hệ thống facet khai báo giúp người không chuyên lập trình tạo mẫu phương tiện động phức tạp mà không cần qua người gác cổng, đồng thời xem xét những chi phí nhận thức và sự chuyển đổi tư duy giáo dục cần thiết cho thiết kế giao diện trong tương lai.

Loại ghi chú

48 bài học từ bài nói này

Chuyển đến mục
App Silos and Malleable SubstratesCác ốc đảo ứng dụng và nền tảng linh hoạt

Tools for Thought and Personal Software VisionsCông cụ hỗ trợ tư duy và tầm nhìn về phần mềm cá nhân

Andy Matuschak
Just a few thousand years ago, our ancestors did not have written language.Khái niệmExternal cognitive tools like written media transform human cognition by enabling abstract reasoning beyond innate working memory constraints.Các công cụ nhận thức bên ngoài như truyền thông dạng viết làm thay đổi nhận thức của con người bằng cách cho phép suy luận trừu tượng vượt khỏi những giới hạn của bộ nhớ làm việc bẩm sinh. We're almost the same as those humans biologically, but what goes on in our minds would be totally alien to them. Growing up in a world with paper and pens has changed us. We can follow a chain of thought beyond the extent of our working memory. We can think abstractly and analytically.
Chỉ vài nghìn năm trước, tổ tiên chúng ta chưa có ngôn ngữ viết. Về mặt sinh học, chúng ta gần như giống hệt những con người ấy, nhưng những gì diễn ra trong tâm trí chúng ta hẳn hoàn toàn xa lạ với họ. Lớn lên trong một thế giới có giấy và bút đã thay đổi chúng ta. Chúng ta có thể theo dõi một chuỗi suy nghĩ vượt quá giới hạn của trí nhớ làm việc. Chúng ta có thể suy nghĩ trừu tượng và phân tích.
We can build on ideas of people we've never met. and leave our own for posterity. But it wasn't natural selection that gave us those abilities. It was other people. We've inherited that astounding power to create tools which shape our own thoughts, the power to transcend our own mental capabilities.
Chúng ta có thể xây dựng dựa trên ý tưởng của những người chưa từng gặp, rồi để lại ý tưởng của mình cho hậu thế. Nhưng không phải chọn lọc tự nhiên đã trao cho chúng ta những khả năng ấy. Đó là những người khác. Chúng ta thừa hưởng năng lực đáng kinh ngạc để tạo ra các công cụ định hình chính suy nghĩ của mình, năng lực vượt qua những khả năng tinh thần của bản thân.
Now, written language was the work of whole cultures, but what excites me most in my work is that small groups and individuals can also invent transformative tools for thought.Khái niệmTransformative tools for thought distill domain insights into external representations, allowing individuals to extend personal cognition.Các công cụ tư duy mang tính đột phá đúc kết tri thức chuyên ngành thành các biểu diễn bên ngoài, cho phép cá nhân mở rộng nhận thức của bản thân. I think of Playfair and statistical graphics in the 18th century, or of Mendeleev and the periodic table in the 19th. And tools like this are discovered as much as invented. Their power lies in distilling deep domain insights like periodic law into external forms that we can use to think and communicate. Now, one of the great dreams of the personal computing revolution was that we would all have not only our own computers, but also our own software, exquisitely tuned to our own purposes.
Ngôn ngữ viết là thành quả của cả những nền văn hóa, nhưng điều khiến tôi hứng thú nhất trong công việc là các nhóm nhỏ và cá nhân cũng có thể phát minh ra những công cụ biến đổi cách tư duy. Tôi nghĩ đến Playfair và đồ họa thống kê vào thế kỷ 18, hay Mendeleev và bảng tuần hoàn vào thế kỷ 19. Những công cụ như vậy cũng được khám phá nhiều không kém được phát minh. Sức mạnh của chúng nằm ở việc chưng cất những hiểu biết sâu sắc của một lĩnh vực, như định luật tuần hoàn, thành các hình thức bên ngoài mà chúng ta có thể dùng để tư duy và giao tiếp. Một trong những giấc mơ lớn của cuộc cách mạng máy tính cá nhân là tất cả chúng ta không chỉ có máy tính riêng, mà còn có phần mềm riêng, được tinh chỉnh tuyệt đối theo mục đích của mình.
Chuyển đến mục
App Silos and Malleable SubstratesCác ốc đảo ứng dụng và nền tảng linh hoạt

Application Monoliths and Programming TyranniesỨng dụng nguyên khối và sự chuyên chế của lập trình

But instead, we sleepwalked into 2 accidental tyrannies.Khái niệmMonolithic application models restrict personal workflows by confining user tools within rigid, vendor-defined walled gardens that prevent arbitrary tool composition.Các mô hình ứng dụng đơn khối hạn chế quy trình làm việc cá nhân bằng cách giam hãm công cụ của người dùng trong các khu vườn khép kín cứng nhắc do nhà cung cấp định nghĩa, ngăn cản việc kết hợp công cụ một cách tự do. The first is the application model. Because software is expensive to build, developers need to capture as large a market as possible, and that's led to one-size-fits-all packages. You can only adjust the knobs that the developer gives you, and your tools can only be combined at the junctions the developer anticipated. We live in a landscape of walled gardens, and the result is that our workflows often don't work the way that we wish they did.
Nhưng thay vào đó, chúng ta đã vô thức rơi vào hai chế độ chuyên chế tình cờ. Thứ nhất là mô hình ứng dụng. Vì phần mềm tốn kém để xây dựng, các nhà phát triển cần thu hút thị trường lớn nhất có thể, và điều đó dẫn đến những gói phần mềm một-cho-tất-cả. Bạn chỉ có thể điều chỉnh những nút mà nhà phát triển cung cấp, và chỉ có thể kết hợp các công cụ tại những điểm nối mà nhà phát triển đã dự liệu. Chúng ta sống trong một cảnh quan gồm những khu vườn có tường bao quanh, và kết quả là quy trình làm việc thường không vận hành theo cách ta mong muốn.
The second is programming itself.Khái niệmFraming programming as a specialist domain rather than a universal literacy reduces users to passive consumers and hampers broader human-computer interface invention.Coi việc lập trình là một lĩnh vực chuyên sâu thay vì một năng lực phổ quát sẽ biến người dùng thành những người tiêu dùng thụ động và cản trở sự đổi mới giao diện người - máy tính rộng lớn hơn. Rather than creating a new universal literacy, we created a specialist priesthood. The familiar version of that complaint is that end users are relegated to being passive consumers of the dynamic medium, But I'll also make the case that even within the tech industry and within HCI research, programming culture is accidentally holding back invention. Now though, I see some new paths out of these traps. So let's focus first on apps.
Thứ hai là chính việc lập trình. Thay vì tạo ra một năng lực đọc viết phổ quát mới, chúng ta lại tạo ra một tầng lớp tư tế chuyên môn. Cách phàn nàn quen thuộc là người dùng cuối bị đẩy xuống thành những người tiêu dùng thụ động của môi trường động. Nhưng tôi cũng cho rằng ngay trong ngành công nghệ và nghiên cứu HCI, văn hóa lập trình đang vô tình kìm hãm phát minh. Tuy vậy, giờ đây tôi thấy những lối đi mới thoát khỏi các cái bẫy này. Trước hết, hãy tập trung vào ứng dụng.
Chuyển đến mục
App Silos and Malleable SubstratesCác ốc đảo ứng dụng và nền tảng linh hoạt

End-User Programming and AI Coding AgentsLập trình cho người dùng cuối và tác nhân lập trình AI

Now, of course, the application model is a familiar villain in our field.Khái niệmAI coding agents revitalize end-user programming beyond historical spreadsheet limits by empowering non-programmers to build custom software.Các đại lý AI lập trình hồi sinh khả năng lập trình của người dùng cuối vượt khỏi các giới hạn bảng tính lịch sử bằng cách trao quyền cho những người không phải lập trình viên tự xây dựng phần mềm tùy chỉnh. People have been trying to break us out of these silos for decades. And one major thread of work, end-user programming, aims to allow non-professional programmers to build their own software. That has turned out to be awfully difficult in practice, as spreadsheets are the major success story, but it's been hard to produce others until recently. Of course, you know, now we have coding agents.
Dĩ nhiên, mô hình ứng dụng là một kẻ phản diện quen thuộc trong lĩnh vực của chúng ta. Người ta đã cố gắng đưa chúng ta thoát khỏi các silo này suốt nhiều thập kỷ. Một hướng nghiên cứu lớn—lập trình cho người dùng cuối—nhằm cho phép những người không phải lập trình viên chuyên nghiệp tự xây dựng phần mềm. Trên thực tế, điều đó cực kỳ khó; bảng tính là câu chuyện thành công lớn, nhưng cho đến gần đây, việc tạo ra những thứ khác vẫn rất khó. Dĩ nhiên, giờ chúng ta đã có các coding agent.
Everybody can build their own software, right?Khái niệmNon-programmers leverage AI coding agents primarily to build peripheral glue code and automations that connect incompatible software systems.Những người không phải lập trình viên tận dụng các đại lý AI lập trình chủ yếu để xây dựng mã kết nối ngoại vi và các quy trình tự động hóa nhằm liên kết các hệ thống phần mềm không tương thích. Well, maybe. As I look around in early 2026, I see non-programmers building things like personal dashboards and automations, writing scripts to connect or combine data from different incompatible systems. We're already knocking some cracks into the app silos there. And of course, I, I see a lot of fun toys, but all in all, I mostly see non-programmers using agents to create glue code and tools at the periphery of their real work.
Ai cũng có thể tự xây dựng phần mềm, đúng không? Có lẽ vậy. Khi nhìn quanh vào đầu năm 2026, tôi thấy những người không lập trình đang xây dựng những thứ như bảng điều khiển cá nhân và các quy trình tự động hóa, viết script để kết nối hoặc kết hợp dữ liệu từ những hệ thống khác nhau, không tương thích. Chúng ta đã bắt đầu tạo ra một vài vết nứt trong các silo ứng dụng. Và dĩ nhiên, tôi thấy rất nhiều món đồ chơi thú vị, nhưng nhìn chung, tôi chủ yếu thấy những người không lập trình dùng agent để tạo mã kết nối và các công cụ ở vùng ngoại vi công việc thực sự của họ.
Chuyển đến mục
App Silos and Malleable SubstratesCác ốc đảo ứng dụng và nền tảng linh hoạt

Extensibility Barriers in Mega-App WorkstationsRào cản mở rộng trong các trạm làm việc dạng siêu ứng dụng

That's fantastic. And I'm, I'm sure we'll see people build ever more ambitious personal tools, but I want more. Let's play this trend out further. Now, as far as I know, filmmakers aren't yet using coding agents to personalize their editing workstations. And musicians aren't yet using coding agents to personalize their engraving software.
Điều đó thật tuyệt. Và tôi chắc rằng chúng ta sẽ thấy mọi người xây dựng những công cụ cá nhân ngày càng tham vọng hơn, nhưng tôi muốn nhiều hơn thế. Hãy đẩy xu hướng này đi xa hơn. Theo tôi biết, các nhà làm phim vẫn chưa dùng coding agent để cá nhân hóa máy trạm dựng phim. Các nhạc sĩ cũng chưa dùng coding agent để cá nhân hóa phần mềm khắc nhạc.
So what would it take to let non-programmers improvise improvements to complex interfaces, interfaces at the very center of their work?Khái niệmConventional plugin systems isolate extensions in secondary panels, preventing non-programmers from directly customizing the primary interactive canvas of complex workstations.Các hệ thống tiện ích mở rộng truyền thống cô lập các tiện ích trong các bảng phụ, ngăn cản những người không phải lập trình viên trực tiếp tùy chỉnh không gian tương tác chính của các trạm làm việc phức tạp. I want to see the dream of personal dynamic media fulfilled for the most important parts of their practice. Those parts often take place in extremely complex mega apps. A filmmaker will spend thousands of hours in Adobe Premiere. A composer will spend thousands of hours in Sibelius.
Vậy cần gì để những người không lập trình có thể ứng biến cải tiến cho các giao diện phức tạp, những giao diện nằm ngay trung tâm công việc của họ? Tôi muốn thấy giấc mơ về môi trường truyền thông động cá nhân được hiện thực hóa cho những phần quan trọng nhất trong thực hành của họ. Những phần đó thường diễn ra trong các ứng dụng khổng lồ cực kỳ phức tạp. Một nhà làm phim sẽ dành hàng nghìn giờ trong Adobe Premiere. Một nhà soạn nhạc sẽ dành hàng nghìn giờ trong Sibelius.
Apps like these support plugins, but they're locked in little boxes.Quy tắcTo enable deep interface customization, adopt malleable architectural substrates rather than relying on AI coding agents to rebuild monolithic applications from scratch.Để cho phép tùy chỉnh giao diện chuyên sâu, hãy áp dụng các nền tảng kiến trúc dễ uốn nắn thay vì phụ thuộc vào các đại lý AI lập trình để xây dựng lại các ứng dụng đơn khối từ đầu. Plugins are allowed to render an interface into a modal or perhaps a sidebar, but if the user wants to improve the primary interactive surface of those apps for their personal workflow, they'll need to recreate all of that complexity. Neither today's coding agents nor their typical users are prepared to rewrite Photoshop on the fly just to add a new kind of brush tool. So if we want to free ourselves from from siloed monoliths, we'll need a more malleable substrate than today's zero-to-one coding agents. Researchers working on this problem know that, of course, and, and we've seen systems from Smalltalk to WebStraights to Potluck proposing principled architectures for user extensibility.
Những ứng dụng như vậy hỗ trợ plugin, nhưng chúng bị khóa trong các hộp nhỏ. Plugin được phép kết xuất giao diện vào một hộp thoại hoặc có lẽ một thanh bên, nhưng nếu người dùng muốn cải thiện bề mặt tương tác chính của những ứng dụng đó cho quy trình cá nhân, họ sẽ phải tái tạo toàn bộ sự phức tạp ấy. Cả coding agent ngày nay lẫn người dùng điển hình của chúng đều chưa sẵn sàng viết lại Photoshop ngay tại chỗ chỉ để thêm một kiểu công cụ cọ mới. Vì vậy, nếu muốn giải phóng mình khỏi các khối nguyên khối biệt lập, chúng ta cần một nền tảng dễ uốn nắn hơn các coding agent kiểu từ số không đến một ngày nay. Các nhà nghiên cứu làm việc về vấn đề này dĩ nhiên biết điều đó, và chúng ta đã thấy những hệ thống từ Smalltalk qua WebStraights đến Potluck đề xuất các kiến trúc có nguyên tắc cho khả năng mở rộng của người dùng.
Chuyển đến mục
App Silos and Malleable SubstratesCác ốc đảo ứng dụng và nền tảng linh hoạt

Obsidian Architecture and Deep Editor CustomizationKiến trúc Obsidian và khả năng tùy biến sâu trình soạn thảo

But the trouble is that none of these approaches is as versatile and accessible as that text-to-app workflow. So can we find some happy middle with enough structure to let users adapt complex software without rewriting it completely from scratch? and yet with enough versatility and accessibility for non-programmers to use. Now, it makes sense, by the way, that plugins in apps like Photoshop are locked in little boxes. Their main interactive surfaces are enormously complicated.
Nhưng vấn đề là không cách tiếp cận nào trong số đó linh hoạt và dễ tiếp cận như quy trình từ văn bản đến ứng dụng. Vậy chúng ta có thể tìm một điểm cân bằng, đủ cấu trúc để người dùng thích ứng phần mềm phức tạp mà không phải viết lại hoàn toàn từ đầu, đồng thời đủ linh hoạt và dễ tiếp cận để người không lập trình có thể sử dụng không? Nhân tiện, việc các plugin trong những ứng dụng như Photoshop bị khóa trong các hộp nhỏ cũng hợp lý. Các bề mặt tương tác chính của chúng cực kỳ phức tạp.
If plugins were allowed to just start reaching in and changing things, then chaos would quickly ensue.Khái niệmBuilding application editors on open composable frameworks enables extensions to arbitrarily alter core interaction surfaces and keyboard mechanics.Việc xây dựng các trình chỉnh sửa ứng dụng trên các khung có thể kết hợp mở cho phép các tiện ích mở rộng tùy ý thay đổi các bề mặt tương tác cốt lõi và cơ chế bàn phím. Safe and expressive extensibility would require such a complex API surface that plugins would become incredibly difficult to write. So it is much easier to just give plugins a panel they can fully control. Having said all that though, I think we can learn from an interesting exception to this rule, Obsidian. So to my knowledge, it's the only deeply extensible GUI word processor that has ever reached production.
Nếu plugin được phép tùy ý can thiệp và thay đổi mọi thứ, hỗn loạn sẽ nhanh chóng xảy ra. Khả năng mở rộng vừa an toàn vừa giàu tính biểu đạt sẽ đòi hỏi một bề mặt API phức tạp đến mức plugin trở nên cực kỳ khó viết. Vì vậy, việc chỉ cung cấp cho plugin một bảng điều khiển mà chúng có thể hoàn toàn kiểm soát sẽ dễ hơn nhiều. Dù vậy, tôi nghĩ chúng ta có thể học từ một ngoại lệ thú vị đối với quy tắc này: Obsidian. Theo hiểu biết của tôi, đây là trình xử lý văn bản GUI có khả năng mở rộng sâu duy nhất từng được đưa vào sản xuất.
Like other word processors, plugins can add custom themes and commands and interfaces in isolated panels, but unlike other word processors, Obsidian's rich text editor is built on an open source framework with an unusually composable architecture called CodeMirror. And so uniquely, Obsidian plugins can arbitrarily extend the behavior and presentation of the rich text editor itself. For example, this LaTeX Suite plugin shows me an inline preview of rendered LaTeX while I'm editing its source. And it also changes the behavior of keyboard events. If I'm inside of a math expression and I press Tab, it jumps my cursor just outside the current brace scope.
Giống các trình xử lý văn bản khác, plugin có thể thêm chủ đề, lệnh và giao diện tùy chỉnh trong các bảng cô lập, nhưng khác với các trình xử lý văn bản khác, trình soạn thảo văn bản giàu định dạng của Obsidian được xây dựng trên một framework mã nguồn mở với kiến trúc có khả năng kết hợp khác thường, gọi là CodeMirror. Điểm độc đáo là các plugin Obsidian có thể tùy ý mở rộng hành vi và cách trình bày của chính trình soạn thảo văn bản giàu định dạng. Ví dụ, plugin LaTeX Suite này hiển thị cho tôi bản xem trước LaTeX được kết xuất ngay trong dòng khi tôi chỉnh sửa mã nguồn. Nó cũng thay đổi hành vi của các sự kiện bàn phím. Nếu tôi đang ở trong một biểu thức toán học và nhấn Tab, con trỏ sẽ nhảy ra ngay bên ngoài phạm vi dấu ngoặc hiện tại.
A presenter at a podium gestures as he delivers a lecture to a seated audience, with a software interface displayed on a large projector screen above him.
It's quite invasive.Khái niệmAI coding agents eliminate the steep programming barrier of complex composable editor architectures, allowing users to build invasive interface extensions on demand.Các đại lý AI lập trình loại bỏ rào cản lập trình dốc của các kiến trúc trình chỉnh sửa có thể kết hợp phức tạp, cho phép người dùng xây dựng các tiện ích mở rộng giao diện can thiệp sâu theo yêu cầu. Now, most Obsidian plugins don't extend the editor GUI. Most Obsidian plugins just add custom commands or isolated panels, and I think that's because extending the editor itself requires some very complicated programming. The complexity does seem necessary. It's what makes the safe composable editor plugins possible, and we'll talk more about how actually that works shortly, but it is a significant deterrent.
Nó can thiệp khá sâu. Giờ đây, phần lớn plugin Obsidian không mở rộng GUI của trình soạn thảo. Phần lớn chỉ thêm lệnh tùy chỉnh hoặc các bảng cô lập, và tôi nghĩ đó là vì việc mở rộng chính trình soạn thảo đòi hỏi một cách lập trình rất phức tạp. Sự phức tạp ấy dường như là cần thiết. Nó là điều khiến các plugin trình soạn thảo có thể kết hợp một cách an toàn, và chúng ta sẽ sớm nói thêm về cách nó thực sự hoạt động, nhưng đây là một rào cản đáng kể.
I'm an experienced programmer, and every time I've started noodling on an editor extension for Obsidian, I quickly got discouraged by how much intricate work that requires. So again and again, I've scoped back those ambitions or abandoned those projects altogether. But coding agents have changed that. They can handle that complexity for me. In fact, in the past few months, they've become good enough that I can create complex editor extensions without supervising the code.
Tôi là một lập trình viên có kinh nghiệm, và mỗi lần bắt đầu mày mò một phần mở rộng trình soạn thảo cho Obsidian, tôi nhanh chóng nản lòng trước lượng công việc tinh vi mà nó đòi hỏi. Vì vậy, hết lần này đến lần khác, tôi thu hẹp tham vọng hoặc bỏ hẳn các dự án đó. Nhưng coding agent đã thay đổi điều này. Chúng có thể xử lý sự phức tạp ấy thay tôi. Thực tế, trong vài tháng qua, chúng đã đủ giỏi để tôi tạo ra các phần mở rộng trình soạn thảo phức tạp mà không cần giám sát mã.
That's end-user programming territory. And now my idiosyncratic word processing dreams can be realized more or less on a whim. Let me show you.
Đó là lãnh địa của lập trình cho người dùng cuối. Và giờ đây, những giấc mơ xử lý văn bản rất riêng của tôi có thể được hiện thực hóa gần như theo ý thích. Để tôi cho các bạn xem.
Chuyển đến mục
Obsidian Editor Plugin DemonstrationsCác phần trình diễn plugin trình soạn thảo Obsidian

Voice Quote Grounding and EPUB LinksGắn trích dẫn thoại với nguồn và liên kết EPUB

Speaker A
I spend a lot of time reading outside. Now, I want to read actively, which would normally mean writing in a notebook while I read, but it's hard to balance that on my leg while I'm in a chair like this.
Tôi dành khá nhiều thời gian đọc sách ở ngoài trời. Tôi muốn đọc một cách chủ động, điều thường có nghĩa là vừa đọc vừa viết vào sổ tay, nhưng thật khó giữ sổ trên chân khi ngồi trên một chiếc ghế như thế này.
So instead, I usually put a microphone in my ear and ramble while I read. The trouble with that is that my comments really need to reference particular passages in the book to make sense, and it's hard to do that with audio. So I made a new tool to help me with that. We're not outside right now, so I'm gonna have to show you a digital book, but just imagine that we were reading a physical version of this book right here. I might be flipping through it, and I might encounter a passage like this.
Vì vậy, thay vào đó, tôi thường đeo một chiếc microphone vào tai và nói lan man khi đọc. Vấn đề là các bình luận của tôi thực sự cần tham chiếu những đoạn cụ thể trong sách mới có ý nghĩa, mà làm điều đó bằng âm thanh thì khó. Vì vậy, tôi đã tạo một công cụ mới để hỗ trợ. Hiện giờ chúng ta không ở ngoài trời, nên tôi sẽ phải cho các bạn xem một cuốn sách số, nhưng hãy tưởng tượng rằng chúng ta đang đọc một bản sách giấy ngay ở đây. Tôi có thể lật qua các trang và bắt gặp một đoạn như thế này.
And maybe I have a comment about this particular passage.Khái niệmShort verbatim spoken phrases can serve as unique textual anchors that automatically map audio commentary to specific locations in source documents.Các cụm từ nói nguyên văn ngắn có thể đóng vai trò như các mỏ neo văn bản duy nhất để tự động ánh xạ bình luận âm thanh đến các vị trí cụ thể trong tài liệu nguồn. Inspired by CanonCat, I realized that a sequence of 3 or 4 words like this can uniquely identify pretty much any point In a book. So let me just start an audio recording.
Và có thể tôi có một bình luận về chính đoạn này. Lấy cảm hứng từ CanonCat, tôi nhận ra rằng một chuỗi 3 hoặc 4 từ như vậy có thể xác định duy nhất gần như bất kỳ điểm nào trong một cuốn sách. Vậy để tôi bắt đầu ghi âm.
And now as I'm reading through, I can just say to myself, quote, though only 3 years older, and then I can ramble whatever observation I have about that. And I can just keep reading through. And if I find another passage that seems relevant, I can say, quote, we already feel the effects, and then I can say whatever I have to say about that and go on and on. You know, maybe record for an hour like this. Come back to my computer, and here's what I might do.
Bây giờ, khi đọc tiếp, tôi chỉ cần tự nhủ: trích dẫn, dù chỉ lớn hơn 3 tuổi, rồi nói lan man bất kỳ nhận xét nào tôi có về đoạn đó. Tôi cứ tiếp tục đọc. Nếu tìm thấy một đoạn khác có vẻ liên quan, tôi có thể nói: trích dẫn, chúng ta đã cảm nhận được những tác động, rồi nói bất cứ điều gì mình muốn và tiếp tục. Có thể ghi âm như vậy suốt một giờ. Sau đó quay lại máy tính, tôi có thể làm như sau.
So I can copy this audio and switch over to Obsidian, where I have prepared a special plugin. Here we're in the middle of a Markdown document. I've got an image and a, a block quote with a synopsis of the book. Now I can just paste the recording I just made and transcribe it.
Tôi có thể sao chép đoạn âm thanh này rồi chuyển sang Obsidian, nơi tôi đã chuẩn bị một plugin đặc biệt. Ở đây chúng ta đang ở giữa một tài liệu Markdown. Tôi có một hình ảnh và một trích dẫn dạng block kèm tóm lược cuốn sách. Giờ tôi có thể dán bản ghi vừa tạo vào và chuyển nó thành văn bản.
Now I have a transcript, and of course transcribing audio is nothing special, but you see there's something interesting going on here.Khái niệmGrounding voice directives into interactive deep links within a live editor maintains plain text as an extensible, malleable substrate for further editing.Việc gắn các chỉ thị giọng nói thành các liên kết sâu tương tác trong trình chỉnh sửa trực tiếp giúp duy trì văn bản thuần túy như một nền tảng dễ uốn nắn, có thể mở rộng cho việc chỉnh sửa tiếp theo. These places where I pointed to a passage with my voice, they're highlighted in yellow and there's a special button next to them. Now this is still just a Markdown document. If we look at the source here, we just see normal plain text and a block quote and an image. But, uh, the styling is, is being applied in the live editor and there's a button.
Giờ tôi có một bản chép lời. Dĩ nhiên, chép âm thanh thành văn bản chẳng có gì đặc biệt, nhưng các bạn thấy có điều thú vị đang diễn ra. Những chỗ tôi dùng giọng nói để chỉ đến một đoạn sách được tô vàng và có một nút đặc biệt bên cạnh. Đây vẫn chỉ là một tài liệu Markdown. Nếu xem mã nguồn, ta chỉ thấy văn bản thuần thông thường, một block trích dẫn và một hình ảnh. Nhưng kiểu dáng đang được áp dụng trong trình soạn thảo trực tiếp, cùng với một nút.
Side-by-side view comparing a live rendered note on the left showing a book cover, text block, and yellow-highlighted voice quotes with play buttons, next to raw Markdown source code on the right.
And if I click the button and I point the editor at the EPUB I was just reading, then it can ground those quotes in the particular passages of the text. We see that that quote directive was replaced with the blockquote in the EPUB with a fairly elaborate link into the book. And there's also this additional behavior with that fairly elaborate link that actually navigates the book to that specific position. And part of what's nice about this is that from this point, it's just plain text. So I can extend my comments and add another comment or, you know, move this stuff around in the document, copy it, paste it, just treat it like a material.
Nếu nhấp vào nút và trỏ trình soạn thảo đến EPUB mà tôi vừa đọc, nó có thể neo những câu trích dẫn đó vào các đoạn văn cụ thể trong văn bản. Ta thấy chỉ thị trích dẫn đã được thay bằng blockquote trong EPUB, kèm một liên kết khá phức tạp đến cuốn sách. Liên kết ấy còn có hành vi bổ sung: thực sự điều hướng cuốn sách đến đúng vị trí đó. Điều hay nữa là từ đây, mọi thứ chỉ còn là văn bản thuần. Tôi có thể mở rộng bình luận, thêm bình luận khác, di chuyển nội dung trong tài liệu, sao chép, dán, và chỉ coi nó như một vật liệu.
Chuyển đến mục
Obsidian Editor Plugin DemonstrationsCác phần trình diễn plugin trình soạn thảo Obsidian

Synchronized Transcripts and Editing MechanicsBản chép lời đồng bộ và cơ chế chỉnh sửa

So that's the first plugin. But once I had this, I realized that I don't wanna just completely lose the audio. There was some interesting affect in that. You know, here we just have plain text. So I made another plugin and I can demonstrate it with this audio file that's actually me talking to myself about the design of the plugin that we just looked at.
Đó là plugin đầu tiên. Nhưng sau khi có nó, tôi nhận ra mình không muốn mất hoàn toàn phần âm thanh. Trong đó có một sắc thái cảm xúc thú vị. Ở đây chúng ta chỉ có văn bản thuần, nên tôi tạo thêm một plugin và có thể minh họa bằng tệp âm thanh này, vốn là tôi đang tự nói với mình về thiết kế của plugin vừa xem.
Div day exists. The way that works. Here I'm just rambling to myself in a car about the design of this plugin, how it should work.
Div day tồn tại. Cách nó hoạt động là thế này. Ở đây tôi chỉ đang lẩm bẩm với chính mình trong xe về thiết kế của plugin này, nó nên hoạt động ra sao.
And again, I can transcribe this.
Và một lần nữa, tôi có thể chép đoạn này thành văn bản.
Here I've got something pretty interesting.Khái niệmWrapping synchronized media transcripts in declarative Markdown directives enables interactive audio playback and seeking directly within text-based documents.Việc bao bọc bản ghi phương tiện đồng bộ trong các chỉ thị Markdown khai báo cho phép phát và tua âm thanh tương tác trực tiếp ngay trong các tài liệu dạng văn bản. This is a new kind of Markdown directive that I've introduced called a transcript directive. I can press the play button. We get audio playback synchronized with the textual transcript. This is inspired by some old work from Steve Rubin that some of you might recognize.
Ở đây tôi có một thứ khá thú vị. Đây là một dạng chỉ thị Markdown mới mà tôi đặt tên là chỉ thị bản chép lời. Tôi có thể nhấn nút phát. Âm thanh sẽ phát đồng bộ với bản chép lời dạng văn bản. Điều này lấy cảm hứng từ một công trình cũ của Steve Rubin mà có thể một số bạn nhận ra.
I can hold down Command and click anywhere in the transcript to jump around. But this is still just Markdown.
Tôi có thể giữ phím Command và nhấp vào bất kỳ đâu trong bản chép lời để nhảy đến đó. Nhưng đây vẫn chỉ là Markdown.
Screenshot of a text editor displaying a document titled Quote Leap, featuring an embedded photo of custom keyboard keycaps labeled LEAP, transcribed text with the word upload highlighted, and an audio playback bar at the bottom showing time 1:26.
So looking again at the source, we've just got plain text.Khái niệmAlgebraic editing rules for media transcripts automatically update underlying temporal boundaries when text segments are inserted, copied, or deleted.Các quy tắc chỉnh sửa đại số cho bản ghi phương tiện tự động cập nhật các ranh giới thời gian bên dưới khi các đoạn văn bản được chèn, sao chép hoặc xóa. This block is wrapped in this special directive with 3 colons. This is a Markdown extension directive. And now I can do some interesting things. There's sort of an algebra of edits that this plugin introduces.
Nhìn lại mã nguồn, ta chỉ có văn bản thuần. Khối này được bọc trong chỉ thị đặc biệt bằng 3 dấu hai chấm. Đây là một chỉ thị mở rộng Markdown. Và giờ tôi có thể làm vài điều thú vị. Plugin này đưa vào một kiểu đại số của các chỉnh sửa.
So, uh, I can go here and start, uh, making some new comments of my own. In the middle of this transcript, we see that it's actually split the transcript block. Uh, here, this old one now has an end time. This one has a start time. I can copy from in the middle of a transcript like this paragraph here.
Tôi có thể đến đây và bắt đầu thêm những bình luận mới của mình. Ở giữa bản chép lời, ta thấy nó đã tách khối chép lời. Khối cũ giờ có thời điểm kết thúc, còn khối này có thời điểm bắt đầu. Tôi có thể sao chép từ giữa một bản chép lời, chẳng hạn đoạn văn này.
I can make a new file, paste, and here it's, it's pasted a segment of the transcript that begins at a particular time and ends at a particular time. I can still Command-click. Still works. Switching back to the original file, I can delete in the middle of the transcript. So, uh, jumping here, say, in the middle of this, uh, 5-word sequence, we see that it's inserted a special new kind of leaf node.
Tôi có thể tạo một tệp mới, dán vào, và ở đây một đoạn của bản chép lời đã được dán, bắt đầu tại một thời điểm cụ thể và kết thúc tại một thời điểm cụ thể. Tôi vẫn có thể giữ phím Command rồi nhấp; vẫn hoạt động. Quay lại tệp gốc, tôi có thể xóa ở giữa bản chép lời. Khi nhảy đến đây, chẳng hạn giữa chuỗi 5 từ này, ta thấy nó đã chèn một loại nút lá mới đặc biệt.
Side-by-side view of a text editor app with a new file on the left showing a pasted transcript block with timestamp parameters, alongside the full transcribed project plan on the right.
And if I start playback from here, 5 words. It will jump over this break.
Nếu bắt đầu phát từ đây—năm từ—nó sẽ nhảy qua chỗ ngắt này.
Andy Matuschak
The idea is that—
Ý tưởng là—
Speaker A
And it also jumped over the deletion.
Và nó cũng nhảy qua phần đã xóa.
Andy Matuschak
Andy Matuschak Should uniquely identify—
Có thể xác định duy nhất—
Chuyển đến mục
Obsidian Editor Plugin DemonstrationsCác phần trình diễn plugin trình soạn thảo Obsidian

Multi-Plugin Composition in Rich Text EditorsKết hợp nhiều plugin trong trình soạn thảo văn bản đa dạng thức

Speaker A
Like a fairly complicated a bit of new Markdown behavior that's just been introduced into the middle of this preexisting editor. Now from here, of course, the next thing to do is to combine these plugins.Khái niệmCombining independent editor extensions on a shared declarative substrate enables distinct dynamic media behaviors to seamlessly compose within a single text canvas.Việc kết hợp các tiện ích mở rộng trình chỉnh sửa độc lập trên một nền tảng khai báo chung cho phép các hành vi phương tiện động riêng biệt hợp thành một cách liền mạch trong một không gian văn bản duy nhất. So let's turn them both on at once. And we can see that now this place where I've included a quote directive in the middle of this ramble, it's, it's got that special highlight. Uh, we have the styling from the quote plugin.
Đây là một phần hành vi Markdown mới khá phức tạp vừa được đưa vào giữa trình soạn thảo có sẵn. Từ đây, điều tiếp theo dĩ nhiên là kết hợp các plugin. Hãy bật cả hai cùng lúc. Ta thấy nơi tôi đưa một chỉ thị trích dẫn vào giữa đoạn nói lan man giờ có phần tô sáng đặc biệt. Ta có kiểu dáng từ plugin trích dẫn.
In the middle of the styling from the transcript plugin. Now this quote directive I can't actually match because it's just an example that I was describing. It doesn't correspond to a book. But let me, let me just make a new demo file and I can again paste in the audio file that we made earlier and this time transcribe it with the transcript plugin. And now I have a transcript of that recording that we made together like before.
Ở giữa phần kiểu dáng của plugin chép lời còn có phần kiểu dáng của plugin trích dẫn. Chỉ thị trích dẫn này thực ra không thể được đối chiếu vì nó chỉ là ví dụ tôi đang mô tả. Nó không tương ứng với một cuốn sách. Nhưng hãy tạo một tệp demo mới, rồi lại dán tệp âm thanh đã tạo trước đó vào và lần này chép nó bằng plugin chép lời. Giờ tôi có bản chép lời của đoạn ghi âm chúng ta cùng tạo, như trước.
Split-screen view of a note-taking application showing a 'Demo file' with an embedded audio player on the left and a 'Quote Leap - Project Plan (transcribed)' document on the right displaying text with transcript directives and a 'Transcribing audio...' notification badge.
But unlike before, it's wrapped in this new transcript directive, which means that I can Command-click and start playing from whatever observation I have about that. And I can edit the transcript and the audio aligns to the observation I have about that. But that new behavior combines with the old behavior of this Quote Leap plugin. I can click the quote and resolve those embedded quotes. And we still get playback of the transcript around the quotes.
Nhưng khác trước, nó được bọc trong chỉ thị chép lời mới, nghĩa là tôi có thể nhấp Command và bắt đầu phát từ bất kỳ nhận xét nào. Tôi có thể chỉnh sửa bản chép lời, và âm thanh sẽ căn chỉnh theo nhận xét đó. Hành vi mới này kết hợp với hành vi cũ của plugin Quote Leap. Tôi có thể nhấp vào câu trích dẫn và phân giải những trích dẫn được nhúng. Ta vẫn nghe được bản chép lời xung quanh các câu trích dẫn.
Ramble whatever observation I have about that. And I can just keep reading for an hour like this, come back to my computer, say to myself, oh, and then I can ramble whatever observations I have about that. And in fact, the playback jumps over the quotes. But now I have these block quotes and I can jump to the appropriate spot in my book and so on. So I kind of get the best of both worlds.
Tôi có thể nói lan man bất kỳ nhận xét nào rồi tiếp tục đọc suốt một giờ như vậy, quay lại máy tính và tự nhủ: à, rồi nói lan man những nhận xét khác. Thực tế, phần phát lại sẽ nhảy qua các câu trích dẫn. Nhưng giờ tôi có các blockquote, có thể nhảy đến vị trí thích hợp trong sách và tiếp tục. Như vậy tôi có được điều tốt nhất của cả hai thế giới.
I get my audio transcript.
Tôi có bản chép lời âm thanh của mình.
Andy Matuschak
Through passages that are so relevant.
Thông qua những đoạn văn đặc biệt liên quan.
Speaker A
And I also get my quotes that are directly within that. the book, so I can see what I'm referring to while I listen to myself ramble. These 2 plugins are working together to deeply modify the behavior of this WYSIWYG text editor.
Và tôi cũng có các câu trích dẫn nằm trực tiếp trong cuốn sách, nên có thể nhìn thấy mình đang nói đến điều gì khi nghe chính mình lẩm bẩm. Hai plugin này cùng hoạt động để thay đổi sâu sắc hành vi của trình soạn thảo văn bản WYSIWYG.
Chuyển đến mục
CodeMirror Facets and Declarative ArchitectureFacet CodeMirror và kiến trúc khai báo

Research System Purgatory vs Production ComposabilityHệ thống nghiên cứu mắc kẹt so với khả năng kết hợp trong môi trường sản xuất

Andy Matuschak
Now, what's exciting about that demo isn't the interaction design of those particular plugins.Khái niệmDeveloping interface innovations inside production applications avoids the high engineering tax of rebuilding entire software suites to escape academic research purgatory.Việc phát triển các đổi mới giao diện bên trong các ứng dụng thực tế giúp tránh được gánh nặng kỹ thuật lớn khi phải xây dựng lại toàn bộ bộ phần mềm để thoát khỏi tình trạng bế tắc của nghiên cứu học thuật. That's not what I'm here to demonstrate. You could imagine seeing each of those interfaces as part of some workaday HCI paper demonstrating a research system. Now, what's exciting about that demo is that this isn't a research system. I brought those behaviors into Obsidian, which is a production word processor that I actually use.
Điều thú vị trong bản demo đó không phải là thiết kế tương tác của những plugin cụ thể ấy. Tôi không ở đây để trình diễn điều đó. Bạn có thể hình dung mỗi giao diện trong số đó là một phần của một bài báo HCI thông thường trình diễn một hệ thống nghiên cứu. Điều thú vị là đây không phải hệ thống nghiên cứu. Tôi đã đưa những hành vi ấy vào Obsidian, một trình xử lý văn bản dùng trong thực tế mà chính tôi sử dụng.
If they only existed in some writing environment prototype for a paper, then I wouldn't be able to use them in my own typical word processor. I would have to use a writing environment that is usually only polished enough to run a user study. So in this way, app silos hold back invention. If I want to contribute a new interface idea to something like Photoshop, then I'm forced to reimplement all of the preexisting functionality of whatever the best app in that domain is and Then I get to add my own idea as a cherry on top. Before I can do that, I have to pay this enormous tax to escape research purgatory.
Nếu chúng chỉ tồn tại trong một nguyên mẫu môi trường viết cho một bài báo, tôi sẽ không thể dùng chúng trong trình xử lý văn bản thường ngày của mình. Tôi sẽ phải dùng một môi trường viết thường chỉ đủ hoàn thiện để tiến hành một nghiên cứu người dùng. Theo cách này, các silo ứng dụng kìm hãm phát minh. Nếu muốn đóng góp một ý tưởng giao diện mới cho thứ như Photoshop, tôi buộc phải triển khai lại toàn bộ chức năng có sẵn của ứng dụng tốt nhất trong lĩnh vực đó, rồi mới được thêm ý tưởng của mình lên trên như một quả anh đào. Trước khi làm được vậy, tôi phải trả một khoản thuế khổng lồ để thoát khỏi chốn luyện ngục nghiên cứu.
And it gets worse. So suppose that each of those interactions that I just showed was implemented in a different paper by a different author. If I wanted to use both behaviors at once, like I did at the end of the demo, then I'm simply out of luck because each behavior is trapped in its own system. What's different in this demo is composability. Those complex new behaviors compose with Obsidian's preexisting complex editor, And with each other, and, uh, without any special knowledge or coupling.
Mọi chuyện còn tệ hơn. Giả sử mỗi tương tác tôi vừa trình diễn được triển khai trong một bài báo khác nhau bởi một tác giả khác nhau. Nếu muốn dùng cả hai hành vi cùng lúc như ở cuối bản demo, tôi hoàn toàn hết cách vì mỗi hành vi bị nhốt trong hệ thống riêng. Điểm khác biệt trong bản demo này là khả năng kết hợp. Những hành vi phức tạp mới kết hợp với trình soạn thảo phức tạp có sẵn của Obsidian, kết hợp với nhau, và không cần kiến thức hay sự ghép nối đặc biệt nào.
It's nice too that coding agents built these behaviors for me, even if perhaps a bit imperfectly.Quy tắcPair composable architectures with AI coding agents so non-programmers can extend complex production tools rather than producing isolated single-use applications.Hãy kết hợp các kiến trúc có thể kết hợp với các đại lý AI lập trình để những người không phải lập trình viên có thể mở rộng các công cụ thực tế phức tạp thay vì tạo ra các ứng dụng đơn lẻ, sử dụng một lần. But it's the combination of composability and coding agents that's particularly exciting to me because coding agents without a composable architecture give us these kind of zero-to-one silo apps. And composable architecture without coding agents makes novel plugins too costly for all but the most devoted and experienced developers. Together though, um, they might mean that non-plugins, non-programmers can riff at will on preexisting complex interfaces with plugins like this. Now, we've been talking in terms of Obsidian because that's the high-level package that a user experiences, but the real credit for its editor's composability is due to CodeMirror, an open-source framework by Maureen Haverbeke.
Thật tuyệt khi coding agent đã xây dựng những hành vi này cho tôi, dù có thể chúng hơi chưa hoàn hảo. Nhưng điều đặc biệt khiến tôi phấn khích là sự kết hợp giữa khả năng kết hợp và coding agent: coding agent không có kiến trúc kết hợp chỉ cho ta những ứng dụng silo từ số không đến một; còn kiến trúc kết hợp không có coding agent khiến plugin mới quá tốn kém đối với tất cả trừ những nhà phát triển tận tâm và giàu kinh nghiệm nhất. Tuy nhiên, cùng nhau, chúng có thể có nghĩa là cả những người không phải plugin lẫn những người không lập trình đều có thể tùy ý biến tấu các giao diện phức tạp có sẵn bằng những plugin như thế này. Ta đang nói về Obsidian vì đó là gói cấp cao mà người dùng trải nghiệm, nhưng công lao thực sự cho khả năng kết hợp của trình soạn thảo thuộc về CodeMirror, một framework mã nguồn mở của Maureen Haverbeke.
Chuyển đến mục
CodeMirror Facets and Declarative ArchitectureFacet CodeMirror và kiến trúc khai báo

CodeMirror Primitives and Facet Rule CombinationsCác thành phần nguyên thủy của CodeMirror và cách kết hợp quy tắc facet

Now, rather than building a text editor and later designing the plugin system on top of it, Maureen designed a text editor that is made out of plugins.Quy tắcConstruct software applications entirely out of internal plugins so user extensions possess the exact same primitives as core features.Hãy xây dựng các ứng dụng phần mềm hoàn toàn từ các tiện ích mở rộng nội bộ để các tiện ích của người dùng sở hữu chính xác các thành phần cơ bản giống như các tính năng cốt lõi. Let me explain. So Obsidian is a WYSIWYG Markdown editor, but CodeMirror doesn't know anything about Markdown or images or bulleted lists or links or tables. Everything you see beyond plain text in the Obsidian editor is a CodeMirror plugin. So when a user adds a CodeMirror plugin of their own, they're using exactly the same primitives that the Obsidian developers use to develop their product.
Thay vì xây dựng trình soạn thảo văn bản rồi thiết kế hệ thống plugin trên nền đó, Maureen đã thiết kế một trình soạn thảo được tạo thành từ các plugin. Để tôi giải thích. Obsidian là trình soạn thảo Markdown WYSIWYG, nhưng CodeMirror không biết gì về Markdown, hình ảnh, danh sách dấu đầu dòng, liên kết hay bảng. Mọi thứ bạn thấy ngoài văn bản thuần trong trình soạn thảo Obsidian đều là một plugin CodeMirror. Vì vậy, khi người dùng thêm plugin CodeMirror của riêng mình, họ đang sử dụng đúng những nguyên thủy mà các nhà phát triển Obsidian dùng để phát triển sản phẩm.
CodeMirror defines a rough physics of the medium.Khái niệmDeclarative facets allow separate extensions to safely contribute to shared editor concerns by expressing intent rather than mutating state.Các khía cạnh khai báo cho phép các tiện ích mở rộng riêng biệt đóng góp an toàn vào các mối quan tâm chung của trình chỉnh sửa bằng cách thể hiện ý định thay vì thay đổi trạng thái. There's basic models for text and state selection with transactional updates. Pretty much everything else, how text looks, what happens when you click or type, what state is maintained, what appears alongside the text, all of that is described through facets. Facets are a composable structure that define how independent plugins can safely contribute to the same concern. Plugins don't act on the document, they declare what they want.
CodeMirror định nghĩa một thứ vật lý gần đúng của môi trường. Có các mô hình cơ bản cho văn bản và trạng thái lựa chọn, với những cập nhật mang tính giao dịch. Gần như mọi thứ khác—văn bản trông ra sao, điều gì xảy ra khi nhấp hoặc gõ, trạng thái nào được duy trì, thứ gì xuất hiện cạnh văn bản—đều được mô tả thông qua các facet. Facet là một cấu trúc có thể kết hợp, định nghĩa cách các plugin độc lập có thể đóng góp an toàn vào cùng một mối quan tâm. Plugin không tác động lên tài liệu; chúng khai báo điều mình muốn.
And then for decorations, for key bindings, for state updates, and for everything else, CodeMirror's physics define rules for combining and enacting those declarations.Khái niệmFramework combination rules automatically merge overlapping facet declarations, enabling independent plugins to style the same target simultaneously.Các quy tắc kết hợp khung tự động hợp nhất các khai báo khía cạnh chồng chéo, cho phép các tiện ích mở rộng độc lập định kiểu cho cùng một mục tiêu đồng thời. Let me show you how that works in terms of the demo that we just saw. So here on the left, we see those 2 plugins acting at once on a quote directive inside of an audio transcript. One element of that behavior is visual styling. The audio transcripts use a small monospace text, while the quote directives have a yellow glow.
Còn đối với phần trang trí, liên kết phím, cập nhật trạng thái và mọi thứ khác, cơ chế vật lý của CodeMirror định nghĩa các quy tắc để kết hợp và thực thi những khai báo đó. Hãy để tôi cho thấy cách nó hoạt động trong bản demo vừa xem. Ở bên trái, ta thấy hai plugin cùng tác động lên một chỉ thị trích dẫn bên trong bản chép lời âm thanh. Một phần của hành vi đó là kiểu dáng trực quan. Bản chép lời âm thanh dùng chữ đơn cách nhỏ, còn các chỉ thị trích dẫn có quầng sáng vàng.
A diagram beside the editor view shows how two plugins, Audio Transcripts and Quote Leap, feed configuration objects into the decorations facet of CodeMirror.EditorView.
Both of those things can apply simultaneously. CodeMirror's editor view exposes many facets that plugins can use to control the behavior and appearance of the editor. One key facet is called decorations. The audio transcript plugin declares that it wants to decorate lines 5 through 18 with the transcript CSS class. And then separately, the quote leap plugin declares that it wants to decorate a certain character range with a different CSS class.
Cả hai thứ đó có thể áp dụng đồng thời. Khung nhìn trình soạn thảo của CodeMirror cung cấp nhiều facet mà plugin có thể dùng để kiểm soát hành vi và hình thức của trình soạn thảo. Một facet quan trọng gọi là decorations. Plugin chép lời âm thanh khai báo rằng nó muốn trang trí các dòng từ 5 đến 18 bằng lớp CSS transcript. Sau đó, riêng biệt, plugin Quote Leap khai báo rằng nó muốn trang trí một phạm vi ký tự nhất định bằng một lớp CSS khác.
Chuyển đến mục
CodeMirror Facets and Declarative ArchitectureFacet CodeMirror và kiến trúc khai báo

Transaction Filters and Domain Physics GeneralizationBộ lọc giao dịch và khái quát hóa quy luật miền

The decorations facet combines all those decorations and combines them into the DOM. We use a similar strategy for the buttons to the left of the text. But what about resolving quotes that are inside of a Markdown transcript? You can see that before and after on the left here. Well, first off, the audio transcript is part of the editor's model.
Facet decorations kết hợp tất cả các phần trang trí rồi kết hợp chúng vào DOM. Chúng ta dùng chiến lược tương tự cho các nút ở bên trái văn bản. Nhưng còn việc phân giải các câu trích dẫn nằm trong một bản chép lời Markdown thì sao? Bạn có thể thấy trạng thái trước và sau ở bên trái. Trước hết, bản chép lời âm thanh là một phần trong mô hình của trình soạn thảo.
It's just a Markdown syntax extension. So the data is still in the Markdown document. It's not sequestered in some separate store. That means that other plugins can see it. So when you press the button next to that quote directive, the plugin parses the Markdown, sees all of those quote directives as usual, and then replaces them with the resolved Quotes from the book.
Nó chỉ là một phần mở rộng cú pháp Markdown. Vì vậy dữ liệu vẫn nằm trong tài liệu Markdown, không bị cô lập trong một kho riêng. Điều đó có nghĩa là các plugin khác có thể nhìn thấy nó. Khi nhấn nút bên cạnh chỉ thị trích dẫn, plugin phân tích Markdown, thấy tất cả các chỉ thị trích dẫn như thường lệ, rồi thay thế chúng bằng các câu trích dẫn đã phân giải từ cuốn sách.
Three overlapping dark-mode editor panes demonstrating Markdown quote directives resolving into expanded text and structured Q&A blocks.
But notice that the transcript blocks get split around the block quotes.Khái niệmRouting editing operations through declarative transaction filters enables independent plugins to transform document modifications without tight coupling.Việc định tuyến các thao tác chỉnh sửa qua các bộ lọc giao dịch khai báo cho phép các tiện ích mở rộng độc lập biến đổi các sửa đổi tài liệu mà không bị gắn kết chặt chẽ. We can make that happen because editing operations also compose explicitly. There's another one of those facets. This one's called transaction filter. Editing operations, like the quote block replacements, they're described declaratively in transaction data structures, and then those transactions get passed through a pipeline of transaction filters declared by plugins, which can then transform them.
Nhưng hãy chú ý rằng các khối chép lời được tách quanh những blockquote. Ta làm được điều đó vì các thao tác chỉnh sửa cũng kết hợp một cách minh thị. Lại có một facet khác, gọi là transaction filter. Các thao tác chỉnh sửa, như việc thay thế bằng khối trích dẫn, được mô tả khai báo trong những cấu trúc dữ liệu giao dịch; sau đó các giao dịch đi qua một chuỗi bộ lọc giao dịch do plugin khai báo, và các bộ lọc ấy có thể biến đổi chúng.
Speaker A
Speaker A Okay.
Được rồi.
Andy Matuschak
Now, the audio transcript plugin doesn't know anything about the quote lead plugin, but you might remember from the demo, even in the audio transcript plugin, you can position your cursor in the middle of the transcript and insert a new line to split it and then insert some, you know, just normal markdown in the middle of the transcript. And because of that feature, any insertions or replacements that happen in the middle of the audio transcript cause this kind of splitting behavior to happen. The plugin declares a transaction filter that watches for insertions inside of transcript blocks. And it reacts by splitting around the insertion.
Plugin chép lời âm thanh không biết gì về plugin quote lead, nhưng có thể bạn còn nhớ từ bản demo rằng ngay trong plugin chép lời âm thanh, bạn có thể đặt con trỏ ở giữa bản chép lời và chèn một dòng mới để tách nó, rồi chèn Markdown bình thường vào giữa. Vì tính năng đó, mọi thao tác chèn hoặc thay thế diễn ra ở giữa bản chép lời âm thanh đều tạo ra kiểu hành vi tách này. Plugin khai báo một bộ lọc giao dịch theo dõi các thao tác chèn bên trong các khối chép lời, rồi phản ứng bằng cách tách quanh chỗ chèn.
Now, all this declarative machinery is really quite complicated to implement. You can see why it's created such a high barrier for plugins in the past. But happily, I didn't need to write this code, because coding agents did it for me. You could do this kind of thing in other extensible text editors like Emacs. In fact, if you were in Emacs, you would just manipulate the buffer directly in one line.
Toàn bộ cơ chế khai báo này thực sự rất phức tạp để triển khai. Bạn có thể hiểu vì sao trước đây nó tạo ra rào cản rất cao đối với plugin. Nhưng may mắn là tôi không cần tự viết mã này, vì coding agent đã làm thay. Bạn có thể làm điều tương tự trong những trình soạn thảo văn bản mở rộng khác như Emacs. Thực tế, nếu ở trong Emacs, bạn chỉ cần thao tác trực tiếp lên buffer bằng một dòng lệnh.
But when 2 plugins touch the same region, you get these, like, nightmare stories, like Org Mode had a multi-year rewrite of its folding code, which kept breaking lots of other packages, and they ended up having to pile all these workarounds on top of it.Khái niệmDefining a foundational declarative domain physics replaces fragile extension workarounds with a consistent architecture for deep user interface composability.Việc định nghĩa một quy luật vật lý miền khai báo nền tảng sẽ thay thế các giải pháp tiện ích mở rộng mong manh bằng một kiến trúc nhất quán cho khả năng kết hợp giao diện người dùng chuyên sâu. And the idea is that CodeMirror has this declarative approach, which replaces a patchwork of unrelated editing extensions and mechanisms with a consistent composable pattern. So now that I've tasted it, I want this kind of extensibility, not just with my rich text editor, but for my design work, for my music, for my reading. If CodeMirror defines a physics of rich text editing, And that physics makes it possible for plugins to independently extend this complex user interface, then what would an equivalent physics look like for a Figma or for a Sibelius? Or actually, wait, before I try to answer that for Figma or Sibelius, I just said I wanted this kind of extensibility for reading.
Nhưng khi hai plugin chạm vào cùng một vùng, bạn sẽ gặp những câu chuyện ác mộng, chẳng hạn Org Mode đã phải viết lại mã gập trong nhiều năm, liên tục làm hỏng nhiều gói khác, rồi cuối cùng phải chồng thêm vô số cách khắc phục. Ý tưởng của CodeMirror là cách tiếp cận khai báo thay thế một mớ chắp vá gồm các phần mở rộng và cơ chế chỉnh sửa không liên quan bằng một mẫu nhất quán có thể kết hợp. Giờ đã nếm trải nó, tôi muốn kiểu mở rộng này không chỉ với trình soạn thảo văn bản giàu định dạng, mà còn cho công việc thiết kế, âm nhạc và việc đọc. Nếu CodeMirror định nghĩa một cơ chế vật lý của chỉnh sửa văn bản giàu định dạng, và cơ chế đó khiến plugin có thể độc lập mở rộng giao diện phức tạp này, thì một cơ chế vật lý tương đương cho Figma hoặc Sibelius sẽ trông như thế nào? Nhưng khoan, trước khi cố trả lời cho Figma hay Sibelius, tôi vừa nói rằng mình muốn kiểu mở rộng này cho việc đọc.
Chuyển đến mục
Malleable Reading Environment DemonstrationsCác phần trình diễn môi trường đọc linh hoạt

Dynamic Reading Deficits and Prior ResearchNhững hạn chế của việc đọc động và nghiên cứu trước đây

What software would I even aspire to extend for that? Apple Books? Preview.app? Maybe PDF Expert? This problem is actually worse than the need for extensible pro tools.
Tôi sẽ khao khát mở rộng phần mềm nào cho việc đó? Apple Books? Preview.app? Có lẽ PDF Expert? Vấn đề này thực ra còn tệ hơn nhu cầu về các công cụ chuyên nghiệp có khả năng mở rộng.
Serious readers don't have the pro tools in the first place.
Những người đọc nghiêm túc ngay từ đầu đã không có các công cụ chuyên nghiệp ấy.
What's special about dynamic mediums is that they behave and respond.Khái niệmDigital reading environments remain passive static representations, failing to leverage dynamic software capabilities that actively offload cognitive burden.Các môi trường đọc kỹ thuật số vẫn là những biểu diễn tĩnh thụ động, không tận dụng được các khả năng phần mềm động giúp chủ động giảm bớt gánh nặng nhận thức. When I'm iterating on a design system in Figma, I can see in real time how my choices affect layout and weight across every screen of the app I'm designing. When I'm mixing a track, spectrum visualizers let me quickly spot and fix muddy segments. We can tell similar stories in climate modeling and genomics and so many other domains. The medium takes on some of the cognitive load, and so we can explore and refine our ideas closer to the speed of thought.
Điểm đặc biệt của các môi trường động là chúng hành xử và phản hồi. Khi tôi tinh chỉnh một hệ thống thiết kế trong Figma, tôi có thể thấy theo thời gian thực các lựa chọn của mình ảnh hưởng thế nào đến bố cục và độ đậm trên mọi màn hình của ứng dụng đang thiết kế. Khi hòa âm một bản nhạc, các bộ trực quan hóa phổ tần giúp tôi nhanh chóng phát hiện và sửa những đoạn đục. Ta có thể kể những câu chuyện tương tự trong mô hình hóa khí hậu, hệ gen học và nhiều lĩnh vực khác. Môi trường gánh bớt một phần tải nhận thức, nhờ đó ta có thể khám phá và tinh chỉnh ý tưởng gần với tốc độ của suy nghĩ hơn.
But meanwhile, our reading environments have evolved remarkably little, and yet there's so much room for them to evolve. We often fail to absorb key ideas from what we read without noticing, and we forget details we found fascinating just last week. We write notes in the margins and then struggle to see across texts. We're not really making use of the dynamic medium for any of this. We're just mostly working with pictures of paper on screens.
Trong khi đó, môi trường đọc của chúng ta hầu như chẳng tiến hóa đáng kể, dù còn rất nhiều chỗ để phát triển. Ta thường không tiếp thu được những ý tưởng then chốt từ điều mình đọc mà không nhận ra, và quên mất những chi tiết mới tuần trước còn thấy say mê. Ta viết ghi chú bên lề rồi chật vật kết nối chúng giữa các văn bản. Ta chưa thực sự tận dụng môi trường động cho bất kỳ việc nào trong số đó. Phần lớn, ta chỉ làm việc với những bức ảnh của giấy trên màn hình.
In other domains, the medium dances with us. It provides active support for difficult creative work. But in scholarship, for the most part, the paper lies inert while we shoulder the full cognitive load. Echoing Engelbart, the bricks are still strapped to our pencils. Now, you could say maybe there's something special about reading that prevents the transformative tools we've seen in other domains.
Trong những lĩnh vực khác, môi trường nhảy múa cùng chúng ta. Nó chủ động hỗ trợ công việc sáng tạo khó khăn. Nhưng trong học thuật, phần lớn thời gian, trang giấy nằm bất động trong khi chúng ta phải gánh toàn bộ tải nhận thức. Gợi lại Engelbart, những viên gạch vẫn còn buộc vào bút chì của chúng ta. Bạn có thể nói rằng có lẽ việc đọc có điều gì đặc biệt ngăn cản những công cụ biến đổi như ở các lĩnh vực khác.
Maybe there are no augmentations worth pursuing, but in fact, HCI researchers have built quite a few interesting augmented reading systems.Khái niệmFragmenting augmented reading innovations across isolated prototype tools prevents users from combining multiple interactive reading techniques together.Sự phân mảnh các đổi mới về đọc tăng cường trên các công cụ thử nghiệm riêng lẻ ngăn cản người dùng kết hợp nhiều kỹ thuật đọc tương tác với nhau. Here's Skim by Falk et al., which highlights and color codes key sentences containing goals, novel contributions, and results. Here's CiteSee by Chang et al., which color codes citation links so you can see which ones you've saved, read, and cited. Here's Papios by Kim et al., which lets readers quickly jump between a research paper and the aligned segments of an associated video. Here's LiquidText by, uh, Tashman and Edwards, which supports parallel reading by letting users collapse parts of documents.
Có lẽ không có sự bổ trợ nào đáng theo đuổi, nhưng thực tế các nhà nghiên cứu HCI đã xây dựng khá nhiều hệ thống đọc tăng cường thú vị. Đây là Skim của Falk và cộng sự, làm nổi bật và tô màu các câu then chốt chứa mục tiêu, đóng góp mới và kết quả. Đây là CiteSee của Chang và cộng sự, tô màu các liên kết trích dẫn để bạn thấy mình đã lưu, đọc và trích dẫn liên kết nào. Đây là Papios của Kim và cộng sự, cho phép người đọc nhanh chóng chuyển giữa một bài nghiên cứu và các đoạn tương ứng trong video liên quan. Đây là LiquidText của Tashman và Edwards, hỗ trợ đọc song song bằng cách cho phép người dùng thu gọn các phần của tài liệu.
A user interface displaying a two-column academic paper on the left with color-coded sidebar indicators, paired with timestamped video slide previews and transcripts on the right.
And Space Inc. does the opposite. It lets users expand whitespace around lines to make room for marginalia. Here's one called Quantum Country that I developed with Michael Nielsen, which integrates a spaced repetition memory system into the reading experience to make it easier for readers to remember what they read.
Còn Space Inc. làm điều ngược lại. Nó cho phép người dùng mở rộng khoảng trắng quanh các dòng để tạo chỗ cho ghi chú bên lề. Đây là một hệ thống tên Quantum Country mà tôi phát triển cùng Michael Nielsen, tích hợp hệ thống ghi nhớ lặp lại ngắt quãng vào trải nghiệm đọc để giúp người đọc dễ nhớ những gì đã đọc hơn.
Lots here, but as interesting as these individual projects' ideas are, they don't quite accumulate.Quy tắcGeneralize declarative software primitives into a unifying reading physics to compose disparate augmented reading techniques on a shared substrate.Hãy khái quát hóa các thành phần phần mềm khai báo cơ bản thành một quy luật đọc thống nhất để kết hợp các kỹ thuật đọc tăng cường khác nhau trên một nền tảng chung. Each interaction is trapped in its own reading environment, stuck in the same research purgatory that I mentioned earlier. If you want to use SightSee's color-coded scheme, you have to use its prototype as your PDF reader. And then if you want to use features from every one of the other systems that I just mentioned, you'd need to switch wholesale to their readers. So by way of generalizing from CodeMirror, could we define a physics of reading environments, one which could simultaneously support all of these disparate augmented reading ideas, plus untold more yet to be invented?
Có rất nhiều ý tưởng ở đây, nhưng dù ý tưởng của từng dự án riêng lẻ thú vị đến đâu, chúng vẫn chưa thực sự tích lũy thành một hệ thống. Mỗi tương tác bị mắc kẹt trong môi trường đọc riêng, nằm lại trong cùng chốn luyện ngục nghiên cứu mà tôi đã nhắc đến. Nếu muốn dùng sơ đồ mã màu của SightSee, bạn phải dùng nguyên mẫu của nó làm trình đọc PDF. Nếu muốn dùng tính năng của tất cả những hệ thống khác vừa nêu, bạn phải chuyển hẳn sang trình đọc của chúng. Vậy, bằng cách khái quát hóa từ CodeMirror, chúng ta có thể định nghĩa một cơ chế vật lý của môi trường đọc, đồng thời hỗ trợ tất cả những ý tưởng đọc tăng cường khác biệt này, cùng vô số ý tưởng chưa được phát minh không?
And now, Let's have some more demos.
Và giờ, hãy xem thêm vài bản demo.
Chuyển đến mục
Malleable Reading Environment DemonstrationsCác phần trình diễn môi trường đọc linh hoạt

Rhetorical Decorators and Anchored Layout WidgetsBộ trang trí tu từ và widget bố cục neo

Speaker A
Here we have a prototype malleable reading environment. This reading environment uses the same philosophy as CodeMirror: facets, declarative contributions, system-managed combinations. But as we'll see, reading surfaces some new compositional needs that editing didn't have. Now let's play with some plugins.
Ở đây chúng ta có một nguyên mẫu môi trường đọc dễ uốn nắn. Môi trường này dùng cùng triết lý với CodeMirror: facet, đóng góp khai báo và sự kết hợp do hệ thống quản lý. Nhưng như ta sẽ thấy, việc đọc bộc lộ một số nhu cầu kết hợp mới mà chỉnh sửa không có. Giờ hãy thử vài plugin.
Here's a version of Skim by Fock et al.Khái niệmApplying declarative range decorations enables independent reading tools to overlay rhetorical styles and citation metadata onto a shared text canvas.Việc áp dụng các trang trí phạm vi khai báo cho phép các công cụ đọc độc lập phủ các phong cách tu từ và dữ liệu đặc tả trích dẫn lên một không gian văn bản chung. Sentences light up with colored backgrounds, objectives in green, Methods in blue, results in orange. They're classified by their rhetorical role in the paper. The plugin works by declaring decorations on text ranges, just like in CodeMirror. And here is a slice of Sightsee by Chang et al.
Đây là một phiên bản của Skim của Fock và cộng sự. Các câu sáng lên với nền màu: mục tiêu màu xanh lá, phương pháp màu xanh dương, kết quả màu cam. Chúng được phân loại theo vai trò tu từ trong bài báo. Plugin hoạt động bằng cách khai báo phần trang trí trên các phạm vi văn bản, giống như trong CodeMirror. Còn đây là một phần của Sightsee của Chang và cộng sự.
Citation markers tint by your reading history. Green means you've read it. And when you hover one, you can see a card with the paper's details. These are 2 extensions. Representing original papers by 2 different authors composed on the same text.
Các dấu trích dẫn đổi màu theo lịch sử đọc của bạn. Màu xanh lá nghĩa là bạn đã đọc nó. Khi di chuột lên một dấu, bạn có thể thấy một thẻ chứa thông tin chi tiết về bài báo. Đây là hai phần mở rộng, đại diện cho các bài nghiên cứu gốc của hai tác giả khác nhau, cùng kết hợp trên một văn bản.
A two-column academic paper document displaying text highlights in orange and pink, along with green-tinted citation markers throughout.
Neither one knows about the other. The system merges their declarations, the colored backgrounds, the tinted brackets, the input events, through the same kind of facet mechanism that I showed you in CodeMirror.
Không phần nào biết về phần kia. Hệ thống hợp nhất các khai báo của chúng—nền màu, dấu ngoặc đổi màu, sự kiện nhập liệu—thông qua cùng kiểu cơ chế facet mà tôi đã trình bày trong CodeMirror.
Now, decorations paint on the text, but some reading augmentations need to live alongside it, anchored to a position in the document, but rendering outside the text flow.Quy tắcAnchor margin widgets declaratively to semantic locations so the host reading system automatically calculates positioning and prevents layout collisions.Hãy neo các tiện ích lề một cách khai báo vào các vị trí ngữ nghĩa để hệ thống đọc chủ tự động tính toán vị trí và ngăn ngừa xung đột bố cục. So here we have a margin notes plugin, which allows me to point to any point in the text and create a margin note. This margin note is anchored to the vertical position of its target paragraph and to the right edge of the page. The extension doesn't calculate that position. It just declares, I want a widget anchored to these semantic locations, and the system handles the rest.
Decorations vẽ lên văn bản, nhưng một số phần bổ trợ cho việc đọc cần sống bên cạnh văn bản, được neo vào một vị trí trong tài liệu nhưng kết xuất bên ngoài dòng chảy văn bản. Ở đây ta có plugin ghi chú lề, cho phép tôi trỏ đến bất kỳ điểm nào trong văn bản và tạo ghi chú bên lề. Ghi chú này được neo vào vị trí dọc của đoạn đích và cạnh phải của trang. Phần mở rộng không tự tính vị trí đó. Nó chỉ khai báo: tôi muốn một widget được neo vào những vị trí ngữ nghĩa này, còn hệ thống sẽ xử lý phần còn lại.
Academic paper document showing highlighted text sections and a small yellow box reading Margin note! anchored to the right margin aligned with a paragraph in the Introduction section.
So now I can turn on another plugin Here's Papios by Kim et al. This plugin links sections of the paper to moments in the author's corresponding conference talk. It also declares anchored widgets positioned in the same kind of declarative fashion, but Papios doesn't know anything about my margin note plugin. It's just that because they both contribute to the same anchoring facet, the system makes sure that these widgets don't overlap.
Giờ tôi có thể bật thêm một plugin khác. Đây là Papios của Kim và cộng sự. Plugin này liên kết các phần của bài báo với những khoảnh khắc trong bài thuyết trình hội nghị tương ứng của tác giả. Nó cũng khai báo các widget được neo, định vị theo cùng cách khai báo, nhưng Papios không biết gì về plugin ghi chú lề của tôi. Chỉ là vì cả hai cùng đóng góp vào một facet neo, hệ thống bảo đảm các widget không chồng lên nhau.
Chuyển đến mục
Malleable Reading Environment DemonstrationsCác phần trình diễn môi trường đọc linh hoạt

Spatial Compression and Minimap Multi-Pass RenderingNén không gian và kết xuất minimap nhiều lượt

And the same anchoring primitive can support things beyond marginalia: floating toolbars, contextual panels, anything that an extension wants to place alongside a document position.Khái niệmModel content decorations as fragment shaders and spatial transformations as vertex shaders to preserve visual overlays when dynamically compressing document geometry.Mô hình hóa các trang trí nội dung dưới dạng fragment shader và các phép biến đổi không gian dưới dạng vertex shader để bảo toàn các lớp phủ hình ảnh khi nén hình học tài liệu một cách động. Now, so far, we've seen extensions that add information: colors on the text, widgets alongside it. The document itself has stayed the same underneath. But some of the most interesting reading augmentations change how content is rendered. Here we have a riff on Liquid Text by Taschman and Edwards.
Cùng một nguyên thủy neo đó còn hỗ trợ những thứ vượt ra ngoài ghi chú lề: thanh công cụ nổi, bảng điều khiển theo ngữ cảnh, bất cứ thứ gì mà phần mở rộng muốn đặt cạnh một vị trí trong tài liệu. Cho đến giờ, ta đã thấy các phần mở rộng thêm thông tin: màu trên văn bản, widget bên cạnh nó. Bản thân tài liệu bên dưới vẫn không thay đổi. Nhưng một số bổ trợ đọc thú vị nhất lại thay đổi cách nội dung được kết xuất. Ở đây ta có một biến tấu dựa trên Liquid Text của Taschman và Edwards.
When I hold the Command key and scroll, I can compress sections of the paper spatially, pushing content together. Notice that the rhetorical colors— this green here— it compresses into a sort of visual fingerprint inside the collapsed region. You can think of decorations like a fragment shader. That composes with these changes to the document's geometry, which is sort of like a vertex shader in a graphics pipeline. This is a spatial transform.
Khi giữ phím Command và cuộn, tôi có thể nén các phần của bài báo theo không gian, đẩy nội dung lại gần nhau. Hãy chú ý các màu tu từ—màu xanh lá ở đây—nén thành một dạng dấu vân tay trực quan bên trong vùng thu gọn. Bạn có thể hình dung decorations như một fragment shader. Nó kết hợp với những thay đổi trong hình học tài liệu, tương tự vertex shader trong pipeline đồ họa. Đây là một phép biến đổi không gian.
A digital document interface displaying color-highlighted two-column text, with certain sections vertically squished into dense lines, accompanied by a right-hand sidebar featuring video thumbnails and margin notes.
It changes where content appears on screen.Quy tắcQuery a centralized layout map for anchor locations rather than tracking document transforms directly so anchored widgets automatically follow modified content geometry.Truy vấn bản đồ bố cục tập trung để lấy vị trí mỏ neo thay vì theo dõi trực tiếp các phép biến đổi tài liệu để các tiện ích được neo tự động đi theo hình học nội dung đã chỉnh sửa. But notice also what's happening to these anchored widgets.
Nó thay đổi nơi nội dung xuất hiện trên màn hình. Nhưng hãy chú ý cả những gì đang xảy ra với các widget được neo.
These anchored widgets don't know about the Liquid Text plugin. They just ask the layout map, where is my anchor right now? And the layout map accounts for that spatial transform. They don't know the document's been reshaped, but the widgets do follow the geometry.
Các widget được neo này không biết gì về plugin Liquid Text. Chúng chỉ hỏi bản đồ bố cục: hiện giờ điểm neo của tôi ở đâu? Bản đồ bố cục tính đến phép biến đổi không gian đó. Chúng không biết tài liệu đã được định hình lại, nhưng các widget vẫn đi theo hình học.
Because this architecture cleanly separates what to show from where to show it, we can render the same document multiple times in different ways.Khái niệmSeparating content specification from spatial layout enables multi-pass rendering of shared decoration facets across primary views and compressed minimap overviews.Việc tách biệt đặc tả nội dung khỏi bố cục không gian cho phép dựng hình nhiều bước các khía cạnh trang trí chung trên các chế độ xem chính và tổng quan bản đồ thu nhỏ được nén. This mini-map reads the same decoration facets as the main view— the rhetorical colors, the citation markers— but it renders them inside of a compressed overview. Conceptually, it's like a second render pass of the same pipeline.
Vì kiến trúc này tách biệt rõ ràng việc hiển thị cái gì và hiển thị ở đâu, chúng ta có thể kết xuất cùng một tài liệu nhiều lần theo những cách khác nhau. Bản đồ thu nhỏ này đọc cùng các facet về trang trí như khung nhìn chính—màu tu từ, dấu trích dẫn—nhưng kết xuất chúng bên trong một tổng quan được nén. Về mặt khái niệm, nó giống như một lượt kết xuất thứ hai của cùng pipeline.
Screenshot of a document reader displaying a main view with highlighted text alongside a narrow vertical minimap on the left that mirrors the highlighted document sections in miniature.
Chuyển đến mục
Interface Invention and Agent PrototypingPhát minh giao diện và tạo mẫu bằng tác nhân

UI Invention Bottlenecks and Skill AsymmetriesĐiểm nghẽn trong phát minh UI và sự bất cân xứng kỹ năng

Andy Matuschak
Composable architectures and coding agents, in combination, may help us break down the silos around our most complex apps, but I'm not satisfied with just combining the balkanized interface ideas that we already have.Khái niệmOver-relying on technical developers for software creation suppresses imaginative user interface experimentation, limiting dynamic media to conventional interaction paradigms.Việc quá phụ thuộc vào các nhà phát triển kỹ thuật để tạo phần mềm sẽ kìm hãm sự thử nghiệm giao diện người dùng đầy tính sáng tạo, giới hạn phương tiện động trong các mô hình tương tác truyền thống. I want a wild flux of new ideas. I think we've barely scratched the surface of what we can do with dynamic media. Despite all of the manic energy in the tech industry, and all of the prestigious HCI conferences, the pace of meaningful invention in user interfaces strikes me as remarkably slow, and the level of imagination remarkably tame. I want new answers, new questions, and ideally both at once.
Các kiến trúc có thể kết hợp và coding agent, khi đi cùng nhau, có thể giúp chúng ta phá vỡ các silo quanh những ứng dụng phức tạp nhất, nhưng tôi không hài lòng với việc chỉ kết hợp những ý tưởng giao diện bị phân mảnh mà chúng ta đã có. Tôi muốn một luồng tuôn trào dữ dội của những ý tưởng mới. Tôi nghĩ chúng ta mới chỉ chạm rất ít vào bề mặt những gì có thể làm với môi trường động. Bất chấp năng lượng cuồng nhiệt trong ngành công nghệ và những hội nghị HCI danh giá, tốc độ phát minh có ý nghĩa trong giao diện người dùng đối với tôi dường như chậm đáng kinh ngạc, còn mức độ tưởng tượng thì đáng kinh ngạc là quá an toàn. Tôi muốn những câu trả lời mới, những câu hỏi mới, và lý tưởng nhất là cả hai cùng lúc.
In the early days of the personal computer, transformative user interfaces were invented by field-crossing weirdos like Engelbart and Sutherland, Kay, Simone Atkinson. They had PhDs in the sciences because building anything was so hard back then, but really they were wildly imaginative designers. The software industry grew much faster than the supply of polymathic geniuses, and so by the '80s, most programmers left to their own devices were building outrageously user-hostile software that's filled with technical jargon. And so in his landmark book, The Inmates Are Running the Asylum, Alan Cooper proposed this new role, the interaction designer, who would work alongside the programmers to build software that better fit user needs and abilities. Specialization worked.
Trong những ngày đầu của máy tính cá nhân, các giao diện người dùng có tính biến đổi được phát minh bởi những kẻ lập dị vượt ranh giới lĩnh vực như Engelbart, Sutherland, Kay và Simone Atkinson. Họ có bằng tiến sĩ khoa học vì hồi đó xây dựng bất cứ thứ gì cũng quá khó, nhưng thực chất họ là những nhà thiết kế giàu trí tưởng tượng đến cực độ. Ngành phần mềm phát triển nhanh hơn nhiều so với nguồn cung những thiên tài đa năng, nên đến thập niên 1980, phần lớn lập trình viên khi được tự do đã xây dựng phần mềm cực kỳ thù địch với người dùng, đầy thuật ngữ kỹ thuật. Vì vậy, trong cuốn sách có tầm ảnh hưởng The Inmates Are Running the Asylum, Alan Cooper đề xuất một vai trò mới: nhà thiết kế tương tác, người làm việc cùng lập trình viên để xây dựng phần mềm phù hợp hơn với nhu cầu và khả năng của người dùng. Chuyên môn hóa đã có tác dụng.
I mean, most modern software really does make a strong effort to understand user needs, and now that interface design patterns and practices have developed, they've spread so widely in the culture that many programmers can create tolerable interfaces on their own. But I say the inmates are still running the asylum. Now, Cooper was worried about an accidental tyranny of programmers subjecting people to comically bad user interfaces. I'm worried about an accidental tyranny of programmers holding back imagination in user interfaces. I want weird, courageous, idiosyncratic, alien.
Ý tôi là, phần lớn phần mềm hiện đại thực sự nỗ lực mạnh mẽ để hiểu nhu cầu người dùng, và giờ đây, khi các mẫu cùng thực hành thiết kế giao diện đã phát triển, chúng lan rộng trong văn hóa đến mức nhiều lập trình viên có thể tự tạo ra những giao diện chấp nhận được. Nhưng tôi cho rằng các tù nhân vẫn đang điều hành trại tâm thần. Cooper lo ngại một chế độ chuyên chế tình cờ của các lập trình viên, áp đặt những giao diện người dùng tệ hại đến mức lố bịch. Tôi lo ngại một chế độ chuyên chế tình cờ của các lập trình viên đang kìm hãm trí tưởng tượng trong giao diện người dùng. Tôi muốn những thứ kỳ quặc, táo bạo, độc đáo, xa lạ.
Yeah, we're living through the astounding advent of machine intelligence, and that's plenty alien.Quy tắcSynthesize imaginative design, software engineering fluency, and domain expertise when inventing user interfaces to move beyond generic conversational chat paradigms.Hãy tổng hợp thiết kế giàu tính sáng tạo, sự thành thạo về kỹ thuật phần mềm và chuyên môn miền khi phát minh giao diện người dùng để vượt ra khỏi các mô hình trò chuyện hội thoại thông thường. But we've crammed all that power into chat interfaces that have barely evolved since the IRC clients I used as a teenager. Where's the invention? I think the central problem is that invention in the dynamic medium requires too much programming. To invent a new user interface, you need both imaginative design skill and fluent technical skill.
Đúng vậy, chúng ta đang sống qua sự xuất hiện đáng kinh ngạc của trí tuệ máy, và điều đó đủ xa lạ rồi. Nhưng chúng ta đã nhồi nhét toàn bộ sức mạnh ấy vào các giao diện trò chuyện hầu như chưa tiến hóa kể từ những client IRC tôi dùng khi còn thiếu niên. Sự phát minh đâu rồi? Tôi nghĩ vấn đề cốt lõi là phát minh trong môi trường động đòi hỏi quá nhiều lập trình. Để phát minh một giao diện người dùng mới, bạn cần cả năng lực thiết kế giàu tưởng tượng lẫn kỹ năng kỹ thuật thành thạo.
Very few people possess both. And worse, those 2 usually aren't enough. Much interface invention also requires deep domain insight. I think about Steinberg inventing the timeline editor in Cubase after years as a musician and producer, or Bricklin inventing the dynamic spreadsheet while at Harvard Business School. Now, on those skills, you might suppose that bold new user interfaces are mostly bottlenecked on imaginative design work and deep domain insight.
Rất ít người có cả hai. Tệ hơn, thường hai thứ đó vẫn chưa đủ. Nhiều phát minh giao diện còn đòi hỏi hiểu biết sâu về lĩnh vực. Tôi nghĩ đến Steinberg phát minh trình biên tập timeline trong Cubase sau nhiều năm làm nhạc sĩ và nhà sản xuất, hay Bricklin phát minh bảng tính động khi đang học tại Harvard Business School. Xét các kỹ năng đó, bạn có thể cho rằng các giao diện người dùng mới táo bạo chủ yếu bị nghẽn ở công việc thiết kế giàu tưởng tượng và hiểu biết sâu về lĩnh vực.
And so you might expect to see those skills most emphasized in the culture.Khái niệmThe asymmetry where code yields working prototypes but design concepts stall unbuilt creates selection pressure that leaves user interface innovation overweight on programming.Sự bất đối xứng trong đó mã nguồn tạo ra các bản mẫu hoạt động được nhưng các ý tưởng thiết kế lại bị đình trệ tạo ra áp lực lựa chọn khiến sự đổi mới giao diện người dùng bị lệch về phía lập trình. But if you visit community events around interface invention or the future of personal computers, or academic HCI, you'll quickly notice that pretty much everybody's a programmer by training, and they're also programmers by culture. Most will have studied at a formal analytical science program, not the wild-eyed studios of a design school. Not incidentally, that includes me. I suspect we're in this situation because of a deep asymmetry between these skills.
Vì vậy, bạn có thể kỳ vọng văn hóa sẽ nhấn mạnh nhất những kỹ năng ấy. Nhưng nếu tham dự các sự kiện cộng đồng về phát minh giao diện, tương lai của máy tính cá nhân hoặc HCI học thuật, bạn sẽ nhanh chóng nhận ra gần như mọi người đều được đào tạo thành lập trình viên, và cũng sống theo văn hóa lập trình. Phần lớn từng học trong các chương trình khoa học chính thức, thiên về phân tích, chứ không phải những studio giàu tưởng tượng của trường thiết kế. Không phải ngẫu nhiên, tôi cũng thuộc nhóm đó. Tôi nghi ngờ chúng ta rơi vào tình trạng này vì có sự bất đối xứng sâu sắc giữa các kỹ năng.
Programming without design or domain insight can yield working interfaces, Though often boring or flawed ones, while design or domain insights without programming gets stuck on the drawing board. So, at least for solo invention, roughly all working interfaces are created by programmers who may or may not have those other skills. If new interfaces are mostly bottlenecked on imaginative design work and deep domain insight, this asymmetry puts selection pressure on the wrong skills. When I complain about the slow pace of interface invention, people often tell me this is really a problem with the market, consumers reward easy, familiar interfaces, not weird ones. And it's a lucrative industry now.
Lập trình không có thiết kế hay hiểu biết lĩnh vực có thể tạo ra các giao diện hoạt động được, dù thường nhàm chán hoặc thiếu sót; còn thiết kế hay hiểu biết lĩnh vực không có lập trình thì mắc kẹt trên bàn vẽ. Vì vậy, ít nhất đối với phát minh cá nhân, gần như mọi giao diện hoạt động được đều do các lập trình viên tạo ra, những người có thể có hoặc không có các kỹ năng kia. Nếu các giao diện mới chủ yếu bị nghẽn ở thiết kế giàu tưởng tượng và hiểu biết sâu về lĩnh vực, sự bất đối xứng này tạo áp lực chọn lọc lên những kỹ năng sai. Khi tôi phàn nàn về tốc độ phát minh giao diện chậm, người ta thường nói đây thực sự là vấn đề của thị trường: người tiêu dùng thích giao diện dễ dùng, quen thuộc, chứ không thích giao diện kỳ quặc. Và giờ đây đó là một ngành sinh lợi.
And so it's really, it's become commercialized and professionalized. But you know what? The future of computing meetups and HCI conferences, they're full of people who don't care about those things, who yearn to build their own castles in the sky and have these great ideas they wanna express. It's just that with love and as part of that scene, the results are often underwhelming. I think this is because the scene is wildly overweight on programming, and underweight on domain insight and design.
Vì vậy nó đã trở nên thương mại hóa và chuyên nghiệp hóa. Nhưng bạn biết không? Các buổi gặp mặt về tương lai máy tính và hội nghị HCI đầy những người không quan tâm đến những điều đó, những người khao khát xây lâu đài trên mây và có những ý tưởng lớn muốn thể hiện. Chỉ là, với tất cả tình yêu và vì là một phần của cộng đồng ấy, kết quả thường gây thất vọng. Tôi nghĩ đó là vì cộng đồng này quá nặng về lập trình, và quá nhẹ về hiểu biết lĩnh vực cùng thiết kế.
Chuyển đến mục
Interface Invention and Agent PrototypingPhát minh giao diện và tạo mẫu bằng tác nhân

Specialized Team Friction and Prototyping Catch-22sMa sát trong nhóm chuyên môn hóa và nghịch lý tiến thoái lưỡng nan khi tạo mẫu

Now, if solo invention selects for the wrong skill, what about inventing in teams? Cooper thought we could get out of this through specialization. We'll have programmers working together with designers. Maybe one of them, or maybe a product manager, will have the domain insight too. And this had worked out okay for most software.
Nếu phát minh cá nhân chọn nhầm kỹ năng, vậy còn phát minh theo nhóm thì sao? Cooper nghĩ chúng ta có thể thoát khỏi điều này thông qua chuyên môn hóa. Lập trình viên sẽ làm việc cùng nhà thiết kế. Có thể một trong số họ, hoặc một quản lý sản phẩm, cũng có hiểu biết về lĩnh vực. Và điều này đã vận hành khá ổn với phần lớn phần mềm.
I think most software is just theme and variation, professionals applying well-known patterns.Khái niệmNon-programmers face a prototyping catch-22 where refining novel interfaces requires interactive tinkering, yet securing developer help requires presenting an already legible concept.Những người không phải lập trình viên phải đối mặt với tình thế tiến thoái lưỡng nan khi tinh chỉnh giao diện mới cần sự mày mò tương tác, nhưng để có trợ giúp từ nhà phát triển lại cần trình bày một ý tưởng đã rõ ràng. Novelty would actually get in the way, but I wanna talk about invention. And there I think specialization has worked much less well. Teams put non-programmers in a position of dependency by default. If a designer wants to invent a novel interface, they usually can't make a working prototype without pitching others to help.
Tôi nghĩ phần lớn phần mềm chỉ là biến thể của những chủ đề quen thuộc, các chuyên gia áp dụng những mẫu đã biết. Sự mới lạ thực ra sẽ cản đường, nhưng tôi muốn nói về phát minh. Ở đó, tôi nghĩ chuyên môn hóa kém hiệu quả hơn nhiều. Các nhóm mặc định đặt những người không lập trình vào vị trí phụ thuộc. Nếu một nhà thiết kế muốn phát minh một giao diện mới lạ, họ thường không thể tạo nguyên mẫu hoạt động mà không thuyết phục người khác giúp đỡ.
And it's tough pitching too. They have to show something fake and lean on their colleagues' imagination to fill in the blanks. For designers with modest programming skills, prototyping often remains too slow and difficult to justify that opportunity cost. I've seen designers stuck here for years, often referencing some concept they have in their head, but they've never been able to realize in a form that others can understand. So it might sound like the problem is that designers are just constantly pitching brilliant ideas, but they're getting shot down by their short-sighted colleagues.
Mà thuyết phục cũng khó. Họ phải trình bày một thứ giả lập và dựa vào trí tưởng tượng của đồng nghiệp để lấp những chỗ trống. Với các nhà thiết kế có kỹ năng lập trình khiêm tốn, việc tạo nguyên mẫu thường vẫn quá chậm và khó để biện minh cho chi phí cơ hội. Tôi đã thấy các nhà thiết kế mắc kẹt ở đây suốt nhiều năm, thường nhắc đến một khái niệm trong đầu nhưng chưa bao giờ hiện thực hóa được nó dưới dạng người khác có thể hiểu. Nghe như thể vấn đề là các nhà thiết kế cứ liên tục trình bày những ý tưởng thiên tài nhưng bị đồng nghiệp thiển cận bác bỏ.
I think the deeper problem is that this dynamic tends to prevent those ideas from ever becoming brilliant in the first place. Why would we expect that people can develop and pitch a great idea for a novel interface without ever using and iterating upon a real working version of that interface? Non-programming designers are trying to invent something in an interactive medium without being able to make something meaningfully interactive. So much of invention is about intimacy with the materials and about tight feedback and about sensitive observation and authentic use. So it's a catch-22.
Tôi nghĩ vấn đề sâu xa hơn là động lực này ngăn những ý tưởng ấy trở nên thiên tài ngay từ đầu. Vì sao ta kỳ vọng mọi người có thể phát triển và trình bày một ý tưởng tuyệt vời cho giao diện mới lạ mà chưa từng sử dụng hay lặp lại trên một phiên bản hoạt động thực sự của giao diện đó? Các nhà thiết kế không lập trình đang cố phát minh trong một môi trường tương tác mà không thể tạo ra thứ gì tương tác có ý nghĩa. Phát minh phụ thuộc rất nhiều vào sự thân thuộc với vật liệu, phản hồi chặt chẽ, quan sát tinh tế và việc sử dụng chân thực. Đó là một vòng luẩn quẩn.
To enter into proper dialogue with their medium, a non-programmer needs to get help from a programmer.Khái niệmLacking the ability to prototype dynamic interactions independently, designers often retreat into static visual craftsmanship instead of exploring true interactive potential.Thiếu khả năng tự tạo bản mẫu cho các tương tác động, các nhà thiết kế thường rút lui về chế tác hình ảnh tĩnh thay vì khám phá tiềm năng tương tác thực sự. And that generally requires the idea to be at least somewhat legible and compelling. But if they're doing something truly novel, They often can't make it legible and compelling without being in that close dialogue with their medium. So, modern software design culture often turns to visual craftsmanship rather than novel dynamic representations or interactions. I think that's because visuals are the domain where designers can tinker intuitively without the frustration of depending on others to develop their ideas.
Để bước vào đối thoại thực sự với môi trường của mình, một người không lập trình cần được lập trình viên giúp đỡ. Và điều đó thường đòi hỏi ý tưởng phải phần nào dễ hiểu và thuyết phục. Nhưng nếu làm điều thực sự mới lạ, họ thường không thể khiến nó dễ hiểu và thuyết phục nếu chưa có cuộc đối thoại gần gũi ấy với môi trường. Vì vậy, văn hóa thiết kế phần mềm hiện đại thường chuyển sang sự trau chuốt hình ảnh thay vì những biểu diễn hay tương tác động mới lạ. Tôi nghĩ đó là vì hình ảnh là lĩnh vực nơi nhà thiết kế có thể trực giác mày mò mà không chịu bực bội vì phải phụ thuộc vào người khác để phát triển ý tưởng.
It's sort of like the design equivalent of an alienated programmer hyperfixating on making the code really clean. Each practice is fine and necessary in appropriate qualities— quantities, but can easily become a self-protective retreat from the medium's true potential. Also, this is a bad situation for programmers. They become inadvertent gatekeepers. I've been in this position with colleagues.
Nó giống như phiên bản tương đương trong thiết kế của một lập trình viên bị tha hóa, quá ám ảnh với việc làm cho mã thật sạch. Mỗi thực hành đều phù hợp và cần thiết với mức độ thích hợp, nhưng có thể dễ dàng trở thành một sự rút lui mang tính tự vệ khỏi tiềm năng thực sự của môi trường. Đây cũng là tình trạng tệ đối với lập trình viên. Họ trở thành những người gác cổng bất đắc dĩ. Tôi từng ở vị trí này với các đồng nghiệp.
Chuyển đến mục
Interface Invention and Agent PrototypingPhát minh giao diện và tạo mẫu bằng tác nhân

Rapid Designer Prototyping via Coding AgentsNhà thiết kế tạo mẫu nhanh nhờ tác nhân lập trình

They explain their idea, and I probe and I riff, but I still don't really see what they see in it.Khái niệmAI coding agents eliminate developer gatekeeping during early interface invention, enabling domain experts to directly construct and iterate on interactive concepts.Các đại lý AI lập trình loại bỏ sự kiểm soát của nhà phát triển trong giai đoạn đầu phát minh giao diện, cho phép các chuyên gia miền trực tiếp xây dựng và lặp lại các ý tưởng tương tác. From here, I have 2 bad options. I can demur, which often effectively just blocks my teammate, or I can acquiesce, subordinating my own priorities to an idea that rightly or wrongly seems less promising than the ones I'm already addressing. But now I see cracks in the walls. I think coding agents will end the accidental tyranny of programmers in interface invention.
Họ giải thích ý tưởng, tôi đặt câu hỏi và cùng phát triển, nhưng vẫn không thực sự thấy điều họ nhìn thấy trong đó. Từ đây tôi có hai lựa chọn tệ. Tôi có thể khước từ, điều thường thực sự chặn đường đồng đội, hoặc tôi có thể đồng ý, gác các ưu tiên của mình sang một bên để theo một ý tưởng, dù đúng hay sai, có vẻ kém hứa hẹn hơn những ý tưởng tôi đang giải quyết. Nhưng giờ tôi thấy những vết nứt trên tường. Tôi nghĩ coding agent sẽ chấm dứt chế độ chuyên chế tình cờ của lập trình viên trong phát minh giao diện.
I think designers and domain experts will increasingly free themselves from their dependence on programmers in the early stages of invention. They'll finally be able to get their hands on the dynamic medium to iterate and prototype concepts directly. I've been seeing it. I spent 2025 collaborating with 2 talented designers. Their story with coding agents this past year has been truly wild.
Tôi nghĩ các nhà thiết kế và chuyên gia lĩnh vực sẽ ngày càng thoát khỏi sự phụ thuộc vào lập trình viên trong giai đoạn đầu của phát minh. Cuối cùng họ sẽ có thể trực tiếp chạm tay vào môi trường động để lặp lại và tạo nguyên mẫu cho các khái niệm. Tôi đã chứng kiến điều đó. Năm 2025, tôi cộng tác với hai nhà thiết kế tài năng. Câu chuyện của họ với coding agent trong năm vừa qua thực sự điên rồ.
I think the impact on my collaborators has been much greater than the impact on me, despite the fact that I'm now building perhaps 10 times the speed.Khái niệmModern AI coding models enable non-technical designers to sustain multi-week iteration cycles, turning complex interaction sketches into working functional prototypes.Các mô hình AI lập trình hiện đại cho phép các nhà thiết kế không chuyên về kỹ thuật duy trì các chu kỳ lặp kéo dài nhiều tuần, biến các bản phác thảo tương tác phức tạp thành các bản mẫu hoạt động hoàn chỉnh. So much stuff, so fast. Unlike me, these 2 started their careers in design and spent their formative years in the arts culture. They can program a bit, but the process is, or rather was, really slow and difficult enough to pose a significant barrier. Now, at the start of 2025, coding models could implement small one-off design ideas, but their outputs would just fall apart after a couple of iterations.
Tôi nghĩ tác động lên các cộng sự của mình lớn hơn nhiều so với tác động lên tôi, dù giờ đây tôi xây dựng nhanh hơn có lẽ mười lần. Rất nhiều thứ, rất nhanh. Khác với tôi, hai người này bắt đầu sự nghiệp trong thiết kế và trải qua những năm hình thành trong văn hóa nghệ thuật. Họ biết lập trình một chút, nhưng quy trình này—hay đúng hơn là trước đây—chậm và khó đến mức tạo ra một rào cản đáng kể. Đầu năm 2025, các mô hình lập trình có thể triển khai những ý tưởng thiết kế nhỏ, đơn lẻ, nhưng đầu ra thường sụp đổ sau vài vòng lặp.
At the end of the year, my collaborators were routinely prototyping novel interface ideas And they would sustain that iteration across weeks. I'd often check my messages in the morning and I would find some stunningly elaborate prototype condensed from dreams in a single late-night fugue. For example, for much of the year, our interface sketches gestured at an exotic interactive content layout system. We shied away from fleshing it out because it had the air of a big scary project. But then I woke up one morning to a working implementation because one designer and an army of coding agents had just figured it out together overnight.
Cuối năm, các cộng sự của tôi thường xuyên tạo nguyên mẫu cho những ý tưởng giao diện mới lạ và duy trì quá trình lặp lại đó trong nhiều tuần. Tôi thường kiểm tra tin nhắn vào buổi sáng và thấy một nguyên mẫu tinh vi đến kinh ngạc, được cô đọng từ những giấc mơ trong một cơn xuất thần đêm khuya. Chẳng hạn, phần lớn năm đó, các phác thảo giao diện của chúng tôi gợi đến một hệ thống bố cục nội dung tương tác kỳ lạ. Chúng tôi ngại phát triển chi tiết vì nó mang dáng vẻ của một dự án lớn đáng sợ. Nhưng rồi một sáng tôi thức dậy và thấy một bản triển khai hoạt động được, vì một nhà thiết kế cùng cả một đội quân coding agent đã cùng nhau tìm ra nó chỉ sau một đêm.
And that very same week, I watched with amazement as the other designer I was working with transformed pencil sketches of a dynamic 3D data visualization into this captivating prototype that ran against real data from our, our system. Now, this arc has totally changed the nature of our collaboration. At the start of the year, my collaborators had to mostly go through me to get their ideas prototyped at enough fidelity to seriously use. And with 3 people designing and 1 person programming, There just wasn't enough programming to go around. It's tough for everybody.
Cũng trong tuần đó, tôi kinh ngạc nhìn nhà thiết kế còn lại biến những phác thảo bằng bút chì về một hình ảnh trực quan hóa dữ liệu 3D động thành một nguyên mẫu cuốn hút, chạy trên dữ liệu thật từ hệ thống của chúng tôi. Quá trình này đã thay đổi hoàn toàn bản chất cộng tác. Đầu năm, các cộng sự của tôi phần lớn phải đi qua tôi để ý tưởng được tạo nguyên mẫu với độ trung thực đủ cao để thực sự sử dụng. Với ba người thiết kế và một người lập trình, không có đủ năng lực lập trình cho tất cả. Mọi người đều vất vả.
It turns me into a gatekeeper and my colleagues into salespeople.Quy tắcUse interactive AI prototyping to explore and clarify ambiguous design ideas through tinkering rather than attempting to articulate unproven concepts in advance.Hãy sử dụng việc tạo bản mẫu AI tương tác để khám phá và làm rõ các ý tưởng thiết kế mơ hồ thông qua việc mày mò thay vì cố gắng diễn đạt các khái niệm chưa được kiểm chứng từ trước. But now increasingly they can tinker with their own ideas and prototypes.
Điều đó biến tôi thành người gác cổng và biến các đồng nghiệp thành nhân viên bán hàng. Nhưng giờ đây họ ngày càng có thể tự mày mò với ý tưởng và nguyên mẫu của mình.
On a couple occasions, my collaborators prototyped an idea and I could see, gosh, you were gesturing at this a while ago and I didn't get it. But now I don't have to get it. I'm not blocking their early expression and iteration. And like I described earlier, this story isn't just about me being too dense to appreciate the beautiful early ideas from my collaborators. Often a designer can't really understand their own inkling until they can get their hands on it and tinker with it.
Một vài lần, các cộng sự tạo nguyên mẫu cho một ý tưởng và tôi nhận ra: trời, trước đây bạn đã gợi đến điều này mà tôi không hiểu. Nhưng giờ tôi không cần phải hiểu trước. Tôi không chặn biểu đạt và lặp lại ban đầu của họ. Như đã mô tả, câu chuyện này không chỉ là việc tôi quá đần để trân trọng những ý tưởng đẹp đẽ ban đầu của cộng sự. Thường thì một nhà thiết kế không thể thực sự hiểu linh cảm của chính mình cho đến khi có thể chạm vào nó và mày mò với nó.
Chuyển đến mục
Interface Invention and Agent PrototypingPhát minh giao diện và tạo mẫu bằng tác nhân

Ted Nelson's Struggle vs Vibe Coding LiberationCuộc vật lộn của Ted Nelson và sự giải phóng nhờ vibe coding

Coding agents created a safe space for noodling for them when their ideas aren't yet coherent.Khái niệmDeveloping interface concepts through abstract writing rather than hands-on prototyping deprives inventors of crucial feedback, resulting in uncompelling software implementations.Việc phát triển các ý tưởng giao diện thông qua văn bản trừu tượng thay vì tạo bản mẫu thực hành sẽ tước đi phản hồi quan trọng của nhà phát minh, dẫn đến các phiên bản phần mềm không thuyết phục. The old dynamic demanded all this clarity and legibility up front. I wonder how different Ted Nelson's story might have been in this world. I mean, he spent 50 years chasing this parallel universe version of the World Wide Web in which every piece of writing lives in this living network with everything else.
Coding agent tạo ra một không gian an toàn để họ mày mò khi ý tưởng còn chưa mạch lạc. Động lực cũ đòi hỏi mọi thứ phải rõ ràng và dễ hiểu ngay từ đầu. Tôi tự hỏi câu chuyện của Ted Nelson sẽ khác thế nào trong thế giới này. Ông đã dành 50 năm theo đuổi một phiên bản vũ trụ song song của World Wide Web, nơi mọi tác phẩm viết đều sống trong một mạng lưới sống động với mọi thứ khác.
He had that wild imagination I, I really want to see in this scene, but he didn't have the technical skills to prototype his ideas. So he wrote whole books about them, pushed the concepts further and further without the real feedback that he needed from these systems. And so finally, after spending his whole career fighting for the buy-in that he needed to experience his own ideas, he got some of them implemented and they just weren't as powerful or compelling as advertised. I think that shouldn't surprise us. We shouldn't blame him.
Ông có trí tưởng tượng hoang dã mà tôi thực sự muốn thấy trong cộng đồng này, nhưng không có kỹ năng kỹ thuật để tạo nguyên mẫu cho ý tưởng. Ông viết cả những cuốn sách về chúng, đẩy các khái niệm ngày càng xa mà không có phản hồi thực tế cần thiết từ các hệ thống ấy. Cuối cùng, sau cả sự nghiệp đấu tranh để có được sự ủng hộ cần thiết nhằm trải nghiệm ý tưởng của chính mình, ông đã triển khai được một số ý tưởng, và chúng không mạnh mẽ hay thuyết phục như lời quảng bá. Tôi nghĩ điều đó không nên khiến chúng ta bất ngờ. Chúng ta không nên trách ông.
Invention takes iteration, it takes contact with the medium, and he didn't really have that opportunity. I wonder what if he did? Increasingly, today's designers do.
Phát minh cần lặp lại, cần tiếp xúc với môi trường, mà ông thực sự không có cơ hội đó. Tôi tự hỏi nếu ông có thì sao? Ngày nay, các nhà thiết kế ngày càng có cơ hội ấy.
It's clearly a source of childlike joy for them.Khái niệmAI-assisted prototyping restores creative agency to non-technical creators, transforming software development from a technical hurdle into an empowering expressive medium.Tạo bản mẫu với sự hỗ trợ của AI khôi phục quyền chủ động sáng tạo cho các nhà sáng tạo không chuyên về kỹ thuật, biến việc phát triển phần mềm từ một rào cản kỹ thuật thành một phương tiện biểu đạt đầy sức mạnh. One of my collaborators, Neo Ono, shared this on their experience. I'm just going to read a quote from them. Vibe coding unlocked something in my mind or in my latent personality matrix. I'm reminded of descriptions by people who feel like they were fundamentally changed by martial arts or an esoteric practice.
Rõ ràng đó là nguồn vui sướng trẻ thơ đối với họ. Một cộng sự của tôi, Neo Ono, đã chia sẻ trải nghiệm này. Tôi sẽ đọc một đoạn trích của họ. Lập trình theo cảm hứng đã mở khóa một điều gì đó trong tâm trí tôi, hay trong ma trận nhân cách tiềm ẩn của tôi. Tôi nhớ đến những mô tả của những người cảm thấy mình đã được võ thuật hoặc một thực hành huyền môn thay đổi tận gốc.
Like something inside of me realigned and connected me to an inner conduit of energy that had lain dormant. I feel unleashed in a way that changes my sense of self. There is an unambiguous before and after. I feel free to act, to express myself. I feel the body electric is as perfect a summation of this feeling as anything.
Như thể có thứ gì đó bên trong tôi đã được căn chỉnh lại và kết nối với một ống dẫn năng lượng bên trong vốn ngủ yên. Tôi cảm thấy được giải phóng theo cách làm thay đổi cảm nhận về chính mình. Có một sự khác biệt rõ ràng giữa trước và sau. Tôi cảm thấy tự do để hành động, để biểu đạt bản thân. Cụm từ “cơ thể điện” có lẽ là cách tổng kết hoàn hảo nhất cho cảm giác này.
Chuyển đến mục
Interface Invention and Agent PrototypingPhát minh giao diện và tạo mẫu bằng tác nhân

Top-of-Funnel Prototyping and Dynamic Interaction ModelsTạo mẫu ở đầu phễu và các mô hình tương tác động

Every designer I know has spent ages haunted by beautiful ideas without enough buy-in to try them properly. Well, now they can just try things out. I have to imagine they're all champing at the bit, sick of waiting around for others to express their ideas. Now, the tech world is drowning in noise about coding agents. Some people say computer science undergrads are screwed, idea guys are going to build and ship everything by themselves.
Mọi nhà thiết kế tôi biết đều đã dành rất lâu bị ám ảnh bởi những ý tưởng đẹp đẽ nhưng không đủ sự ủng hộ để thử chúng một cách nghiêm túc. Giờ đây họ có thể cứ thử. Tôi phải hình dung rằng họ đang nóng lòng muốn hành động, phát chán vì phải chờ người khác thể hiện ý tưởng. Thế giới công nghệ hiện đang chìm trong tiếng ồn về coding agent. Có người nói sinh viên đại học ngành khoa học máy tính tiêu rồi, những “người ý tưởng” sẽ tự mình xây dựng và phát hành mọi thứ.
Others say, oh, that's just hype.Khái niệmTop-of-funnel prototyping tolerates lower software quality standards, making current AI coding agents immediately effective for validating dynamic interaction concepts.Tạo bản mẫu ở giai đoạn đầu chấp nhận các tiêu chuẩn chất lượng phần mềm thấp hơn, khiến các đại lý AI lập trình hiện tại phát huy hiệu quả ngay lập tức trong việc xác minh các ý tưởng tương tác động. But whatever. What I want is more imagination and invention in user interfaces. And for that, coding agents can make a huge difference, even if non-programmers can't bring their prototypes all the way to production. The bottleneck here isn't that we are constantly seeing these amazing new user interface prototypes and research systems, and yet the foolish market just won't bring these systems to production.
Người khác nói đó chỉ là cường điệu. Nhưng thôi, điều tôi muốn là nhiều trí tưởng tượng và phát minh hơn trong giao diện người dùng. Với mục tiêu đó, coding agent có thể tạo ra khác biệt rất lớn, ngay cả khi người không lập trình không thể đưa nguyên mẫu đi hết chặng đường đến sản phẩm. Điểm nghẽn ở đây không phải là chúng ta liên tục thấy những nguyên mẫu giao diện mới tuyệt vời và hệ thống nghiên cứu, nhưng thị trường ngớ ngẩn lại không đưa chúng vào sản xuất.
That would be a great problem to have. I want to increase the imaginative flow into the top of the funnel. That early stage puts less pressure on software quality. A prototype just has to be real enough to let the designer feel how their ideas play out in an authentic context and to communicate clearly to others. Coding agents are already good enough to produce that level of prototyping for some ideas.
Đó sẽ là một vấn đề tuyệt vời nếu có. Tôi muốn tăng dòng chảy tưởng tượng vào đầu phễu. Giai đoạn đầu đó tạo ít áp lực hơn lên chất lượng phần mềm. Một nguyên mẫu chỉ cần đủ thật để nhà thiết kế cảm nhận ý tưởng diễn ra thế nào trong bối cảnh chân thực và truyền đạt rõ ràng cho người khác. Coding agent đã đủ tốt để tạo ra mức nguyên mẫu đó cho một số ý tưởng.
And then once there's a team, high-fidelity prototypes communicate ideas about dynamic media much more effectively than what most designers use now.Khái niệmHigh-fidelity interactive prototypes communicate novel dynamic behaviors to development teams far more clearly than static artboards or click-through mockups.Các bản mẫu tương tác độ trung thực cao truyền tải các hành vi động mới đến nhóm phát triển rõ ràng hơn nhiều so với các bảng vẽ tĩnh hoặc các mô hình nhấp chuột. Unlike static artboards and click-through demos, these prototypes can clearly specify novel dynamic behavior. Bas Oorten invented iOS's inertial scrolling and rubber banding using Macromedia Director prototypes with hacked-together scripts. None of that code shipped, but who cares? It defined the essential feeling of computing for a generation.
Và rồi, khi đã có một đội ngũ, các nguyên mẫu có độ trung thực cao truyền đạt ý tưởng về môi trường động hiệu quả hơn nhiều so với những gì hầu hết nhà thiết kế đang dùng. Khác với bảng vẽ tĩnh và bản demo nhấp qua, các nguyên mẫu này có thể đặc tả rõ ràng hành vi động mới lạ. Bas Oorten đã phát minh thao tác cuộn quán tính và hiệu ứng dây cao su của iOS bằng các nguyên mẫu Macromedia Director cùng những script chắp vá. Không đoạn mã nào trong đó được đưa vào sản phẩm, nhưng ai quan tâm? Nó đã xác định cảm giác cốt lõi của điện toán cho cả một thế hệ.
Chuyển đến mục
Cognitive Friction and HCI Mindset ShiftsMa sát nhận thức và chuyển đổi tư duy HCI

Attention Fragmentation and Mindless Agent VolleyingSự phân mảnh chú ý và việc trao đổi tới lui với tác nhân mà không suy nghĩ

If the last year's trend holds, we won't need to worry too much about these technical challenges.Khái niệmContinuous interaction with AI coding agents fragments attention and disrupts creative flow through perpetual context-switching and working memory resets.Tương tác liên tục với các đại lý AI lập trình làm phân mảnh sự chú ý và gián đoạn dòng chảy sáng tạo thông qua việc chuyển đổi ngữ cảnh liên tục và xóa bộ nhớ làm việc. I'm actually much more worried about dealing with the aesthetic and cognitive challenges. Working with coding agents all day leaves my attention fragmented, unfocused, impulsive. I'm busy waiting. I'm constantly bouncing between 5 different workspace tabs.
Nếu xu hướng năm ngoái tiếp diễn, chúng ta sẽ không phải quá lo về những thách thức kỹ thuật này. Tôi thực sự lo hơn về việc xử lý các thách thức thẩm mỹ và nhận thức. Làm việc cả ngày với coding agent khiến sự chú ý của tôi bị phân mảnh, mất tập trung và bốc đồng. Tôi luôn bận chờ đợi, liên tục chuyển qua lại giữa 5 tab không gian làm việc khác nhau.
I'm flushing and reconstituting my working memory. I'm moving quickly, but I'm never in flow. My design collaborator shared another quote on that feeling, a striking counterpoint to their earlier quote. Here's Neo again. I live in an eternal present.
Tôi liên tục xóa rồi tái tạo trí nhớ làm việc. Tôi làm việc nhanh, nhưng không bao giờ thực sự vào được dòng chảy. Cộng sự thiết kế của tôi đã chia sẻ một đoạn trích khác về cảm giác ấy, đối trọng rõ nét với đoạn trước. Đây là Neo một lần nữa: Tôi sống trong một hiện tại vĩnh cửu.
No memory, no plan. Every minute my attention lunges at something else. It's hard to recount what even happened these past few months. For all this activity, I feel bereft of outcomes or memories. I feel disembodied, so my embodied life is in disrepair.
Không ký ức, không kế hoạch. Mỗi phút, sự chú ý của tôi lại lao sang một thứ khác. Thật khó kể lại những gì đã xảy ra trong vài tháng qua. Dù hoạt động nhiều đến vậy, tôi cảm thấy bị tước mất thành quả và ký ức. Tôi cảm thấy mất kết nối với thân thể, nên đời sống nhập thể của tôi đang tan nát.
My home is my screen, so my living space is dusty and incomplete. I feel robbed of agency. I can scarcely recognize my own goals, let alone act on them. It's like forgetting a past life. The world feels like a blurry backdrop for my screens.
Nhà tôi là màn hình, nên không gian sống phủ bụi và dang dở. Tôi cảm thấy bị cướp mất năng lực tự quyết. Tôi hầu như không nhận ra mục tiêu của chính mình, chứ chưa nói đến việc hành động theo chúng. Nó giống như quên mất một kiếp sống trước. Thế giới có vẻ như một phông nền mờ nhòe cho những màn hình của tôi.
It's all desktop wallpaper.Quy tắcResist using rapid AI agent iterations as an unthinking tactic to evade the deliberate mental effort needed to solve difficult design problems.Hãy cưỡng lại việc sử dụng các vòng lặp đại lý AI nhanh chóng như một thủ thuật thiếu suy nghĩ nhằm né tránh nỗ lực trí óc thấu đáo cần thiết để giải quyết các vấn đề thiết kế khó. There's a deep pleasure in making something by hand, replaced here by a kind of anxious, scattered freneticism. Building has become so easy that it's now an oddly dangerous temptation. My collaborators and I have all found ourselves accidentally volleying with agents as a way to avoid thinking carefully about a problem.
Tất cả chỉ là hình nền máy tính. Niềm vui sâu sắc của việc tự tay làm một thứ gì đó đã bị thay thế bằng một kiểu điên cuồng lo âu, phân tán. Xây dựng đã trở nên quá dễ dàng, đến mức giờ đây nó là một cám dỗ kỳ lạ và nguy hiểm. Các cộng sự và tôi đều nhận ra mình vô tình chuyền bóng qua lại với agent để né tránh việc suy nghĩ cẩn thận về một vấn đề.
Chuyển đến mục
Cognitive Friction and HCI Mindset ShiftsMa sát nhận thức và chuyển đổi tư duy HCI

Programmer Mindsets and Formal Constraints on InventionTư duy lập trình viên và những ràng buộc hình thức đối với phát minh

Well, these costs are real, but we endure them for the moment because coding agents are great news for invention.Khái niệmAs AI coding agents erode the competitive advantage of hybrid designer-programmers, creative imagination and visual expressiveness become the primary differentiators in interface invention.Khi các đại lý AI lập trình làm xói mòn lợi thế cạnh tranh của các nhà thiết kế kiêm lập trình viên, trí tưởng tượng sáng tạo và khả năng biểu đạt hình ảnh trở thành yếu tố phân biệt chính trong việc phát minh giao diện. Even as an experienced programmer, I move so much faster that I'm trying all kinds of ideas I just wouldn't even have tried a year ago. That said, I, I am grappling with some uneasy questions about my own practice. I've spent more than 2/3 of my life programming, and a little over a third doing inventive design work, so it probably shouldn't be a surprise that I'm still a much stronger technologist than I am an inventor. I think the modest success I've had in the latter role is mostly due to my generalist skill set, rather than to the reach of my imagination.
Những cái giá này là có thật, nhưng hiện tại chúng ta chịu đựng vì coding agent là tin tuyệt vời cho phát minh. Ngay cả là một lập trình viên giàu kinh nghiệm, tôi cũng làm việc nhanh hơn rất nhiều, đến mức đang thử đủ loại ý tưởng mà một năm trước tôi thậm chí sẽ không thử. Dù vậy, tôi đang vật lộn với vài câu hỏi không dễ chịu về thực hành của mình. Tôi đã lập trình hơn hai phần ba cuộc đời và làm công việc thiết kế phát minh hơn một phần ba, nên có lẽ không ngạc nhiên khi tôi vẫn là một nhà công nghệ mạnh hơn nhiều so với một nhà phát minh. Thành công khiêm tốn tôi có trong vai trò sau phần lớn đến từ bộ kỹ năng tổng quát, chứ không phải tầm với của trí tưởng tượng.
Designer programmers are just Kind of rare, and that's given me a pretty unique advantage. But I think, or rather I hope, that this advantage is actually just going to disappear in the next few years. And where will that leave me and other people like me? If I'm honest, I don't think I'm as imaginative as the designers I most admire. My expressive range for visual representations is much narrower, and I move a lot more slowly when rendering and iterating on interface ideas.
Những lập trình viên-nhà thiết kế khá hiếm, và điều đó đem lại cho tôi một lợi thế khá độc đáo. Nhưng tôi nghĩ, hay đúng hơn là hy vọng, lợi thế này thực ra sẽ biến mất trong vài năm tới. Điều đó sẽ để lại tôi và những người giống tôi ở đâu? Nếu thành thật, tôi không giàu tưởng tượng bằng những nhà thiết kế mà tôi ngưỡng mộ nhất. Phạm vi biểu đạt của tôi đối với các hình thức trực quan hẹp hơn nhiều, và tôi chậm hơn rất nhiều khi dựng cũng như lặp lại các ý tưởng giao diện.
Some of that is just a matter of having less practice, but that's only part of what I mean when I say the interface invention scene is overweight on programming and underweight on design.Khái niệmProgramming culture instills analytical mindsets that demand early abstraction and generalization, suppressing the wild creative generativity required for initial interface exploration.Văn hóa lập trình thấm nhuần tư duy phân tích đòi hỏi sự trừu tượng hóa và khái quát hóa sớm, kìm hãm khả năng sáng tạo tự do cần thiết cho việc khám phá giao diện ban đầu. By design, I also mean something broader than professional practice. I also mean bold imagination and inspired creative energy. Plenty of programmers have that energy, but much of what programming culture instills and rewards is more analytical and pragmatic. My decades as a programmer instilled this formal mindset that seems to act against wild-eyed generativity.
Một phần chỉ là vì tôi ít luyện tập hơn, nhưng đó mới chỉ là một phần trong ý tôi khi nói cộng đồng phát minh giao diện quá nặng về lập trình và quá nhẹ về thiết kế. Với thiết kế, tôi còn muốn nói đến điều rộng hơn thực hành chuyên nghiệp. Tôi cũng muốn nói đến trí tưởng tượng táo bạo và năng lượng sáng tạo được truyền cảm hứng. Nhiều lập trình viên có năng lượng đó, nhưng phần lớn những gì văn hóa lập trình vun đắp và tưởng thưởng lại mang tính phân tích và thực dụng hơn. Nhiều thập kỷ làm lập trình đã gieo vào tôi một tư duy hình thức dường như chống lại sức sáng tạo phóng khoáng, đầy cuồng nhiệt.
My mind automatically moves towards abstraction, generalization. It's a superpower when it's time to systematize. I, I can receive a vague, ill-defined idea and ask the questions that allow it to actually work coherently, but it puts too much pressure on really early ideas. I envy the way that some of my designer friends can throw spaghetti against the wall. and tinker with an appealing idea without worrying about the formal rules it implies.
Tâm trí tôi tự động hướng về trừu tượng hóa và khái quát hóa. Đó là một siêu năng lực khi đến lúc hệ thống hóa. Tôi có thể tiếp nhận một ý tưởng mơ hồ, chưa được định hình và đặt ra những câu hỏi giúp nó thực sự vận hành mạch lạc, nhưng điều đó tạo quá nhiều áp lực lên những ý tưởng còn rất sớm. Tôi ghen tị với cách một số người bạn thiết kế có thể ném mì Ý lên tường và mày mò với một ý tưởng hấp dẫn mà không lo lắng về những quy tắc hình thức mà nó hàm ý.
Chuyển đến mục
Cognitive Friction and HCI Mindset ShiftsMa sát nhận thức và chuyển đổi tư duy HCI

HCI Studio Education and Cultivating Creative ResonanceĐào tạo HCI theo mô hình studio và nuôi dưỡng sự cộng hưởng sáng tạo

So, what now?Quy tắcReframe HCI education around art-school frameworks with technical electives to prioritize intuitive exploration over premature technical specification.Hãy tái cấu trúc giáo dục giao diện người - máy tính xung quanh các khuôn khổ trường nghệ thuật cùng các môn tự chọn kỹ thuật để ưu tiên sự khám phá trực giác hơn là các đặc tả kỹ thuật sớm. We've spent decades building HCI programs that mostly look like computer science departments with design electives. But if we're moving towards a world where invention is bottlenecked more on imagination than on technical expertise, we may have that backwards. We may need programs that look a little bit more like art school with technical electives. Learning to develop ideas from intuition before being able to express them precisely, to discover by playing with the material.
Vậy giờ thì sao? Chúng ta đã dành nhiều thập kỷ xây dựng các chương trình HCI trông phần lớn như những khoa khoa học máy tính có môn tự chọn về thiết kế. Nhưng nếu đang tiến đến một thế giới nơi phát minh bị nghẽn nhiều hơn bởi trí tưởng tượng chứ không phải chuyên môn kỹ thuật, có lẽ chúng ta đã sắp xếp ngược. Có thể chúng ta cần những chương trình trông giống trường nghệ thuật hơn, kèm các môn tự chọn kỹ thuật. Học cách phát triển ý tưởng từ trực giác trước khi có thể diễn đạt chúng chính xác, khám phá bằng cách chơi với vật liệu.
And as for myself and others in the scene who grew up in programming culture, how should we adapt and grow?Khái niệmTechnical fluency and childlike creative imagination can coexist to mutually amplify interface invention rather than acting as opposing forces.Sự thành thạo kỹ thuật và trí tưởng tượng sáng tạo ngây thơ có thể cùng tồn tại để thúc đẩy lẫn nhau trong việc phát minh giao diện thay vì hoạt động như các lực đối lập. Is technical fluency necessarily a drag on one's childlike imagination? In what circumstances? I take some comfort here from history's great scientists and computing's founders in figures like Feynman, Kaye. Their stories certainly seem to suggest that these capacities can not only coexist, but actually amplify each other.
Còn với tôi và những người khác trong cộng đồng lớn lên trong văn hóa lập trình, chúng ta nên thích nghi và trưởng thành thế nào? Sự thành thạo kỹ thuật có nhất thiết kéo tụt trí tưởng tượng trẻ thơ của một người không? Trong những hoàn cảnh nào? Ở đây tôi được an ủi phần nào bởi những nhà khoa học vĩ đại trong lịch sử và những người sáng lập ngành điện toán, như Feynman và Kaye. Câu chuyện của họ dường như cho thấy những năng lực này không chỉ có thể cùng tồn tại mà còn thực sự khuếch đại lẫn nhau.
So my question becomes urgently, how can those of us from programming culture better cultivate that kind of resonance in ourselves? Thank you.
Vì vậy câu hỏi của tôi trở nên cấp thiết: những người xuất thân từ văn hóa lập trình như chúng ta có thể nuôi dưỡng tốt hơn kiểu cộng hưởng đó trong chính mình bằng cách nào? Xin cảm ơn.

Mục lục

2 diễn giả

0:00
45:49