getting a clue at the command line
DESCRIPTION
Many of the new fangled front end development efficiency tools require you to drop into the Command Line. For those who are accustomed to using a Graphical User Interface, this can be a frustrating and demoralizing experience. The Command Line User Experience (CLUE) may be archaic, but it is also a very efficient way to work. This session will uncover some of the mysteries of the command line, and unpack the psychology behind your frustrations with it. We'll dive into details necessary to enhance your appreciation of this simple tool by touching on the following topics: why you're right to hate the command line (and how you can get over your hatred and get on with your job) the features of a well-written command line utility (so you can distinguish between the good ones and the ones that ought to make you curl your toes in frustration) the benefits of working at the command line when things are going wrong (and why things are more likely to go *right* when working from the command line for certain kinds of tasks) and finally, some simple tips to make your time at the command line more bearable By the end of this session you should be equipped to tackle command line tasks. Specifically, you will be able to: create a mental model of the tasks you need to complete while at the command line locate the command line on your computer complete tasks using relevant commands identify and apply troubleshooting techniques if things go wrong safely exit the command line when your tasks are complete Yes, this is an introductory session. This is for people who feel shame that they don't know how to "just see Dee into yer root durrr" and get mad when people say "just diff me a patch" as if it's as easy as playing with a kitten. No, you don't have to have Git, or Grunt, or Sass installed to attend (you don't even need to know what they all are--bonus marks if you do though). You don't even need to know where the command line is on your computer.TRANSCRIPT
drupal.org/user/1773 @emmajanehw
http://bit.ly/getting-a-clue
GETTING A CLUEAT THE COMMAND LINE
E M M A J A N E H O G B I N W E S T B Y
1. Start by understanding how you’ll benefit.
2. Group functionality and map it to things you already know.
3. Play the pre-game to learn the moves.
4. It’ll be okay. Don’t panic.
It’s because there are no pictures. You’ll need to learn to make your own.
tl;dltoo long; didn’t listen
How People Think
http://rebloggy.com/post/spoilers-mine-sherlock-bbc-sherlock-sherlock-spoilers-his-last-vow-lars-mikkelse/73135846244
30% visual/spatial
45% visual + words
25% words
http://en.wikipedia.org/wiki/Visual_thinking
http://www.mobygames.com/game/amiga/dune-ii-the-building-of-a-dynasty/screenshots/gameShotId,142587/
$ _
http://en.wikipedia.org/wiki/Palace
start by understanding how you’ll benefit
goal: consistency
copy-paste-able commands
so what?
it’s easilyconverted to a script
so what?
scripts can be automated
so what?
automation means fewer mistakes
so what?
group functionality and map it to things you
already know
1. task runners 2. scaffolding 3. package managers
task runnersTask runners are a set of tools to make build operations consistent, clean and well documented. They provide helpers to manage operations on the project file system via the command line.
http://en.wikipedia.org/wiki/Ball_boy
Examples of Task Runners• Front end: grunt, gulp, (npm), broccoli, brunch
• Linux: Make
scaffoldingDesign time scaffolding produces files of code that can later be modified by the programmer to customize the way the application database is used.
http://en.wikipedia.org/wiki/Lego_Star_Wars
Examples ofScaffolding
• Tangibles: Lego kit
• Front end dev: Yeoman
• Drupal: base theme (with starter theme)
• Linux: Make
ScaffoldingCommon Tasks
• create an empty shell site$ yo webapp
• create a new site$ compass create my_project
package managersA package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner.
Examples ofPackage Managers
• OSX: Mac App Store, MacPorts, brew
• Linux: dpkg, RPM
• Front End Dev: npm, Bower, RubyGems
Package ManagerCommon Tasks
• locate software $ brew search git
• install software $ brew install git
• check if updates are available$ brew update!
• install latest version$ brew upgrade git
Create Your Mental PalaceSport Package
Manager Scaffolding Task Runner
Generic download, install environment
create new instance automate tasks
Tennis builds a tennis stadium
Sets up the tennis net
Retrieves the ball during the
game.
Front end dev bower yeoman grunt
???
play the pre-game to learn the moves
Good command line utilities make you feel smart.
• The help sub-command includes a functional, not alphabetical, grouping of tasks.
• Always gives an output to the screen after running.
• Provides tips on customisation, and “next steps”.
Tips for Navigating• To navigate past commands, use the arrow keys.
• To list past commands, type: history.
• To repeat a previous command, use !history#
• To search for past commands, use CTRL-r.
Tips for Typing Commands• Auto-complete what you’re typing with the tab key.
• To delete a word in your command, use CTRL-w.
• To jump to the beginning of the line, use CTRL-a.
• To jump to the end of the line, use CTRL-e.
Pro Tip
remap your caps lock key on OSX
Finding the Command Line
Command Line Interface
http://en.wikipedia.org/wiki/Command_Prompt
$ _
Determining Input
define:prompt• a transitive verb meaning To move to action.
? forward 90
> open mailbox
define:commandverb!
• give an authoritative or peremptory order. "a gruff voice commanded us to enter”
noun!
1. an authoritative order. "he obeyed her commands without question"
2. the ability to use or control something.
CommandsOne-word actions:
• sing
• jump
• look
One-word commands:
• help
• exit
• history
Commands with ParametersAn action, and a direct object:!
• take book
• read pamphlet
• open window
Commands with parameters:!
• cd /var/www
• man <command_name>
• mv current_name.jpg new_name.jpg
Commands with Parameters and Modifiers
Refining the request:!
• go down stairs
• take blue pill
• open left door
Adding a flag/switch/modifier:!
• mkdir -p directory/sub-directory
• tar xvf file_to_extract.tar.gz
• ls -lh
Ten Commands
“all” commands
http://www.commandlinefu.com/commands/browse This site includes a “rating” function.
It’ll be okay.Don’t panic.
read outputs in both directions.
the reptile brain
The type of output can change depending on the commands you’re running.Read outputs in both directions.!
• Information from the program you just ran: read top to bottom
• Printed summary of actions taken: read bottom to top
http://en.wikipedia.org/wiki/Palace
1. Start by understanding how you’ll benefit.
2. Group functionality and map it to things you already know.
3. Play the pre-game to learn the moves.
4. It’ll be okay. Don’t panic.
WHAT DID YOU THINK?E V A U L A T E T H I S S E S S I O N - W R I T T E N F E E D B A C K F O R M S
FOR MORE INFORMATIONdrupal.org/user/1773
@emmajanehw http://bit.ly/getting-a-clue