SlideShare a Scribd company logo
1 of 132
Download to read offline
Development
By The Numbers
We Are Going To
Measure Complexity
Why Should We Care
About Complexity?
- Geer et al.
"The Central Enemy Of
Reliability is Complexity"
Complexity And
Quality Are Strongly
Related
Basic Metrics
Cyclomatic
Complexity
Cyclomatic Complexity
Number Of
"Decision Points"
In A Routine
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
4
Simple
Right?
Cyclomatic Complexity
(Single Method)
1 - 4: Low Complexity
5 - 7: Moderate Complexity
8 - 10: High Complexity
11+: Very High Complexity
Cyclomatic Complexity
(Average Per Method)
1 - 2: Low Complexity
2 - 4: Moderate Complexity
4 - 6: High Complexity
6+: Very High Complexity
Compare:
Average CC per Method
Wordpress: 6.28
Drupal 7: 3.02
Drupal 8: 2.10
Symfony 2: 1.81
Zend Framework 2: 2.62
Laravel: 1.79
Cyclomatic Complexity
(Average Per Line Of Code)
.01 - .05: Low Complexity
.05 - .10: Moderate Complexity
.10 - .15: High Complexity
.15+: Very High Complexity
Compare:
Average CC per LOC
Wordpress: 0.20
Drupal 7: 0.04
Drupal 8: 0.07
Symfony 2: 0.06
Zend Framework 2: 0.10
Laravel: 0.07
N-Path
Complexity
N-Path Complexity
Number Of
"Unique Paths"
In A Routine
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
function foo($a, $b) {
$c = 0;
if ($a) {
$c = $a;
} elseif ($b) {
$c = $b;
}
if ($a && $b) {
$c = $a + $b;
}
return $c;
}
4
They Are
The Same?
Not
Generally!
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC:
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC:
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath:
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath: 8
function foo2($a, $b, $c) {
$d = 0;
if ($a) {
$d += $a;
}
if ($b) {
$d += $b;
}
if ($c) {
$d += $c;
}
return $d;
}
CC: 4
NPath: 8
2^(CC-1)
N-Path Complexity
<16: Low Complexity
17-128: Moderate Complexity
129-1024: High Complexity
1025+: Very High Complexity
N-Path Complexity
Minimum Number Of
Tests Required To
Completely Test
A Routine
N-Path Complexity
entity_load()
CC:
N-Path:
N-Path Complexity
entity_load()
CC: 2
N-Path:
Cyclomatic Complexity
1 - 4: Low Complexity
5 - 7: Moderate Complexity
8 - 10: High Complexity
11+: Very High Complexity
N-Path Complexity
entity_load()
CC: 2
N-Path: 2
N-Path Complexity
drupal_http_request()
CC:
N-Path:
N-Path Complexity
drupal_http_request()
CC: 41
N-Path:
Cyclomatic Complexity
1 - 4: Low Complexity
5 - 7: Moderate Complexity
8 - 10: High Complexity
11+: Very High Complexity
N-Path Complexity
drupal_http_request()
CC: 41
N-Path: 25,303,344,960
To Completely Test
drupal_http_request()
At 1 Line Of Code Per Test
Would Require
2 Terabytes
Worth Of Tests
To Completely Test
drupal_http_request()
At 1 Line Of Code Per Test
Would Require
412 DVD's
Worth Of Tests
To Completely Test
drupal_http_request()
At 1 Line Of Code Per Test
Would Require
670k Drupals
Worth Of Tests
And That's Not
The Worst One!
N-Path Complexity
_date_repeat_rrule_process()
CC:
N-Path:
N-Path Complexity
_date_repeat_rrule_process()
CC: 81
N-Path:
N-Path Complexity
_date_repeat_rrule_process()
CC: 81
N-Path: 19,781,719,256
N-Path Complexity
_date_repeat_rrule_process()
CC: 81
N-Path: 19,781,719,256
,250,000,000,000
N-Path Complexity
_date_repeat_rrule_process()
CC: 81
N-Path: 19,781,719,256
,250,000,000,000
,000,000,000
To Completely Test
_date_repeat_rrule_process()
At 1 Line Of Code Per Test
Would Require
336T 2009's
Worth Of Tests
To Completely Test
_date_repeat_rrule_process()
At 1 Line Of Code Per Test
Would Require
1 Greenland Ice Cap of
microSD cards
Worth Of Tests
CRAP
CRAP
(Change Risk Analysis Predictions)
CC = Cyclomatic Complexity (method)
COV = Test Coverage (percent)
CRAP = CC + (CC^2 * (1 - COV)^3)
CRAP
Relates Complexity
And Test Coverage
CRAP
Increasing Test Coverage Lowers CRAP
Decreasing Complexity Lowers CRAP
CRAP
A Low Complexity Method
With No Tests
Is Good
CRAP
A Low Complexity Method
With Good Tests
Is Great
CRAP
A Moderate Complexity Method
With Good Tests
Is OK
CRAP
A Moderate Complexity Method
With No Tests
Is CRAP
CRAP
< 5: GREAT Code
5 - 15: Acceptable Code
15-30: Eih... Code
30+: CRAPpy Code
How Do We
Apply These
Metrics?
Sebastian Bergmann
PHPUnit
DbUnit
PHPLOC
PHPCPD
PHPCOV
hphpa
www.phpqatools.org
www.jenkins-php.org
PHPLOC
PHPLOC
By Sebastian Bergmann
PHPLOC
By Sebastian Bergmann
Command Line Tool
PHPLOC
By Sebastian Bergmann
Command Line Tool
Summarizes An Entire
Codebase
$ phploc path/to/Drupal7/
Directories: 73
Files: 180
Lines of Code (LOC): 63347
Cyclomatic Complexity / Lines of Code: 0.04
Comment Lines of Code (CLOC): 19321
Non-Comment Lines of Code (NCLOC): 44026
Namespaces: 0
Interfaces: 1
Traits: 0
Classes: 38
Abstract: 2 (5.26%)
Concrete: 36 (94.74%)
Average Class Length (NCLOC): 197
Methods: 433
Scope:
Non-Static: 378 (87.30%)
Static: 55 (12.70%)
Visibility:
Public: 255 (58.89%)
Non-Public: 178 (41.11%)
Average Method Length (NCLOC): 17
Cyclomatic Complexity / Number of Methods: 3.02
Anonymous Functions: 0
Functions: 521
Constants: 22
Global constants: 15
Class constants: 7
PDepend
PDepend
By Manuel Pichler
(Also German)
PDepend
By Manuel Pichler
(Also German)
Like PHPLOC, But Granular
PDepend
By Manuel Pichler
(Also German)
Like PHPLOC, But Granular
Lower Level Analysis
Fanout: Describes Outward Dependencies
- Describes Dependence on Other Classes
ANDC: Average Num of Derived Classes
- Describes How Much Inheritance Is Used
AHH: Average Hiearchy Height
- Describes How Deep Of Inheritance Is Used
PHPMD
(Mess Detector)
PHPMD
By Manuel Pichler
(German)
PHPMD
By Manuel Pichler
(German)
Finds "Messy" Parts Of Code
PHPMD
By Manuel Pichler
(German)
Finds "Messy" Parts Of Code
Finds Rule Violations
PHPMD Rules
CodeSize
- (CC, NPath, Number of Methods, Size of Methods, etc)
Design
- (Eval, Goto, Exit(), Inheritance Depth)
Naming
- (Short names, Inconsistent Names)
Unused Code
Controversial
- (Superglobal Access, Naming Conventions)
Prevent Complex Code
From Even Getting In!
By Themselves
Useful
Over Time
Over Time
Invaluable
Drupal 8.x Branch
Non-Comment Lines Of Code
Drupal 8.x Branch
Number Of Classes
Drupal 8.x Branch
Cyclomatic Complexity Per Method
Drupal 8.x Branch
Cyclomatic Complexity Per Line
Drupal 8.x Branch
One More Thing
To Keep In Mind
Anthony Ferrara
@ircmaxell
ircmaxell@php.net
anthony.ferrara@nbcuni.com
blog.ircmaxell.com
github.com/ircmaxell
youtube.com/ircmaxell

