SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
Transitioning to Native
Robbie Litchfield
Software Engineer
Grinding Gear Games
Motivation
Motivation
● Engines have their limits.
● C/C++ usage in indie middleware.
● Programmer control over tech.
● Pushing target platform performance.
Agenda
● Jumping into Native Development.
● Development without an Editor.
● Memory Management without GC.
Jumping into Native
Development
Jumping into Native Development
“A Curiously Repeating Story”
By Robbie Litchfield
Jumping into Native Development
Day 1:
● Find C++ materials.
● Open StackOverflow.
● Write some code.
Jumping into Native Development
Week 1:
● Start on game idea.
● Powering through problems.
● Diligent StackOverflow use.
● Perceived leaps and bounds.
Jumping into Native Development
Month 1:
● StackOverflow… :(
● Errors are alien.
● Progress is dwindling.
● C++ love affair is over.
Jumping into Native Development
Many moons later:
● Minimal to no progress.
● Project seems ill-defined.
● Longing thoughts of Unity.
● Project failure.
Jumping into Native Development
“Going Native” for the wrong reasons.
Jumping into Native Development
● Understand your own requirements.
● Make pragmatic risk/benefit analyses.
● Explore novel solutions with existing tools.
● Do the above *before* cutting code.
Jumping into Native Development
Attempting too much, too soon, too fast.
Jumping into Native Development
● Start out on small and simple pilot projects.
● Take time for learning, analysis and design.
● Extend project time estimates, double them.
Jumping into Native Development
Confusing training with skill.
Jumping into Native Development
● “Yeah, I’m sure I can pick up C++ quickly.”
● Use introspection, plan around skillsets.
● Push through, skills come from experience.
● Invest in fostering talent in your team.
Jumping into Native Development
Your mileage may vary.
Development without
an Editor
Development without an Editor
The bad old days.
Development without an Editor
● Games were largely hard coded.
● Tools, if any, were primitive.
● Games typically had miniscule content.
Development without an Editor
Today.
Development without an Editor
● Games are larger and more complex.
● Demand for high content games.
● The standard for quality keeps on rising.
● Game sizes growing faster than teams.
Development without an Editor
Development without an Editor
Development without an Editor
Development without an Editor
Programmer time is a large bottleneck.
class Monster : GameObject, MRenderable
{
Monster(Health_t health);
virtual Attack_t GetAttack( ) = 0;
Health_t m_Health;
};
Development without an Editor
class Dragon : Monster
{
Dragon( ) : Monster( 99 ) {
}
virtual void GetAttack( ) override {
return “The dragon’s fire results in a
swift death.”; }
};
Development without an Editor
1. Designer asks for trivial change in Dragon.h
2. Modify Dragon.h
3. Recompile and check-in changes.
4. Reply to designer.
Development without an Editor
Development without an Editor
Data Driven Development
Development without an Editor
● Empower those who make the decisions.
● Minimise iteration time with powerful tools.
● Data requirements drive software design.
Development without an Editor
Data Driven Game Objects
{
“Name” : “DemonDragon”,
“Prototype” : “Dragon”,
“Attacks” : [ “SummonLesserDragons”,
“CharmMinion”, “MightyClaw”, “FireBreath” ]
“MinHealth” : “1500”
}
Development without an Editor
Game ObjectMRenderableMControllable MAnimatable
Actor
Monster
Development without an Editor
Monster
Demon
Dragon
“Attacks”
“MinHealth”“Zone”
Monster(Json &json) {
m_Health = json[“MinHealth”];
m_Attacks = json[“Attacks”];
m_Zone = json[“Zone”];
}
Development without an Editor
Monster
Goblin ElfDragon Human
TrollBlackDragon HighElf Orc
Demon
Dragon
Development without an Editor
● Works well if types are similar.
● Can’t express complex hierarchies.
● Still requires programmer time.
● We can do better...
Development without an Editor
Game Object PrototypeMonster
Script
Render
Development without an Editor
class GameObject
{
public:
GameObject( Id_t id );
Id_t m_Id;
Id_t m_Prototype;
IntrusiveList<Component> m_Components;
};
Development without an Editor
MonsterDemon
Dragon
“Attacks”
“MinHealth”
“Zone”
Actor
GameObject
GameObject* Create(Json &json) {
for(auto& p : json) {
// Select component for property
// Set component value
}
}
Development without an Editor
● Added runtime cost.
● Compiler can’t help with type checking.
● Can trivially create new types without code.
● Programmer time for new concepts.
Development without an Editor
● Materials
● Scripts
● User Displayed Strings
● So much more...
Development without an Editor
● Tools take time to develop and maintain.
● Not everything needs to be data driven.
● Text files can often be enough.
● Be prepared to refactor toolchain.
Memory Management
without GC
GC Memory Management
void CSharp( )
{
var val = new T(“NZGDA”);
/** ... **/
val = null; /* Optional */
}
Memory Management without GC
Memory Management without GC
● Convenient.
● Non-deterministic cleanup.
● Non-deterministic performance.
● C/C++ GC support is a kludge.
Memory Management without GC
Manual Memory Management
Stack Heap
Memory Management without GC
Manual Memory Management
void Func( ) {
int val = 5;
/** ... **/
}
Memory Management without GC
Manual Memory Management
void Func( ) {
auto *ptr = new T(“NZGDC15”);
/** ... **/
delete ptr;
}
Memory Management without GC
T* ptr;
● Lifetime?
● Ownership?
● Cleanup?
● Safety?
Memory Management without GC
“Resource Acquisition Is Initialization”
Memory Management without GC
R.A.I.I.
● Resource is bound to an object’s lifetime.
● Constructor performs resource acquisition.
● Destructor performs resource destruction.
Memory Management without GC
R.A.I.I. Smart Pointers
class scoped_ptr {
scoped_ptr ( int* p ) { m_ptr = p; }
~scoped_ptr ( ) { delete m_ptr; }
int* m_ptr;
/** ... **/
};
Memory Management without GC
R.A.I.I. Smart Pointers
void Function( )
{
scoped_ptr ptr( new int );
// Memory at ptr destroyed here
}
Memory Management without GC
R.A.I.I. Smart Pointers
● std::unique_ptr<T>
● std::shared_ptr<T>
● std::weak_ptr<T>
Memory Management without GC
● Superior to manual memory management.
● Deterministic cleanup and performance.
● Useful for any system resource.
● Learn this pattern, it’s everywhere.
C/C++ Dynamic Memory
void Func( ) {
auto *ptr = new T(“NZGDC15”);
/** ... **/
delete ptr;
}
Memory Management without GC
Memory Management without GC
● Global State.
● Slow, Heavy Subsystem.
● Virtual Memory Limitations.
● Heap Fragmentation.
Memory Management without GC
Heap Fragmentation
Memory Management without GC
Allocators
Memory Management without GC
Stack Alloc Alloc Alloc Alloc
Stack Heap
Memory Management without GC
● Give up some convenience.
● Faster than the runtime heap.
● Fragmentation can be eliminated.
● Games only need a couple patterns...
Memory Management without GC
Default Allocator
malloc() free()
Memory Management without GC
● Simple adaptor around runtime heap.
● Helps with bootstrapping allocator usage.
● Avoid use in production builds.
Memory Management without GC
Stack Allocator
Alloc Free
Alloc FreeAlloc
Memory Management without GC
● Games already behave like a stack.
● Trivial to implement.
● Fragmentation proof.
● Strong ordering requirements.
Memory Management without GC
Object Pool Allocator
Free Free Free Free Free
Alloc Free Alloc Free Free
Memory Management without GC
● Suitable for game simulation data.
● Subtle implementation issues.
● Fragmentation proof.
● No ordering requirements.
Memory Management without GC
● Games can be made with the runtime heap.
● Allocators are hard to debug.
● Another tool in the toolbox.
Thanks!
robbie.l@missingbox.co.nz
www.github.com/regretbomb

Contenu connexe

Similaire à Transitioning to Native

Study Jam: Android for Beginners, Summary
Study Jam: Android for Beginners, SummaryStudy Jam: Android for Beginners, Summary
Study Jam: Android for Beginners, SummaryConstantine Mars
 
Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development toolsSimon Dittlmann
 
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Demi Ben-Ari
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android GamesPlatty Soft
 
Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship PresentationKushagra Udai
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
 
Structured web programming
Structured web programmingStructured web programming
Structured web programmingahfast
 
Unity3D Plugins Development Guide
Unity3D Plugins Development GuideUnity3D Plugins Development Guide
Unity3D Plugins Development GuideKaiJung Chen
 
Castle Game Engine and the joy of making and using a custom game engine
Castle Game Engine and the joy  of making and using a custom game engineCastle Game Engine and the joy  of making and using a custom game engine
Castle Game Engine and the joy of making and using a custom game engineMichalis Kamburelis
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentDavid Galeano
 
Pentester++
Pentester++Pentester++
Pentester++CTruncer
 
DConf 2013 Opening Keynote by Walter Bright
DConf 2013 Opening Keynote by Walter BrightDConf 2013 Opening Keynote by Walter Bright
DConf 2013 Opening Keynote by Walter BrightAndrei Alexandrescu
 
OpenThink Labs Training : Diving into Java, The Head First Way
OpenThink Labs Training : Diving into Java, The Head First WayOpenThink Labs Training : Diving into Java, The Head First Way
OpenThink Labs Training : Diving into Java, The Head First WayWildan Maulana
 
Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Demi Ben-Ari
 
Skiron - Experiments in CPU Design in D
Skiron - Experiments in CPU Design in DSkiron - Experiments in CPU Design in D
Skiron - Experiments in CPU Design in DMithun Hunsur
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I💻 Anton Gerdelan
 
GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++Gerke Max Preussner
 

Similaire à Transitioning to Native (20)

Study Jam: Android for Beginners, Summary
Study Jam: Android for Beginners, SummaryStudy Jam: Android for Beginners, Summary
Study Jam: Android for Beginners, Summary
 
Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development tools
 
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
 
I Develop Videogames
I Develop VideogamesI Develop Videogames
I Develop Videogames
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android Games
 
Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship Presentation
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time Checks
 
Structured web programming
Structured web programmingStructured web programming
Structured web programming
 
Unity3D Plugins Development Guide
Unity3D Plugins Development GuideUnity3D Plugins Development Guide
Unity3D Plugins Development Guide
 
Castle Game Engine and the joy of making and using a custom game engine
Castle Game Engine and the joy  of making and using a custom game engineCastle Game Engine and the joy  of making and using a custom game engine
Castle Game Engine and the joy of making and using a custom game engine
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game development
 
Tools
ToolsTools
Tools
 
Pentester++
Pentester++Pentester++
Pentester++
 
DConf 2013 Opening Keynote by Walter Bright
DConf 2013 Opening Keynote by Walter BrightDConf 2013 Opening Keynote by Walter Bright
DConf 2013 Opening Keynote by Walter Bright
 
OpenThink Labs Training : Diving into Java, The Head First Way
OpenThink Labs Training : Diving into Java, The Head First WayOpenThink Labs Training : Diving into Java, The Head First Way
OpenThink Labs Training : Diving into Java, The Head First Way
 
Cloud accounting software uk
Cloud accounting software ukCloud accounting software uk
Cloud accounting software uk
 
Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"Monitoring Big Data Systems - "The Simple Way"
Monitoring Big Data Systems - "The Simple Way"
 
Skiron - Experiments in CPU Design in D
Skiron - Experiments in CPU Design in DSkiron - Experiments in CPU Design in D
Skiron - Experiments in CPU Design in D
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I
 
GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++
 

Dernier

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 

Dernier (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 

Transitioning to Native