com presentations: phpDay Xdebug talk: deepdive-phpday19.xml slides/xdebug/breakpoint-behaviour.xml slides/xdebug/breakpoints-2.xml slides/xdebug/code-reorgnisation.xml slides/xdebug/config-settings-2.xml slides/xdebug/config-settings-3.xml slides/xdebug/config-settings-3b.xml slides/xdebug/focus-on-xdebug.xml slides/xdebug/focus-on-xdebug2.xml slides/xdebug/focus-on-xdebug3.xml slides/xdebug/modes.xml slides/xdebug/php-7.4-compile-error.xml slid

[email protected] (Derick Rethans) Fri, 10 May 2019 10:05:05 +0000
Newsgroups php.pres
Message-ID <[email protected]>
Commit:    09f611503377a852bf3fa5f1ff780fc6b855f560
Author:    Derick Rethans <[email protected]>         Fri, 10 May 2019 12:05:05 +0200
Parents:   bf6b7fd0f8d8d02c59fa24ef82c585e29545cefa
Branches:  master

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

Log:
phpDay Xdebug talk

Changed paths:
  M  deepdive-phpday19.xml
  A  slides/xdebug/breakpoint-behaviour.xml
  A  slides/xdebug/breakpoints-2.xml
  A  slides/xdebug/code-reorgnisation.xml
  A  slides/xdebug/config-settings-2.xml
  A  slides/xdebug/config-settings-3.xml
  A  slides/xdebug/config-settings-3b.xml
  M  slides/xdebug/focus-on-xdebug.xml
  M  slides/xdebug/focus-on-xdebug2.xml
  M  slides/xdebug/focus-on-xdebug3.xml
  A  slides/xdebug/modes.xml
  A  slides/xdebug/php-7.4-compile-error.xml
  A  slides/xdebug/phpinternalsnews.png
  A  slides/xdebug/phpinternalsnews.xml
  A  slides/xdebug/phpintnews-episodes.png
  A  slides/xdebug/port9000.png
  A  slides/xdebug/port9000.xml
  M  slides/xdebug/resources.xml
  A  slides/xdebug/test-with-many-versions.xml
  M  slides/xdebug/title.xml
  A  slides/xdebug/xdebug-2.8.xml
  A  slides/xdebug/xdebug-3.xml
  A  slides/xdebug/xdebug-ci.xml
  A  slides/xdebug/xdebug-slow.png
  A  slides/xdebug/xdebug-slow.xml
  A  xdebug-phpday19.xml
diff_09f611503377a852bf3fa5f1ff780fc6b855f560.txt (text/plain, 29.9 KB)
diff --git a/deepdive-phpday19.xml b/deepdive-phpday19.xml
index 4702d21..fc3ea33 100644
--- a/deepdive-phpday19.xml
+++ b/deepdive-phpday19.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<presentation css="10gen-strict.css">
+<presentation css="derick.css">
 <topic>PHP</topic>
 <title>PHP Deep Dive</title>
 <event>phpDay 2019</event>
@@ -8,9 +8,10 @@
 <speaker>Derick Rethans</speaker>
 <email>[email protected]</email>
 <twitter>derickr</twitter>
-<joindin>https://joind.in/XXXXX</joindin>
+<url>https://derickrethans.nl/talks/deepdive-phpday19</url>
+<joindin></joindin>
 
-<slide>slides/mongodb/title.xml</slide>
+<slide>slides/xdebug/title.xml</slide>
 <slide>slides/mongodb/me.xml</slide>
 
 <slide>slides/internals/title-agenda.xml</slide>
@@ -114,6 +115,7 @@ Useful implementations
 
 
 <slide>slides/mongodb/questions.xml</slide>
+<slide>slides/xdebug/phpinternalsnews.xml</slide>
 
 <slide>slides/mongodb/resources.xml</slide>
 