More Related Content

What's hot

All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2goMoriyoshi Koizumi
 
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019corehard_by
 
C++ Programming - 2nd Study
C++ Programming - 2nd StudyC++ Programming - 2nd Study
C++ Programming - 2nd StudyChris Ohk
 
Functional Programming in PHP
Functional Programming in PHPFunctional Programming in PHP
Functional Programming in PHPpwmosquito
 
Ee 3122 numerical methods and statistics sessional credit
Ee 3122 numerical methods and statistics sessional  creditEe 3122 numerical methods and statistics sessional  credit
Ee 3122 numerical methods and statistics sessional creditRaihan Bin-Mofidul
 
C++ Question on References and Function Overloading
C++ Question on References and Function OverloadingC++ Question on References and Function Overloading
C++ Question on References and Function Overloadingmohamed sikander
 
C- Programs - Harsh
C- Programs - HarshC- Programs - Harsh
C- Programs - HarshHarsh Sharma
 
javascript function & closure
javascript function & closurejavascript function & closure
javascript function & closureHika Maeng
 
Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)Sean May
 

What's hot (20)

All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
 
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
 
C++ Programming - 2nd Study
C++ Programming - 2nd StudyC++ Programming - 2nd Study
C++ Programming - 2nd Study
 
Functional Programming in PHP
Functional Programming in PHPFunctional Programming in PHP
Functional Programming in PHP
 
