Slide 1

Slide 1 text

Debugging Zen Ben Ramsey

Slide 2

Slide 2 text

Not Zend!

Slide 3

Slide 3 text

HI, I’M BEN. I’m a web craftsman, author, and speaker. I build a platform for professional photographers at ShootProof. I enjoy APIs, open source software, organizing user groups, good beer, and spending time with my family. Nashville, TN is my home. virtPHP ✤ Books ✤ Zend PHP Certification Study Guide ✤ PHP 5 Unleashed ✤ Nashville PHP & Atlanta PHP ✤ array_column() ✤ rhumsaa/uuid library ✤ virtPHP ✤ PHP League OAuth 2.0 Client

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Debugging Zen?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Debugging

Slide 9

Slide 9 text

To search for and eliminate malfunctioning elements or errors in something, especially a computer program or machinery. debug /diːˈbʌɡ/

Slide 10

Slide 10 text

Zen

Slide 11

Slide 11 text

(colloquial) Extremely relaxed and collected. (informal) A philosophy of calm, reminiscent of that of the Buddhist denomination. zen /zɛn/

Slide 12

Slide 12 text

Just What Is Intuition?

Slide 13

Slide 13 text

“Hokey religions and ancient weapons are no match for a good blaster at your side, kid.” —Han Solo

Slide 14

Slide 14 text

Immediate cognition without the use of conscious rational processes. in·tu·i·tion /ˌint(y)o͞oˈiSHən/

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

That’s immediate cognition, and you weren’t conscious of any rational process being used.

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Using your Intuition

Slide 20

Slide 20 text

Slow Down

Slide 21

Slide 21 text

1. Stop what you’re doing 2. Close your eyes 3. Take a deep breath 4. Let it out slowly

Slide 22

Slide 22 text

“If you just sit and observe, you will see how restless your mind is. If you try to calm it, it only makes it worse, but over time it does calm, and when it does, there’s room to hear more subtle things—that’s when your intuition starts to blossom and you start to see things more clearly and be in the present more…”

Slide 23

Slide 23 text

“…Your mind just slows down, and you see a tremendous expanse in the moment. You see so much more than you could see before. It’s a discipline; you have to practice it.”

Slide 24

Slide 24 text

Stop Saying “I Don’t Know”

Slide 25

Slide 25 text

We shut off our intuition when we answer questions with, “I don’t know.”

Slide 26

Slide 26 text

Ask yourself what may be blocking you from finding the solution.

Slide 27

Slide 27 text

You must discover the answer.

Slide 28

Slide 28 text

The Problem Your Code Is in

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

1. Looking in the wrong place.

Slide 31

Slide 31 text

2. Wasting time, energy, and resources.

Slide 32

Slide 32 text

3. Hurting your reputation as a problem solver.

Slide 33

Slide 33 text

First, assume the problem is in your code.

Slide 34

Slide 34 text

Focus on the Problem, Not aSolution

Slide 35

Slide 35 text

if (A && B) { // the problem must be C solveUsingD(); }

Slide 36

Slide 36 text

The symptoms may not indicate the real problem.

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Always get to the heart of the problem.

Slide 39

Slide 39 text

Debugging the Irreproducible Problem

Slide 40

Slide 40 text

Do the symptoms point to a potential problem area?

Slide 41

Slide 41 text

Sometimes we can’t solve the problem.

Slide 42

Slide 42 text

Rubber Ducking

Slide 43

Slide 43 text

1. Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety). From a message by Andrew Errington to the University of Canterbury Linux Users Group mailing list, 7 Nov 2002 http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html

Slide 44

Slide 44 text

2. Place rubber duck on desk and inform it you are just going to go over some code with it, if that’s all right. From a message by Andrew Errington to the University of Canterbury Linux Users Group mailing list, 7 Nov 2002 http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html

Slide 45

Slide 45 text

3. Explain to the duck what your code is supposed to do, and then go into detail and explain things line by line. From a message by Andrew Errington to the University of Canterbury Linux Users Group mailing list, 7 Nov 2002 http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html

Slide 46

Slide 46 text

4. At some point you will tell the duck what you are doing next and then realize that that is not in fact what you are actually doing. The duck will sit there serenely, happy in the knowledge that it has helped you on your way. From a message by Andrew Errington to the University of Canterbury Linux Users Group mailing list, 7 Nov 2002 http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html

Slide 47

Slide 47 text

Talk through the problem out loud.

