[presentations] master: New PHP/Xdebug talks for IPC, and PHP SW

[email protected] (Derick Rethans) Wed, 11 Jan 2023 11:24:18 +0000
Newsgroups php.pres
Message-ID <[email protected]>
Author: Derick Rethans (derickr)
Date: 2023-01-11T11:11:41Z

Commit: https://github.com/php/presentations/commit/becac80828de644de62e60380b78c0093f99f584
Raw diff: https://github.com/php/presentations/commit/becac80828de644de62e60380b78c0093f99f584.diff

New PHP/Xdebug talks for IPC, and PHP SW

Changed paths:
  A  php-ipc22.xml
  A  php-phpsw23.xml
  A  slides/internals/php82-random.xml
  A  slides/xdebug/breakpoint_not_resolving.xml
  A  slides/xdebug/breakpoint_resolving.xml
  A  slides/xdebug/return_value.xml
  A  slides/xdebug/xdebug_connect_to_client.xml
  A  slides/xdebug/xdebug_file_link_format.xml
  A  slides/xdebug/xdebug_info-2.xml
  A  slides/xdebug/xdebug_info.xml
  A  slides/xdebug/xdebug_notify.xml
  A  slides/xdebug/xdebug_pseudo_hosts.xml
  A  xdebug-ipc22.xml
  M  slides/mongodb/me.xml
  M  slides/xdebug/business-support.xml


Diff:

