com presentations: DPC talks: deepdive-dpc19.xml slides/mongodb/me.xml slides/time/cal-iso8601.xml slides/time/cal-natural.xml slides/time/date-modify-immutable1.xml slides/time/date-modify-immutable2.xml slides/time/improvements-timezones.xml slides/time/in-database4.xml slides/time/intervals.xml slides/time/quiz.xml slides/time/timezone-object-1.xml slides/xdebug/config-settings-3b.xml slides/xdebug/debugger-connection-log.xml slides/xdebug/der

[email protected] (Derick Rethans) Thu, 30 May 2019 10:14:36 +0000
Newsgroups php.pres
Message-ID <[email protected]>
Commit:    6baed2b630cd4a94c1464b31981910ea4fb6ae03
Author:    Derick Rethans <[email protected]>         Thu, 30 May 2019 11:14:36 +0100
Parents:   37204f3167095824c3581889bb05d3fc9bc39500
Branches:  master

Link:       http://git.php.net/?p=presentations.git;a=commitdiff;h=6baed2b630cd4a94c1464b31981910ea4fb6ae03

Log:
DPC talks

Changed paths:
  A  deepdive-dpc19.xml
  M  slides/mongodb/me.xml
  A  slides/time/cal-iso8601.xml
  A  slides/time/cal-natural.xml
  M  slides/time/date-modify-immutable1.xml
  M  slides/time/date-modify-immutable2.xml
  M  slides/time/improvements-timezones.xml
  M  slides/time/in-database4.xml
  M  slides/time/intervals.xml
  M  slides/time/quiz.xml
  M  slides/time/timezone-object-1.xml
  M  slides/xdebug/config-settings-3b.xml
  M  slides/xdebug/debugger-connection-log.xml
  A  slides/xdebug/derick-new-512x512.png
  M  slides/xdebug/donate.xml
  M  slides/xdebug/focus-on-xdebug3.xml
  A  time-dpc19.xml
  A  xdebug-dpc19.xml