diff --git a/slides/xdebug/breakpoint-behaviour.xml b/slides/xdebug/breakpoint-behaviour.xml
new file mode 100644
index 0000000..0b0b7e4
--- /dev/null
+++ b/slides/xdebug/breakpoint-behaviour.xml
@@ -0,0 +1,118 @@
+<slide>
+<title>Breakpoint Behaviour</title>
+
+<div effect="fade-out">
+<table class="two">
+<tr><td>
+<example><![CDATA[
+ 1: <?php
+ 2: function scoped()
+ 3: {
+ 4:     $func = function()
+ 5:     {
+ 6:         $a = array( // breakpoint
+ 7:             1 => "first",
+ 8:             2 => "second",
+ 9:         );
+10:     };
+11: 
+12:     $func();
+13: }
+14: 
+15: scoped();
+16: scoped();
+17: ?>
+]]></example>
+</td><td>
+<example>
+function name:  scoped
+compiled vars:  !0 = $func
+line     #* E I O op                           return  operands
+
+   2     0  E >   EXT_NOP                              
+   4     1        EXT_STMT                             
+         2        DECLARE_LAMBDA_FUNCTION              '%00…closure.php0x7f295f0c207e'
+
+  12     3        EXT_STMT                             
+         4        INIT_DYNAMIC_CALL                    !0
+         5        EXT_FCALL_BEGIN                      
+         6        DO_FCALL                             
+         7        EXT_FCALL_END                        
+  13     8        EXT_STMT                             
+         9      > RETURN                               null
+
+
+function name:  {closure}
+
+line     #* E I O op                           return  operands
+
+   4     0  E >   EXT_NOP                              
+   7     1        EXT_STMT                             
+
+  10     2        EXT_STMT                             
+         3      > RETURN                               null
+
+</example>
+</td></tr></table>
+
+</div>
+<div effect="fade-in">
+<table class="two">
+<tr><td>
+<example><![CDATA[
+ 1: <?php
+ 2: function scoped()
+ 3: {
+ 4:     $func = function()
+ 5:     {
+ 6:         $a = array( // breakpoint
+ 7:             1 => "first",
+ 8:             2 => "second",
+ 9:         );
+10:     };
+11: 
+12:     $func();
+13: }
+14: 
+15: scoped();
+16: scoped();
+17: ?>
+]]></example>
+<break/>
+<blurb>Turned off OPcache's optimiser →</blurb>
+</td><td>
+<example inline="2">
+function name:  scoped
+*compiled vars:  !0 = $func*
+line     #* E I O op                           return  operands
+
+   2     0  E >   EXT_NOP                              
+   4     1        EXT_STMT                             
+         2        DECLARE_LAMBDA_FUNCTION              '%00…closure.php0x7efeba02b07e'
+*  10     3        ASSIGN                               !0, ~1*
+  12     4        EXT_STMT                             
+         5        INIT_DYNAMIC_CALL                    !0
+         6        EXT_FCALL_BEGIN                      
+         7        DO_FCALL                             
+         8        EXT_FCALL_END                        
+  13     9        EXT_STMT                             
+        10      > RETURN                               null
+
+
+function name:  {closure}
+compiled vars:  !0 = $a
+line     #* E I O op                           return  operands
+
+   4     0  E >   EXT_NOP                              
+   7     1        EXT_STMT                             
+*         2        ASSIGN                               !0, &amp;lt;array>*
+  10     3        EXT_STMT                             
+         4      > RETURN                               null
+</example>
+</td></tr>
+</table>
+</div>
+<div effect="fade-in">
+<blurb class="big-centre">demo</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/breakpoints-2.xml b/slides/xdebug/breakpoints-2.xml
new file mode 100644
index 0000000..04c932d
--- /dev/null
+++ b/slides/xdebug/breakpoints-2.xml
@@ -0,0 +1,49 @@
+<slide>
+<title>Missed Breakpoints</title>
+
+<table class="two">
+<tr><td>
+<example inline="2"><![CDATA[
+  |aaaaaa|  1| &lt;?php
+  |aaaaaa|  2| function demo($a, $b, $c, $d) 
+  |aaaaaa|  3| {
+*● |aaaaaa|  4|     if ( // breakpoint here*
+  |aaaaaa|  5|         $a
+  |aaaaaa|  6|         && $b
+  |aaaaaa|  7|         && ($c || $d)
+  |aaaaaa|  8|     ) {
+  |aaaaaa|  9|         echo "It's true!";
+  |aaaaaa| 10|     }
+  |aaaaaa| 11| }
+  |aaaaaa| 12| 
+  |aaaaaa| 13| demo(true, true, true, false);
+]]></example>
+<div effect="fade-in-out">
+<blurb class="big-centre">demo</blurb>
+</div>
+</td>
+<td><div effect="fade-in">
+<example inline="2"><![CDATA[
+function name:  demo
+number of ops:  14
+compiled vars:  !0 = $a, !1 = $b, !2 = $c, !3 = $d
+line     #* E I O op          return  operands
+   2     0  E >   EXT_NOP
+         1        RECV        !0
+         2        RECV        !1
+         3        RECV        !2
+         4        RECV        !3
+   5     5        EXT_STMT
+         6      > JMPZ                !0, ->12
+   6     7    > > JMPZ                !1, ->12
+   7     8    > > JMPNZ               !2, ->10
+         9    > > JMPZ                !3, ->12
+   9    10    >   EXT_STMT
+        11        ECHO                'It%27s+true%21'
+  11    12    >   EXT_STMT
+        13      > RETURN              null
+]]>
+</example>
+</div>
+</td></tr></table>
+</slide>
diff --git a/slides/xdebug/code-reorgnisation.xml b/slides/xdebug/code-reorgnisation.xml
new file mode 100644
index 0000000..82a1865
--- /dev/null
+++ b/slides/xdebug/code-reorgnisation.xml
@@ -0,0 +1,20 @@
+<slide>
+<title>Code Reorganisation</title>
+
+<example inline="2">
+*derick@singlemalt:~/dev/php/xdebug-xdebug$ ls ***.[hc]*
+config.h                xdebug_filter.c        xdebug_monitor.c       xdebug_superglobals.h
+php_xdebug.h            xdebug_filter.h        xdebug_monitor.h       xdebug_trace_computerized.c
+usefulstuff.c           xdebug_gc_stats.c      xdebug_private.c       xdebug_trace_computerized.h
+usefulstuff.h           xdebug_gc_stats.h      xdebug_private.h       xdebug_trace_html.c
+xdebug_branch_info.c    xdebug_handler_dbgp.c  xdebug_profiler.c      xdebug_trace_html.h
+xdebug_branch_info.h    xdebug_handler_dbgp.h  xdebug_profiler.h      xdebug_trace_textual.c
+xdebug.c                xdebug_handlers.c      xdebug_set.c           xdebug_trace_textual.h
+xdebug_code_coverage.c  xdebug_handlers.h      xdebug_set.h           xdebug_tracing.c
+xdebug_code_coverage.h  xdebug_hash.c          xdebug_stack.c         xdebug_tracing.h
+xdebug_com.c            xdebug_hash.h          xdebug_stack.h         xdebug_var.c
+xdebug_com.h            xdebug_llist.c         xdebug_str.c           xdebug_var.h
+xdebug_compat.c         xdebug_llist.h         xdebug_str.h           xdebug_xml.c
+xdebug_compat.h         xdebug_mm.h            xdebug_superglobals.c  xdebug_xml.h
+</example>
+</slide>
diff --git a/slides/xdebug/config-settings-2.xml b/slides/xdebug/config-settings-2.xml
new file mode 100644
index 0000000..2c3b731
--- /dev/null
+++ b/slides/xdebug/config-settings-2.xml
@@ -0,0 +1,77 @@
+<slide>
+<title>Configuration Settings</title>
+
+<table class="two">
+<tr>
+<td>
+<example inline="2">
+|aaaaaa|xdebug.|auto_trace
+|aaaaaa|xdebug.|cli_color
+|aaaaaa|xdebug.|collect_assignments
+|aaaaaa|xdebug.|collect_includes
+|aaaaaa|xdebug.|collect_params
+|aaaaaa|xdebug.|collect_return
+|aaaaaa|xdebug.|collect_vars
+*|0000ff|xdebug.coverage_enable|*
+|aaaaaa|xdebug.|default_enable
+|aaaaaa|xdebug.|dump.COOKIE
+|aaaaaa|xdebug.|dump.ENV
+|aaaaaa|xdebug.|dump.FILES
+|aaaaaa|xdebug.|dump.GET
+|aaaaaa|xdebug.|dump.POST
+|aaaaaa|xdebug.|dump.REQUEST
+|aaaaaa|xdebug.|dump.SERVER
+|aaaaaa|xdebug.|dump.SESSION
+|aaaaaa|xdebug.|dump_globals
+|aaaaaa|xdebug.|dump_once
+|aaaaaa|xdebug.|dump_undefined
+*xdebug.extended_info*
+|aaaaaa|xdebug.|file_link_format
+|aaaaaa|xdebug.|filename_format
+|aaaaaa|xdebug.|force_display_errors
+|aaaaaa|xdebug.|force_error_reporting
+|aaaaaa|xdebug.|gc_stats_enable
+*|00cc00|xdebug.gc_stats_output_dir|*
+|aaaaaa|xdebug.|gc_stats_output_name
+|aaaaaa|xdebug.|halt_level
+|aaaaaa|xdebug.|idekey
+|aaaaaa|xdebug.|max_nesting_level
+|aaaaaa|xdebug.|max_stack_frames
+|aaaaaa|xdebug.|overload_var_dump
+</example></td><td><example inline="2">
+|aaaaaa|xdebug.|profiler_aggregate
+|aaaaaa|xdebug.|profiler_append
+*|0000ff|xdebug.profiler_enable|*
+|aaaaaa|xdebug.|profiler_enable_trigger
+|aaaaaa|xdebug.|profiler_enable_trigger_value
+*|00cc00|xdebug.profiler_output_dir|*
+|aaaaaa|xdebug.|profiler_output_name
+|aaaaaa|xdebug.|remote_addr_header
+|aaaaaa|xdebug.|remote_autostart
+|aaaaaa|xdebug.|remote_connect_back
+|aaaaaa|xdebug.|remote_cookie_expire_time
+*|0000ff|xdebug.remote_enable|*
+*xdebug.remote_handler*
+|aaaaaa|xdebug.|remote_host
+|aaaaaa|xdebug.|remote_log
+|aaaaaa|xdebug.|remote_mode
+|aaaaaa|xdebug.|remote_port
+|aaaaaa|xdebug.|remote_timeout
+|aaaaaa|xdebug.|scream
+|aaaaaa|xdebug.|show_error_trace
+|aaaaaa|xdebug.|show_exception_trace
+|aaaaaa|xdebug.|show_local_vars
+|aaaaaa|xdebug.|show_mem_delta
+|aaaaaa|xdebug.|trace_enable_trigger
+|aaaaaa|xdebug.|trace_enable_trigger_value
+|aaaaaa|xdebug.|trace_format
+|aaaaaa|xdebug.|trace_options
+*|00cc00|xdebug.trace_output_dir|*
+|aaaaaa|xdebug.|trace_output_name
+|aaaaaa|xdebug.|var_display_max_children
+|aaaaaa|xdebug.|var_display_max_data
+|aaaaaa|xdebug.|var_display_max_depth
+
+</example>
+</td></tr></table>
+</slide>
diff --git a/slides/xdebug/config-settings-3.xml b/slides/xdebug/config-settings-3.xml
new file mode 100644
index 0000000..93cd723
--- /dev/null
+++ b/slides/xdebug/config-settings-3.xml
@@ -0,0 +1,77 @@
+<slide>
+<title>Configuration Settings</title>
+
+<table class="two">
+<tr>
+<td>
+<example inline="2">
+|aaaaaa|xdebug.|auto_trace
+|aaaaaa|xdebug.|cli_color
+|aaaaaa|xdebug.|collect_assignments
+|aaaaaa|xdebug.|collect_includes
+|aaaaaa|xdebug.|collect_params
+|aaaaaa|xdebug.|collect_return
+|aaaaaa|xdebug.|collect_vars
+|aaaaaa|xdebug.|coverage_enable
+|aaaaaa|xdebug.|default_enable
+|aaaaaa|xdebug.|dump.COOKIE
+|aaaaaa|xdebug.|dump.ENV
+|aaaaaa|xdebug.|dump.FILES
+|aaaaaa|xdebug.|dump.GET
+|aaaaaa|xdebug.|dump.POST
+|aaaaaa|xdebug.|dump.REQUEST
+|aaaaaa|xdebug.|dump.SERVER
+|aaaaaa|xdebug.|dump.SESSION
+|aaaaaa|xdebug.|dump_globals
+|aaaaaa|xdebug.|dump_once
+|aaaaaa|xdebug.|dump_undefined
+|aaaaaa|xdebug.|extended_info
+|aaaaaa|xdebug.|file_link_format
+|aaaaaa|xdebug.|filename_format
+|aaaaaa|xdebug.|force_display_errors
+|aaaaaa|xdebug.|force_error_reporting
+|aaaaaa|xdebug.|gc_stats_enable
+|aaaaaa|xdebug.|gc_stats_output_dir
+|aaaaaa|xdebug.|gc_stats_output_name
+|aaaaaa|xdebug.|halt_level
+|aaaaaa|xdebug.|idekey
+|aaaaaa|xdebug.|max_nesting_level
+|aaaaaa|xdebug.|max_stack_frames
+|aaaaaa|xdebug.|overload_var_dump
+</example></td><td><example inline="2">
+|aaaaaa|xdebug.|profiler_aggregate
+|aaaaaa|xdebug.|profiler_append
+|aaaaaa|xdebug.|pprofiler_enable
+|aaaaaa|xdebug.|profiler_enable_trigger
+|aaaaaa|xdebug.|profiler_enable_trigger_value
+|aaaaaa|xdebug.|profiler_output_dir
+|aaaaaa|xdebug.|profiler_output_name
+|aaaaaa|xdebug.|remote_addr_header
+|aaaaaa|xdebug.|remote_autostart
+|aaaaaa|xdebug.|remote_connect_back
+|aaaaaa|xdebug.|remote_cookie_expire_time
+|aaaaaa|xdebug.|remote_enable
+|aaaaaa|xdebug.|remote_handler
+|aaaaaa|xdebug.|remote_host
+|aaaaaa|xdebug.|remote_log
+|aaaaaa|xdebug.|remote_mode
+|aaaaaa|xdebug.|remote_port
+|aaaaaa|xdebug.|remote_timeout
+|aaaaaa|xdebug.|scream
+|aaaaaa|xdebug.|show_error_trace
+|aaaaaa|xdebug.|show_exception_trace
+|aaaaaa|xdebug.|show_local_vars
+|aaaaaa|xdebug.|show_mem_delta
+|aaaaaa|xdebug.|trace_enable_trigger
+|aaaaaa|xdebug.|trace_enable_trigger_value
+|aaaaaa|xdebug.|trace_format
+|aaaaaa|xdebug.|trace_options
+|aaaaaa|xdebug.|trace_output_dir
+|aaaaaa|xdebug.|trace_output_name
+|aaaaaa|xdebug.|var_display_max_children
+|aaaaaa|xdebug.|var_display_max_data
+|aaaaaa|xdebug.|var_display_max_depth
+
+</example>
+</td></tr></table>
+</slide>
diff --git a/slides/xdebug/config-settings-3b.xml b/slides/xdebug/config-settings-3b.xml
new file mode 100644
index 0000000..6879155
--- /dev/null
+++ b/slides/xdebug/config-settings-3b.xml
@@ -0,0 +1,77 @@
+<slide>
+<title>Configuration Settings</title>
+
+<table class="two">
+<tr>
+<td>
+<example inline="2">
+*|aaaaaa|xdebug.|auto_trace*                     ~xdebug.trace.autostart~
+*|aaaaaa|xdebug.|cli_color*
+|aaaaaa|xdebug.|debug.collect_assignments
+|aaaaaa|xdebug.|debug.collect_includes
+|aaaaaa|xdebug.|debug.collect_params
+|aaaaaa|xdebug.|debug.collect_return
+|aaaaaa|xdebug.|debug.collect_vars
+*|aaaaaa|xdebug.|coverage_enable*                ~xdebug.mode~
+*|aaaaaa|xdebug.|default_enable*                 ~xdebug.mode~
+|aaaaaa|xdebug.|debug.dump.COOKIE
+|aaaaaa|xdebug.|debug.dump.ENV
+|aaaaaa|xdebug.|debug.dump.FILES
+|aaaaaa|xdebug.|debug.dump.GET
+|aaaaaa|xdebug.|debug.dump.POST
+|aaaaaa|xdebug.|debug.dump.REQUEST
+|aaaaaa|xdebug.|debug.dump.SERVER
+|aaaaaa|xdebug.|debug.dump.SESSION
+|aaaaaa|xdebug.|debug.dump_globals
+|aaaaaa|xdebug.|debug.dump_once
+|aaaaaa|xdebug.|debug.dump_undefined
+*|aaaaaa|xdebug.|extended_info*
+|aaaaaa|xdebug.|debug.file_link_format
+|aaaaaa|xdebug.|debug.filename_format
+|aaaaaa|xdebug.|debug.force_display_errors
+|aaaaaa|xdebug.|debug.force_error_reporting
+|aaaaaa|xdebug.|debug.gc_stats_enable
+*|aaaaaa|xdebug.|gc_stats_output_dir*            ~xdebug.output_dir~
+*|aaaaaa|xdebug.|gc_stats_output_name*           ~xdebug.output_name~
+|aaaaaa|xdebug.|debug.halt_level
+*|aaaaaa|xdebug.|idekey*
+|aaaaaa|xdebug.|debug.max_nesting_level
+|aaaaaa|xdebug.|debug.max_stack_frames
+|aaaaaa|xdebug.|debug.overload_var_dump
+</example></td><td><example inline="2">
+*|aaaaaa|xdebug.|profiler_aggregate*
+*|aaaaaa|xdebug.|profiler_append*
+*|aaaaaa|xdebug.|profiler_enable*                ~xdebug.mode~
+*|aaaaaa|xdebug.|profiler_enable_trigger*        ~xdebug.enable_trigger~
+*|aaaaaa|xdebug.|profiler_enable_trigger_value*  ~xdebug.enable_trigger_value~
+*|aaaaaa|xdebug.|profiler_output_dir*            ~xdebug.output_dir~
+*|aaaaaa|xdebug.|profiler_output_name*           ~xdebug.output_name~
+|aaaaaa|xdebug.|remote.addr_header
+|aaaaaa|xdebug.|remote.autostart
+|aaaaaa|xdebug.|remote.connect_back
+|aaaaaa|xdebug.|remote.cookie_expire_time
+*|aaaaaa|xdebug.|remote_enable*                  ~xdebug.mode~
+*|aaaaaa|xdebug.|remote_handler*
+|aaaaaa|xdebug.|remote.host
+|aaaaaa|xdebug.|remote.log
+|aaaaaa|xdebug.|remote.mode
+|aaaaaa|xdebug.|remote.port
+|aaaaaa|xdebug.|remote.timeout
+*|aaaaaa|xdebug.|scream*                         ~always on ☺~
+|aaaaaa|xdebug.|debug.show_error_trace
+|aaaaaa|xdebug.|debug.show_exception_trace
+|aaaaaa|xdebug.|debug.show_local_vars
+*|aaaaaa|xdebug.|show_mem_delta*
+*|aaaaaa|xdebug.|trace_enable_trigger*           ~xdebug.enable_trigger~
+*|aaaaaa|xdebug.|trace_enable_trigger_value*     ~xdebug.enable_trigger_value~
+|aaaaaa|xdebug.|trace.format
+|aaaaaa|xdebug.|trace.options
+*|aaaaaa|xdebug.|trace_output_dir*               ~xdebug.output_dir~
+*|aaaaaa|xdebug.|trace_output_name*              ~xdebug.output_name~
+|aaaaaa|xdebug.|debug.var_display_max_children
+|aaaaaa|xdebug.|debug.var_display_max_data
+|aaaaaa|xdebug.|debug.var_display_max_depth
+
+</example>
+</td></tr></table>
+</slide>
diff --git a/slides/xdebug/focus-on-xdebug.xml b/slides/xdebug/focus-on-xdebug.xml
index b62e62b..3828117 100644
--- a/slides/xdebug/focus-on-xdebug.xml
+++ b/slides/xdebug/focus-on-xdebug.xml
@@ -7,6 +7,6 @@
 	<bullet>*Configuration Confusion*<br/><small>65 configuration settings: pointless, duplicated, or incompatible at the same time</small></bullet>
 	<bullet>*Unproductive Usability*<br/><small>port 9000, missing breakpoints, education (networking)</small></bullet>
 	<bullet>*Poor Performance*</bullet>
