Slide 1

Slide 1 text

Hello  all!

Slide 2

Slide 2 text

3  QUESTIONS  QUIZ

Slide 3

Slide 3 text

1.  WHO  HAS  SEEN  BAD  CODE?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

2.  WHO  HAS  WRITTEN  BAD  CODE?

Slide 6

Slide 6 text

Two  developers  ask  forgiveness  of  technical  debt at  the  beginning  of  a  sprint.

Slide 7

Slide 7 text

3.  WHO  HAS  DONE   SOMETHING  ABOUT  BAD  CODE?

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

I'M  YOUR  NEW  BEST  FRIEND!

Slide 11

Slide 11 text

1. I  LOOK  FOR BAD  CODE 2. I  PROTECT YOUR  CODEBASE 3. I  COMPLAIN FOR  YOU

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

UNDER  THE  CAP

Slide 15

Slide 15 text

UNDER  THE  BEARD PHP-­‐CS PHP-­‐CS-­‐Fixer Blacklist Commit-­‐Message Matcher

Slide 16

Slide 16 text

JAMS  WITH  COMPOSER

Slide 17

Slide 17 text

WEARS  LINTERS

Slide 18

Slide 18 text

STANDS  FOR  SECURITY

Slide 19

Slide 19 text

MEETS  FRONT-­‐END

Slide 20

Slide 20 text

PHP-­‐CS PHP-­‐CS-­‐Fixer BLACKLIST COMMITMSG PHP-­‐MD PHP-­‐CPD PHP-­‐DCD HUMBUG PHING ANT PHP-­‐PARSER JSON-­‐LINT XML-­‐LINT YAML-­‐LINT ATOUM BRUNCH CLOVER GHERKIN GITCONFLICT PHP-­‐VERSION SHELL SECURITY-­‐CHECKER

Slide 21

Slide 21 text

CONTINUOUS  INTEGRATION

Slide 22

Slide 22 text

I  will  look  for  you,  I  will  find  you,   AND  I  WILL  KILL  YOU!

Slide 23

Slide 23 text

BECOMING  A  NINJA

Slide 24

Slide 24 text

YO  DAWG,  I  HEAR  YOU  LIKE TASKS  …

Slide 25

Slide 25 text

/** *  Interface  TaskInterface * *  @package  GrumPHP\Task */ interface  TaskInterface { public  function  getName(); public  function  getConfiguration(); public  function  getConfigurableOptions(); public  function  canRunInContext(ContextInterface $context); public  function  run(ContextInterface $context); }

Slide 26

Slide 26 text

EVENTS  …

Slide 27

Slide 27 text

TaskEvents RunnerEvents ConsoleEvents

Slide 28

Slide 28 text

IF  I  COULD  WRITE  MY  OWN  EXTENSION  …

Slide 29

Slide 29 text

/** *  Interface  ExtensionInterface * *  @package  GrumPHP\Extension */ interface  ExtensionInterface { public  function  load(ContainerBuilder $container); }

Slide 30

Slide 30 text

ONE  CONVENTION  TO  RULE  THEM  ALL

Slide 31

Slide 31 text

PROJECT  1 CONVENTIONS PROJECT  2 PROJECT  3

Slide 32

Slide 32 text

ONE  DOES  NOT  SIMPLY  SUPPORT  ALL  PLATFORMS

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

71 56 HHVM 70

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

LET’S  TALK  STATISTICS

Slide 38

Slide 38 text

STATS

Slide 39

Slide 39 text

SPECIAL  THANKS

Slide 40

Slide 40 text

SPECIAL  THANKS

Slide 41

Slide 41 text

TO  CONTRIBUTE! WE  WANT  YOU

Slide 42

Slide 42 text

Put  it  where  you  can’t  see  it! NEW  TASKS FEEDBACK DOCUMENTATION BUGS

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

ASK QUESTIONS  YOU  SHOULD!