diff_6baed2b630cd4a94c1464b31981910ea4fb6ae03.txt (text/plain, 17.1 KB)
diff --git a/deepdive-dpc19.xml b/deepdive-dpc19.xml
new file mode 100644
index 0000000..212f6ae
--- /dev/null
+++ b/deepdive-dpc19.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>PHP</topic>
+<title>PHP Deep Dive</title>
+<event>Dutch PHP Conference</event>
+<location>Amsterdam, the Netherlands</location>
+<date>June 6th, 2019</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks/deepdive-dpc19</url>
+<joindin>https://joind.in/26312</joindin>
+
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+<slide>slides/internals/title-agenda.xml</slide>
+
+<slide>slides/internals/title-stages.xml</slide>
+<!-- INTRODUCTION
+Compile stages:
+Parse script
+Create AST
+Convert to opcodes
+Run the code
+Opcache for caching
+-->
+<slide>slides/internals/stages.xml</slide>
+
+<!-- STAGES
+Parse
+- Show parser rules
+- Show "compiler" rules
+-->
+
+<slide>slides/internals/title-parsing.xml</slide>
+<slide>slides/internals/parse-state-machine.xml</slide>
+<slide>slides/internals/parse-tokenization.xml</slide>
+<slide>slides/internals/scanner.xml</slide>
+<slide>slides/internals/scanner-rules.xml</slide>
+
+<!-- EXERCISE: SHORT OPEN TAG -->
+<slide>slides/internals/exercise-short-open-tag.xml</slide>
+
+<slide>slides/internals/ast.xml</slide>
+<slide>slides/internals/ast1.xml</slide>
+<slide>slides/internals/scanner-ast.xml</slide>
+<slide>slides/internals/scanner-ast2.xml</slide>
+<slide>slides/internals/bytecode0.xml</slide>
+<slide>slides/internals/bytecode½.xml</slide>
+<slide>slides/internals/bytecode1.xml</slide>
+
+<!-- EXERCISE: ALWAYS STRICT -->
+<slide>slides/internals/exercise-strict-by-default.xml</slide>
+
+<slide>slides/internals/jumps.xml</slide>
+
+<!--
+AST
+- Show AST for various control structures
+
+Opcodes
+- Show AST for the same control structures
+-->
+
+<slide>slides/internals/jumps-if.xml</slide>
+<slide>slides/internals/jumps-if-else.xml</slide>
+
+<slide>slides/internals/rings.xml</slide>
+<slide>slides/internals/jumps-for.xml</slide>
+<slide>slides/internals/jumps-for-rewritten.xml</slide>
+<slide>slides/internals/jumps-while.xml</slide>
+<slide>slides/internals/jumps-do-while.xml</slide>
+<slide>slides/internals/jumps-foreach.xml</slide>
+<slide>slides/internals/jumps-complex.xml</slide>
+<slide>slides/internals/loops.xml</slide>
+<slide>slides/internals/jumps-complex-dot.xml</slide>
+
+<!--
+Try/Catch nonsense
+- FASTCALL/FASTRET
+-->
+<slide>slides/internals/catch.xml</slide>
+<slide>slides/internals/jumps-try-catch.xml</slide>
+
+<!--
+Dead code analysis
+- Show how Xdebug does it through VLD
+-->
+<slide>slides/internals/deadcode.xml</slide>
+<slide>slides/internals/deadcode-vld.xml</slide>
+
+<!--
+Path analysis
+- Branch and Path
+-->
+<slide>slides/internals/branches.xml</slide>
+<slide>slides/xdebug/vld-path-2-paths.xml</slide>
+<slide>slides/xdebug/vld-path-4-code.xml</slide>
+<slide>slides/xdebug/vld-path-4-output.xml</slide>
+
+<slide>slides/xdebug/vld-path-3-code.xml</slide>
+<slide>slides/xdebug/vld-path-3-output.xml</slide>
+<slide>slides/xdebug/vld-path-3-paths.xml</slide>
+
+<!-- Conclusion
+
+Code -> Tokens -> AST -> opode
+
+Transformation of control structures
+
+Useful implementations 
+
+-->
+<slide>slides/internals/recap.xml</slide>
+<slide>slides/internals/recap-content.xml</slide>
+
+
+
+<slide>slides/mongodb/questions.xml</slide>
+<slide>slides/xdebug/phpinternalsnews.xml</slide>
+
+<slide>slides/mongodb/resources.xml</slide>
+
+</presentation>
diff --git a/slides/mongodb/me.xml b/slides/mongodb/me.xml
index 7968048..61fa13a 100644
--- a/slides/mongodb/me.xml
+++ b/slides/mongodb/me.xml
@@ -2,7 +2,7 @@
 <slide>
 	<title>About Me</title>
 
-<image filename="../tdd/derick_photo.jpg" align="right" pdf-float="1" x-offset="21.3" y-offset="10" pdf-scale="0.25"/>
+<image filename="../xdebug/derick-new-512x512.png" align="right" pdf-float="1" x-offset="21.3" y-offset="10" pdf-scale="0.25"/>
 
 	<blurb>Derick Rethans</blurb>
 	<list>
