SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Better Code through TDD
Wolfram Kriesing
CTO, uxebu
@wolframkriesing
Freitag, 12. April 13
http://140byt.es
Warming up: shorten please!	
Freitag, 12. April 13
Try it out!
Browser
node.js
Freitag, 12. April 13
uxebu
100%Technology
Company
- since 2008
- remote team
Freitag, 12. April 13
TDD using Jasmine
Freitag, 12. April 13
Why TDD?
• Better tool than Debugging
• Verifies Refactoring
• Sustainable
Freitag, 12. April 13
Jasmine
• JavaScript quasi standard
• For nodejs+browser (server+client)
• Built-in Spies
• Custom Matchers make awesome errors!!!
http://pivotal.github.com/jasmine/
Freitag, 12. April 13
Jasmine - Matchers
Freitag, 12. April 13
Jasmine - Matchers, watch out!
Freitag, 12. April 13
Matchers - toContain, not
Freitag, 12. April 13
Custom Matchers - toBeInstanceOf
Freitag, 12. April 13
Custom Matchers - toBeInstanceOf
Freitag, 12. April 13
Custom Matchers
Freitag, 12. April 13
Spies
• Decoupled Testing
• Fast Tests (Removes waits, Removes timings)
• Better Architecture
• Async Testing
Freitag, 12. April 13
Spies
Freitag, 12. April 13
Spies
Freitag, 12. April 13
Spies
Freitag, 12. April 13
TDD is just the start...
Freitag, 12. April 13
Our Process
Repo
Dev
CI
Flowdock
All Devs
Freitag, 12. April 13
CI - Continuous Integration
• All projects
• Automated Test runs (multiple browsers/devices)
• Build
• Code coverage
• On Linux!
Freitag, 12. April 13
CI - Continuous Integration
http://siliconforks.com/jscoverage/
Freitag, 12. April 13
CI - Continuous Integration
Freitag, 12. April 13
Embedded Jasmine Test Runner
Test
ResultTest Platforms
Freitag, 12. April 13
Better code?
Freitag, 12. April 13
The problem
Freitag, 12. April 13
S3
Upload
HTML5 files to Amazon S3 (bucket)
Freitag, 12. April 13
Assets
index.html
movie.js
Freitag, 12. April 13
• it‘s a prototype ....... +1
• is actually async (ignored) ......... -1
• runs all uploads in parallel ........ +1
• no error handling ........ -1
• NEEDS WORK
Freitag, 12. April 13
• still a prototype ....... +1
• is actually async ......... +1
• does NOT run uploads in parallel ........ -1
• partly error handling ........ 0
• NEEDS WORK
Freitag, 12. April 13
Freitag, 12. April 13
HTTP PUT
hard coded
hidden
S3Uploader!!!!!
Freitag, 12. April 13
• S3Uploader.js
• uploads from a buffer
• needs to take S3 config
Freitag, 12. April 13
TDD please....
Freitag, 12. April 13
Freitag, 12. April 13
Freitag, 12. April 13
S3Put.js
upload from
filename
upload from
buffer
S3Uploader.js HTTP PUT
Freitag, 12. April 13
Freitag, 12. April 13
S3Uploader
Freitag, 12. April 13
S3Put.js
upload from
filename
upload from
buffer
S3Uploader.js HTTP PUT
:-(
Freitag, 12. April 13
Uploader.js
S3Put.js
from filename
upload from
buffer
S3Uploader.js
HTTP PUT
from buffer
Freitag, 12. April 13
Class
Methods
Freitag, 12. April 13
All tests green? Refactor!
Freitag, 12. April 13
Freitag, 12. April 13
S3Put.js
upload from
buffer
S3Uploader.js
HTTP PUT
Uploader.js
from filename
from buffer
Freitag, 12. April 13
S3Put.js
upload from
buffer
S3Uploader.js
HTTP PUT
Uploader.js
from filename
from buffer
FileUploader.js
from filename
from buffer
Freitag, 12. April 13
Looking at the big picture again ...
Freitag, 12. April 13
• is actually async ......... +1
• runs all uploads in parallel ........ -1
• error handling ........ 0
• NEEDS WORK
Freitag, 12. April 13
FileUploader.uploadFromFilesNames
Freitag, 12. April 13
Freitag, 12. April 13
• is actually async ......... +1
• runs all uploads in parallel ........ +1
• error handling ........ +1
• upload multiple files :)
New requirement
Freitag, 12. April 13
Freitag, 12. April 13
FileUploader.js
S3Put.js
from filename
upload from
buffer
S3Uploader.js
HTTP PUT
from buffer
from filenames
Freitag, 12. April 13
• Get to know what you really need
• Just as much as necessary
• It‘s a proof of concept
• Reveals the API
Prototyping
Freitag, 12. April 13
• Let the architecture come by itself
• Don‘t turn off the brain
• Have clear interfaces - so you can mock them
• Use explicit names and the API modules evolve
TDD
Freitag, 12. April 13
Thank you
@wolframkriesing
Wolfram Kriesing, CTO
uxebu
Freitag, 12. April 13