-	<bullet>*Lagging Behind*<br/><small>PHP 7.3 has been out for 3 months</small></bullet>
+	<bullet>*Lagging Behind*<br/><small>Xdebug for PHP 7.3 was 4 months late</small></bullet>
 </list>
 </slide>
diff --git a/slides/xdebug/focus-on-xdebug2.xml b/slides/xdebug/focus-on-xdebug2.xml
index 0e9a5dd..92c4f55 100644
--- a/slides/xdebug/focus-on-xdebug2.xml
+++ b/slides/xdebug/focus-on-xdebug2.xml
@@ -2,11 +2,11 @@
 <title>The Xdebug Experience: Solutions</title>
 
 <list>
-	<bullet>The *Big Refactor* project</bullet>
 	<bullet>Setting up CI (with PHP 7.4/8.0 nightlies)</bullet>
+	<bullet>The *Big Refactor* project</bullet>
 	<bullet>Education<br/><small>Networking, settings, how Xdebug interacts</small></bullet>
 	<bullet>Performance analysis and improvements for specific features</bullet>
 </list>
 <break/>
-<blurb>In order to get this all done, I would need sponsoring</blurb>
+<blurb>In order to get this all done, I would need sponsorship</blurb>
 </slide>
diff --git a/slides/xdebug/focus-on-xdebug3.xml b/slides/xdebug/focus-on-xdebug3.xml
index 688b93f..4e13b56 100644
--- a/slides/xdebug/focus-on-xdebug3.xml
+++ b/slides/xdebug/focus-on-xdebug3.xml
@@ -3,8 +3,9 @@
 
 <blurb>*Xdebug ~2.8~*</blurb>
 <list>
