SlideShare a Scribd company logo
1 of 40
Download to read offline
Limitless and
recursion-free
recursion limits!
>>> def factorial(n):
... if n == 1:
... return 1
... else:
... return n * factorial(n - 1)
>>> factorial(10)
3628800
>>> factorial(500)
1220136825991110068701238785423046926253574342803192842192413588385845373153881
9976054964475022032818630136164771482035841633787220781772004807852051593292854
7790757193933060377296085908627042917454788242491272634430567017327076946106280
2310452644218878789465754777149863494367781037644274033827365397471386477878495
4384895955375379904232410612713269843277457155463099772027810145610811883737095
3101635632443298702956389662891165897476957208792692887128178007026517450776841
0719624390394322536422605234945850129918571501248706961568141625359056693423813
0088562492468915641267756544818865065938479517753608940057452389403357984763639
4490531306232374906644504882466507594673586207463792518420045936969298102226397
1952597190945217823331756934581508552332820762820023402626907898342451712006207
7146409794561161276291459512372299133401695523638509428855920187274337951730145
8635757082835578015873543276888868012039988238470215146760544540766353598417443
0480128938313896881639487469658817504506926365338175055478128640000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000L
>>> factorial(999)
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998
86101971960586316668729948085589013238296699445909974245040870737599188236277271887325197795059509952761208
74975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513
18532395846307555740911426241747434934755342864657661166779739666882029120737914385371958824980812686783837
45597317461360853795345242215865932019280908782973084313928444032812315586110369768013573042161687476096758
71348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691
39828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897
56029009505376164758477284218896796462449451607653534081989013854424879849599533191017233555566021394503997
36280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257
22386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367
16167621791689097799119037540312746222899880051954444142820121873617459926429565817466283029555702990243241
53181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458
32716822645806652676995865268227280707578139185817888965220816434834482599326604336766017699961283186078838
61502794659551311565520360939881806121385586003014356945272242063446317974605946825731037900840244324384656
57245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387
53823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179970235619389
70178600408118897299183110211712298459016419210688843871218556461249607987229085192968193723886426148396573
82291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483
07764456909907315243327828826986460278986432113908350621709500259738986355427719674282224875758676575234422
02075736305694988250879689281627538488633969099598262809561214509948717012445164612603790293091208890869420
28510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524
23056085590370062427124341690900415369010593398383577793941097002775347200000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
>>> factorial(1000)
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
RuntimeError: maximum recursion depth exceeded
:(
Recursion limit
>>> import sys
>>> sys.setrecursionlimit(10**8)
>>> factorial(1000)
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998
86101971960586316668729948085589013238296699445909974245040870737599188236277271887325197795059509952761208
74975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513
18532395846307555740911426241747434934755342864657661166779739666882029120737914385371958824980812686783837
45597317461360853795345242215865932019280908782973084313928444032812315586110369768013573042161687476096758
71348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691
39828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897
56029009505376164758477284218896796462449451607653534081989013854424879849599533191017233555566021394503997
36280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257
22386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367
16167621791689097799119037540312746222899880051954444142820121873617459926429565817466283029555702990243241
53181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458
32716822645806652676995865268227280707578139185817888965220816434834482599326604336766017699961283186078838
61502794659551311565520360939881806121385586003014356945272242063446317974605946825731037900840244324384656
57245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387
53823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179970235619389
70178600408118897299183110211712298459016419210688843871218556461249607987229085192968193723886426148396573
82291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483
07764456909907315243327828826986460278986432113908350621709500259738986355427719674282224875758676575234422
02075736305694988250879689281627538488633969099598262809561214509948717012445164612603790293091208890869420
28510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524
23056085590370062427124341690900415369010593398383577793941097002775347200000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
L
>>> factorial(1000000)
>>> factorial(1000000)
Segmentation fault: 11
:( :( :(
:D
:D
>>> def factorial(n):
... if n == 1:
... return 1
... else:
... return n * factorial(n - 1)
if (tstate->recursion_depth > recursion_limit) {
--tstate->recursion_depth;
PyErr_Format(PyExc_RuntimeError,
"maximum recursion depth exceeded%s",
where);
return -1;
}
...
c -------------
a | factorial |
l -------------
l | factorial |
-------------
s | factorial |
t -------------
a | factorial |
c -------------
k | REPL | <-- this one counts!
-------------
:D
Tail Call Optimization
c -------------
a | factorial | (1) >>> def factorial(n):
l ------------- ... if n == 1:
l | factorial | (2) ... return 1
------------- ... else:
s | factorial | (3) ... return n * factorial(n - 1)
t -------------
a | factorial | (4)
c -------------
k | factorial | (5)
-------------
| REPL |
-------------
def factorial(n, accumulator):
if n <= 1:
return accumulator
else:
return factorial(n-1, accumulator * n)
>>> factorial(1000)
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
File "<stdin>", line 5, in factorial
RuntimeError: maximum recursion depth exceeded
OR DOES IT.
with Liuda Nikolaeva and Paul Tagliamonte
def fact(n, accumulator):
10
if n <= 1:
return accumulator
else:
n = n - 1;
accumulator = accumulator * n
GOTO 10
# return fact(n-1, accum*n)
or is there
>>> import dis
>>> dis.dis(factorial)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (1)
6 COMPARE_OP 1 (<=)
9 POP_JUMP_IF_FALSE 16
3 12 LOAD_FAST 1 (accumulator)
15 RETURN_VALUE
5 >> 16 LOAD_GLOBAL 0 (factorial)
19 LOAD_FAST 0 (n)
22 LOAD_CONST 1 (1)
25 BINARY_SUBTRACT
26 LOAD_FAST 1 (accumulator)
29 LOAD_FAST 0 (n)
32 BINARY_MULTIPLY
33 CALL_FUNCTION 2
36 RETURN_VALUE
37 LOAD_CONST 0 (None)
40 RETURN_VALUE
>>> import dis
>>> dis.dis(factorial)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (1)
6 COMPARE_OP 1 (<=)
9 POP_JUMP_IF_FALSE 16
3 12 LOAD_FAST 1 (accumulator)
15 RETURN_VALUE
5 >> 16 NOP
19 LOAD_FAST 0 (n)
22 LOAD_CONST 1 (1)
25 BINARY_SUBTRACT
26 LOAD_FAST 1 (accumulator)
29 LOAD_FAST 0 (n)
32 BINARY_MULTIPLY
33 JUMP_ABSOLUTE 0
36 RETURN_VALUE
37 LOAD_CONST 0 (None)
40 RETURN_VALUE
>>> def hi():
... print("hi!")
...
>>> def nope():
... print("haha, nope!")
...
>>> hi.__code__ = nope.__code__
>>> hi()
haha, nope!
def tail_recurse(fn):
new_bytecode = []
code_obj = fn.__code__
for byte, arg in consume(code_obj.co_code):
name = opcode.opname[byte]
if name == "LOAD_GLOBAL" and code_obj.co_names[arg] == fn.__name__:
pass
elif name == "CALL_FUNCTION":
for i in range(arg):
new_bytecode.append(opmap["STORE_FAST"])
new_bytecode += split(arg - i - 1)
new_bytecode.append(opmap["JUMP_ABSOLUTE"])
new_bytecode += split(0) # jump to beginning of bytecode
else:
new_bytecode.append(byte)
if arg is not None:
new_bytecode += split(arg)
return "".join([chr(b) for b in new_bytecode])
$ python factorial_tco.py 1000
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998
86101971960586316668729948085589013238296699445909974245040870737599188236277271887325197795059509952761208
74975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513
18532395846307555740911426241747434934755342864657661166779739666882029120737914385371958824980812686783837
45597317461360853795345242215865932019280908782973084313928444032812315586110369768013573042161687476096758
71348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691
39828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897
56029009505376164758477284218896796462449451607653534081989013854424879849599533191017233555566021394503997
36280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257
22386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367
16167621791689097799119037540312746222899880051954444142820121873617459926429565817466283029555702990243241
53181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458
32716822645806652676995865268227280707578139185817888965220816434834482599326604336766017699961283186078838
61502794659551311565520360939881806121385586003014356945272242063446317974605946825731037900840244324384656
57245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387
53823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179970235619389
70178600408118897299183110211712298459016419210688843871218556461249607987229085192968193723886426148396573
82291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483
07764456909907315243327828826986460278986432113908350621709500259738986355427719674282224875758676575234422
02075736305694988250879689281627538488633969099598262809561214509948717012445164612603790293091208890869420
28510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524
23056085590370062427124341690900415369010593398383577793941097002775347200000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
L
$ python factorial_tco.py 1000000 # ONE MILLION
:D
>>> sys.setrecursionlimit(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError
>>> sys.setrecursionlimit(5)
RuntimeError
>>> sys.setrecursionlimit(10)
RuntimeError
>>> sys.setrecursionlimit(100)
RuntimeError
>>> sys.setrecursionlimit(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError
>>> sys.setrecursionlimit(5)
RuntimeError
>>> sys.setrecursionlimit(10)
RuntimeError
>>> sys.setrecursionlimit(100)
RuntimeError
>>> a = 1
RuntimeError
>>> 7
RuntimeError
>>> ^D
Exception RuntimeError: 'maximum recursion depth exceeded'
in <function _remove at 0x103b9e6e0> ignored
Exception RuntimeError: 'maximum recursion depth exceeded'
in <function _remove at 0x103ba25f0> ignored
!! :D

More Related Content

What's hot

Gate mathematics questions all branch by s k mondal
Gate mathematics questions all branch by s k mondalGate mathematics questions all branch by s k mondal
Gate mathematics questions all branch by s k mondal
Aashishv
 
Arna Friend Controls II Final
Arna Friend Controls II FinalArna Friend Controls II Final
Arna Friend Controls II Final
Arna Friend
 

What's hot (20)

Introducing maths in qbasic
Introducing maths in qbasicIntroducing maths in qbasic
Introducing maths in qbasic
 
Gate mathematics questions all branch by s k mondal
Gate mathematics questions all branch by s k mondalGate mathematics questions all branch by s k mondal
Gate mathematics questions all branch by s k mondal
 
MATLAB - Arrays and Matrices
MATLAB - Arrays and MatricesMATLAB - Arrays and Matrices
MATLAB - Arrays and Matrices
 
Solution of matlab chapter 3
Solution of matlab chapter 3Solution of matlab chapter 3
Solution of matlab chapter 3
 
ملخص البرمجة المرئية - الوحدة الخامسة
ملخص البرمجة المرئية - الوحدة الخامسةملخص البرمجة المرئية - الوحدة الخامسة
ملخص البرمجة المرئية - الوحدة الخامسة
 
Igraph
IgraphIgraph
Igraph
 
Textbook problems worked out
Textbook problems worked outTextbook problems worked out
Textbook problems worked out
 
Budynas sm ch01
Budynas sm ch01Budynas sm ch01
Budynas sm ch01
 
Arna Friend Controls II Final
Arna Friend Controls II FinalArna Friend Controls II Final
Arna Friend Controls II Final
 
Integral table
Integral tableIntegral table
Integral table
 
MATLAB ARRAYS
MATLAB ARRAYSMATLAB ARRAYS
MATLAB ARRAYS
 
Window functions in MariaDB 10.2
Window functions in MariaDB 10.2Window functions in MariaDB 10.2
Window functions in MariaDB 10.2
 
Oracle sql ppt2
Oracle sql ppt2Oracle sql ppt2
Oracle sql ppt2
 
Algorithm analysis
Algorithm analysisAlgorithm analysis
Algorithm analysis
 
Mat lab
Mat labMat lab
Mat lab
 
Wu Mamber (String Algorithms 2007)
Wu  Mamber (String Algorithms 2007)Wu  Mamber (String Algorithms 2007)
Wu Mamber (String Algorithms 2007)
 
4. Queues in Data Structure
4. Queues in Data Structure4. Queues in Data Structure
4. Queues in Data Structure
 
Gate mathematics chapter wise all gate questions of all branch
Gate mathematics chapter wise all gate questions of all branchGate mathematics chapter wise all gate questions of all branch
Gate mathematics chapter wise all gate questions of all branch
 
15 puzzle problem using branch and bound
15 puzzle problem using branch and bound15 puzzle problem using branch and bound
15 puzzle problem using branch and bound
 
Tugas 2 turunan
Tugas 2 turunanTugas 2 turunan
Tugas 2 turunan
 

Similar to Limitless and recursion-free recursion limits!

Similar to Limitless and recursion-free recursion limits! (20)

Econometric Analysis 8th Edition Greene Solutions Manual
Econometric Analysis 8th Edition Greene Solutions ManualEconometric Analysis 8th Edition Greene Solutions Manual
Econometric Analysis 8th Edition Greene Solutions Manual
 
Linear models
Linear modelsLinear models
Linear models
 
curve fitting or regression analysis-1.pptx
curve fitting or regression analysis-1.pptxcurve fitting or regression analysis-1.pptx
curve fitting or regression analysis-1.pptx
 
12. Linear models
12. Linear models12. Linear models
12. Linear models
 
Regression and Classification with R
Regression and Classification with RRegression and Classification with R
Regression and Classification with R
 
11. Linear Models
11. Linear Models11. Linear Models
11. Linear Models
 
Quantitative Methods Assignment Help
Quantitative Methods Assignment HelpQuantitative Methods Assignment Help
Quantitative Methods Assignment Help
 
Functional Regression Analysis
Functional Regression AnalysisFunctional Regression Analysis
Functional Regression Analysis
 
BUilt in Functions and Simple programs in R.pdf
BUilt in Functions and Simple programs in R.pdfBUilt in Functions and Simple programs in R.pdf
BUilt in Functions and Simple programs in R.pdf
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine Learning
 
k-means Clustering and Custergram with R
k-means Clustering and Custergram with Rk-means Clustering and Custergram with R
k-means Clustering and Custergram with R
 
Time Series Analysis:Basic Stochastic Signal Recovery
Time Series Analysis:Basic Stochastic Signal RecoveryTime Series Analysis:Basic Stochastic Signal Recovery
Time Series Analysis:Basic Stochastic Signal Recovery
 
Quantitative Methods Assignment Help
Quantitative Methods Assignment HelpQuantitative Methods Assignment Help
Quantitative Methods Assignment Help
 
R Bootcamp Day 3 Part 1 - Statistics in R
R Bootcamp Day 3 Part 1 - Statistics in RR Bootcamp Day 3 Part 1 - Statistics in R
R Bootcamp Day 3 Part 1 - Statistics in R
 
Seminar PSU 10.10.2014 mme
Seminar PSU 10.10.2014 mmeSeminar PSU 10.10.2014 mme
Seminar PSU 10.10.2014 mme
 
Curve fitting
Curve fitting Curve fitting
Curve fitting
 
Dispersion uwsb
Dispersion   uwsbDispersion   uwsb
Dispersion uwsb
 
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
 
Dispersion
DispersionDispersion
Dispersion
 
3.01.Lists.pptx
3.01.Lists.pptx3.01.Lists.pptx
3.01.Lists.pptx
 

More from akaptur (6)

Effective Learning Strategies for Programmers
Effective Learning Strategies for ProgrammersEffective Learning Strategies for Programmers
Effective Learning Strategies for Programmers
 
Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreter
 
Exploring slides
Exploring slidesExploring slides
Exploring slides
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
 
"A 1,500 line (!!) switch statement powers your Python!" - Allison Kaptur, !!...
"A 1,500 line (!!) switch statement powers your Python!" - Allison Kaptur, !!..."A 1,500 line (!!) switch statement powers your Python!" - Allison Kaptur, !!...
"A 1,500 line (!!) switch statement powers your Python!" - Allison Kaptur, !!...
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 

Limitless and recursion-free recursion limits!