Weitere ähnliche Inhalte

Was ist angesagt?

20120329 installing wordpress_3_3_1_locally
20120329 installing wordpress_3_3_1_locally20120329 installing wordpress_3_3_1_locally
20120329 installing wordpress_3_3_1_locally
DERlab
 

Was ist angesagt? (9)

FITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingFITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript Debugging
 
WordPress Local Environments VVV
WordPress Local Environments   VVVWordPress Local Environments   VVV
WordPress Local Environments VVV
 
20120329 installing wordpress_3_3_1_locally
20120329 installing wordpress_3_3_1_locally20120329 installing wordpress_3_3_1_locally
20120329 installing wordpress_3_3_1_locally
 
Test Driving a jQuery Plugin
Test Driving a jQuery PluginTest Driving a jQuery Plugin
Test Driving a jQuery Plugin
 
Full stack, Full run, Full test
Full stack, Full run, Full testFull stack, Full run, Full test
Full stack, Full run, Full test
 
Ember & WebComponents
Ember & WebComponentsEmber & WebComponents
Ember & WebComponents
 
Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!
 
Debugging rails
Debugging railsDebugging rails
Debugging rails
 
Put kajakken på hylden - og få sexede windows services
Put kajakken på hylden - og få sexede windows servicesPut kajakken på hylden - og få sexede windows services
Put kajakken på hylden - og få sexede windows services
 

Andere mochten auch

Webtestsuite black berrydevcon
Webtestsuite black berrydevconWebtestsuite black berrydevcon
Webtestsuite black berrydevcon
wolframkriesing
 
Java scriptgettingstarted
Java scriptgettingstartedJava scriptgettingstarted
Java scriptgettingstarted
wolframkriesing
 
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
wolframkriesing
 
Webmontag München Cross Platform
Webmontag München Cross PlatformWebmontag München Cross Platform
Webmontag München Cross Platform
wolframkriesing
 
Pixelplant - WebDev Meetup Salzburg
Pixelplant - WebDev Meetup SalzburgPixelplant - WebDev Meetup Salzburg
Pixelplant - WebDev Meetup Salzburg
wolframkriesing
 

Andere mochten auch (18)

Mobile Apps Cross Platform - Droidcon 2009
Mobile Apps Cross Platform - Droidcon 2009Mobile Apps Cross Platform - Droidcon 2009
Mobile Apps Cross Platform - Droidcon 2009
 
Webtestsuite black berrydevcon
Webtestsuite black berrydevconWebtestsuite black berrydevcon
Webtestsuite black berrydevcon
 
April JavaScript Tools
April JavaScript ToolsApril JavaScript Tools
April JavaScript Tools
 
Mobile Apps Cross Platform - Overtheair London, 2009
Mobile Apps Cross Platform - Overtheair London, 2009Mobile Apps Cross Platform - Overtheair London, 2009
Mobile Apps Cross Platform - Overtheair London, 2009
 
embedJS
embedJSembedJS
embedJS
 
Java scriptgettingstarted
Java scriptgettingstartedJava scriptgettingstarted
Java scriptgettingstarted
 
JavaScript Tools (PHPConference 2011, Berlin)
JavaScript Tools (PHPConference 2011, Berlin)JavaScript Tools (PHPConference 2011, Berlin)
JavaScript Tools (PHPConference 2011, Berlin)
 
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
Uxebu Introduction (Giesecke & Devrient Mobile Security Forum)
 
