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/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
English · Tiếng Việt
Default · 19px
The margin needs a wider window.
Hide all takes the buttons in the text with it.
The margin needs a wider window.
Hide all takes the note marks and the collected lessons with it.
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
Interactive transcript
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.
48 lessons from this talk
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
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
AMAndy Matuschak Speaker
AMAndy Matuschak
Justafewthousandyearsago,ourancestorsdidnothavewrittenlanguage.ConceptExternal 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'realmostthesameasthosehumansbiologically,butwhatgoesoninourmindswouldbetotallyalientothem.Growingupinaworldwithpaperandpenshaschangedus.Wecanfollowachainofthoughtbeyondtheextentofourworkingmemory.Wecanthinkabstractlyandanalytically.
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.
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,writtenlanguagewastheworkofwholecultures,butwhatexcitesmemostinmyworkisthatsmallgroupsandindividualscanalsoinventtransformativetoolsforthought.ConceptTransformative 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.IthinkofPlayfairandstatisticalgraphicsinthe18thcentury,orofMendeleevandtheperiodictableinthe19th.Andtoolslikethisarediscoveredasmuchasinvented.Theirpowerliesindistillingdeepdomaininsightslikeperiodiclawintoexternalformsthatwecanusetothinkandcommunicate.Now,oneofthegreatdreamsofthepersonalcomputingrevolutionwasthatwewouldallhavenotonlyourowncomputers,butalsoourownsoftware,exquisitelytunedtoourownpurposes.
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.
Seek to section
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
Butinstead,wesleepwalkedinto2accidentaltyrannies.ConceptMonolithic 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.Thefirstistheapplicationmodel.Becausesoftwareisexpensivetobuild,developersneedtocaptureaslargeamarketaspossible,andthat'sledtoone-size-fits-allpackages.Youcanonlyadjusttheknobsthatthedevelopergivesyou,andyourtoolscanonlybecombinedatthejunctionsthedeveloperanticipated.Weliveinalandscapeofwalledgardens,andtheresultisthatourworkflowsoftendon'tworkthewaythatwewishtheydid.
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.
Thesecondisprogrammingitself.ConceptFraming 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.Ratherthancreatinganewuniversalliteracy,wecreatedaspecialistpriesthood.Thefamiliarversionofthatcomplaintisthatendusersarerelegatedtobeingpassiveconsumersofthedynamicmedium,ButI'llalsomakethecasethatevenwithinthetechindustryandwithinHCIresearch,programmingcultureisaccidentallyholdingbackinvention.Nowthough,Iseesomenewpathsoutofthesetraps.Solet'sfocusfirstonapps.
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.
Seek to section
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,ofcourse,theapplicationmodelisafamiliarvillaininourfield.ConceptAI 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.Peoplehavebeentryingtobreakusoutofthesesilosfordecades.Andonemajorthreadofwork,end-userprogramming,aimstoallownon-professionalprogrammerstobuildtheirownsoftware.Thathasturnedouttobeawfullydifficultinpractice,asspreadsheetsarethemajorsuccessstory,butit'sbeenhardtoproduceothersuntilrecently.Ofcourse,youknow,nowwehavecodingagents.
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.
Everybodycanbuildtheirownsoftware,right?ConceptNon-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.AsIlookaroundinearly2026,Iseenon-programmersbuildingthingslikepersonaldashboardsandautomations,writingscriptstoconnectorcombinedatafromdifferentincompatiblesystems.We'realreadyknockingsomecracksintotheappsilosthere.Andofcourse,I,Iseealotoffuntoys,butallinall,Imostlyseenon-programmersusingagentstocreategluecodeandtoolsattheperipheryoftheirrealwork.
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ọ.
Seek to section
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
Đ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.
Sowhatwouldittaketoletnon-programmersimproviseimprovementstocomplexinterfaces,interfacesattheverycenteroftheirwork?ConceptConventional 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.Iwanttoseethedreamofpersonaldynamicmediafulfilledforthemostimportantpartsoftheirpractice.Thosepartsoftentakeplaceinextremelycomplexmegaapps.AfilmmakerwillspendthousandsofhoursinAdobePremiere.AcomposerwillspendthousandsofhoursinSibelius.
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.
Appslikethesesupportplugins,butthey'relockedinlittleboxes.RuleTo 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.Pluginsareallowedtorenderaninterfaceintoamodalorperhapsasidebar,butiftheuserwantstoimprovetheprimaryinteractivesurfaceofthoseappsfortheirpersonalworkflow,they'llneedtorecreateallofthatcomplexity.Neithertoday'scodingagentsnortheirtypicalusersarepreparedtorewritePhotoshopontheflyjusttoaddanewkindofbrushtool.Soifwewanttofreeourselvesfromfromsiloedmonoliths,we'llneedamoremalleablesubstratethantoday'szero-to-onecodingagents.Researchersworkingonthisproblemknowthat,ofcourse,and,andwe'veseensystemsfromSmalltalktoWebStraightstoPotluckproposingprincipledarchitecturesforuserextensibility.
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.
Seek to section
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
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.
Ifpluginswereallowedtojuststartreachinginandchangingthings,thenchaoswouldquicklyensue.ConceptBuilding 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.SafeandexpressiveextensibilitywouldrequiresuchacomplexAPIsurfacethatpluginswouldbecomeincrediblydifficulttowrite.Soitismucheasiertojustgivepluginsapaneltheycanfullycontrol.Havingsaidallthatthough,Ithinkwecanlearnfromaninterestingexceptiontothisrule,Obsidian.Sotomyknowledge,it'stheonlydeeplyextensibleGUIwordprocessorthathaseverreachedproduction.
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.
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.
It'squiteinvasive.ConceptAI 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,mostObsidianpluginsdon'textendtheeditorGUI.MostObsidianpluginsjustaddcustomcommandsorisolatedpanels,andIthinkthat'sbecauseextendingtheeditoritselfrequiressomeverycomplicatedprogramming.Thecomplexitydoesseemnecessary.It'swhatmakesthesafecomposableeditorpluginspossible,andwe'lltalkmoreabouthowactuallythatworksshortly,butitisasignificantdeterrent.
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ể.
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ã.
Đó 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.
Seek to section
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
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.
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.
AndmaybeIhaveacommentaboutthisparticularpassage.ConceptShort 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.InspiredbyCanonCat,Irealizedthatasequenceof3or4wordslikethiscanuniquelyidentifyprettymuchanypointInabook.Soletmejuststartanaudiorecording.
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.
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.
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.
NowIhaveatranscript,andofcoursetranscribingaudioisnothingspecial,butyouseethere'ssomethinginterestinggoingonhere.ConceptGrounding 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.TheseplaceswhereIpointedtoapassagewithmyvoice,they'rehighlightedinyellowandthere'saspecialbuttonnexttothem.NowthisisstilljustaMarkdowndocument.Ifwelookatthesourcehere,wejustseenormalplaintextandablockquoteandanimage.But,uh,thestylingis,isbeingappliedintheliveeditorandthere'sabutton.
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.
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.
Seek to section
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
Đó 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 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.
Andagain,Icantranscribethis.
Và một lần nữa, tôi có thể chép đoạn này thành văn bản.
HereI'vegotsomethingprettyinteresting.ConceptWrapping 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.ThisisanewkindofMarkdowndirectivethatI'veintroducedcalledatranscriptdirective.Icanpresstheplaybutton.Wegetaudioplaybacksynchronizedwiththetextualtranscript.ThisisinspiredbysomeoldworkfromSteveRubinthatsomeofyoumightrecognize.
Ở đâ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.
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.
Solookingagainatthesource,we'vejustgotplaintext.ConceptAlgebraic 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.Thisblockiswrappedinthisspecialdirectivewith3colons.ThisisaMarkdownextensiondirective.AndnowIcandosomeinterestingthings.There'ssortofanalgebraofeditsthatthispluginintroduces.
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.
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.
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.
Nếu bắt đầu phát từ đây—năm từ—nó sẽ nhảy qua chỗ ngắt này.
AMAndy Matuschak Speaker
AMAndy Matuschak
Theideaisthat—
Ý tưởng là—
SASpeaker A Speaker
SASpeaker A
Anditalsojumpedoverthedeletion.
Và nó cũng nhảy qua phần đã xóa.
AMAndy Matuschak
Andy MatuschakShoulduniquelyidentify—
Có thể xác định duy nhất—
Seek to section
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
SASpeaker A Speaker
SASpeaker A
LikeafairlycomplicatedabitofnewMarkdownbehaviorthat'sjustbeenintroducedintothemiddleofthispreexistingeditor.Nowfromhere,ofcourse,thenextthingtodoistocombinetheseplugins.ConceptCombining 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.Solet'sturnthembothonatonce.AndwecanseethatnowthisplacewhereI'veincludedaquotedirectiveinthemiddleofthisramble,it's,it'sgotthatspecialhighlight.Uh,wehavethestylingfromthequoteplugin.
Đâ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.
Ở 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.
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.
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.
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.
Seek to section
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
AMAndy Matuschak Speaker
AMAndy Matuschak
Now,what'sexcitingaboutthatdemoisn'ttheinteractiondesignofthoseparticularplugins.ConceptDeveloping 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'snotwhatI'mheretodemonstrate.YoucouldimagineseeingeachofthoseinterfacesaspartofsomeworkadayHCIpaperdemonstratingaresearchsystem.Now,what'sexcitingaboutthatdemoisthatthisisn'taresearchsystem.IbroughtthosebehaviorsintoObsidian,whichisaproductionwordprocessorthatIactuallyuse.
Đ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.
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.
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'snicetoothatcodingagentsbuiltthesebehaviorsforme,evenifperhapsabitimperfectly.RulePair 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.Butit'sthecombinationofcomposabilityandcodingagentsthat'sparticularlyexcitingtomebecausecodingagentswithoutacomposablearchitecturegiveusthesekindofzero-to-onesiloapps.Andcomposablearchitecturewithoutcodingagentsmakesnovelpluginstoocostlyforallbutthemostdevotedandexperienceddevelopers.Togetherthough,um,theymightmeanthatnon-plugins,non-programmerscanriffatwillonpreexistingcomplexinterfaceswithpluginslikethis.Now,we'vebeentalkingintermsofObsidianbecausethat'sthehigh-levelpackagethatauserexperiences,buttherealcreditforitseditor'scomposabilityisduetoCodeMirror,anopen-sourceframeworkbyMaureenHaverbeke.
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.
Seek to section
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,ratherthanbuildingatexteditorandlaterdesigningthepluginsystemontopofit,Maureendesignedatexteditorthatismadeoutofplugins.RuleConstruct 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.Letmeexplain.SoObsidianisaWYSIWYGMarkdowneditor,butCodeMirrordoesn'tknowanythingaboutMarkdownorimagesorbulletedlistsorlinksortables.EverythingyouseebeyondplaintextintheObsidianeditorisaCodeMirrorplugin.SowhenauseraddsaCodeMirrorpluginoftheirown,they'reusingexactlythesameprimitivesthattheObsidiandevelopersusetodeveloptheirproduct.
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.
CodeMirrordefinesaroughphysicsofthemedium.ConceptDeclarative 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'sbasicmodelsfortextandstateselectionwithtransactionalupdates.Prettymucheverythingelse,howtextlooks,whathappenswhenyouclickortype,whatstateismaintained,whatappearsalongsidethetext,allofthatisdescribedthroughfacets.Facetsareacomposablestructurethatdefinehowindependentpluginscansafelycontributetothesameconcern.Pluginsdon'tactonthedocument,theydeclarewhattheywant.
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.
Andthenfordecorations,forkeybindings,forstateupdates,andforeverythingelse,CodeMirror'sphysicsdefinerulesforcombiningandenactingthosedeclarations.ConceptFramework 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.Letmeshowyouhowthatworksintermsofthedemothatwejustsaw.Sohereontheleft,weseethose2pluginsactingatonceonaquotedirectiveinsideofanaudiotranscript.Oneelementofthatbehaviorisvisualstyling.Theaudiotranscriptsuseasmallmonospacetext,whilethequotedirectiveshaveayellowglow.
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.
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.
Seek to section
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
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.
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.
Butnoticethatthetranscriptblocksgetsplitaroundtheblockquotes.ConceptRouting 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ẽ.Wecanmakethathappenbecauseeditingoperationsalsocomposeexplicitly.There'sanotheroneofthosefacets.Thisone'scalledtransactionfilter.Editingoperations,likethequoteblockreplacements,they'redescribeddeclarativelyintransactiondatastructures,andthenthosetransactionsgetpassedthroughapipelineoftransactionfiltersdeclaredbyplugins,whichcanthentransformthem.
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.
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.
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.
Butwhen2pluginstouchthesameregion,yougetthese,like,nightmarestories,likeOrgModehadamulti-yearrewriteofitsfoldingcode,whichkeptbreakinglotsofotherpackages,andtheyendeduphavingtopilealltheseworkaroundsontopofit.ConceptDefining 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.AndtheideaisthatCodeMirrorhasthisdeclarativeapproach,whichreplacesapatchworkofunrelatededitingextensionsandmechanismswithaconsistentcomposablepattern.SonowthatI'vetastedit,Iwantthiskindofextensibility,notjustwithmyrichtexteditor,butformydesignwork,formymusic,formyreading.IfCodeMirrordefinesaphysicsofrichtextediting,Andthatphysicsmakesitpossibleforpluginstoindependentlyextendthiscomplexuserinterface,thenwhatwouldanequivalentphysicslooklikeforaFigmaorforaSibelius?Oractually,wait,beforeItrytoanswerthatforFigmaorSibelius,IjustsaidIwantedthiskindofextensibilityforreading.
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.
Seek to section
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
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.
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'sspecialaboutdynamicmediumsisthattheybehaveandrespond.ConceptDigital 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.WhenI'miteratingonadesignsysteminFigma,IcanseeinrealtimehowmychoicesaffectlayoutandweightacrosseveryscreenoftheappI'mdesigning.WhenI'mmixingatrack,spectrumvisualizersletmequicklyspotandfixmuddysegments.Wecantellsimilarstoriesinclimatemodelingandgenomicsandsomanyotherdomains.Themediumtakesonsomeofthecognitiveload,andsowecanexploreandrefineourideasclosertothespeedofthought.
Đ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.
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.
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.
Maybetherearenoaugmentationsworthpursuing,butinfact,HCIresearchershavebuiltquiteafewinterestingaugmentedreadingsystems.ConceptFragmenting 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'sSkimbyFalketal.,whichhighlightsandcolorcodeskeysentencescontaininggoals,novelcontributions,andresults.Here'sCiteSeebyChangetal.,whichcolorcodescitationlinkssoyoucanseewhichonesyou'vesaved,read,andcited.Here'sPapiosbyKimetal.,whichletsreadersquicklyjumpbetweenaresearchpaperandthealignedsegmentsofanassociatedvideo.Here'sLiquidTextby,uh,TashmanandEdwards,whichsupportsparallelreadingbylettinguserscollapsepartsofdocuments.
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.
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.
Lotshere,butasinterestingastheseindividualprojects'ideasare,theydon'tquiteaccumulate.RuleGeneralize 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.Eachinteractionistrappedinitsownreadingenvironment,stuckinthesameresearchpurgatorythatImentionedearlier.IfyouwanttouseSightSee'scolor-codedscheme,youhavetouseitsprototypeasyourPDFreader.AndthenifyouwanttousefeaturesfromeveryoneoftheothersystemsthatIjustmentioned,you'dneedtoswitchwholesaletotheirreaders.SobywayofgeneralizingfromCodeMirror,couldwedefineaphysicsofreadingenvironments,onewhichcouldsimultaneouslysupportallofthesedisparateaugmentedreadingideas,plusuntoldmoreyettobeinvented?
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?
Andnow,Let'shavesomemoredemos.
Và giờ, hãy xem thêm vài bản demo.
Seek to section
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
Ở đâ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'saversionofSkimbyFocketal.ConceptApplying 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.Sentenceslightupwithcoloredbackgrounds,objectivesingreen,Methodsinblue,resultsinorange.They'reclassifiedbytheirrhetoricalroleinthepaper.Thepluginworksbydeclaringdecorationsontextranges,justlikeinCodeMirror.AndhereisasliceofSightseebyChangetal.
Đâ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ự.
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.
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,decorationspaintonthetext,butsomereadingaugmentationsneedtolivealongsideit,anchoredtoapositioninthedocument,butrenderingoutsidethetextflow.RuleAnchor 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.Soherewehaveamarginnotesplugin,whichallowsmetopointtoanypointinthetextandcreateamarginnote.Thismarginnoteisanchoredtotheverticalpositionofitstargetparagraphandtotherightedgeofthepage.Theextensiondoesn'tcalculatethatposition.Itjustdeclares,Iwantawidgetanchoredtothesesemanticlocations,andthesystemhandlestherest.
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.
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.
Seek to section
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
Andthesameanchoringprimitivecansupportthingsbeyondmarginalia:floatingtoolbars,contextualpanels,anythingthatanextensionwantstoplacealongsideadocumentposition.ConceptModel 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,sofar,we'veseenextensionsthataddinformation:colorsonthetext,widgetsalongsideit.Thedocumentitselfhasstayedthesameunderneath.Butsomeofthemostinterestingreadingaugmentationschangehowcontentisrendered.HerewehaveariffonLiquidTextbyTaschmanandEdwards.
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.
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.
Itchangeswherecontentappearsonscreen.RuleQuery 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.Butnoticealsowhat'shappeningtotheseanchoredwidgets.
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.
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.
Becausethisarchitecturecleanlyseparateswhattoshowfromwheretoshowit,wecanrenderthesamedocumentmultipletimesindifferentways.ConceptSeparating 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.Thismini-mapreadsthesamedecorationfacetsasthemainview—therhetoricalcolors,thecitationmarkers—butitrenderstheminsideofacompressedoverview.Conceptually,it'slikeasecondrenderpassofthesamepipeline.
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.
Seek to section
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
AMAndy Matuschak Speaker
AMAndy Matuschak
Composablearchitecturesandcodingagents,incombination,mayhelpusbreakdownthesilosaroundourmostcomplexapps,butI'mnotsatisfiedwithjustcombiningthebalkanizedinterfaceideasthatwealreadyhave.ConceptOver-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.Iwantawildfluxofnewideas.Ithinkwe'vebarelyscratchedthesurfaceofwhatwecandowithdynamicmedia.Despiteallofthemanicenergyinthetechindustry,andalloftheprestigiousHCIconferences,thepaceofmeaningfulinventioninuserinterfacesstrikesmeasremarkablyslow,andthelevelofimaginationremarkablytame.Iwantnewanswers,newquestions,andideallybothatonce.
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.
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.
Ý 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'relivingthroughtheastoundingadventofmachineintelligence,andthat'splentyalien.RuleSynthesize 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.Butwe'vecrammedallthatpowerintochatinterfacesthathavebarelyevolvedsincetheIRCclientsIusedasateenager.Where'stheinvention?Ithinkthecentralproblemisthatinventioninthedynamicmediumrequirestoomuchprogramming.Toinventanewuserinterface,youneedbothimaginativedesignskillandfluenttechnicalskill.
Đú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.
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.
Andsoyoumightexpecttoseethoseskillsmostemphasizedintheculture.ConceptThe 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.Butifyouvisitcommunityeventsaroundinterfaceinventionorthefutureofpersonalcomputers,oracademicHCI,you'llquicklynoticethatprettymucheverybody'saprogrammerbytraining,andthey'realsoprogrammersbyculture.Mostwillhavestudiedataformalanalyticalscienceprogram,notthewild-eyedstudiosofadesignschool.Notincidentally,thatincludesme.Isuspectwe'reinthissituationbecauseofadeepasymmetrybetweentheseskills.
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.
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.
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ế.
Seek to section
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
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.
Ithinkmostsoftwareisjustthemeandvariation,professionalsapplyingwell-knownpatterns.ConceptNon-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.Noveltywouldactuallygetintheway,butIwannatalkaboutinvention.AndthereIthinkspecializationhasworkedmuchlesswell.Teamsputnon-programmersinapositionofdependencybydefault.Ifadesignerwantstoinventanovelinterface,theyusuallycan'tmakeaworkingprototypewithoutpitchingotherstohelp.
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 đỡ.
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ỏ.
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.
Toenterintoproperdialoguewiththeirmedium,anon-programmerneedstogethelpfromaprogrammer.ConceptLacking 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ự.Andthatgenerallyrequirestheideatobeatleastsomewhatlegibleandcompelling.Butifthey'redoingsomethingtrulynovel,Theyoftencan'tmakeitlegibleandcompellingwithoutbeinginthatclosedialoguewiththeirmedium.So,modernsoftwaredesigncultureoftenturnstovisualcraftsmanshipratherthannoveldynamicrepresentationsorinteractions.Ithinkthat'sbecausevisualsarethedomainwheredesignerscantinkerintuitivelywithoutthefrustrationofdependingonotherstodeveloptheirideas.
Để 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.
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.
Seek to section
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
Theyexplaintheiridea,andIprobeandIriff,butIstilldon'treallyseewhattheyseeinit.ConceptAI 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.Fromhere,Ihave2badoptions.Icandemur,whichofteneffectivelyjustblocksmyteammate,orIcanacquiesce,subordinatingmyownprioritiestoanideathatrightlyorwronglyseemslesspromisingthantheonesI'malreadyaddressing.ButnowIseecracksinthewalls.Ithinkcodingagentswillendtheaccidentaltyrannyofprogrammersininterfaceinvention.
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.
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ồ.
Ithinktheimpactonmycollaboratorshasbeenmuchgreaterthantheimpactonme,despitethefactthatI'mnowbuildingperhaps10timesthespeed.ConceptModern 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.Somuchstuff,sofast.Unlikeme,these2startedtheircareersindesignandspenttheirformativeyearsintheartsculture.Theycanprogramabit,buttheprocessis,orratherwas,reallyslowanddifficultenoughtoposeasignificantbarrier.Now,atthestartof2025,codingmodelscouldimplementsmallone-offdesignideas,buttheiroutputswouldjustfallapartafteracoupleofiterations.
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.
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.
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ả.
Itturnsmeintoagatekeeperandmycolleaguesintosalespeople.RuleUse 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.Butnowincreasinglytheycantinkerwiththeirownideasandprototypes.
Đ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.
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ó.
Seek to section
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
Codingagentscreatedasafespacefornoodlingforthemwhentheirideasaren'tyetcoherent.ConceptDeveloping 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.Theolddynamicdemandedallthisclarityandlegibilityupfront.IwonderhowdifferentTedNelson'sstorymighthavebeeninthisworld.Imean,hespent50yearschasingthisparalleluniverseversionoftheWorldWideWebinwhicheverypieceofwritinglivesinthislivingnetworkwitheverythingelse.
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.
Ô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.
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'sclearlyasourceofchildlikejoyforthem.ConceptAI-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.Oneofmycollaborators,NeoOno,sharedthisontheirexperience.I'mjustgoingtoreadaquotefromthem.Vibecodingunlockedsomethinginmymindorinmylatentpersonalitymatrix.I'mremindedofdescriptionsbypeoplewhofeelliketheywerefundamentallychangedbymartialartsoranesotericpractice.
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.
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.
Seek to section
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
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ứ.
Otherssay,oh,that'sjusthype.ConceptTop-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.Butwhatever.WhatIwantismoreimaginationandinventioninuserinterfaces.Andforthat,codingagentscanmakeahugedifference,evenifnon-programmerscan'tbringtheirprototypesallthewaytoproduction.Thebottleneckhereisn'tthatweareconstantlyseeingtheseamazingnewuserinterfaceprototypesandresearchsystems,andyetthefoolishmarketjustwon'tbringthesesystemstoproduction.
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.
Đó 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.
Andthenoncethere'sateam,high-fidelityprototypescommunicateideasaboutdynamicmediamuchmoreeffectivelythanwhatmostdesignersusenow.ConceptHigh-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.Unlikestaticartboardsandclick-throughdemos,theseprototypescanclearlyspecifynoveldynamicbehavior.BasOorteninventediOS'sinertialscrollingandrubberbandingusingMacromediaDirectorprototypeswithhacked-togetherscripts.Noneofthatcodeshipped,butwhocares?Itdefinedtheessentialfeelingofcomputingforageneration.
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ệ.
Seek to section
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ĩ
Ifthelastyear'strendholds,wewon'tneedtoworrytoomuchaboutthesetechnicalchallenges.ConceptContinuous 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'mactuallymuchmoreworriedaboutdealingwiththeaestheticandcognitivechallenges.Workingwithcodingagentsalldayleavesmyattentionfragmented,unfocused,impulsive.I'mbusywaiting.I'mconstantlybouncingbetween5differentworkspacetabs.
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.
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.
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.
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'salldesktopwallpaper.RuleResist 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'sadeeppleasureinmakingsomethingbyhand,replacedherebyakindofanxious,scatteredfreneticism.Buildinghasbecomesoeasythatit'snowanoddlydangeroustemptation.MycollaboratorsandIhaveallfoundourselvesaccidentallyvolleyingwithagentsasawaytoavoidthinkingcarefullyaboutaproblem.
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 đề.
Seek to section
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,thesecostsarereal,butweendurethemforthemomentbecausecodingagentsaregreatnewsforinvention.ConceptAs 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.Evenasanexperiencedprogrammer,ImovesomuchfasterthatI'mtryingallkindsofideasIjustwouldn'tevenhavetriedayearago.Thatsaid,I,Iamgrapplingwithsomeuneasyquestionsaboutmyownpractice.I'vespentmorethan2/3ofmylifeprogramming,andalittleoverathirddoinginventivedesignwork,soitprobablyshouldn'tbeasurprisethatI'mstillamuchstrongertechnologistthanIamaninventor.IthinkthemodestsuccessI'vehadinthelatterroleismostlyduetomygeneralistskillset,ratherthantothereachofmyimagination.
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.
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.
Someofthatisjustamatterofhavinglesspractice,butthat'sonlypartofwhatImeanwhenIsaytheinterfaceinventionsceneisoverweightonprogrammingandunderweightondesign.ConceptProgramming 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.Bydesign,Ialsomeansomethingbroaderthanprofessionalpractice.Ialsomeanboldimaginationandinspiredcreativeenergy.Plentyofprogrammershavethatenergy,butmuchofwhatprogrammingcultureinstillsandrewardsismoreanalyticalandpragmatic.Mydecadesasaprogrammerinstilledthisformalmindsetthatseemstoactagainstwild-eyedgenerativity.
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.
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 ý.
Seek to section
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,whatnow?RuleReframe 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'vespentdecadesbuildingHCIprogramsthatmostlylooklikecomputersciencedepartmentswithdesignelectives.Butifwe'removingtowardsaworldwhereinventionisbottleneckedmoreonimaginationthanontechnicalexpertise,wemayhavethatbackwards.Wemayneedprogramsthatlookalittlebitmorelikeartschoolwithtechnicalelectives.Learningtodevelopideasfromintuitionbeforebeingabletoexpressthemprecisely,todiscoverbyplayingwiththematerial.
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.
Andasformyselfandothersinthescenewhogrewupinprogrammingculture,howshouldweadaptandgrow?ConceptTechnical 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.Istechnicalfluencynecessarilyadragonone'schildlikeimagination?Inwhatcircumstances?Itakesomecomfortherefromhistory'sgreatscientistsandcomputing'sfoundersinfigureslikeFeynman,Kaye.Theirstoriescertainlyseemtosuggestthatthesecapacitiescannotonlycoexist,butactuallyamplifyeachother.
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.
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.