Slide 1

Slide 1 text

Devtools Tools for the daily developer Work

Slide 2

Slide 2 text

Me ● Martin Holzhauer ● Developer @ ResearchGate.net ● woodworker @ github ● woodworker @ twitter ● in to PHP since 4.1.2

Slide 3

Slide 3 text

● PHP Developer ● Doing Webstuff ● Using PHP on Linux (or that other broken POSIX System) You

Slide 4

Slide 4 text

● tips you already know and use ● tools you already know (and use?) ● links to pages you already know ● books you already have read This Talk is (hopefully) about

Slide 5

Slide 5 text

Books

Slide 6

Slide 6 text

( Optional | More ) Books

Slide 7

Slide 7 text

● nothing is better than a whiteboard ● nothing is better then a large whiteboard ● nothing is better than a lot of whiteboards ● sometimes not everyone is at one place Collab Tools

Slide 8

Slide 8 text

● Trello ● Pivotaltracker ● YouTrack ● JIRA ● Arbit ● Bugzilla ● Google Docs (+ Hangout) Online Collab Tools

Slide 9

Slide 9 text

Trello / Pivotaltracker ● todo lists on steroids ● good for Kanban like workflow ● Trello free for all ○ you can pay and get better user management ● Pivotal Tracker ○ free if you make your project public ○ pay for private projects Online Collab Tools

Slide 10

Slide 10 text

YouTrack / JIRA / Bugzilla / Arbit ● more (bug)tracker like ● help to get request out of your head ● YouTrack/JIRA do cost money ● Bugzilla free as in freedom aka GPL ● Arbit is still in development Online Collab Tools

Slide 11

Slide 11 text

● PHPUnit ● composer ● PHPCS - CS as in CodingStandard ● phpmd - mess detector see http://phpqatools.org (PHP) Tools you need

Slide 12

Slide 12 text

PHPUnit ● Test ● Test! ● TEST!!! ● really. Please Test. ● at least the important stuff ● pleaaassseeee ● If it's hard to test your code is hard to use (PHP) Tools you need

Slide 13

Slide 13 text

composer ● if you don't use it you are doing it wrong ● its easy ● it helps a lot ● installs dependencies! ● AUTOLOAD!!! (PHP) Tools you need

Slide 14

Slide 14 text

Tools for your daily work Tools to try

Slide 15

Slide 15 text

● git flow / github flow ● Vagrant + Chef | Puppet ● Ant (Build Commons) Tools to try

Slide 16

Slide 16 text

git flow / github flow ● a basic workflow / branching layout ● branch/tag per release ● branch per bug ● branch per feature ● mainline source: http://nvie.com/posts/a-successful-git-branching-model/ Tools to try

Slide 17

Slide 17 text

Vagrant + Chef/Puppet ● Vagrant is Virtualbox for Devs ● Chef/Puppet create the system you want ● Helps to keep Dev, Staging and Live in sync Tools to try

Slide 18

Slide 18 text

Ant (Build Commons) ● ABC build by Qafoo ● one command to rule them all ○ clean, validate, init, compile (lint) ○ test, bundle, package ○ deploy ● does all you need and "x other things" source: http://abc.tools.qafoo.com/ Tools to try

Slide 19

Slide 19 text

● use a CI Server ● you are to lazy to run tests all the time Tools to try - CI

Slide 20

Slide 20 text

Jenkins ● Java stuff ● self hosted ● see jenkins-php.org Tools to try - CI

Slide 21

Slide 21 text

Travis ● Hosted solution ● free for Open Source projects ● You need to be on GitHub ● runs your unittest on every push Tools to try - CI

Slide 22

Slide 22 text

Scrutinizer-CI ● not really for unit tests ● code coverage ● static code analysis ● use together with Travis Tools to try - CI

Slide 23

Slide 23 text

● Use the best you can find ● Select which IDE helps you the most ● If it's still not PhpStorm - use PhpStorm ;D Your IDE

Slide 24

Slide 24 text

Your IDE

Slide 25

Slide 25 text

● LEARN ALL THE SHORTCUTS ○ opening files, classes, function declarations ○ block comments ○ reformat the code according to the CS ○ create a new file ○ search in file ○ search in all files ○ ... Your IDE

Slide 26

Slide 26 text

● if you do it more than once, write a script ● deployment? -> script! Learn Shell Scripting

Slide 27

Slide 27 text

What do i script? ● a file by file colordiff before i commit ● a script to run only "affected" unit tests ○ check for changed files and run tests for them ○ handy for quick check ● a cherry pick script with fetching commit messages ● faster project navigation on shell level Learn Shell Scripting

Slide 28

Slide 28 text

● the concepts of pipes ● awesome tools ○ grep, egrep, zgrep, pgrep ○ cut, awk, sed ○ wc ○ cat, zcat ○ less vs. more ○ tar, bzip2, gzip ○ netcat, w3m, telnet ○ $YOUR_VERSIONCONTROL_CLI ○ bash scripting ■ if [ ] vs. if [[ ]] vs. test ■ loops Learn Shell Scripting

Slide 29

Slide 29 text

● we do not talk about why you need it ● you will need it some times ● get used to one and it's fine A console editor

Slide 30

Slide 30 text

● VIM ○ hard to learn but harder to master ○ Janus Distribution / MacVim ● nano / pico / mcedit ○ enough to "just edit something small" ○ you don't look cool with nano / mcedit ● The Editor in that Emacs Window Manager ○ Here be Dragons A console editor

Slide 31

Slide 31 text

What do you use? More Stuff?

Slide 32

Slide 32 text

Any? Questions?

Slide 33

Slide 33 text

KTHXBYE Thanks