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

Code Archaeology: Becoming Indiana Jones (PHPCo...

Code Archaeology: Becoming Indiana Jones (PHPConf Asia)

Code archaeology is one of the most important skills you will ever learn as a developer. How many times have you been thrown into legacy projects with no environment setup, no documentation, and little support from coworkers? The ability to hit the ground running on new applications is a sought-after skill for many employers. In this talk, we will take an open-source project that we have never seen before and work through the steps required to get it up and running so we can start contributing today.

Michael Heap

August 23, 2016
Tweet

More Decks by Michael Heap

Other Decks in Technology

Transcript

  1. namespace Architect\Security; class DoorPasswordValidator { private $doorPassword = 'shibboleet'; public

    function validate($input) { if ($this->doorPassword !== $input) { throw new \Exception("Incorrect password"); } return true; } }
  2. namespace Architect\Game; class Roulette { /** * Returns a random

    number */ private function spinRandom(){ } }
  3. namespace Architect\Game; class Roulette { /** * Returns a random

    number */ private function spinRandom(){ return 4; } }
  4. DDD

  5. commit 5288d5804a3fc20dae4f3b2deeaa7f687595aff1 Author: Michael Cheng <[email protected]> Date: Tue May 24

    09:33:59 2016 +0000 Add new secure storage facility. (Closes #42) The existing storage facilities use symmetrical encryption keys which allow anyone with the password to access them. The new storage is more secure and requires both a password and my handprint. There’s nothing in there yet but we’ll put the Antikythera in it as soon as it arrives
  6. commit 0dc164fb052f4b838a674648aa29d83b60f01fa2 Author: Michael Cheng <[email protected]> Date: Fri May 20

    12:14:55 2016 +0000 Changed from European to American roulette table. Gives the house a better edge 5 2 src/Architect/Game/Roulette.php 14 0 test/Architect/Game/RouletteTest.php
  7. commit 2915dabebc8b87b84ec40fac0f4954fb84f3b7cd Author: Michael Cheng<[email protected]> Date: Sun May 22 21:27:31

    2016 +0000 Removed the corner roulette table as it was crooked. Updated Fire plan to remove table 0 2 src/Architect/FloorPlan.php 0 1 src/Architect/Policy/FireEscape.php
  8. // // Dear maintainer: // // Once you are done

    trying to 'optimize' this routine, // and have realized what a terrible mistake that was, // please increment the following counter as a warning // to the next guy: // // total_hours_wasted_here = 42 // I’ve been @mheap, you’ve been awesome!