SlideShare une entreprise Scribd logo
1  sur  141
Télécharger pour lire hors ligne
LESSONS FROM A CODING
      VETERAN
TOM HUGHES-CROUCHER
     @sh1mmer
Stuff to be “proud of ”
BSc 1st Class (Hons) Computer    Scalable Server-Side Code with JavaScript


Science

Helped write two W3C standards

Written code for:

  NASA
  Tesco
  Channel 4
                                 Node                     Up and Running



  Three Telecom
                                                         Tom Hughes-Croucher
  Yahoo!
3 RULES TO LIVE BY
RULE 1.
COMPLEXITY IS THE ENEMY
WHAT IS COMPLEXITY?
COMPLEXITY IS...
...TOO MANY FEATURES
...UNINTELLIGIBLE CODE
...CODE THAT DOES THINGS
    MORE THAN ONE WAY
...TOOMUCHCODETHATJUSTGOE
SONANDONANDRUNSTOGETHER
COMPLEXITY IS...
...ANYTHING THAT
REDUCES UNDERSTANDING
WHY IS UNDERSTANDING
   SO IMPORTANT?
“BUILD TWITTER”
What is Twitter?

140 character micro-blogging service

AJAX web site

API

Scalability (sort of)

etc
“BUILD TWITTER” IS NOT
  UNDERSTANDABLE
COMPUTERS REQUIRE
PERFECT INSTRUCTIONS
PERFECTION REQUIRES
  UNDERSTANDING
RULE 1A.
HAVE A CLEAR GOAL
TANGIBLE OBJECTIVE
IT IS YOUR JOB AS DEVELOPER
TO ACCEPT THE REQUIREMENTS
CLEAR OUTCOME
SUCCESS = ??
A WAY TO MEASURE
    SUCCESS
TDD
PUBLIC API
AGILE ALLOWS YOU TO FAIL
          FAST
FAILING FAST ALLOWS
REDUCE COST OF DEFINITION
RULE 1B.
WRITE CODE YOU* CAN UNDERSTAND




                        * and your team
function(a,b,c){return{pub:function(d,e){for(c in a)if
(c.split("-")[0]==d)a[c](e)!==!1||delete a[c]},sub:function
(d,e){a[d+--b]=e}}}({},0)
function(
  a, // the subscription object
  b, // the current event number
  c // (placeholder)
){
  return {             // return an object, with
    pub: function(     // a "pub" function that takes
      d,                // a channel name and
      e                 // a message value,
    ){                 // and
      for(              // for each
        c               // subscriber
        in a            // in the subscription object,
      ) if (            // if
        c               // its name, with the event number discarded
          .split         // by splitting it
          ("-")          // with a hyphen and
          [0]            // taking only the first part,
          == d           // is equal to the published channel
      ) a[c](e)         // call the subscriber. and if
        !== !1 ||       // the value returned is false
        delete a[c] // unsubscribe by removing the subscriber, and
    },
    
    sub: function(     // a "sub" function that takes
      d,                // a channel name and
      e                 // a subscriber function
    ){                 // and,
      a[                // on the subscriptions object,
        d +             // sets the name of the channel appended with
        --b             // a hyphen and the decremented event number, to
      ] = e             // the function passed.
    }
  }
}(    // auto-run with
  {}, // the subscription object
  0   // and event id.
)
LIKE “REAL” CODE
TERSE != BETTER
LANGUAGES ARE
  EXPRESSIVE
//this is JavaScript
var isTrue

if (true) {
  isTrue = true
}
//still JavaScript
var isTrue = true ? true : undefined
ANOTHER EXAMPLE
var c = Math.floor(b)
var c = ~~b
YOUR BRAIN HAS MORE TO
      REMEMBER
FRENCH VS. ENGLISH
THERE ARE MANY REAL
PATTERNS TO REMEMBER
DON’T ADD SYNONYMOUS
      PATTERNS
RULE 1C.
PICK SOME CONVENTIONS
BE OPINIONATED
AS LONG AS YOU STICK TO IT
PLACE { AFTER )
function buildObjectLiteral()
{
   return // this returns!
   {
      "someProperty": "hello"
   };
}
STUPID ERROR
STUPID CODE
IF YOU PICK A GOOD STYLE YOU
  WON’T WRITE STUPID CODE
SEMI-COLON FIRST
  JAVASCRIPT
// return whatever was printed
function showFields (data, version, fields) {
  var o = {}
  ;[data,version].forEach(function (s) {
     Object.keys(s).forEach(function (k) {
        o[k] = s[k]
     })
  })
  return search(o, fields.split("."), version._id, fields)
}
YOU CAN PICK ALL
 KINDS OF STYLES