diff --git a/php-ipc22.xml b/php-ipc22.xml
new file mode 100644
index 00000000..aeb880c3
--- /dev/null
+++ b/php-ipc22.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>PHP</topic>
+<title>What's New in PHP 8</title>
+<event>International PHP Conference</event>
+<location>Munich, Germany</location>
+<date>October 27th, 2022</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks/php-ipc22</url>
+<joindin></joindin>
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+<slide>slides/internals/php80-union-types.xml</slide>
+<slide>slides/internals/php80-union-types-phpdoc.xml</slide>
+<slide>slides/internals/php80-union-types-new.xml</slide>
+<slide>slides/internals/php80-union-types-examples.xml</slide>
+<slide>slides/internals/php80-union-types-law.xml</slide>
+<!--<s lide>slides/internals/php80-union-types-coercive.xml</slide> -->
+
+Readonly properties 2.0 (https://wiki.php.net/rfc/readonly_properties_v2)
+<slide>slides/internals/php81-readonly.xml</slide>
+
+https://wiki.php.net/rfc/readonly_classes
+<slide>slides/internals/php82-readonly.xml</slide>
+
+Mixed Type v2
+<slide>slides/internals/php80-mixed-types.xml</slide>
+
+PHP 8.0:
+https://wiki.php.net/rfc/static_return_type
+static return type
+<!-- <s lide>slides/internals/php80-static-return.xml</slide> -->
+
+Constructor Property Promotion
+<slide>slides/internals/php80-cpp-without.xml</slide>
+<slide>slides/internals/php80-cpp-with.xml</slide>
+
+<slide>slides/internals/php80-named-without.xml</slide>
+<slide>slides/internals/php80-named-with.xml</slide>
+
+<!-- BIG NEW FEATURES -->
+Enumerations (https://wiki.php.net/rfc/enumerations)
+<slide>slides/internals/php81-enums-1.xml</slide>
+<slide>slides/internals/php81-enums-2.xml</slide>
+<slide>slides/internals/php81-enums-3.xml</slide>
+<slide>slides/internals/php81-enums-4.xml</slide>
+<slide>slides/internals/php81-enums-5.xml</slide>
+<slide>slides/internals/php81-enums-6.xml</slide>
+<slide>slides/internals/php81-enums-7.xml</slide>
+
+https://wiki.php.net/rfc/fetch_property_in_const_expressions
+<slide>slides/internals/php82-enums-1.xml</slide>
+
+Noreturn type (https://wiki.php.net/rfc/noreturn_type) (never)
+<slide>slides/internals/php81-never-type.xml</slide>
+
+Pure Intersection Types (https://wiki.php.net/rfc/pure-intersection-types)
+<slide>slides/internals/php81-pure-intersection.xml</slide>
+
+Array unpacking with string keys (https://wiki.php.net/rfc/array_unpacking_string_keys)
+<slide>slides/internals/php81-array-unpacking.xml</slide>
+
+Fibers (https://wiki.php.net/rfc/fibers)
+<slide>slides/internals/php81-fibers.xml</slide>
+
+First Class Callable (https://wiki.php.net/rfc/first_class_callable_syntax)
+<slide>slides/internals/php81-fcc.xml</slide>
+
+PHP 8.2:
+
+https://wiki.php.net/rfc/null-false-standalone-types
+'null' and 'false' as standalone
+<slide>slides/internals/php82-null-false-standalone.xml</slide>
+
+https://wiki.php.net/rfc/true-type
+'true' type
+<slide>slides/internals/php82-true.xml</slide>
+
+https://wiki.php.net/rfc/dnf_types
+? Disjunctive Normal Form Types
+<slide>slides/internals/php82-dnf-types.xml</slide>
+
+https://wiki.php.net/rfc/deprecate_dynamic_properties
+<slide>slides/internals/php82-deprecate-dynamic-properties.xml</slide>
+
+https://wiki.php.net/rfc/redact_parameters_in_back_traces
+<slide>slides/internals/php82-redact-parameters.xml</slide>
+
+<slide>slides/xdebug/phpinternalsnews.xml</slide>
+
+<slide>slides/internals/questions-new.xml</slide>
+<slide>slides/xdebug/resources.xml</slide>
+
+</presentation>
diff --git a/php-phpsw23.xml b/php-phpsw23.xml
new file mode 100644
index 00000000..e2c10013
--- /dev/null
+++ b/php-phpsw23.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>PHP</topic>
+<title>What's New in PHP 8</title>
+<event>PHP South West</event>
+<location>Bristol, UK</location>
+<date>January 11th, 2023</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks/php-phpsw23</url>
+<joindin></joindin>
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+<slide>slides/internals/php80-union-types.xml</slide>
+<slide>slides/internals/php80-union-types-phpdoc.xml</slide>
+<slide>slides/internals/php80-union-types-new.xml</slide>
+<slide>slides/internals/php80-union-types-examples.xml</slide>
+<slide>slides/internals/php80-union-types-law.xml</slide>
+<!--<s lide>slides/internals/php80-union-types-coercive.xml</slide> -->
+
+Readonly properties 2.0 (https://wiki.php.net/rfc/readonly_properties_v2)
+<slide>slides/internals/php81-readonly.xml</slide>
+
+https://wiki.php.net/rfc/readonly_classes
+<slide>slides/internals/php82-readonly.xml</slide>
+
+Mixed Type v2
+<slide>slides/internals/php80-mixed-types.xml</slide>
+
+PHP 8.0:
+https://wiki.php.net/rfc/static_return_type
+static return type
+<!-- <s lide>slides/internals/php80-static-return.xml</slide> -->
+
+Constructor Property Promotion
+<slide>slides/internals/php80-cpp-without.xml</slide>
+<slide>slides/internals/php80-cpp-with.xml</slide>
+
+<slide>slides/internals/php80-named-without.xml</slide>
+<slide>slides/internals/php80-named-with.xml</slide>
+
+<!-- BIG NEW FEATURES -->
+Enumerations (https://wiki.php.net/rfc/enumerations)
+<slide>slides/internals/php81-enums-1.xml</slide>
+<slide>slides/internals/php81-enums-2.xml</slide>
+<slide>slides/internals/php81-enums-3.xml</slide>
+<slide>slides/internals/php81-enums-4.xml</slide>
+<slide>slides/internals/php81-enums-5.xml</slide>
+<slide>slides/internals/php81-enums-6.xml</slide>
+<slide>slides/internals/php81-enums-7.xml</slide>
+
+https://wiki.php.net/rfc/fetch_property_in_const_expressions
+<slide>slides/internals/php82-enums-1.xml</slide>
+
+Noreturn type (https://wiki.php.net/rfc/noreturn_type) (never)
+<slide>slides/internals/php81-never-type.xml</slide>
+
+Pure Intersection Types (https://wiki.php.net/rfc/pure-intersection-types)
+<slide>slides/internals/php81-pure-intersection.xml</slide>
+
+Array unpacking with string keys (https://wiki.php.net/rfc/array_unpacking_string_keys)
+<slide>slides/internals/php81-array-unpacking.xml</slide>
+
+Fibers (https://wiki.php.net/rfc/fibers)
+<slide>slides/internals/php81-fibers.xml</slide>
+
+First Class Callable (https://wiki.php.net/rfc/first_class_callable_syntax)
+<slide>slides/internals/php81-fcc.xml</slide>
+
+PHP 8.2:
+
+https://wiki.php.net/rfc/null-false-standalone-types
+'null' and 'false' as standalone
+<slide>slides/internals/php82-null-false-standalone.xml</slide>
+
+https://wiki.php.net/rfc/true-type
+'true' type
+<slide>slides/internals/php82-true.xml</slide>
+
+https://wiki.php.net/rfc/dnf_types
+? Disjunctive Normal Form Types
+<slide>slides/internals/php82-dnf-types.xml</slide>
+
+https://wiki.php.net/rfc/rng_extension
+<slide>slides/internals/php82-random.xml</slide>
+
+https://wiki.php.net/rfc/deprecate_dynamic_properties
+<slide>slides/internals/php82-deprecate-dynamic-properties.xml</slide>
+
+https://wiki.php.net/rfc/redact_parameters_in_back_traces
+<slide>slides/internals/php82-redact-parameters.xml</slide>
+
+<!-- <s lide>slides/xdebug/phpinternalsnews.xml</slide> -->
+
+<slide>slides/internals/questions-new.xml</slide>
+<slide>slides/xdebug/resources.xml</slide>
+
+</presentation>
diff --git a/slides/internals/php82-random.xml b/slides/internals/php82-random.xml
new file mode 100644
index 00000000..0f807907
--- /dev/null
+++ b/slides/internals/php82-random.xml
@@ -0,0 +1,21 @@
+<slide>
+<title>New Random extension</title>
+
+<example result="3"><![CDATA[
+<?php
+$engine = new \Random\Engine\Xoshiro256StarStar( /* 42 */ );
+$r = new \Random\Randomizer($engine);
+
+echo bin2hex( $r->getBytes( 8 ) ), "\n";
+
+echo $r->getInt(1, 100), "\n";
+echo $r->nextInt(), "\n";
+
+$fruits = [ 'red' => '🍎',  'green' => '🍏', 'pink' => 'πŸ‘' ];
+echo "Keys: ", join( ', ', $r->pickArrayKeys( $fruits, 2 ) ), "\n";
+
+echo "Salad: ", join( ', ', $r->shuffleArray( $fruits ) ), "\n";
+
+echo $r->shuffleBytes( "PHP is great!" ), "\n";
+?>]]></example>
+</slide>
diff --git a/slides/mongodb/me.xml b/slides/mongodb/me.xml
index c80d3f80..516c8cb9 100644
--- a/slides/mongodb/me.xml
+++ b/slides/mongodb/me.xml
@@ -7,11 +7,12 @@
 	<blurb>Derick Rethans</blurb>
 	<list>
 		<bullet>I'm European, living in London</bullet>
-		<bullet>PHP 7.4 *Release Manager*</bullet>
+		<bullet>---PHP 7.4 *Release Manager*---</bullet>
 		<bullet>*PHP Foundation*</bullet>
 		<bullet>*Xdebug* &amp; PHP's Date/Time support</bullet>
 		<bullet>Host of *https://phpinternals.news* podcast</bullet>
 		<bullet>I β™₯🌍 maps, I β™₯🍺 beer, I β™₯πŸ₯ƒ  whisky</bullet>
+		<bullet>mastodon: @derickr&#8203;@phpc.social</bullet>
 		<bullet>twitter: @derickr</bullet>
 	</list>
 </slide>
diff --git a/slides/xdebug/breakpoint_not_resolving.xml b/slides/xdebug/breakpoint_not_resolving.xml
new file mode 100644
index 00000000..7d1e9c92
--- /dev/null
+++ b/slides/xdebug/breakpoint_not_resolving.xml
@@ -0,0 +1,11 @@
+<slide>
+<title>Breakpoint Resolving β€” Revised</title>
+
+<break lines="5"/>
+<blurb class="centre">The IDE can set breakpoints on non-existing files...</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/breakpoint_resolving.xml b/slides/xdebug/breakpoint_resolving.xml
new file mode 100644
index 00000000..f514e826
--- /dev/null
+++ b/slides/xdebug/breakpoint_resolving.xml
@@ -0,0 +1,22 @@
+<slide>
+<title>Breakpoint Resolving</title>
+
+<break lines="4"/>
+<blurb class="centre">Xdebug now finds the closest breakpoint line</blurb>
+
+<div effect="fade-in">
+<break lines="2"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="centre">How does this work?</blurb>
+</div>
+
+<div effect="fade-in">
+<break lines="2"/>
+<blurb class="centre">Let's check the log…</blurb>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/business-support.xml b/slides/xdebug/business-support.xml
index 103a8144..a86cfcf5 100644
--- a/slides/xdebug/business-support.xml
+++ b/slides/xdebug/business-support.xml
@@ -8,8 +8,7 @@
 <break/>
 
 <blurb class="centre">
-Intracto β€” Private&#160;Packagist β€” Edmonds&#160;Commerce β€” Find&#160;My&#160;Electric β€” Tideways β€” TYPO3&#160;GmbH β€”
-Seravo β€” CHECK24 β€” Supermetrics 
+Tideways β€” Real Estate Learning Center β€” Find My Electric β€” Xdebug Cloud β€” Seiden Group β€” Offers.com β€” Private Packagist β€” VEMA eG β€” iO β€” Supermetrics 
 </blurb>
 
 </slide>
diff --git a/slides/xdebug/return_value.xml b/slides/xdebug/return_value.xml
new file mode 100644
index 00000000..9d2c479b
--- /dev/null
+++ b/slides/xdebug/return_value.xml
@@ -0,0 +1,9 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">Return Values?</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_connect_to_client.xml b/slides/xdebug/xdebug_connect_to_client.xml
new file mode 100644
index 00000000..bc418258
--- /dev/null
+++ b/slides/xdebug/xdebug_connect_to_client.xml
@@ -0,0 +1,10 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">%xdebug_connect_to_client()%</blurb>
+<blurb class="centre">Prods Xdebug to try to make a debug connection again</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_file_link_format.xml b/slides/xdebug/xdebug_file_link_format.xml
new file mode 100644
index 00000000..753acafc
--- /dev/null
+++ b/slides/xdebug/xdebug_file_link_format.xml
@@ -0,0 +1,10 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">%xdebug_file_link_format% setting</blurb>
+<blurb class="centre">Make file name/line number combinations clickable</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_info-2.xml b/slides/xdebug/xdebug_info-2.xml
new file mode 100644
index 00000000..6fde1fb6
--- /dev/null
+++ b/slides/xdebug/xdebug_info-2.xml
@@ -0,0 +1,10 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">%xdebug_info( string $category )%</blurb>
+<blurb class="centre">Obtain information about Xdebug programatically</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_info.xml b/slides/xdebug/xdebug_info.xml
new file mode 100644
index 00000000..db19b48a
--- /dev/null
+++ b/slides/xdebug/xdebug_info.xml
@@ -0,0 +1,10 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">%xdebug_info()%</blurb>
+<blurb class="centre">Like %phpinfo()%, but then for Xdebug</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_notify.xml b/slides/xdebug/xdebug_notify.xml
new file mode 100644
index 00000000..6fc38f3e
--- /dev/null
+++ b/slides/xdebug/xdebug_notify.xml
@@ -0,0 +1,10 @@
+<slide>
+<break lines="5"/>
+<blurb class="big-centre">%xdebug_notify( mixed $data )%</blurb>
+<blurb class="centre">Send data over debugging protocol</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="big-centre">DEMO</blurb>
+</div>
+</slide>
diff --git a/slides/xdebug/xdebug_pseudo_hosts.xml b/slides/xdebug/xdebug_pseudo_hosts.xml
new file mode 100644
index 00000000..1a0d04c8
--- /dev/null
+++ b/slides/xdebug/xdebug_pseudo_hosts.xml
@@ -0,0 +1,15 @@
+<slide>
+<title>"Smart" Host Names</title>
+<break lines="5"/>
+<blurb class="centre">Helping with the configuration madness…</blurb>
+
+<div effect="fade-in">
+<break lines="5"/>
+<blurb class="centre">%xdebug.client_host=%</blurb>
+<blurb class="big-centre">%xdebug://gateway%</blurb>
+</div>
+
+<div effect="fade-in">
+<blurb class="big-centre">%xdebug://nameserver%</blurb>
+</div>
+</slide>
diff --git a/xdebug-ipc22.xml b/xdebug-ipc22.xml
new file mode 100644
index 00000000..3e9cfeaa
--- /dev/null
+++ b/xdebug-ipc22.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>Debugging</topic>
+<title>Xdebug 3</title>
+<event>International PHP Conference</event>
+<location>Munich, Germany</location>
+<date>October 26th, 2022</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<url>https://derickrethans.nl/talks/xdebug-ipc22</url>
+<joindin>https://xdebug.org</joindin>
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.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-3-speedup-1.xml</slide>
+
+- xdebug_info() (demo, VS Code or PhpStorm)
+
+	- an API through xdebug_info() for mode detection (VS Code or PhpStorm)
+		'mode'
+		'extension-flags'
+
+<slide>slides/xdebug/xdebug_info.xml</slide>
+<slide>slides/xdebug/xdebug_info-2.xml</slide>
+
+- xdebug_notify() (demo, VS Code)
+
+<slide>slides/xdebug/xdebug_notify.xml</slide>
+
+- file_link_format (demo, PhpStorm)
+
+<slide>slides/xdebug/xdebug_file_link_format.xml</slide>
+
+
+  -> ticket
+
+<!--<s lide>slides/xdebug/diagnostic-log.xml</slide> (Also console output) -->
+
+Step debugging improvements
+
+<slide>slides/xdebug/breakpoint_resolving.xml</slide>
+- breakpoint resolving (demo, PhpStorm)
+
+<slide>slides/xdebug/return_value.xml</slide>
+- return value debugging (demo, VS Code)
+
+<slide>slides/xdebug/breakpoint_not_resolving.xml</slide>
+- Xdebug will now also log a warning if an IDE attempts to set a breakpoint on
+  a file that does not exist on the file system. (demo, PhpStorm)
+
+<slide>slides/xdebug/xdebug_connect_to_client.xml</slide>
+- xdebug_connect_to_client() (demo, PhpStorm)
+
+<slide>slides/xdebug/xdebug_pseudo_hosts.xml</slide>
+- xdebug://gateway and xdebug://nameserver (explain)
+
+<slide>slides/xdebug/xdebug-cloud-announcement.xml</slide>
+
+<slide>slides/xdebug/donate.xml</slide>
+<slide>slides/xdebug/business-support.xml</slide>
+<slide>slides/xdebug/transparency.xml</slide>
+
+
+<slide>slides/xdebug/phpinternalsnews.xml</slide>
+<slide>slides/mongodb/questions.xml</slide>
+<slide>slides/xdebug/resources.xml</slide>
+
+</presentation>