Mobile Apps Cross Platform Mobile Monday Düsseldorf 2009
Mobile Apps Cross Platform Mobile Monday Düsseldorf 2009Mobile Apps Cross Platform Mobile Monday Düsseldorf 2009
Mobile Apps Cross Platform Mobile Monday Düsseldorf 2009
 
Dojo Basics Js UserGroup Chicago
Dojo Basics Js UserGroup ChicagoDojo Basics Js UserGroup Chicago
Dojo Basics Js UserGroup Chicago
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Development
 
TDD with Google Spreadsheets #enterjs 2015
TDD with Google Spreadsheets #enterjs 2015TDD with Google Spreadsheets #enterjs 2015
TDD with Google Spreadsheets #enterjs 2015
 
Webmontag München Cross Platform
Webmontag München Cross PlatformWebmontag München Cross Platform
Webmontag München Cross Platform
 
Mobile Apps Cross Platform - Webmontag Frankfurt 2009
Mobile Apps Cross Platform - Webmontag Frankfurt 2009Mobile Apps Cross Platform - Webmontag Frankfurt 2009
Mobile Apps Cross Platform - Webmontag Frankfurt 2009
 
EmbedJS
EmbedJSEmbedJS
EmbedJS
 
TDD with Google Spreadsheets
TDD with Google SpreadsheetsTDD with Google Spreadsheets
TDD with Google Spreadsheets
 
Mobile Cross Platform MWC Barcelona 2010 at Vodafone App Planet
Mobile Cross Platform MWC Barcelona 2010 at Vodafone App PlanetMobile Cross Platform MWC Barcelona 2010 at Vodafone App Planet
Mobile Cross Platform MWC Barcelona 2010 at Vodafone App Planet
 
Pixelplant - WebDev Meetup Salzburg
Pixelplant - WebDev Meetup SalzburgPixelplant - WebDev Meetup Salzburg
Pixelplant - WebDev Meetup Salzburg
 

Ähnlich wie Better Code through TDD

Intro to JavaScript Testing
Intro to JavaScript TestingIntro to JavaScript Testing
Intro to JavaScript Testing
Ran Mizrahi
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingTools
Yury Chemerkin
 
GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
roumia
 
Building scalable applications while scaling your infrastructure by rhommel l...
Building scalable applications while scaling your infrastructure by rhommel l...Building scalable applications while scaling your infrastructure by rhommel l...
Building scalable applications while scaling your infrastructure by rhommel l...
NETWAYS
 

Ähnlich wie Better Code through TDD (20)

Apache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins
Apache TomEE, Java EE 6 Web Profile on Tomcat - David BlevinsApache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins
Apache TomEE, Java EE 6 Web Profile on Tomcat - David Blevins
 
Optimize drupal
Optimize drupalOptimize drupal
Optimize drupal
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practices
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testing
 
LiveRebel + Pragmatic Continuous Delivery (Arcusys)
LiveRebel + Pragmatic Continuous Delivery (Arcusys)LiveRebel + Pragmatic Continuous Delivery (Arcusys)
LiveRebel + Pragmatic Continuous Delivery (Arcusys)
 
Drupal Development Tips
Drupal Development TipsDrupal Development Tips
Drupal Development Tips
 
Intro to JavaScript Testing
Intro to JavaScript TestingIntro to JavaScript Testing
Intro to JavaScript Testing
 
Continuous Security Testing
Continuous Security TestingContinuous Security Testing
Continuous Security Testing
 
TriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingToolsTriplePlay-WebAppPenTestingTools
TriplePlay-WebAppPenTestingTools
 
Backbone
BackboneBackbone
Backbone
 
Let's speed it up a bit (AmsterdamPHP)
Let's speed it up a bit (AmsterdamPHP)Let's speed it up a bit (AmsterdamPHP)
Let's speed it up a bit (AmsterdamPHP)
 
Tungsten Replicator tutorial
Tungsten Replicator tutorialTungsten Replicator tutorial
Tungsten Replicator tutorial
 
ruby test-all parallel running
ruby test-all parallel runningruby test-all parallel running
ruby test-all parallel running
 
Introduction to Express and Grunt
Introduction to Express and GruntIntroduction to Express and Grunt
Introduction to Express and Grunt
 