MOST IMPORTANT IS
  CONSISTENCY
RULE 1D.
USE ABSTRACTION WISELY
SIMPLE VS COMPLEX
Browser   Server
ABSTRACTION
GET

Browser            Server
          200 OK
TCP (Slow start)




Browser                      Server
ABSTRACTION AIDES
 UNDERSTANDING
ABSTRACTION MAKES
  THINGS SIMPLE
WHEN DOING COMPLEX THINGS
 ABSTRACTION MAKE THINGS
      MORE COMPLEX
//node.js style JavaScript

query = mysql.query('SELECT * FROM data');

query.on(‘result’, function(result) {
  for(var i=0;i<length;i++) {
    var row = result.rows[i];
    //do something with the row
  }
});
//threaded style JavaScript

result = mysql.query('SELECT * FROM data');

for(var i=0;i<length;i++) {
  var row = result.rows[i];
  //do something with the row
}
var x = "I am a string"

~1ns   Running 1   instruction
2ns    Data from   l1 cpu cache
5ns    Data from   l2 cpu cache
80ns   Data from   ram
query

Server            mySQL
         result
result = mysql.query('SELECT * FROM data');

~100ms   Time to run a query in database
50ms     Time to roundtrip query over the network
LOCAL VARIABLE
REMOTE OPERATION
100 Blue Whales



                  Cat
TOO MUCH ABSTRACTION
USE ABSTRACTION WELL
MODULARISATION
BLACK BOXES ARE EASY TO
     UNDERSTAND
DRIVING A CAR ISN’T
ABOUT COMBUSTION
WELL DEFINED APIS
PROVIDE ABSTRACTION
RULE 2.
DON'T OPTIMISE TOO SOON
OPTIMISATION ISN’T JUST
 ABOUT PERFORMANCE
RULE 2A.
1ST DRAFT, 2ND DRAFT
YOU AREN’T THE
KWISATZ HADERACH
YOU HAVE TO WRITE CODE
TO LEARN WHAT YOU NEED
THE FIRST VERSION ALWAYS
          SUCKS
BACK TO AGILE
DESIGNED TO “FAIL”
BUILD IN TIME TO REWRITE
       YOUR CODE
ESTIMATE
+ 1/3 + 1/4
RULE 2B.
 WRITING COMPLEX CODE IS
OK WHEN YOU UNDERSTAND IT
RULE 2B.
 WRITING COMPLEX CODE IS
OK WHEN YOU UNDERSTAND IT
RULE 2B.
REWRITING CODE TO BE MORE COMPLEX
   IS OK WHEN YOU UNDERSTAND IT
SPEED
Math.floor(3.141) //3
~~3.141 //3 but faster
typeof foo === 'number' && !isNaN(foo) && foo !== Infinity
    ? foo > 0 ? Math.floor(foo) : Math.ceil(foo) : 0;

// ~~var in JavaScript explained by James Padosley
// side note (this is why I, personally, dislike ? )
~~VAR IS LIKE MATH.FLOOR
     FOR +INTEGER
RELIABILITY
RULE 2C.
DOCUMENT THE HECK OUT OF
     OPTIMISATIONS
// Using ~~ to floor and generate a random #1-6
(~~(Math.random()*6))+1
RULE 2D.
OPTIMISE WITH TOOLS IF POSSIBLE
JSLINT
YUI/DOJO COMPRESSOR
  CLOSURE COMPILER
CLANG
RULE 3.
ALL RULES ARE MADE TO BE BROKEN
WE ALL WORK FOR
   BUSINESSES
REALITY BITES
DEAL WITH IT
RULE 3A.
IT’S OK TO WRITE SHITTY CODE
       FOR A DEADLINE
YOU HAD A DEADLINE
YOU DRANK TOO MUCH
      COFFEE
STAYED UP ALL NIGHT
YOU UPSET YOUR
[GIRL/BOY]FRIEND
THE CODE YOU WROTE
      SUCKED
SUUUUUUUUUUCCCKKKEED!
BUT IT WORKED
SO. COOL.
RULE 3B.
BREAKING RULES INVOLVES CLEANUP
SOMEONE* WILL HAVE TO
 MAINTAIN THAT CODE



                  * maybe you
SHORTLY AFTER YOU
 WROTE BAD CODE
