~/talk

Building interactive command line applications

Talkat JS Fest 2018 · on Saturday, 2018-03-31· [nodejs]

Claims that rendering the whole terminal UI each update then sending a minimal text diff is simpler and fast enough; demos use Node, ANSI codes and ncurses comparisons, show diffy (virtual-string diffing), single-line-log, neat-input, progress-string and chalk. Built a downloader with a live progress bar that reduces bytes sent, eliminates flicker so copy/paste works, handles resizing and raw-mode input; sizing and cross‑platform quirks (Windows ANSI differences) remain noted and the approach proves practical and testable.

AI-written summary · about

  1. 0:00Intro
  2. 0:27building interactive cli tools
  3. 1:06author of 650+ modules
  4. 1:23cli apps are neat
  5. 2:20run them on other computers using ssh
  6. 2:49node was made for server apps
  7. 3:10but is actually great for cli
  8. 6:48we're gonna need a bigger screen
  9. 6:59would be cool to update the text in-place.
  10. 7:14ANSI to the rescue
  11. 7:39ANSI is magic chars you can print to make your terminal ... do stuff
  12. 12:57simple, easy, works
  13. 13:07updating the screen is expensive
  14. 13:47breaks copy-paste
  15. 15:17make component based frameworks
  16. 15:51web frontend had the same journey
  17. 16:01remember jquery ui?
  18. 16:56react
  19. 17:12diff with the dom, make minimal updates
  20. 17:34made things easy to write
  21. 17:52easy to test
  22. 18:12fast enough
  23. 18:31back to cli
  24. 23:16cheap to text diff
  25. 23:31less flicker
  26. 25:48great for ssh
  27. 26:01copy-paste works
  28. 33:49have to use "raw mode 2" on stdin
  29. 34:09then parse the raw input
  30. 45:10can diff tiny terminals
  31. 45:50supports terminal resize
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.