Chef - Configuration Management for the Cloud
Chef - Configuration Management for the CloudChef - Configuration Management for the Cloud
Chef - Configuration Management for the Cloud
 
Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013
 
IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)
 
GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
 
MVC way to introduce Sails.js - node.js framework
MVC way to introduce Sails.js - node.js frameworkMVC way to introduce Sails.js - node.js framework
MVC way to introduce Sails.js - node.js framework
 
Building scalable applications while scaling your infrastructure by rhommel l...
Building scalable applications while scaling your infrastructure by rhommel l...Building scalable applications while scaling your infrastructure by rhommel l...
Building scalable applications while scaling your infrastructure by rhommel l...
 

Mehr von wolframkriesing

react.js - DOM as it was meant
react.js - DOM as it was meantreact.js - DOM as it was meant
react.js - DOM as it was meant
wolframkriesing
 
Presentation Mobile Monday Munich, March 2012
Presentation Mobile Monday Munich, March 2012Presentation Mobile Monday Munich, March 2012
Presentation Mobile Monday Munich, March 2012
wolframkriesing
 
NEXT11, Puzzle pieces of our mobile web approach
NEXT11, Puzzle pieces of our mobile web approachNEXT11, Puzzle pieces of our mobile web approach
NEXT11, Puzzle pieces of our mobile web approach
wolframkriesing
 

Mehr von wolframkriesing (20)

JavaScript The Language Meetup - Async functions
JavaScript The Language Meetup - Async functionsJavaScript The Language Meetup - Async functions
JavaScript The Language Meetup - Async functions
 
Our react-native experiences at crewmeister
Our react-native experiences at crewmeisterOur react-native experiences at crewmeister
Our react-native experiences at crewmeister
 
ES6 katas - talk given at enterjs
ES6 katas - talk given at enterjsES6 katas - talk given at enterjs
ES6 katas - talk given at enterjs
 
TDD for Kids - VLCjs (Valencia Spain, July 2015)
TDD for Kids - VLCjs (Valencia Spain, July 2015)TDD for Kids - VLCjs (Valencia Spain, July 2015)
TDD for Kids - VLCjs (Valencia Spain, July 2015)
 
ES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behindES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behind
 
Baby steps
Baby stepsBaby steps
Baby steps
 
ECMAScript 6 for real
ECMAScript 6 for realECMAScript 6 for real
ECMAScript 6 for real
 
Refactoring out of the mess
Refactoring out of the messRefactoring out of the mess
Refactoring out of the mess
 
Day2 - Refactoring (Lecture SS 2015)
Day2 - Refactoring (Lecture SS 2015)Day2 - Refactoring (Lecture SS 2015)
Day2 - Refactoring (Lecture SS 2015)
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)
 
react.js - DOM as it was meant
react.js - DOM as it was meantreact.js - DOM as it was meant
react.js - DOM as it was meant
 
Presentation Mobile Monday Munich, March 2012
Presentation Mobile Monday Munich, March 2012Presentation Mobile Monday Munich, March 2012
Presentation Mobile Monday Munich, March 2012
 
WAC
WACWAC
WAC
 
NEXT11, Puzzle pieces of our mobile web approach
NEXT11, Puzzle pieces of our mobile web approachNEXT11, Puzzle pieces of our mobile web approach
NEXT11, Puzzle pieces of our mobile web approach
 
Munichjs javascript
Munichjs javascriptMunichjs javascript
Munichjs javascript
 
HTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit BangaloreHTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit Bangalore
 
Best Practices - Mobile Developer Summit
Best Practices - Mobile Developer SummitBest Practices - Mobile Developer Summit
Best Practices - Mobile Developer Summit
 
Mobile Future - Mobile Developer Summit Bangalore
Mobile Future - Mobile Developer Summit BangaloreMobile Future - Mobile Developer Summit Bangalore
Mobile Future - Mobile Developer Summit Bangalore
 
App vs. Widget (HTML5 Apps) - WebTechCon 2010
App vs. Widget (HTML5 Apps) - WebTechCon 2010App vs. Widget (HTML5 Apps) - WebTechCon 2010
App vs. Widget (HTML5 Apps) - WebTechCon 2010
 
HTML5 Apps - Cross platform
HTML5 Apps - Cross platformHTML5 Apps - Cross platform
HTML5 Apps - Cross platform
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Better Code through TDD