diff --git a/slides/time/cal-iso8601.xml b/slides/time/cal-iso8601.xml
new file mode 100644
index 0000000..4876e0f
--- /dev/null
+++ b/slides/time/cal-iso8601.xml
@@ -0,0 +1,37 @@
+<slide>
+<title>Calendar</title>
+
+<table class="big"><tr>
+<td><example inline="2" class="big">
+      December 2020
+ w| Mo Tu We Th Fr Sa Su
+49|     1  2  3  4  5  6
+50|  7  8  9 10 11 12 13
+51| 14 15 16 17 18 19 20
+52| 21 22 23 24 25 26 27
+*53| 28 29 30 31         *
+
+      January 2021
+ w| Mo Tu We Th Fr Sa Su
+*53|              1  2  3*
+ 1|  4  5  6  7  8  9 10
+ 2| 11 12 13 14 15 16 17
+ 3| 18 19 20 21 22 23 24
+ 4| 25 26 27 28 29 30 31
+</example></td>
+<td>
+<blurb>ISO 8601 calendar:</blurb>
+<list>
+	<bullet>52-53 weeks</bullet>
+	<bullet>7 days each week</bullet>
+</list>
+<break lines="2"/>
+<example result="3"><![CDATA[<?php
+$date = new DateTimeImmutable("2021-01-02");
+echo $date->format('o-\WW-\DN');
+?>]]></example>
+
+</td>
+</tr></table>
+
+</slide>
diff --git a/slides/time/cal-natural.xml b/slides/time/cal-natural.xml
new file mode 100644
index 0000000..7588107
--- /dev/null
+++ b/slides/time/cal-natural.xml
@@ -0,0 +1,37 @@
+<slide>
+<title>Calendar</title>
+
+<table class="big"><tr>
+<td><example inline="2" class="big">
+      *December 2020*
+ w| Mo Tu We Th Fr Sa Su
+49| *    1  2  3  4  5  6*
+50| * 7  8  9 10 11 12 13*
+51| *14 15 16 17 18 19 20*
+52| *21 22 23 24 25 26 27*
+53| *28 29 30 31         *
+
+      *January 2021*
+ w| Mo Tu We Th Fr Sa Su
+53| *             1  2  3*
+ 1| * 4  5  6  7  8  9 10*
+ 2| *11 12 13 14 15 16 17*
+ 3| *18 19 20 21 22 23 24*
+ 4| *25 26 27 28 29 30 31*
+</example></td>
+<td>
+<blurb>Normal calendar:</blurb>
+<list>
+	<bullet>12 months</bullet>
+	<bullet>28 to 31 days each month</bullet>
+</list>
+<break lines="2"/>
+<example result="3"><![CDATA[<?php
+$date = new DateTimeImmutable("2021-01-02");
+echo $date->format('Y-m-d');
+?>]]></example>
+
+</td>
+</tr></table>
+
+</slide>
diff --git a/slides/time/date-modify-immutable1.xml b/slides/time/date-modify-immutable1.xml
index 5c02e09..1674da1 100644
--- a/slides/time/date-modify-immutable1.xml
+++ b/slides/time/date-modify-immutable1.xml
@@ -4,7 +4,7 @@
 
 	<blurb>Standard:</blurb>
   <example result="1"><![CDATA[<?php
-  $ts = new DateTime("2018-04-17 15:53:55");
+  $ts = new DateTime("2019-05-30 10:30:59");
   $new = $ts->modify("+2 days");
   echo $ts->format(DateTime::RFC2822), "\n";
   echo $new->format(DateTime::RFC2822), "\n";
diff --git a/slides/time/date-modify-immutable2.xml b/slides/time/date-modify-immutable2.xml
index 5339756..5cd7ffa 100644
--- a/slides/time/date-modify-immutable2.xml
+++ b/slides/time/date-modify-immutable2.xml
@@ -4,7 +4,7 @@
 
 	<blurb>Immutable (new in PHP 5.5):</blurb>
   <example result="1"><![CDATA[<?php
-  $ts = new DateTimeImmutable("2018-04-17 15:53:55");
+  $ts = new DateTimeImmutable("2019-05-30 10:30:59");
   $new = $ts->modify("+2 days");
   echo $ts->format(DateTime::RFC2822), "\n";
   echo $new->format(DateTime::RFC2822), "\n";
diff --git a/slides/time/improvements-timezones.xml b/slides/time/improvements-timezones.xml
index 56be555..0cd3273 100644
--- a/slides/time/improvements-timezones.xml
+++ b/slides/time/improvements-timezones.xml
@@ -7,7 +7,7 @@
 		<bullet>Do not dependend on timezone abbreviations</bullet>
 		<bullet>Use timezone IDs like %Europe/Amsterdam% or %America/Indiana/Knox%</bullet>
 	</list>
-
+<break lines="2"/>
 	<image align="center" filename="zone-places.png" y-offset="6"/>
 </slide>
 
diff --git a/slides/time/in-database4.xml b/slides/time/in-database4.xml
index ad30c2e..0d7b750 100644
--- a/slides/time/in-database4.xml
+++ b/slides/time/in-database4.xml
@@ -1,6 +1,5 @@
 <slide>
 <title>Storing date/time in a database</title>
-<subtitle>Summary</subtitle>
 
 <blurb>If you want to store a time for an appointment for a group of people
 all in different timezones—store a *specific point in time*:</blurb>
diff --git a/slides/time/intervals.xml b/slides/time/intervals.xml
index ccc6c49..af67eba 100644
--- a/slides/time/intervals.xml
+++ b/slides/time/intervals.xml
@@ -12,7 +12,7 @@ $i = new DateInterval( 'P3DT6H' );
 
 // from a difference
 $d1 = new DateTimeImmutable();
-$d2 = new DateTimeImmutable( "2019-03-29 23:00 Europe/London" );
+$d2 = new DateTimeImmutable( "2019-10-31 23:00 Europe/London" );
 $i = $d1->diff( $d2 );
 
 // displaying the difference
diff --git a/slides/time/quiz.xml b/slides/time/quiz.xml
index f46882d..52498ea 100644
--- a/slides/time/quiz.xml
+++ b/slides/time/quiz.xml
@@ -3,6 +3,7 @@
 
 <break lines="4"/>
 
+<div effect="fade-out"><blurb class="centre">A series of statements, raise your arm when you think it's true!</blurb><break lines="2"/><blurb class="big-centre">🙋🙋🏾‍♂️🙋🏻‍♀️🙋🏿‍♀️🙋‍♂️</blurb></div>
 <div effect="fade-in-out"><blurb class="big-centre">each day has *24&#160;hours*</blurb></div>
 <div effect="fade-in-out"><blurb class="big-centre">each day is *23,&#160;24&#160;or&#160;25 hours*</blurb></div>
 <div effect="fade-in-out"><blurb class="big-centre">every time exists *only once* during a day</blurb></div>
diff --git a/slides/time/timezone-object-1.xml b/slides/time/timezone-object-1.xml
index 5f996ef..756391b 100644
--- a/slides/time/timezone-object-1.xml
+++ b/slides/time/timezone-object-1.xml
@@ -14,7 +14,7 @@
 ?>]]></example>
 
   <blurb>A passed timezone does not override a *parsed* timezone:</blurb>
-  <example result="1"><![CDATA[<?php
+  <example><![CDATA[<?php
   $tz = new DateTimeZone("Pacific/Honolulu");
   $ts2 = new DateTimeImmutable("1978-12-22 09:15 Europe/London", $tz);
   echo $ts2->format( DateTime::RFC2822 );
diff --git a/slides/xdebug/config-settings-3b.xml b/slides/xdebug/config-settings-3b.xml
index 6879155..1a45844 100644
--- a/slides/xdebug/config-settings-3b.xml
+++ b/slides/xdebug/config-settings-3b.xml
@@ -25,7 +25,7 @@
 |aaaaaa|xdebug.|debug.dump_globals
 |aaaaaa|xdebug.|debug.dump_once
 |aaaaaa|xdebug.|debug.dump_undefined
-*|aaaaaa|xdebug.|extended_info*
+---*|00cc00|xdebug.extended_info|*---                  ~removed in Xdebug 2.8~
 |aaaaaa|xdebug.|debug.file_link_format
 |aaaaaa|xdebug.|debug.filename_format
 |aaaaaa|xdebug.|debug.force_display_errors
diff --git a/slides/xdebug/debugger-connection-log.xml b/slides/xdebug/debugger-connection-log.xml
index 091da7a..acb2223 100644
--- a/slides/xdebug/debugger-connection-log.xml
+++ b/slides/xdebug/debugger-connection-log.xml
@@ -1,22 +1,22 @@
 <slide>
 <title>Step Debugger Logs</title>
 
+<blurb>Logging debugging communication:</blurb>
 <example>xdebug.remote_log=/tmp/remote.log</example>
 
-<list>
-	<bullet>Logs all debugger communication</bullet>
-	<bullet>Also shows connection attempts and failures:</bullet>
-</list>
+<div effect="fade-in">
+<blurb>Also shows connection attempts and failures:</blurb>
 
 <example inline="2">
 xdebug.remote_connect_back=0
-xdebug.remote_host=nothere
-xdebug.remote_port=9002
+xdebug.remote_port=9991
 
-I: Connecting to configured address/port: nothere:9002.
-E: Could not connect to client. *:-(*
+I: Connecting to configured address/port: localhost:9991.
+I: Connected to client. *|009900|:-)|*
 </example>
+</div>
 
+<div effect="fade-in">
 <example inline="2">
 xdebug.remote_connect_back=1
 |777777|xdebug.remote_host=SomethingEntirelyDifferent|
@@ -26,12 +26,16 @@ I: Checking remote connect back address.
 W: Remote address not found, connecting to configured address/port: nothere:9003. *:-|*
 E: Could not connect to client. *:-(*
 </example>
+</div>
 
+<div effect="fade-in">
 <example inline="2">
 xdebug.remote_connect_back=0
-xdebug.remote_port=9991
+xdebug.remote_host=nothere
+xdebug.remote_port=9002
 
-I: Connecting to configured address/port: localhost:9991.
-I: Connected to client. *|009900|:-)|*
+I: Connecting to configured address/port: nothere:9002.
+E: Could not connect to client. *:-(*
 </example>
+</div>
 </slide>
diff --git a/slides/xdebug/derick-new-512x512.png b/slides/xdebug/derick-new-512x512.png
new file mode 100644
index 0000000..dea5a93
Binary files /dev/null and b/slides/xdebug/derick-new-512x512.png differ
diff --git a/slides/xdebug/donate.xml b/slides/xdebug/donate.xml
index 6517dab..fc5f721 100644
--- a/slides/xdebug/donate.xml
+++ b/slides/xdebug/donate.xml
@@ -3,7 +3,7 @@
 <list>
 	<bullet>It's Open Source and free (as in "free beer")</bullet>
 	<bullet>Using Xdebug saves you a lot of time</bullet>
-	<bullet>Working on Xdebug takes up a lot of time</bullet>
+	<bullet>I would like to work more on Xdebug, to help *you*</bullet>
 </list>
 
 <break lines="2"/>
diff --git a/slides/xdebug/focus-on-xdebug3.xml b/slides/xdebug/focus-on-xdebug3.xml
index 4e13b56..ad7e324 100644
--- a/slides/xdebug/focus-on-xdebug3.xml
+++ b/slides/xdebug/focus-on-xdebug3.xml
@@ -13,7 +13,7 @@
 	<bullet>The Big Refactor™
 		<list>
 			<bullet>Introducing modes</bullet>
-			<bullet>Simplify configuration and validation</bullet>
+			<bullet>Simplify configuration and validation <small>(in progress…)</small></bullet>
 		</list>
 	</bullet>
 	<bullet>Performance Improvements</bullet>
diff --git a/time-dpc19.xml b/time-dpc19.xml
new file mode 100644
index 0000000..b7b7443
--- /dev/null
+++ b/time-dpc19.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>Localization and Internationalization</topic>
+<title>Time Zones and Calendars are a PITA</title>
+<event>Dutch PHP Conference</event>
+<location>Amsterdam, the Netherlands</location>
+<date>June 8th, 2019</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<url>https://derickrethans.nl/talks/time-dpc19</url>
+<joindin>https://joind.in/26371</joindin>
+<twitter>derickr</twitter>
+
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+<!-- INTRODUCTION -->
+<slide>slides/time/quiz.xml</slide>
+
+<!-- PHP - IMPROVEMENTS -->
+<slide>slides/time/improvements-timezones.xml</slide>
+<slide>slides/time/improvements-more-on-timezones.xml</slide>
+<slide>slides/time/default-timezone.xml</slide>
+<slide>slides/time/timestamps-suck.xml</slide>
+
+<!-- PHP - CODE EXAMPLES -->
+<slide>slides/time/basic-parse-time-new.xml</slide>
+<slide>slides/time/date-parse-from-format3.xml</slide>
+<slide>slides/time/date-parse-from-format2.xml</slide>
+
+<!-- DATE EXAMPLES -->
+<slide>slides/time/date-modify.xml</slide>
+<slide>slides/time/date-modify-immutable1.xml</slide>
+<slide>slides/time/date-modify-immutable2.xml</slide>
+<slide>slides/time/timezone-object-1.xml</slide>
+<slide>slides/time/date-timezone.xml</slide>
+<slide>slides/time/timezone-utilities-3.xml</slide>
+
+<!-- INTERVALS and PERIODS -->
+<slide>slides/time/intervals.xml</slide>
+<slide>slides/time/intervals-2.xml</slide>
+<slide>slides/time/relative-month.xml</slide>
+<slide>slides/time/relative-month3.xml</slide>
+<slide>slides/time/period-2.xml</slide>
+
+<slide>slides/time/in-database4.xml</slide>
+
+<!-- CALENDARS -->
+<slide>slides/time/cal-natural.xml</slide>
+<slide>slides/time/cal-iso8601.xml</slide>
+
+<!-- EXIT -->
+<slide>slides/time/book.xml</slide> <!-- resources -->
+<slide>slides/mongodb/questions.xml</slide>
+<slide>slides/mongodb/resources.xml</slide> <!-- resources -->
+</presentation>
diff --git a/xdebug-dpc19.xml b/xdebug-dpc19.xml
new file mode 100644
index 0000000..1513c3d
--- /dev/null
+++ b/xdebug-dpc19.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>Debugging</topic>
+<title>Xdebug 3.0</title>
+<event>Dutch PHP Conference</event>
+<location>Amsterdam, the Netherlands</location>
+<date>June 7th, 2019</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks/xdebug-dpc19</url>
+<joindin>https://joind.in/26298</joindin>
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+<slide>slides/xdebug/focus-on-xdebug.xml</slide>
+The Xdebug Experience
+17 years
+
+<slide>slides/xdebug/config-settings-2.xml</slide>
+<slide>slides/xdebug/breakpoints-2.xml</slide>
+<slide>slides/xdebug/port9000.xml</slide>
+<!-- <slide>slides/xdebug/connect1.xml</slide> -->
+<!-- <slide>slides/xdebug/connect2.xml</slide> -->
+<slide>slides/xdebug/debugger-activation.xml</slide>
+<slide>slides/xdebug/debugger-connection-log.xml</slide>
+<slide>slides/xdebug/xdebug-slow.xml</slide>
+<slide>slides/xdebug/test-with-many-versions.xml</slide>
+
+<slide>slides/xdebug/focus-on-xdebug2.xml</slide>
+
+<slide>slides/xdebug/focus-on-xdebug3.xml</slide>
+breakpoint behaviour
+New versions (7.4)
+CI
+
+<slide>slides/xdebug/xdebug-2.8.xml</slide>
+<slide>slides/xdebug/breakpoint-behaviour.xml</slide>
+<slide>slides/xdebug/php-7.4-compile-error.xml</slide>
+<slide>slides/xdebug/xdebug-ci.xml</slide>
+
+<slide>slides/xdebug/xdebug-3.xml</slide>
+Code reorganisation
+Modes
+- only do what is needed
+Reduce Configuration Options
+Code Improvements (algorithms, memory, etc)
+<slide>slides/xdebug/code-reorgnisation.xml</slide>
+<slide>slides/xdebug/modes.xml</slide>
+<slide>slides/xdebug/config-settings-3.xml</slide>
+<slide>slides/xdebug/config-settings-3b.xml</slide>
+<slide>slides/xdebug/xdebug-slow.xml</slide>
+
+<slide>slides/xdebug/donate.xml</slide>
+<slide>slides/xdebug/phpinternalsnews.xml</slide>
+<slide>slides/xdebug/resources.xml</slide>
+
+</presentation>