= Overview = Event+Venue, Talk, Title, Class, Intro, TALK, Summary, Comments, Thanks, Feedback, TODO, Links, Notes, Quotes. = Event+Venue = Event: uxcamp 2009 - Sun 2009-05-24 10-16h http://uxcamp.de/ -> http://uxcamp.mixxt.de/ http://twitter.com/uxcampberlin09 #uxcb09 Venue: Erwin Schrödinger-Zentrum Rudower Chaussee 26, 12489 Berlin (Adlershof) http://tinyurl.com/uxcamp09-location S-Bhf Adlershof, Bus 162+164 "Magnusstr" = Talk = 13:00--13:42 "GUI 1.0 + WEB 3.0" Sven Guckes uxcb09(@)guckes.net = Class = Classification of this talk: * Art - the art is in the code! * Business - money? some day. lots of it. uh-huh. * Code - none yet. gimme, gimme, gimme! * Development - let's start today! * Extension - extend your mind! * Fun - always! :) here we go.. = Intro = Web browsers show web pages with lots of graphical content - and naturally so, their interface is a graphical one. You click on menus, select a submenu, issue a command - and it will open a dialog, allowing you to select an items from a popup menu, click on some radio buttons, entering text in text fields, and tabbing between them. However, a mouse only has three to five keys (and those wheels for scrolling) - yet the keyboard has over 100 keys. and if you know how to use those keys to type words then you could simply make changes by entering commands. Still, the concept of a command line (as in shells and other programs) have proven as a powerful tool. This talk shows some of the concepts of a command line, gives some examples of its use as seen with irssi+mutt+vim and shells, and advocates the addition of such a command line to other tools. This allows for setup files to be mere copies of some command line commands - just text which can easily be stored online for reuse in a web cafe. Do not just drop the interfaces we already had and learned. Re-use the knowledge we already had for gui 1.0 and web 1.0. Allow the use of the tools we already have for interaction. = Talk = == Access == How to access this feature? Simply type a colon (:) to open the command line. (bottom line or top line? well - *you* decide!) == Features == Allow entering commands as words. Add commands to move the cursor, delete and insert text easily. Allow abbreviations. * Jumps/Movements * Delete+Insert * Buffer/Clipboard/Register * Abbreviations * Key Binding * Mappings/Macros * Tab Expansion (Command Names and Parameters) Possible Libraries: * GNU Readline * Language (branches, loops, variables -> scripting) == Config/Setup == "config file" == "setup file" Read in current setup file: :source file Distribute setup files: $ cat config source ~/.foo/config.aliases source ~/.foo/config.macros source ~/.foo/config.colors source ~/.foo/config.crypto source ~/.foo/config.themes == Conclusion == add GUI 1.0 again! == Pipe == stdin+stdout: Allow to send the contents of the current page to some command or script. This opens a lot of possibilities, eg filtering, printing, saving. (mutt offers such a command.) Also, allow a non-interactive use of gui tools, ie as a filter: $ foo | firefox | bar > file expand this to command on websites: $ (cat) $URL | $URL/prog > $URL.out now think of websites as *commands*! example: $ cat blog.foo.org | www.translate.com/en2de | www.text2wav.org | www.mixer.net/background_music > www.mydomain.org/audiostream "listen to blog.foo.org by translating its contents from english to german converting the output to WAV format, adding some background music - and then 'storing' the result in an audio stream" == Prefs == enable your work everywhere by making your setup ubiquitous! store the setup *anywhere*. make client download the setup. simply ":source newsetup" to run. here come the features now..... == Interface == Add option name prefixes: file_ dir_ prog_ Interface with external tools. :set prog_editor=vim :set prog_crypto=gpg :set prog_print=script|lpr == Options == vim: :set opt[TAB] expand options name :set opt[C-D] show all options with prefix "opt" :set option? show current value :set option! toogle boolean value :set option=[TAB] expand the value :set option-=bar remove "bar" :set option+=foo add "foo" :set option^=42 multiply by 42 :set option& reset option to default!! :set all show all values :set all& reset all values :opt create overview to all options and their current values. :mkvimrc create a setup file from the current state of the program irssi: /load + /save just type "/save" the current state to its config file (~/.irssi/config) - and "/load" to reloead a changed config file. idea: add save points for config (c) Lem * easier documentation! * easier startup! == Display == (1) windows. (2) tabs. (3) split views: horizontal+vertical! a browser opens windows for each page, but there are also "tabs" in windows. but why can't you split windows - neither horizontally nor vertically? you can split windows within gnu screen and vim. you could use a split window like this eg: the left side of a split window shows a list of links - and the right side show one of these pages. so - get someone's bookmark page - and surf through all linked pages! Firefox already does this when you use CTRL-B to show the bookmark page. == Jumps == * jump to next/prev match. (this is already possible with CTRL-F to enter a string, and alt-n/alt-p to jump to the next/previous match; and alt-a toggles the display of all matches on the current page. but was this the result of some extension?) anyway - searches for pattern (regex) would be great! == Number Prefix == allow a number prefix for all commands: * N G -> jump to line N * N n -> find Nth next match * N % -> jump to N percent of text * N PgDn -> go down N pages == Summary == Summary of goals: * allow non-interactive use of the tools (filter, script). * add a command line to your tools! (gui 1.0!) * make code as small and tight as possible. * add the command line optionally on compile time. * allow to call sub-shells (eg :!date) == Comments == "Do not remind novice users of the hell that was DOS." yep, DOS was hell. But this here is way more advanced! Even though not many people will ask for a command line in all programs now, there might be quite some people who will stumble upon this feature when it exists. And quite a few people have told me that they are much more comfortable with a keyboard interface. Emacs: Editor -- Mail -- Web Firefox: Editor -- Mail -- Web "Firefox is my Operating System." -> work with tools independent of underlying operating system ie use tools on local machine. my world: install all tools on a server and simply connect to it. = Thanks = Feedback from: * Your name here! = Feedback = Please me some your comments, corrections, enhancements, flames, typos and more to maowberlin09(@)guckes.net thanks! :-) = TODO = * ... = Links = == Event == * HomePage: http://uxcamp.de/ -> http://uxcamp.mixxt.de/ * Contact orga(at)uxcamp.de * IRC none :-/ * stream none :-/ * Programme http://uxcamp.mixxt.de/networks/wiki/index.Sessionplan_Sonntag == Social == * Flickr http://www.flickr.com/search/?q=%23uxcb09 * Facebook ... * LinkedIn ... * Twitter http://www.twitter.com/uxcampberlin09 tag:#uxcb09 * Upcoming ... == Docs == Slides: * http://www.slideshare.net/stn1978/interface-design-best-practices == Misc == * icke http://uxcamp.mixxt.de/networks/members/profiles/index.guckes * This Page: http://www.guckes.net/talks/uxcamp.txt = Notes = * Chat: none. everyone's twittering. * Docs: is there a central repository of all papers+slides? * Food: lots - and for free! (coffee+tea, juices, water; cake+cookies, sandwiches) * Location: On the rim of Berlin. Five rooms for 50 and one room for 100 people. * Party: yes. interesting location. free drinks :) * Orga: A dozen (more?) people in blue tshirts. info table, cloakroom.. well done! * Weather: sunny - just great! * WiFi: working :) * 2009-05-22: Welcome Party @ Sankt Oberholz * 2009-05-23: Day 1/2 @ Erwin Schrödinger Zentrum * 2009-05-23: Party @ Kohlenquelle * 2009-05-24: Day 2/2 @ Erwin Schrödinger Zentrum = Quotes = * "Das Interface sollte führen dürfen, aber nicht kontrollieren." = Links = * Jef Raskin: The Humane Interface * Jeff Patton: 12 Best Practices for UX in an Agile Environment - Part 2 http://www.uie.com/articles/best_practices_part2 [2008-08-05] = Backlinks = Comments within blogs by people from the audience: * http://www.hannestrapp.de/wordpress/2009/05/26/das-ux-camp-2009-in-berlin/ "Die Session “GUI 1.0, WEB 3.0″ von Sven Guckes drehte sich nach Computerproblemen zuerst ausgiebig um Linux-Shells (ja wirklich), so dass die Idee, die hinter der Session stand (wenn ich es richtig verstanden habe), leider erst später klar wurde, als sowohl die Konzentration als auch der Zeitrahmen der Session bereits am Ende waren. Schade." Vielleicht haette die beiden Teile von der Reihenfolge wechseln sollen. * http://www.lonely-people-talk-a-lot.com/?p=670 "Der obligatorischen Twittersession folgte dann wieder mal eine Session aus dem Dunstkreis Usability: GUI 1.0, WEB 3.0. Der Leiter der Session, Sven Guckes war eine Show. Er hackte die ganze Zeit auf seiner Terminal Software rum und huldigte der Vergangenheit als neue Zukunft. Hierzu möchte ich eigentlich nicht viel mehr sagen, als ich in der Abhandlung über die Warm-up Party gesagt habe. Wir brauchen Technologie für Alle und Jeden. Die Kommandozeile hat ausgedient. Der einzige Punkt in dem ich zustimmen kann ist: Ja, wir brauchen die Kommandos der Shell zur Realisierung von API Anwendungen. Ich selbst will aber nicht mehr kryptisch auf der Shell rum hacken um von A nach B zu kommen." Warum wird also bei ebay, google und twitter immer noch eine Eingabefeld benutzt? Weil wir immer noch Woerter benutzen und diese ueber die Tastatur eingeben. Eine Kommandozeile benutzt lediglich das erste Wort der Eingabe als Kommando. Das ist der Unterschied. Think about it.