-	<bullet>Set up a local CI</bullet>
-	<bullet>Improve 'breakpoint' behaviour</bullet>
+	<bullet>Improve 'breakpoint' behaviour &#160;✔</bullet>
+	<bullet>Initial PHP 7.4 support &#160;(✔)</bullet>
+	<bullet>Set up a local CI &#160;(✔)</bullet>
 </list>
 <break/>
 <blurb>*Xdebug ~3~*</blurb>
@@ -16,6 +17,5 @@
 		</list>
 	</bullet>
 	<bullet>Performance Improvements</bullet>
-	<bullet>Async debugging</bullet>
 </list>
 </slide>
diff --git a/slides/xdebug/modes.xml b/slides/xdebug/modes.xml
new file mode 100644
index 0000000..e6b66e6
--- /dev/null
+++ b/slides/xdebug/modes.xml
@@ -0,0 +1,29 @@
+<slide>
+<title>Introducing Modes</title>
+
+<break lines="5"/>
+<div effect="fade-in-out">
+<blurb class="big-centre">Debug</blurb>
+<blurb class="center">Every day debugging aide</blurb>
+</div>
+<div effect="fade-in-out">
+<blurb class="big-centre">Step Debugger</blurb>
+<blurb class="center">Debugging applications with an IDE<br/><small>Previously: remote debugger</small></blurb>
+</div>
+<div effect="fade-in-out">
+<blurb class="big-centre">Tracer</blurb>
+<blurb class="center">Tracing the execution of a script to a file</blurb>
+</div>
+<div effect="fade-in-out">
+<blurb class="big-centre">Profiler</blurb>
+<blurb class="center">Profiling application performance</blurb>
+</div>
+<div effect="fade-in-out">
+<blurb class="big-centre">Code Coverage</blurb>
+<blurb class="center">Which code is run during tests</blurb>
+</div>
+<div effect="fade-in-out">
+<blurb class="big-centre">Time Traveller</blurb>
+<blurb class="big-centre"> 🧙</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/php-7.4-compile-error.xml b/slides/xdebug/php-7.4-compile-error.xml
new file mode 100644
index 0000000..3182cef
--- /dev/null
+++ b/slides/xdebug/php-7.4-compile-error.xml
@@ -0,0 +1,32 @@
+<slide>
+<title>PHP 7.4 compile errors</title>
+
+<blurb>Changes with regards to new/removed OP codes: ✔</blurb>
+<example>
+<![CDATA[+#if PHP_VERSION_ID < 70400
+                XDEBUG_SET_OPCODE_OVERRIDE_COMMON(ZEND_ADD_TRAIT);
+                XDEBUG_SET_OPCODE_OVERRIDE_COMMON(ZEND_BIND_TRAITS);
++#endif]]>
+</example>
+<example>
+<![CDATA[+#if PHP_VERSION_ID < 70400
+                && opcode.opcode != ZEND_VERIFY_ABSTRACT_CLASS
+-               && opcode.opcode != ZEND_OP_DATA
+                && opcode.opcode != ZEND_ADD_INTERFACE
++#endif
++               && opcode.opcode != ZEND_OP_DATA]]>
+</example>
+
+<blurb>Changes to fetching debugging information: ✘</blurb>
+<example><![CDATA[…/xdebug_var.c:267:16: error: implicit declaration of function ‘Z_OBJDEBUG_P’; did you mean ‘Z_OBJCE_P’?
+  *properties = Z_OBJDEBUG_P(parent, *is_temp);
+                ^~~~~~~~~~~~
+                Z_OBJCE_P]]></example>
+
+<blurb>Changes to how static members are stored internally: ✘</blurb>
+<example><![CDATA[…/xdebug_var.c:319:112: error: ‘zend_class_entry’ has no member named ‘static_members_table’; did you mean ‘static_members_table__ptr’?
+    if (cce && cce->static_members_table) {
+                    ^~~~~~~~~~~~~~~~~~~~
+                    static_members_table__ptr]]></example>
+
+</slide>
diff --git a/slides/xdebug/phpinternalsnews.png b/slides/xdebug/phpinternalsnews.png
new file mode 100644
index 0000000..2bfce81
Binary files /dev/null and b/slides/xdebug/phpinternalsnews.png differ
diff --git a/slides/xdebug/phpinternalsnews.xml b/slides/xdebug/phpinternalsnews.xml
new file mode 100644
index 0000000..e6a9791
--- /dev/null
+++ b/slides/xdebug/phpinternalsnews.xml
@@ -0,0 +1,8 @@
+<slide>
+<image filename="phpinternalsnews.png"/>
+<break/>
+<image filename="phpintnews-episodes.png"/>
+
+<break lines="2"/>
+<blurb align="center">%https://phpinternals.news%</blurb>
+</slide>
diff --git a/slides/xdebug/phpintnews-episodes.png b/slides/xdebug/phpintnews-episodes.png
new file mode 100644
index 0000000..321316b
Binary files /dev/null and b/slides/xdebug/phpintnews-episodes.png differ
diff --git a/slides/xdebug/port9000.png b/slides/xdebug/port9000.png
new file mode 100644
index 0000000..3e65f2c
Binary files /dev/null and b/slides/xdebug/port9000.png differ
diff --git a/slides/xdebug/port9000.xml b/slides/xdebug/port9000.xml
new file mode 100644
index 0000000..a385df0
--- /dev/null
+++ b/slides/xdebug/port9000.xml
@@ -0,0 +1,9 @@
+<slide>
+<title>Copy-cats</title>
+
+<image filename="port9000.png"/>
+<div effect="fade-in">
+<break lines="3"/>
+<blurb class="centre">PHP-FPM picked the same port as Xdebug (DBGp) ☹</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/resources.xml b/slides/xdebug/resources.xml
index d1e4f1b..f0f654f 100644
--- a/slides/xdebug/resources.xml
+++ b/slides/xdebug/resources.xml
@@ -3,6 +3,9 @@
 	<title>Resources</title>
 
 <qrcode>http://derickrethans.nl/talks/:-:talk_id:-:</qrcode>
-	<blurb>Slides:<br/>:-:joindin:-:</blurb>
-	<blurb>:-:speaker:-: — @:-:twitter:-: — :-:email:-:</blurb>
+<break line="2"/>
+	<blurb class="center">*Slides*</blurb>
+	<blurb class="center">%:-:joindin:-:%</blurb>
+<break line="2"/>
+	<blurb class="center">:-:speaker:-: — @:-:twitter:-: — :-:email:-:</blurb>
 </slide>
diff --git a/slides/xdebug/test-with-many-versions.xml b/slides/xdebug/test-with-many-versions.xml
new file mode 100644
index 0000000..f3657c3
--- /dev/null
+++ b/slides/xdebug/test-with-many-versions.xml
@@ -0,0 +1,38 @@
+<slide>
+<title>Various Versions</title>
+
+<example inline="2">
+|cccccc|5.3.29|        7.1.16        7.1.25-zts    7.1.9         7.2.17        7.2dev-32bit
+|cccccc|5.3.29-zts|    7.1.16-32bit  7.1.26        7.1.9-32bit   7.2.17-32bit  7.2dev-zts
+|cccccc|5.4.44|        7.1.16-zts    7.1.26-32bit  7.1.9-zts     7.2.17-zts    7.3.0
+|cccccc|5.4.45|        7.1.17        7.1.26-zts    7.1dev        7.2.18        7.3.0-32bit
+|cccccc|5.4.45-zts|    7.1.17-32bit  7.1.27        7.1dev-32bit  7.2.18-32bit  7.3.0-zts
+|cccccc|5.6.40|        7.1.17-zts    7.1.27-32bit  7.1dev-zts    7.2.18-zts    7.3.1
+|cccccc|5.6.40-zts|    7.1.18        7.1.27-zts    7.2.0         7.2.1-zts     7.3.1-32bit
+|999999|7.0dev|        7.1.18-32bit  7.1.28        7.2.0-32bit   7.2.2         7.3.1-zts
+|999999|7.0dev-zts|    7.1.18-zts    7.1.28-32bit  7.2.0-zts     7.2.2-32bit   7.3.2
+7.1.0         7.1.19        7.1.28-zts    7.2.1         7.2.2-zts     7.3.2-32bit
+7.1.0-32bit   7.1.19-32bit  7.1.29        7.2.10        7.2.3         7.3.2-zts
+7.1.0-zts     7.1.19-zts    7.1.29-32bit  7.2.10-32bit  7.2.3-32bit   7.3.3
+7.1.1         7.1.1-zts     7.1.29-zts    7.2.10-zts    7.2.3-zts     7.3.3-32bit
+7.1.10        7.1.2         7.1.2-zts     7.2.11        7.2.4         7.3.3-zts
+7.1.10-32bit  7.1.20        7.1.3         7.2.11-32bit  7.2.4-32bit   7.3.4
+7.1.10-zts    7.1.20-32bit  7.1.3-32bit   7.2.11-zts    7.2.4-zts     7.3.4-32bit
+7.1.11        7.1.20-zts    7.1.3-zts     7.2.12        7.2.5         7.3.4-zts
+7.1.11-32bit  7.1.21        7.1.4         7.2.12-32bit  7.2.5-32bit   7.3.5
+7.1.11-zts    7.1.21-32bit  7.1.4-32bit   7.2.12-zts    7.2.5-zts     7.3.5-32bit
+7.1.12        7.1.21-zts    7.1.4-zts     7.2.13        7.2.6         7.3.5-zts
+7.1.12-32bit  7.1.22        7.1.5         7.2.1-32bit   7.2.6-32bit   7.3dev
+7.1.12-zts    7.1.22-32bit  7.1.5-32bit   7.2.13-32bit  7.2.6-zts     7.3dev-32bit
+7.1.13        7.1.22-zts    7.1.5-zts     7.2.13-zts    7.2.7         7.3dev-zts
+7.1.1-32bit   7.1.23        7.1.6         7.2.14        7.2.7-32bit   7.4dev
+7.1.13-32bit  7.1.2-32bit   7.1.6-32bit   7.2.14-32bit  7.2.7-zts     7.4dev-32bit
+7.1.13-zts    7.1.23-32bit  7.1.6-zts     7.2.14-zts    7.2.8         7.4dev-zts
+7.1.14        7.1.23-zts    7.1.7         7.2.15        7.2.8-32bit   master
+7.1.14-32bit  7.1.24        7.1.7-32bit   7.2.15-32bit  7.2.8-zts     master-32bit
+7.1.14-zts    7.1.24-32bit  7.1.7-zts     7.2.15-zts    7.2.9         master-zts
+7.1.15        7.1.24-zts    7.1.8         7.2.16        7.2.9-32bit
+7.1.15-32bit  7.1.25        7.1.8-32bit   7.2.16-32bit  7.2.9-zts
+7.1.15-zts    7.1.25-32bit  7.1.8-zts     7.2.16-zts    7.2dev
+</example>
+</slide>
diff --git a/slides/xdebug/title.xml b/slides/xdebug/title.xml
index 4d8f9be..f32a37c 100644
--- a/slides/xdebug/title.xml
+++ b/slides/xdebug/title.xml
@@ -1,7 +1,10 @@
 <slide type="title">
-<title>Welcome!</title>
-<image align="center" filename="xdebug-logo.png" pdf-scale="0.8"/>
-<blurb class="event-date">:-:event:-: - :-:location:-: - :-:date:-:</blurb>
-<blurb class="event-presenter">Derick Rethans - :-:email:-: - twitter: @:-:twitter:-:</blurb>
-<blurb class="pres-url-small">:-:joindin:-:</blurb>
+<break lines="2"/>
+<blurb class="event-title">:-:title:-:</blurb>
+<blurb>~:-:event:-:~</blurb>
+<break lines="1"/>
+<blurb align="right" class="event-presenter">:-:speaker:-:</blurb>
+<blurb align="right" class="pres-url-small">:-:email:-:—@:-:twitter:-:</blurb>
+<blurb align="right" class="pres-url-small">:-:url:-:</blurb>
+<blurb align="right" class="pres-url-small">:-:joindin:-:</blurb>
 </slide>
diff --git a/slides/xdebug/xdebug-2.8.xml b/slides/xdebug/xdebug-2.8.xml
new file mode 100644
index 0000000..e564243
--- /dev/null
+++ b/slides/xdebug/xdebug-2.8.xml
@@ -0,0 +1,4 @@
+<slide class="title">
+<break lines="8"/>
+<blurb class="big-centre">Xdebug 2.8</blurb>
+</slide>
diff --git a/slides/xdebug/xdebug-3.xml b/slides/xdebug/xdebug-3.xml
new file mode 100644
index 0000000..c25fc4c
--- /dev/null
+++ b/slides/xdebug/xdebug-3.xml
@@ -0,0 +1,4 @@
+<slide class="title">
+<break lines="8"/>
+<blurb class="big-centre">Xdebug 3</blurb>
+</slide>
diff --git a/slides/xdebug/xdebug-ci.xml b/slides/xdebug/xdebug-ci.xml
new file mode 100644
index 0000000..093bc00
--- /dev/null
+++ b/slides/xdebug/xdebug-ci.xml
@@ -0,0 +1,12 @@
+<slide>
+<title>Local Continuous Integration</title>
+
+<list>
+	<bullet>Any cloud based CI is too slow due to lack of parallelisation<br/><small>Travis CI, Circle CI, AppVeyor</small></bullet>
+	<bullet>Many configuration pivots:<br/><small>NTS/ZTS, 64-bit/32-bit, OPcache on/off</small></bullet>
+	<bullet>Changes between PHP patch versions<br/><small>Line changes for OPcodes, bug fixes in PHP</small></bullet>
+	<bullet>I have a local machine with plenty of cores and memory</bullet>
+	<bullet>Visualisation</bullet>
+	<bullet>Nightly builds of PHP 7.4 and 8.0</bullet>
+</list>
+</slide>
diff --git a/slides/xdebug/xdebug-slow.png b/slides/xdebug/xdebug-slow.png
new file mode 100644
index 0000000..5c2f7b9
Binary files /dev/null and b/slides/xdebug/xdebug-slow.png differ
diff --git a/slides/xdebug/xdebug-slow.xml b/slides/xdebug/xdebug-slow.xml
new file mode 100644
index 0000000..1ec8fc5
--- /dev/null
+++ b/slides/xdebug/xdebug-slow.xml
@@ -0,0 +1,5 @@
+<slide>
+<title>Performance Woes</title>
+
+<image filename="xdebug-slow.png"/>
+</slide>
diff --git a/xdebug-phpday19.xml b/xdebug-phpday19.xml
new file mode 100644
index 0000000..c0ea8e6
--- /dev/null
+++ b/xdebug-phpday19.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>Debugging</topic>
+<title>Xdebug 3.0</title>
+<event>phpDay 2019</event>
+<location>Verona, Italy</location>
+<date>May 11th, 2019</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks.html</url>
+<joindin>https://joind.in/26193</joindin>
+<slide>slides/xdebug/title.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>