SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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...
 

Mais de 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
 

Mais de 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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Better Code through TDD