Slide 1

Slide 1 text

Developer Workflow Efficiency How to get the most of your computer. @chendo http://github.com/chendo

Slide 2

Slide 2 text

Switching apps • Happens fairly often for most people. • Generally unavoidable.

Slide 3

Slide 3 text

Command/Alt-Tab • Works okay when you only deal with two apps. • Cognitive effort: • Need to figure out how many tabs to get to the app you want.

Slide 4

Slide 4 text

Solution • Global keyboard shortcuts for each app you frequently use. • Text editor/IDE, browser, terminal, Skype, Twitter, iTunes, Messages/iChat, Adium, Sparrow/Mail, etc. • Ideally accessible with left hand so right hand can mouse if needed. • Pick a prefix: Cmd+Shift, Cmd+Ctrl (via Caps Lock), etc. • Apps that do it: Alfred, Quicksilver. • Bonus: Launch apps with keyboard shortcuts.

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Arrow Keys • Long way from home row • Commonly used • Except maybe for vim users • Can’t avoid it in the OS... or so you may think.

Slide 8

Slide 8 text

Solution • Rebind them everywhere! • People bind Caps Lock to be Control already. • Two options: • KeyBindingsEditor • KeyRemap4Macbook

Slide 9

Slide 9 text

KeyBindingsEditor • http://www.cocoabits.com/ KeyBindingsEditor/ • GUI Editor for ~/Library/ DefaultKeyBinding.dict • Applies to all Cocoa NSTextFields unless they have been overridden.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Keyremap4Macbook • http://pqrs.org/macosx/ keyremap4macbook/ • Apps still sees arrow keys when you rebind (most of the time) • Installs its own keyboard driver (potentially risky).

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Backtraces in Terminal • Usual workflow: • Get a backtrace either from spec or whatever • Either copy the path or manually type into editor. • Pain in the ass.

Slide 14

Slide 14 text

Solution • iTerm2’s Semantic History • Cmd+Click on backtrace to open it in editor. • Bonus: Cmd+Drag to get a file handle • Video: http://vimeo.com/21872771

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Demonstration

Slide 17

Slide 17 text

Get a file path into the terminal • e.g., get current open file in editor into terminal to run a test/commit/whatever. • Most people type path in with lots of mashing • Some people drag file handle from titlebar.

Slide 18

Slide 18 text

Solution • filepath • small CLI utility that simply prints the path of the most recently active document (title bar icon thing). • http://github.com/chendo/filepath • Alias to ‘fp’ for bonus points. • Example usage: rspec `fp`

Slide 19

Slide 19 text

Gestures • Magic Trackpad / Macbooks • Ever wanted to customise gestures?

Slide 20

Slide 20 text

Solution • BetterTouchTool • http://blog.boastr.net/?page_id=1722 • Bind gestures to keyboard shortcuts, window actions, system actions. • Adds a shitload more gestures to use.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Key repeat speed • Mostly used for arrow keys and backspace. • Or in anger. • Should be at max.

Slide 23

Slide 23 text

Want even faster key repeat?

Slide 24

Slide 24 text

Rebind Caps Lock • You should be doing it already.

Slide 25

Slide 25 text

The Problem with Shortcuts

Slide 26

Slide 26 text

The problem with shortcuts • Remembering them is hard • Many things don’t have shortcuts • Much easier to use the mouse, even though it means taking hands off the keyboard

Slide 27

Slide 27 text

Idea • What if you could use the keyboard for where you would normally mouse? • Minimise the time between deciding an action and performing the action • Quicksilver/Alfred/LaunchBar for UI elements • Completely keyboard-driven

Slide 28

Slide 28 text

Shortcat

Slide 29

Slide 29 text

Shortcat • Quicksilver/Alfred/Launchbar/Spotlight for UI elements • Works everywhere that exposes Accessibility API. Including Safari! • The aim is to kill mousing.

Slide 30

Slide 30 text

Useful for • Keyboard warriors • People unable to/find it difficult to use a mouse • Vision-impaired • Mountain Lion Dictation AKA lazy

Slide 31

Slide 31 text

Internals • MacRuby • Accessibility API • CoreAnimation

Slide 32

Slide 32 text

Halp • Very new to Cocoa • Not sure how to test • CoreAnimation • Global keyboard event tapping

Slide 33

Slide 33 text

Interested? • @shortcatapp

Slide 34

Slide 34 text

Hope it helps! • Let me know how this works for you. • @chendo, @shortcatapp • Questions?