Slide 48

Slide 48 text

Sleep on It

Slide 49

Slide 49 text

Your unconscious kicks in while you sleep.

Slide 50

Slide 50 text

Develop With Purpose

Slide 51

Slide 51 text

Be intentional.

Slide 52

Slide 52 text

Grok what it is you are doing.

Slide 53

Slide 53 text

Feature for future release Tag 1.0 From this point on, “next release” means the release after 1.0 production: hotfix 0.2 Bugfixes from rel. branch may be Tag 0.2 Incorporate bugfix in develop Only bugfixes! Start of release branch for 1.0

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

59089,74437,42530,62011,36174,116 95,99933,75496,69517,24908,95047, 89328,11274,47096,72374,49884,137 file_ids

Slide 57

Slide 57 text

59089,74437,42530,62011,36174,116 95,99933,75496,69517,24908,95047, 89328,11274,47096,72374,49884,137 file_ids 137

Slide 58

Slide 58 text

CREATE TABLE `zip_bundle` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `cart_id` int(11) NOT NULL, `file_ids` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Slide 59

Slide 59 text

“The difference between science as it stands now and the Buddhist investigative tradition lies in the dominance of the third-person, objective method in science and the refinement and utilization of first-person, introspective methods in Buddhist contemplation. In my view, the combination of the first- person method with the third- person method offers the promise of a real advance in the scientific study of consciousness.”

Slide 60

Slide 60 text

THANK YOU. ANY QUESTIONS? benramsey.com Debugging Zen Copyright © 2015 Ben Ramsey This work is licensed under Creative Commons Attribution- ShareAlike 4.0 International. For uses not covered under this license, please contact the author. ! " @ramsey # github.com/ramsey $ [email protected] If you want to talk more, feel free to contact me. Ramsey, Ben. “Debugging Zen.” Lone Star PHP. Addison Conference Center, Addison, TX. 18 Apr. 2015. Conference presentation. This presentation was created using Keynote. The text is set in Adobe Minion Pro and Open Sans. The source code is set in Fira Sans Mono. The iconography is provided by Font Awesome. Unless otherwise noted, all photographs are used by permission under a Creative Commons license. Please refer to the Photo Credits slide for more information. joind.in/13563 %

Slide 61

Slide 61 text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 PHOTO CREDITS 1. “Zen Stones / Piedras Zen” by Xisco Biblioni, CC BY-NC-SA 2.0 2. “Zeev Suraski, Keynote” by S&S Media, CC BY-SA 2.0 3. “Andi Gutmans” by Stefan Koopmanschap, CC BY-NC-SA 2.0 4. “Bug on a leaf, in all the glory of f/2.8” by Y.J. Chua, CC BY- ND 2.0 5. “Pagoda garden” by L Hoffheins, CC BY-NC-ND 2.0 6. “My Brain on MRI” by Julie Falk, CC BY-NC 2.0 7. “Ripple Effect” by sea turtle, CC BY-NC-ND 2.0 8. “Steve Jobs Keynote” by Ben Stanfield, CC BY-NC-SA 2.0 9. “Zen” by Wulf Forrester-Barker, CC BY-NC-SA 2.0 10. “Annapurna Mountain” by Dave See, CC BY-NC 2.0 11. “Blue Flower in Barcelona” by Benjamin Grimmnitz, CC BY 2.0 12. “Latest DB Schema” by Stanford EdTech, CC BY-NC-ND 2.0 13. “day 37” by James Gray-King, CC BY-NC 2.0 14. “Cheetah stalking” by flowcomm, CC BY 2.0 15. “The Dalai Lama @ Vancouver Peace Summit” by kris krüg, CC BY-NC-ND 2.0 16. “Rubber ducks exposed /2” by Francesco Minciotti, CC BY- NC-ND 2.0 17. “Notes” by Brady Withers, CC BY 2.0 18. “Sleeping” by MeditationMusic.net, CC BY-NC-SA 2.0

Slide 62

Slide 62 text

19 20 21 PHOTO CREDITS 19. STAR WARS © 1977 Lucasfilm, Ltd. Used in accordance with Fair Use. 20. DUNE © 1984 Dino de Laurentiis Corporation. Used in accordance with Fair Use. 21. DUNE © 1984 Dino de Laurentiis Corporation. Used in accordance with Fair Use. 22. “Untitled” by DiamondBack Truck Covers, CC BY-SA 2.0 22