Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fly, you tools - Piotr Szotkowski

Fly, you tools - Piotr Szotkowski

As developers we heavily depend on our tools of the trade, as oftentimes mastering them means getting out of deep trouble so much faster.

This talk covers some lesser known features of our everyday infrastructure : Git, PostgreSQL and command-line; tricks which make using these tools such a pleasure, regardless whether it’s for shaving yet another yak or saving one’s own skin.

Kod.io Linz

March 01, 2014
Tweet

More Decks by Kod.io Linz

Other Decks in Programming

Transcript

  1. talk assumptions you know there are nifty things you can

    do with tools you’ve seen some blog posts describing various tools in excruciating detail you can’t remember 90% of any given post the day after, including that one useful trick it would be cool if someone shared small and crucial bits that are actually useful every day especially if they are not well­known
  2. Git What you must understand is that Git is a

    sharp knife and the handle is also a knife, and each side contains more knives, fractally. — Brandon Hays Git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space. — Isaac Wolkerstorfer
  3. Want to make a Git repository behave strangely every now

    and then? Have a coworker that creates a remote branch called HEAD. — Patrick Hüsler git checkout -b noʎ_ʞɔnɟ — William Morgan I didn’t expect g i t c o m m i t - - a m e n to work, but to quote Leonard Cohen, hallelujah. — chromatic Just discovered g i t r e b a s e - - i n t e r a c t i v e - - a u t o s q u a s h . Holy shit. Will never again need to do any work. — Tom Stuart
  4. $ g i t i n i t I n

    i t i a l i z e d e m p t y G i t r e p o s i t o r y i n / t m p / w o r l d _ d o m i n a t i o n / . g i t / $ g i t c o m m i t - - m e s s a g e ' g i t i n i t ' - - a l l o w - e m p t y [ m a s t e r ( r o o t - c o m m i t ) a 9 e 1 e 5 5 ] g i t i n i t $ c a t > R E A D M E R E A D M E - d r i v e n d e v e l o p m e n t f t w ! ^ D $ g i t a d d R E A D M E $ g i t c o m m i t - - m e s s a g e ' I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E ' [ m a s t e r c a b b a 9 e ] I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) c r e a t e m o d e 1 0 0 6 4 4 R E A D M E
  5. $ c a t > p l a n s

    . r b p u t s ' H e l l o , w o r l d d o m i n a t i o n ! ' ^ D $ g i t a d d p l a n s . r b $ g i t c o m m i t - - m e s s a g e ' f i r s t w o r k i n g c o d e ! ' [ m a s t e r c 0 d e f 0 0 ] f i r s t w o r k i n g c o d e ! 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) c r e a t e m o d e 1 0 0 6 4 4 p l a n s . r b $ g i t l o g - - o n e l i n e - - d e c o r a t e c 0 d e f 0 0 ( H E A D , m a s t e r ) f i r s t w o r k i n g c o d e ! c a b b a 9 e I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E a 9 e 1 e 5 5 g i t i n i t $ t r a - z A - Z < R E A D M E | s p o n g e R E A D M E $ c a t R E A D M E R E A D M E - D R I V E N D E V E L O P M E N T F T W ! $ g i t a d d R E A D M E $ g i t c o m m i t - - m e s s a g e ' f i x u p ! c a b b a 9 e ' [ m a s t e r 5 e a f 0 0 d ] f i x u p ! c a b b a 9 e 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) , 1 d e l e t i o n ( - )
  6. $ g i t l o g - - d

    e c o r a t e - - o n e l i n e 5 e a f 0 0 d ( H E A D , m a s t e r ) f i x u p ! c a b b a 9 e c 0 d e f 0 0 f i r s t w o r k i n g c o d e ! c a b b a 9 e I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E a 9 e 1 e 5 5 g i t i n i t $ g i t r e b a s e - - i n t e r a c t i v e - - a u t o s q u a s h c a b b a 9 e ^ p i c k c a b b a 9 e I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E f i x u p 5 e a f 0 0 d f i x u p ! c a b b a 9 e a 1 f a 1 f a b a f f 1 e d b a 9 9 a 9 e b a 1 1 a d 5 f a d e d p i c k c 0 d e f 0 0 f i r s t w o r k i n g c o d e ! [ d e t a c h e d H E A D b a d f 0 0 d ] I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) c r e a t e m o d e 1 0 0 6 4 4 R E A D M E S u c c e s s f u l l y r e b a s e d a n d u p d a t e d r e f s / h e a d s / m a s t e r . $ g i t l o g - - o n e l i n e - - d e c o r a t e b e a 9 1 e 5 ( H E A D , m a s t e r ) f i r s t w o r k i n g c o d e ! b a d f 0 0 d I t h i n k t h i s i s t h e b e g i n n i n g o f a b e a u t i f u l R E A D M E a 9 e 1 e 5 5 g i t i n i t
  7. $ c a t > . r u b y

    - v e r s i o n 2 . 0 ^ D $ g i t a d d . r u b y - v e r s i o n $ g i t c o m m i t - - m e s s a g e ' w e ’ r e g e t t i n g s e r i o u s n o w ' [ m a s t e r c 0 f f e e 5 ] w e ’ r e g e t t i n g s e r i o u s n o w 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) c r e a t e m o d e 1 0 0 6 4 4 . r u b y - v e r s i o n $ c a t > . r u b y - v e r s i o n 2 . 1 ^ D $ g i t s t a t u s - - s h o r t - - b r a n c h # # m a s t e r M . r u b y - v e r s i o n $ g i t u p d a t e - i n d e x - - a s s u m e - u n c h a n g e d . r u b y - v e r s i o n $ g i t s t a t u s - - s h o r t - - b r a n c h # # m a s t e r
  8. $ g i t c h e c k o

    u t - b p i n k y S w i t c h e d t o a n e w b r a n c h ' p i n k y ' $ c a t > p l a n s . r b i f E N V [ ' U S E R ' ] = = ' b r a i n ' p u t s ' H e l l o , w o r l d d o m i n a t i o n ! ' e l s e p u t s ' N i c e t r y . Y o u m u s t b e P i n k y . ' e n d ^ D $ g i t d i f f d i f f - - g i t a / p l a n s . r b b / p l a n s . r b i n d e x b e e f b a d . . f e e d b a 9 1 0 0 6 4 4 - - - a / p l a n s . r b + + + b / p l a n s . r b @ @ - 1 + 1 , 5 @ @ - p u t s ' H e l l o , w o r l d d o m i n a t i o n ! ' + i f E N V [ ' U S E R ' ] = = ' b r a i n ' + p u t s ' H e l l o , w o r l d d o m i n a t i o n ! ' + e l s e + p u t s ' N i c e t r y . Y o u m u s t b e P i n k y . ' + e n d
  9. $ g i t d i f f - -

    i g n o r e - a l l - s p a c e d i f f - - g i t a / p l a n s . r b b / p l a n s . r b i n d e x b e e f b a d . . f e e d b a 9 1 0 0 6 4 4 - - - a / p l a n s . r b + + + b / p l a n s . r b @ @ - 1 + 1 , 5 @ @ + i f E N V [ ' U S E R ' ] = = ' b r a i n ' p u t s ' H e l l o , w o r l d d o m i n a t i o n ! ' + e l s e + p u t s ' N i c e t r y . Y o u m u s t b e P i n k y . ' + e n d $ g i t a d d p l a n s . r b $ g i t c o m m i t - - m e s s a g e ' P i n k y - p r o o f i n g ' [ p i n k y d e f a c e d ] P i n k y - p r o o f i n g 1 f i l e c h a n g e d , 5 i n s e r t i o n s ( + ) , 1 d e l e t i o n ( - ) $ g i t c h e c k o u t - S w i t c h e d t o b r a n c h ' m a s t e r ' $ g i t c h e c k o u t - S w i t c h e d t o b r a n c h ' p i n k y '
  10. Git g i t c o m m i t

    - - a l l o w - e m p t y g i t r e b a s e - i - - a u t o s q u a s h g i t u p d a t e - i n d e x - - a s s u m e - u n c h a n g e d g i t d i f f - w g i t c h e c k o u t - g i t a d d | c h e c k o u t | s t a s h - p
  11. PostgreSQL I believe that if Postgres had a catchy name

    (say, SuperSQL) it would have left MySQL in the dust long ago. — Diego Basch Though incorrect, PostgreSQL is more fun to use when you pronounce it as ‘post-Grayskull’. — karlinfox Want to fall in love with PostgreSQL by reading just one page of the documentation? Easy: — James Edward Gray II postgresql.org/docs/current/interactive/datatype.html
  12. $ p s q l k o d . i

    o p s q l ( 9 . 3 . 3 ) T y p e " h e l p " f o r h e l p . # C R E A T E T Y P E t r a c k A S E N U M ( ' 1 ' , ' 2 ' , ' b o t h ' ) ; # C R E A T E T A B L E a g e n d a ( t r a c k t r a c k D E F A U L T ' b o t h ' , s p e a k e r t e x t , t i t l e t e x t , t i m e t s t z r a n g e N O T N U L L , t a g s t e x t [ ] ) ; # I N S E R T I N T O a g e n d a ( t i t l e , t i m e ) V A L U E S ( ' R e g i s t r a t i o n ' , ' [ 2 0 1 4 - 0 3 - 0 1 8 : 3 0 , 2 0 1 4 - 0 3 - 0 1 9 : 0 0 ) ' ) ; # S E L E C T t r a c k , t i t l e , t i m e F R O M a g e n d a ; t r a c k | t i t l e | t i m e - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - b o t h | R e g i s t r a t i o n | [ " 2 0 1 4 - 0 3 - 0 1 0 8 : 3 0 : 0 0 + 0 1 " , " 2 0 1 4 - 0 3 - 0 1 0 9 : 0 0 : 0 0 + 0 1 " ) ( 1 r o w )
  13. # I N S E R T I N T

    O a g e n d a ( s p e a k e r , t i t l e , t i m e ) V A L U E S ( ' K l a u s L u g e r & K a t r i n E c k s t e i n ' , ' W e l c o m e S p e e c h ' , ' [ 2 0 1 4 - 0 3 - 0 1 9 : 0 0 , 2 0 1 4 - 0 3 - 0 1 9 : 3 0 ) ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 1 ' , ' S t e v e S c o t t ' , ' G o i n g N a t i v e ' , ' [ 2 0 1 4 - 0 3 - 0 1 9 : 3 0 , 2 0 1 4 - 0 3 - 0 1 1 0 : 1 0 ) ' , ' { " C # " , " m o b i l e " } ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 2 ' , ' L e a V e r o u ' , ' T h e C h r o m a Z o n e ' , ' [ 2 0 1 4 - 0 3 - 0 1 9 : 3 0 , 2 0 1 4 - 0 3 - 0 1 1 0 : 0 0 ) ' , ' { " C S S " , " c o l o u r " } ' ) ; # S E L E C T t r a c k , s p e a k e r , t i t l e , t a g s F R O M a g e n d a ; t r a c k | s p e a k e r | t i t l e | t a g s - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - b o t h | | R e g i s t r a t i o n | b o t h | K l a u s L u g e r & K a t r i n E c k s t e i n | W e l c o m e S p e e c h | 1 | S t e v e S c o t t | G o i n g N a t i v e | { C # , m o b i l e } 2 | L e a V e r o u | T h e C h r o m a Z o n e | { C S S , c o l o u r } ( 4 r o w s )
  14. # I N S E R T I N T

    O a g e n d a ( t i t l e , t i m e ) V A L U E S ( ' B r e a k ' , ' [ 2 0 1 4 - 0 3 - 0 1 1 0 : 0 0 , 2 0 1 4 - 0 3 - 0 1 1 0 : 1 5 ) ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 1 ' , ' J o a n n e C h e n g ' , ' B e y o n d t h e B a r G r a p h ' , ' [ 2 0 1 4 - 0 3 - 0 1 1 0 : 1 5 , 2 0 1 4 - 0 3 - 0 1 1 0 : 5 0 ) ' , ' { " J a v a S c r i p t " , " g r a p h s " } ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 2 ' , ' P a s c a l P r e c h t ' , ' A n g u l a r J S a n d i 1 8 n ' , ' [ 2 0 1 4 - 0 3 - 0 1 1 0 : 1 5 , 2 0 1 4 - 0 3 - 0 1 1 0 : 5 0 ) ' , ' { " A n g u l a r J S " , " i 1 8 n " } ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 1 ' , ' B u r a k Y i ğ i t K a y a ' , ' C o n t i n u o u s T r a n s l a t i o n ' , ' [ 2 0 1 4 - 0 3 - 0 1 1 1 : 0 5 , 2 0 1 4 - 0 3 - 0 1 1 1 : 4 0 ) ' , ' { " t 9 n " } ' ) ; # I N S E R T I N T O a g e n d a ( t r a c k , s p e a k e r , t i t l e , t i m e , t a g s ) V A L U E S ( ' 2 ' , ' A n i k a L i n d t n e r ' , ' H o w t o G e t M o r e W o m e n i n T e c h i n 5 S t e p s ' , ' [ 2 0 1 4 - 0 3 - 0 1 1 1 : 0 5 , 2 0 1 4 - 0 3 - 0 1 1 1 : 4 0 ) ' , ' { " w o m e n " , " t e c h " } ' ) ;
  15. # S E L E C T t r a

    c k , t i t l e , t o _ c h a r ( l o w e r ( t i m e ) , ' H H : M I ' ) A S s t a r t , t a g s F R O M a g e n d a ; t r a c k | t i t l e | s t a r t | t a g s - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - b o t h | R e g i s t r a t i o n | 0 8 : 3 0 | b o t h | W e l c o m e S p e e c h | 0 9 : 0 0 | 1 | G o i n g N a t i v e | 0 9 : 3 0 | { C # , m o b i l e } 2 | T h e C h r o m a Z o n e | 0 9 : 3 0 | { C S S , c o l o u r } b o t h | B r e a k | 1 0 : 0 0 | 1 | B e y o n d t h e B a r G r a p h | 1 0 : 1 5 | { J a v a S c r i p t , g r a p h s } 2 | A n g u l a r J S a n d i 1 8 n | 1 0 : 1 5 | { A n g u l a r J S , i 1 8 n } 1 | C o n t i n u o u s T r a n s l a t i o n | 1 1 : 0 5 | { t 9 n } 2 | H o w t o G e t M o r e W o m e n i n T e c h i n 5 S t e p s | 1 1 : 0 5 | { w o m e n , t e c h } ( 9 r o w s )
  16. # S E L E C T t r a

    c k , s p e a k e r , t i t l e , t o _ c h a r ( l o w e r ( t i m e ) , ' H H : M I ' ) A S s t a r t , t a g s F R O M a g e n d a W H E R E t i m e @ > ' 2 0 1 4 - 0 3 - 0 1 9 : 4 5 ' : : t i m e s t a m p t z ; t r a c k | s p e a k e r | t i t l e | s t a r t | t a g s - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - - - - - - - - 1 | S t e v e S c o t t | G o i n g N a t i v e | 0 9 : 3 0 | { C # , m o b i l e } 2 | L e a V e r o u | T h e C h r o m a Z o n e | 0 9 : 3 0 | { C S S , c o l o u r } ( 2 r o w s ) # S E L E C T t r a c k , s p e a k e r , t i t l e , t o _ c h a r ( l o w e r ( t i m e ) , ' H H : M I ' ) A S s t a r t , t a g s F R O M a g e n d a W H E R E ' A n g u l a r J S ' = A N Y ( t a g s ) O R ' J a v a S c r i p t ' = A N Y ( t a g s ) ; t r a c k | s p e a k e r | t i t l e | s t a r t | t a g s - - - - - - - + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - 1 | J o a n n e C h e n g | B e y o n d t h e B a r G r a p h | 1 0 : 1 5 | { J a v a S c r i p t , g r a p h s } 2 | P a s c a l P r e c h t | A n g u l a r J S a n d i 1 8 n | 1 0 : 1 5 | { A n g u l a r J S , i 1 8 n } ( 2 r o w s )
  17. PostgreSQL custom types ranges and arrays and search and HStore

    and JSON and geometry types and PostGIS and XML and MAC+IPv4+IPv6 and UUID and… I truly believe that PostgreSQL is the hacker’s RDBMS. — Ryan Smith
  18. CLI there are tonnes of commands useful on an everyday

    basis this is just a crash course through some of them …and through some example pipe chaining Mistyped find-awk-xargs-rm pipeline backfires killing Ted Dziuba. — Fake Hacker News
  19. $ f i n d a p p / m

    o d e l s - n a m e ' * . r b ' a p p / m o d e l s / f o o . r b a p p / m o d e l s / b a r . r b a p p / m o d e l s / b a z . r b … $ f i n d a p p / m o d e l s - n a m e ' * . r b ' | x a r g s w c - l 4 3 a p p / m o d e l s / f o o . r b 2 a p p / m o d e l s / b a r . r b 8 3 a p p / m o d e l s / b a z . r b … $ f i n d a p p / m o d e l s - n a m e ' * . r b ' | x a r g s w c - l | s o r t - n r 1 7 1 2 4 t o t a l 3 6 6 3 a p p / m o d e l s / q u x . r b 1 4 2 6 a p p / m o d e l s / q u u x . r b 1 2 4 0 a p p / m o d e l s / c o r g e . r b 9 5 3 a p p / m o d e l s / g r a u l t . r b … # v i a S a m L i v i n g s t o n - G r a y
  20. $ g i t l o g - - o

    n e l i n e - - n a m e - o n l y b a d f 0 0 d s o m e c o m m i t m e s s a g e a p p / m o d e l s / f o o . r b c a f e b 0 1 a n o t h e r c o m m i t m e s s a g e … $ g i t l o g - - o n e l i n e - - n a m e - o n l y | g r e p ' ^ [ ^ ] * \ . r b $ ' a p p / m o d e l s / f o o . r b a p p / c o n t r o l l e r s / b a r s _ c o n t r o l l e r . r b a p p / v i e w s / u s e r s / _ b a z . h t m l . e r b … $ g i t l o g - - o n e l i n e - - n a m e - o n l y | g r e p ' ^ [ ^ ] * \ . r b $ ' | s o r t | u n i q - c 6 3 a p p / c o n t r o l l e r s / c o r g e s _ c o n t r o l l e r . r b 1 8 3 a p p / c o n t r o l l e r s / q u u x s _ c o n t r o l l e r . r b 4 a p p / c o n t r o l l e r s / q u x s _ c o n t r o l l e r . r b … $ g i t l o g - - o n e l i n e - - n a m e - o n l y | g r e p ' ^ [ ^ ] * \ . r b $ ' | s o r t | u n i q - c | s o r t - n r 1 0 9 6 a p p / m o d e l s / f o o . r b 3 2 5 a p p / c o n t r o l l e r s / f o o s _ c o n t r o l l e r . r b 2 5 7 a p p / m o d e l s / b a r . r b 2 5 1 c o n f i g / r o u t e s . r b 2 4 8 a p p / c o n t r o l l e r s / b a z _ c o n t r o l l e r . r b … # v i a S a m s o n O o t o o v a k / M i c h a e l F e a t h e r s
  21. $ h e a d m i g . l

    o g = = A d d F o o T o B a r : m i g r a t i n g = = = = = = = = = = = = = = = = = = = = = = = = = = = - - a d d _ c o l u m n ( : b a r s , : f o o , : i n t e g e r ) - > 0 . 1 0 4 4 s - - a d d _ c o l u m n ( : b a r s , : b a z , : i n t e g e r ) - > 0 . 1 1 4 4 s … $ g r e p ' - > [ 0 - 9 . ] * s ' m i g . l o g - > 0 . 1 0 4 4 s - > 0 . 1 1 4 4 s … $ g r e p ' - > [ 0 - 9 . ] * s ' m i g . l o g | c u t - d ' ' - f 5 0 . 1 0 4 4 s 0 . 1 1 4 4 s … $ g r e p ' - > [ 0 - 9 . ] * s ' m i g . l o g | c u t - d ' ' - f 5 | t r - d s 0 . 1 0 4 4 0 . 1 1 4 4 …
  22. $ g r e p ' - > [ 0

    - 9 . ] * s ' m i g . l o g | c u t - d ' ' - f 5 | t r - d s | x a r g s 0 . 1 0 4 4 0 . 1 1 4 4 … $ g r e p ' - > [ 0 - 9 . ] * s ' m i g . l o g | c u t - d ' ' - f 5 | t r - d s | x a r g s | t r ' ' + 0 . 1 0 4 4 + 0 . 1 1 4 4 + … $ g r e p ' - > [ 0 - 9 . ] * s ' m i g . l o g | c u t - d ' ' - f 5 | t r - d s | x a r g s | t r ' ' + | b c 4 . 0 2 3 0 $ g r e p - o ' [ 0 - 9 . ] \ + ' m i g . l o g | p a s t e - s d + | b c 4 . 0 2 3 0 $ d i f f < ( g r e p - r f o o s o m e _ d i r ) < ( g r e p - r f o o o t h e r _ d i r ) … $ p b p a s t e | p y g m e n t i z e - l r u b y - f r t f - O s t y l e = p r e s e n t a t i o n | p b c o p y # v i a K a t r i n a O w e n / G a r y B e r n h a r d t
  23. pipe viewer $ c a t d b _ n

    a m e . s q l | p s q l d b _ n a m e # T i m e p a s s e s . # I t i s p i t c h b l a c k . # Y o u a r e l i k e l y t o b e e a t e n b y a g r u e . $ c a t d b _ n a m e . s q l | p v | p s q l d b _ n a m e 9 7 M B 0 : 0 0 : 1 2 [ 2 8 . 3 M B / s ] [ < = > ] ^ C $ p v d b _ n a m e . s q l | p s q l d b _ n a m e 9 7 M B 0 : 0 0 : 1 2 [ 2 8 . 3 M B / s ] [ = = = = = = = = = = = = > ] 3 2 % E T A 0 : 0 0 : 2 4 ^ C $ p g _ d u m p d b _ n a m e | p v - s 6 0 0 m | g z i p > d b _ n a m e . s q l . g z 5 9 2 M B 0 : 0 5 : 0 9 [ 1 . 9 2 M B / s ] [ = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = > ] 9 8 %
  24. notable CLI tools p g r e p + p

    k i l l – find and kill processes w a t c h – refresh output every X seconds t i m e o u t – kill a program after X time – just… read about it n c d u – check what takes so much space p r o x y l o c a l – expose a local port to the public r m a d i s o n – Debian+Ubuntu versions of a package GNU p a r a l l e l
  25. world domination plans a l i a s c o

    m p u t e r , = ' s u d o ' c o m p u t e r , a p t - g e t i n s t a l l p o s t g r e s q l + m a n $ ( l s / b i n / u s r / b i n | s h u f - n 1 ) Git tips from the trenches Five Things You Didn’t Know About PostgreSQL PostgreSQL awesomeness for Rails developers Today I Learned @CLIMagic
  26. $ a l i a s s u c h

    = g i t $ a l i a s v e r y = g i t $ a l i a s w o w = ' g i t s t a t u s - - b r a n c h - - s h o r t ' $ w o w # # m a s t e r M p l a n s . r b $ s u c h c o m m i t … [ m a s t e r b 1 a c a d d ] B a l d r i c k , y o u w o u l d n ’ t s e e a s u b t l e p l a n i f i t p a i n t e d i t s e l f p u r p l e a n d d a n c e d n a k e d o n t o p o f a h a r p s i c h o r d , s i n g i n g ‘ s u b t l e p l a n s a r e h e r e a g a i n ! ’ 1 f i l e c h a n g e d , 1 i n s e r t i o n ( + ) , 5 d e l e t i o n s ( - ) $ v e r y p u s h C o u n t i n g o b j e c t s : 1 1 , d o n e . D e l t a c o m p r e s s i o n u s i n g u p t o 4 t h r e a d s . C o m p r e s s i n g o b j e c t s : 1 0 0 % ( 3 / 3 ) , d o n e . W r i t i n g o b j e c t s : 1 0 0 % ( 6 / 6 ) , 5 6 6 b y t e s | 0 b y t e s / s , d o n e . T o t a l 6 ( d e l t a 2 ) , r e u s e d 0 ( d e l t a 0 ) T o g i t @ g i t h u b . c o m : b l a c k a d d e r / p l a n s . g i t a 9 e 1 e 5 5 . . b 1 a c a d d m a s t e r - > m a s t e r # v i a C h r i s M a r t i n