Ee 3122 numerical methods and statistics sessional credit
Ee 3122 numerical methods and statistics sessional  creditEe 3122 numerical methods and statistics sessional  credit
Ee 3122 numerical methods and statistics sessional credit
 
Static and const members
Static and const membersStatic and const members
Static and const members
 
Stl algorithm-Basic types
Stl algorithm-Basic typesStl algorithm-Basic types
Stl algorithm-Basic types
 
C++ Question on References and Function Overloading
C++ Question on References and Function OverloadingC++ Question on References and Function Overloading
C++ Question on References and Function Overloading
 
C- Programs - Harsh
C- Programs - HarshC- Programs - Harsh
C- Programs - Harsh
 
C++ file
C++ fileC++ file
C++ file
 
Pratik Bakane C++
Pratik Bakane C++Pratik Bakane C++
Pratik Bakane C++
 
C++ TUTORIAL 7
C++ TUTORIAL 7C++ TUTORIAL 7
C++ TUTORIAL 7
 
C++ TUTORIAL 8
C++ TUTORIAL 8C++ TUTORIAL 8
C++ TUTORIAL 8
 
Mpibhseguranca3
Mpibhseguranca3Mpibhseguranca3
Mpibhseguranca3
 
javascript function & closure
javascript function & closurejavascript function & closure
javascript function & closure
 
Sol10
Sol10Sol10
Sol10
 
Cquestions
Cquestions Cquestions
Cquestions
 
VTU Data Structures Lab Manual
VTU Data Structures Lab ManualVTU Data Structures Lab Manual
VTU Data Structures Lab Manual
 
Functional C++
Functional C++Functional C++
Functional C++
 
Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)
 

Viewers also liked

Development By The Numbers - ConFoo Edition
Development By The Numbers - ConFoo EditionDevelopment By The Numbers - ConFoo Edition
Development By The Numbers - ConFoo EditionAnthony Ferrara
 