YOU WILL...
…
...WHAT DOES THIS DO?
CLEAN UP CODE ASAP
SPRINT 1 : CODE THAT SUCKS
SPRINT 2 : CODE THAT DOESN’T
RULE 3C.
RULE BREAKING ISN’T SUSTAINABLE
IT’S CALLED
TECHNICAL DEBT
EVERY OPEN SOURCE
PROJECT YOU FORK
EVERY FUNCTION THAT
 ISN’T DOCUMENTED
EVERY LINE THAT WAS ONLY
     WRITTEN ONCE
TECHNICAL DEBT IS LIKE
    OTHER DEBT
THE MORE OF IT YOU HAVE
 THE HARDER IT IS TO FIX
RULE 3D.
IF YOU KEEP CHEATING GTFO
ENVIRONMENTS THAT DON’T
 CARE ABOUT GOOD CODE
DON’T CARE ABOUT YOU!
STRESS IS NOT GOOD FOR
          LIFE
CODING WITH RULE 1 AND RULE
 2 IS CODING FOR THE FUTURE
CODING WITH RULE 3 IS
  CODING FOR NOW
SHORT-TERM THINKING DOESN’T
  YIELD LONG-TERM RESULTS
Summary
1. Complexity is the enemy   2. Don't optimise too soon

1a. Have a clear goal        2a. 1st draft, 2nd draft

1b. Write code you can       2b. rewriting code to be more
understand                   complex is ok when you
                             understand it
1c. Pick some conventions
                             2c. Document the heck out of
1d. Use abstraction wisely   optimisations

                             2d. optimise with tools if
                             possible
QUESTIONS?


@sh1mmer

Contenu connexe

Similaire à Lessons from a coding veteran - Web Directions @Media

Yeahhhh the final requirement!!!
Yeahhhh the final requirement!!!Yeahhhh the final requirement!!!
Yeahhhh the final requirement!!!
olracoatalub
 
Macasu, gerrell c.
Macasu, gerrell c.Macasu, gerrell c.
Macasu, gerrell c.
gerrell
 
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP  #inc.pdfCODE FOR echo_client.c A simple echo client using TCP  #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
secunderbadtirumalgi
 

Similaire à Lessons from a coding veteran - Web Directions @Media (20)

Clean code slide
Clean code slideClean code slide
Clean code slide
 
Claim Academy Intro to Programming
Claim Academy Intro to ProgrammingClaim Academy Intro to Programming
Claim Academy Intro to Programming
 
Raising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code QualityRaising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code Quality
 
Clean code and code smells
Clean code and code smellsClean code and code smells
Clean code and code smells
 
A Life of breakpoint
A Life of breakpointA Life of breakpoint
A Life of breakpoint
 
Building with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and ConversationBuilding with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and Conversation
 
Web technologies-course 12.pptx
Web technologies-course 12.pptxWeb technologies-course 12.pptx
Web technologies-course 12.pptx
 
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
 
DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)
 
Lazy, Lazy, Lazy all the things !
Lazy, Lazy, Lazy all the things !Lazy, Lazy, Lazy all the things !
Lazy, Lazy, Lazy all the things !
 
Capistrano Overview
Capistrano OverviewCapistrano Overview
Capistrano Overview
 
Yeahhhh the final requirement!!!
Yeahhhh the final requirement!!!Yeahhhh the final requirement!!!
Yeahhhh the final requirement!!!
 
Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0
 
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mindHow to write clean & testable code without losing your mind
How to write clean & testable code without losing your mind
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Clean code
Clean codeClean code
Clean code
 
Wtf per lineofcode
Wtf per lineofcodeWtf per lineofcode
Wtf per lineofcode
 
Macasu, gerrell c.
Macasu, gerrell c.Macasu, gerrell c.
Macasu, gerrell c.
 
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP  #inc.pdfCODE FOR echo_client.c A simple echo client using TCP  #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
 
Learning C++ - Introduction to c++ programming 1
Learning C++ - Introduction to c++ programming 1Learning C++ - Introduction to c++ programming 1
Learning C++ - Introduction to c++ programming 1
 

Plus de Tom Croucher

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Tom Croucher
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Tom Croucher
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
Tom Croucher
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
Tom Croucher
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
Tom Croucher
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
Tom Croucher
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
Tom Croucher
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
Tom Croucher
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
Tom Croucher
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
Tom Croucher
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Tom Croucher
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
Tom Croucher
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
Tom Croucher
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
Tom Croucher
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
Tom Croucher
 

Plus de Tom Croucher (20)

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
 
Sf perf
Sf perfSf perf
Sf perf
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
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
 
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
 
+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@
 

Dernier (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
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
 
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
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
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
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
+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...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 

Lessons from a coding veteran - Web Directions @Media