Don't Be STUPID, Grasp SOLID - DrupalCon Prague
Don't Be STUPID, Grasp SOLID - DrupalCon PragueDon't Be STUPID, Grasp SOLID - DrupalCon Prague
Don't Be STUPID, Grasp SOLID - DrupalCon PragueAnthony Ferrara
 
Beyond design patterns phpnw14
Beyond design patterns   phpnw14Beyond design patterns   phpnw14
Beyond design patterns phpnw14Anthony Ferrara
 
Don't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo EditionDon't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo EditionAnthony Ferrara
 
Password Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaPassword Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaAnthony Ferrara
 
PHP, Under The Hood - DPC
PHP, Under The Hood - DPCPHP, Under The Hood - DPC
PHP, Under The Hood - DPCAnthony Ferrara
 

Viewers also liked (6)

Development By The Numbers - ConFoo Edition
Development By The Numbers - ConFoo EditionDevelopment By The Numbers - ConFoo Edition
Development By The Numbers - ConFoo Edition
 
Don't Be STUPID, Grasp SOLID - DrupalCon Prague
Don't Be STUPID, Grasp SOLID - DrupalCon PragueDon't Be STUPID, Grasp SOLID - DrupalCon Prague
Don't Be STUPID, Grasp SOLID - DrupalCon Prague
 
Beyond design patterns phpnw14
Beyond design patterns   phpnw14Beyond design patterns   phpnw14
Beyond design patterns phpnw14
 
Don't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo EditionDon't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo Edition
 
Password Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP ArgentinaPassword Storage And Attacking In PHP - PHP Argentina
Password Storage And Attacking In PHP - PHP Argentina
 
PHP, Under The Hood - DPC
PHP, Under The Hood - DPCPHP, Under The Hood - DPC
PHP, Under The Hood - DPC
 

Similar to Development by the numbers

Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)Nikita Popov
 
Advanced php
Advanced phpAdvanced php
Advanced phpAnne Lee
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolveXSolve
 
Graph Databases
Graph DatabasesGraph Databases
Graph DatabasesJosh Adell
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developersStoyan Stefanov
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Lucas Witold Adamus
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Michael Schwern
 
Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Seri Moth
 
Lessons learned from functional programming
Lessons learned from functional programmingLessons learned from functional programming
Lessons learned from functional programmingBryceLohr
 
From typing the test to testing the type
From typing the test to testing the typeFrom typing the test to testing the type
From typing the test to testing the typeWim Godden
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netProgrammer Blog
 
PHP Performance Trivia
PHP Performance TriviaPHP Performance Trivia
PHP Performance TriviaNikita Popov
 

Similar to Development by the numbers (20)

Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)Static Optimization of PHP bytecode (PHPSC 2017)
Static Optimization of PHP bytecode (PHPSC 2017)
 
Advanced php
Advanced phpAdvanced php
Advanced php
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
 
Functional php
Functional phpFunctional php
Functional php
 
Graph Databases
Graph DatabasesGraph Databases
Graph Databases
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developers
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)
 
Haskell Jumpstart
Haskell JumpstartHaskell Jumpstart
Haskell Jumpstart
 
C test
C testC test
C test
 
Cleancode
CleancodeCleancode
Cleancode
 
Basic PHP
Basic PHPBasic PHP
Basic PHP
 
Data Binding in qooxdoo
Data Binding in qooxdooData Binding in qooxdoo
Data Binding in qooxdoo
 
Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
 
Php Basic
Php BasicPhp Basic
Php Basic
 
Lessons learned from functional programming
Lessons learned from functional programmingLessons learned from functional programming
Lessons learned from functional programming
 
From typing the test to testing the type
From typing the test to testing the typeFrom typing the test to testing the type
From typing the test to testing the type
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.net
 
PHP Performance Trivia
PHP Performance TriviaPHP Performance Trivia
PHP Performance Trivia
 

Recently uploaded

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Development by the numbers