SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Building Rich User Experiences
                                    without
                           JavaScript Spaghetti


                                   by Jared Faris
                                  @jaredthenerd
                                jaredthenerd.com




Friday, June 29, 12
About me




Friday, June 29, 12
Designers




Friday, June 29, 12
Developers




Friday, June 29, 12
JavaScript




Friday, June 29, 12
A Developer’s Problem
                         Building a great user experience is hard.

                      It’s even harder to build them so that they can
                                      grow painlessly.

                          Developers are the only people in the
                          organization that wear every single hat.



Friday, June 29, 12
Problem (part 2)


                  JavaScript lends itself very well to building really
                    horrible code that doesn’t scale. At all. Ever.




Friday, June 29, 12
A Typical Product Lifecycle
                            Somewhat dramatized...




Friday, June 29, 12
Designer   Developer




Friday, June 29, 12
We need this
                        feature




Friday, June 29, 12
I got this




Friday, June 29, 12
?




Friday, June 29, 12
Tweaking time...




Friday, June 29, 12
I got another
                        great idea




Friday, June 29, 12
Now you tell
                         me




Friday, June 29, 12
The developer bolts on some more code




Friday, June 29, 12
And another
                        thing...




Friday, June 29, 12
grrr




Friday, June 29, 12
We don’t
                       ‘really’
                      need this




Friday, June 29, 12
Uh, yeah we
                           do




Friday, June 29, 12
Friday, June 29, 12
The developer bolts on some more code




Friday, June 29, 12
Some time passes

                                    ‘Some time’ is defined as:
                      Just long enough that the developer doesn’t remember
                                exactly how his original code works.




Friday, June 29, 12
I’ve got a new
                          feature




Friday, June 29, 12
Angry developers
                      can really do this.
                       IT managers be
                           warned.




Friday, June 29, 12
Protective Beret




Friday, June 29, 12
More messy code




Friday, June 29, 12
The last bug




                      Oh wait, one more




Friday, June 29, 12
Finally




Friday, June 29, 12
The next day...




Friday, June 29, 12
Friday, June 29, 12
Two weeks pass.




Friday, June 29, 12
I’ve got a new
                          feature
                                       Gahh!




Friday, June 29, 12
Friday, June 29, 12
No developers were harmed in the making
                           of this dramatic reenactment.




Friday, June 29, 12
Additional Features + Short Sighted Architecting
                         = Horrible JavaScript Spaghetti




Friday, June 29, 12
Why does this happen?

                       This is where you earn audience participation points.




Friday, June 29, 12
Some Reasons
               • JavaScript isn’t real code
               • We don’t treat client side things as real features
               • We can’t easily test it
               • We don’t like writing it
               • It behaves differently in different browsers



Friday, June 29, 12
This really all boils down to one thing.


                        We developers suck at JavaScript.




Friday, June 29, 12
Three JavaScript Principles

                           • Decouple everything
                           • Make it testable
                           • Push events, not state




Friday, June 29, 12
Decouple Everything

                      Start thinking about UI pieces as individual JS objects.
                             Remove dependencies between objects.
                             Apply your OO best practices here too.




Friday, June 29, 12
Make It Testable

                       Separate DOM dependent stuff into a single layer.
                      Put the rest of the stuff in classes that you can test.




Friday, June 29, 12
Push Events, Not State

                            Know about the Law of Demeter.
                        Let controls worry about their own state.
                  Inform other controls that “X happened to Y”, not “Y is
                                        in X state”




Friday, June 29, 12
Some Patterns




Friday, June 29, 12
OO

                      • Think in terms of classes
                      • Give behaviors to objects
                      • Keep state inside of objects




Friday, June 29, 12
Mediator Pattern
                      "The essence of the Mediator Pattern is to "Define an
                      object that encapsulates how a set of objects interact.
                      Mediator promotes loose coupling by keeping objects
                       from referring to each other explicitly, and it lets you
                              vary their interaction independently."
                           -Design Patterns: Elements of Reusable Object-Oriented Software




Friday, June 29, 12
NavControlMediator

                         itemSelected()




                          unselectAll()




                      Events from some
                        other object
Friday, June 29, 12
Observer Pattern
                  "Define a one-to-many dependency between objects so
                   that when one object changes state, all its dependents
                          are notified and updated automatically."
                       -Design Patterns: Elements of Reusable Object-Oriented Software




                            Think jQuery $(‘.something’).click()


Friday, June 29, 12
NavControlMediator

                         itemSelected()
                         viewModel




                          unselectAll()




                      Events from some
                        other object
Friday, June 29, 12
Knockout.js Template Example




Friday, June 29, 12
Pub/Sub + Fairy Dust = Service Bus

                         Pub/Sub is great to make sure events propagate.
                      It starts to get brittle with lots of different controls.




Friday, June 29, 12
Way Too Much Pubbing and Subbing




Friday, June 29, 12
Service Bus

                  A service bus is another layer that sits outside controls.
                   Controls that want to communicate speak through it.
                   Your controls are then only coupled to a single thing.




Friday, June 29, 12
Postal.js




Friday, June 29, 12
Service Bus + Mediator
                 • Controls no longer need to know about others.
                 • We can remove/replace controls individually.
                 • We can add controls that listen to the same events
                 without modifying the publisher.
                 • We can re-use pieces more easily because they work
                 in a standard way.




Friday, June 29, 12
NavControlMediator

                       itemSelected()
                       viewModel



                                              Service Bus
                        unselectAll()




                        Events from some
                          other object



                             ReportMediator

                            itemChanged()
                            viewModel




                             unselectAll()




Friday, June 29, 12
HistoryControl
                      NavControlMediator

                       itemSelected()
                       viewModel



                                              Service Bus
                        unselectAll()




                        Events from some
                          other object



                             ReportMediator

                            itemChanged()
                            viewModel




                             unselectAll()




Friday, June 29, 12
Service Bus


                               TeamControl
                                No view model



                              Gets team changed
                             message, makes AJAX
                            call for this team’s data,
                          rewrites team with template




Friday, June 29, 12
Service Bus




Friday, June 29, 12
Questions About Patterns?




Friday, June 29, 12
A Typical Product Lifecycle
                                Round Two




Friday, June 29, 12
We need this
                        feature




Friday, June 29, 12
I got a few
                       questions




Friday, June 29, 12
?




Friday, June 29, 12
Tweaking time...




Friday, June 29, 12
I got another
                        great idea




Friday, June 29, 12
Ok, Cool




Friday, June 29, 12
And another
                        thing...




Friday, June 29, 12
Done.




Friday, June 29, 12
Two weeks pass...




Friday, June 29, 12
I’ve got a new
                          feature




Friday, June 29, 12
No worries.




Friday, June 29, 12
Wha? Ohhhk.




Friday, June 29, 12
A short time later...




Friday, June 29, 12
Friday, June 29, 12
Special thanks to




                      He did the frame art
                            Blame me for
                           everything else




Friday, June 29, 12
Examples




Friday, June 29, 12
A KO Warning
                         It’s really easy to go overboard with KO events.


                      I prefer to use KO for the VM binding (observables and
                             computeds) but rely on jQuery for events.

                      jQuery’s .on() binding and a good understanding of ‘this’
                                  makes for much cleaner events.



Friday, June 29, 12
Easy Testing

                       Try to have layers of your application’s JS that don’t
                                   touch any HTML elements.


                      Store data in models inside individual controls and test
                        that published messages change the state of those
                                        models correctly.



Friday, June 29, 12
Why Not Backbone.js?




Friday, June 29, 12
Shared Model




Friday, June 29, 12
NavControlMediator

                       itemSelected()
                       viewModel



                                              Service Bus
                        unselectAll()




                        Events from some
                          other object



                             ReportMediator

                            itemChanged()
                            viewModel




                             unselectAll()




Friday, June 29, 12
Tools Make This Easier

                             Underscore.js
                             Coffeescript
                              Templates




Friday, June 29, 12
Knockout.js - Observer pattern (pub/sub)
                                                 http://knockoutjs.com/
                                              http://learn.knockoutjs.com/




                                         Postal.js - Service bus
                                     https://github.com/ifandelse/postal.js
        http://freshbrewedcode.com/jimcowart/2011/12/05/client-side-messaging-with-postal-js-part-1/
                    http://www.jaredthenerd.com/2012/01/using-postaljs-for-client-side.html




                                                     Patterns
                      http://arguments.callee.info/2009/05/18/javascript-design-patterns--mediator/
                          http://msdn.microsoft.com/en-us/magazine/hh201955.aspx (Pub/Sub)




Friday, June 29, 12
Rate Me
                       http://spkr8.com/t/12731



                               My Stuff
                             @jaredthenerd
                           jfaris@gmail.com
                      https://github.com/jaredfaris
                        http://jaredthenerd.com




Friday, June 29, 12

Mais conteúdo relacionado

Destaque

Insight uri din online1
Insight uri din online1Insight uri din online1
Insight uri din online1DigitalReport
 
Com score ars when advertising goes digital
Com score ars   when advertising goes digitalCom score ars   when advertising goes digital
Com score ars when advertising goes digitalDigitalReport
 
Apple Locating
Apple LocatingApple Locating
Apple LocatingRyan Crowe
 
Ņukšu pagasts – mūsu mājas_MD
Ņukšu pagasts – mūsu mājas_MDŅukšu pagasts – mūsu mājas_MD
Ņukšu pagasts – mūsu mājas_MDnuksubibl
 
Customer Service?
Customer Service?Customer Service?
Customer Service?Ryan Crowe
 
Ons Brabant, de afhankelijkheid van het landschap
Ons Brabant, de afhankelijkheid van het landschap Ons Brabant, de afhankelijkheid van het landschap
Ons Brabant, de afhankelijkheid van het landschap HKblabla
 
Who's getting social final
Who's getting social finalWho's getting social final
Who's getting social finalDigitalReport
 
De Duurzame Stad volgens HKB
De Duurzame Stad volgens HKBDe Duurzame Stad volgens HKB
De Duurzame Stad volgens HKBHKblabla
 
Profile Innovative Hr Solution
Profile Innovative Hr SolutionProfile Innovative Hr Solution
Profile Innovative Hr SolutionSACHDEVNILESH
 
Dossier c.i. 2010 11
Dossier c.i. 2010 11Dossier c.i. 2010 11
Dossier c.i. 2010 11david
 
Personal leadership 2 "Interdependent"
Personal leadership 2 "Interdependent" Personal leadership 2 "Interdependent"
Personal leadership 2 "Interdependent" Karim Fathy
 
19.10.2011 ajujaht keynote, raido pikkar
19.10.2011 ajujaht keynote, raido pikkar 19.10.2011 ajujaht keynote, raido pikkar
19.10.2011 ajujaht keynote, raido pikkar Raido Pikkar
 
Use all the buzzwords
Use all the buzzwordsUse all the buzzwords
Use all the buzzwordsJared Faris
 
Redessocialesprezi
RedessocialespreziRedessocialesprezi
RedessocialespreziPaola Avila
 
Building Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiBuilding Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiJared Faris
 

Destaque (20)

Insight uri din online1
Insight uri din online1Insight uri din online1
Insight uri din online1
 
Klasseledelse1
Klasseledelse1Klasseledelse1
Klasseledelse1
 
Pel eksamen høst 2010
Pel eksamen høst 2010Pel eksamen høst 2010
Pel eksamen høst 2010
 
Com score ars when advertising goes digital
Com score ars   when advertising goes digitalCom score ars   when advertising goes digital
Com score ars when advertising goes digital
 
Apple Locating
Apple LocatingApple Locating
Apple Locating
 
Ņukšu pagasts – mūsu mājas_MD
Ņukšu pagasts – mūsu mājas_MDŅukšu pagasts – mūsu mājas_MD
Ņukšu pagasts – mūsu mājas_MD
 
Customer Service?
Customer Service?Customer Service?
Customer Service?
 
Ons Brabant, de afhankelijkheid van het landschap
Ons Brabant, de afhankelijkheid van het landschap Ons Brabant, de afhankelijkheid van het landschap
Ons Brabant, de afhankelijkheid van het landschap
 
Klasseledelse
KlasseledelseKlasseledelse
Klasseledelse
 
Jurnal digital
Jurnal digitalJurnal digital
Jurnal digital
 
Who's getting social final
Who's getting social finalWho's getting social final
Who's getting social final
 
De Duurzame Stad volgens HKB
De Duurzame Stad volgens HKBDe Duurzame Stad volgens HKB
De Duurzame Stad volgens HKB
 
Profile Innovative Hr Solution
Profile Innovative Hr SolutionProfile Innovative Hr Solution
Profile Innovative Hr Solution
 
Pavasaris
PavasarisPavasaris
Pavasaris
 
Dossier c.i. 2010 11
Dossier c.i. 2010 11Dossier c.i. 2010 11
Dossier c.i. 2010 11
 
Personal leadership 2 "Interdependent"
Personal leadership 2 "Interdependent" Personal leadership 2 "Interdependent"
Personal leadership 2 "Interdependent"
 
19.10.2011 ajujaht keynote, raido pikkar
19.10.2011 ajujaht keynote, raido pikkar 19.10.2011 ajujaht keynote, raido pikkar
19.10.2011 ajujaht keynote, raido pikkar
 
Use all the buzzwords
Use all the buzzwordsUse all the buzzwords
Use all the buzzwords
 
Redessocialesprezi
RedessocialespreziRedessocialesprezi
Redessocialesprezi
 
Building Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiBuilding Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript Spaghetti
 

Semelhante a Build Rich UX without JS Spaghetti

Lean Startup Machine Shanghai 2012 - Kick Off Presentation
Lean Startup Machine Shanghai 2012 - Kick Off PresentationLean Startup Machine Shanghai 2012 - Kick Off Presentation
Lean Startup Machine Shanghai 2012 - Kick Off Presentationtechyizu
 
Choose Your Own Adventure 3: The Final Countdown/Return of the Rainbows
Choose Your Own Adventure 3: The Final Countdown/Return of the RainbowsChoose Your Own Adventure 3: The Final Countdown/Return of the Rainbows
Choose Your Own Adventure 3: The Final Countdown/Return of the RainbowsAdam Jacob
 
Ux paper prototyping
Ux paper prototypingUx paper prototyping
Ux paper prototypingGrace Ng
 
Products = Mess - How to avoid it? By Suman Mukherjee
Products = Mess - How to avoid it?  By Suman MukherjeeProducts = Mess - How to avoid it?  By Suman Mukherjee
Products = Mess - How to avoid it? By Suman MukherjeeWebGeek Philippines
 
Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012500 Startups
 
Elements of Excellence in Online Learning
Elements of Excellence in Online LearningElements of Excellence in Online Learning
Elements of Excellence in Online LearningMaria Erb
 
Talk at Ken Goldberg's Berkeley Lab - June 12th
Talk at Ken Goldberg's Berkeley Lab - June 12thTalk at Ken Goldberg's Berkeley Lab - June 12th
Talk at Ken Goldberg's Berkeley Lab - June 12thNick Pinkston
 
Open Inclusive Design
Open Inclusive DesignOpen Inclusive Design
Open Inclusive Designcolinbdclark
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with EaseConcentric Sky
 
Building a compiler in JRuby
Building a compiler in JRubyBuilding a compiler in JRuby
Building a compiler in JRubyakinsgre
 
7pitfall for crappy UI design
7pitfall for crappy UI design7pitfall for crappy UI design
7pitfall for crappy UI designjunxiao
 
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...Phil Calçado
 
Developer Tools State of the Union
Developer Tools State of the UnionDeveloper Tools State of the Union
Developer Tools State of the UnionAtlassian
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine LearningKevin McCarthy
 
The Web Designers Toolkit
The Web Designers ToolkitThe Web Designers Toolkit
The Web Designers ToolkitR/GA
 
Columbus Startup Weekend #7 - Pep Talk Deck
Columbus Startup Weekend #7 - Pep Talk DeckColumbus Startup Weekend #7 - Pep Talk Deck
Columbus Startup Weekend #7 - Pep Talk DeckDan Rockwell
 
[T3CON12CA] TYPO3 Phoenix - The Current State
[T3CON12CA] TYPO3 Phoenix - The Current State[T3CON12CA] TYPO3 Phoenix - The Current State
[T3CON12CA] TYPO3 Phoenix - The Current StateChristian Müller
 

Semelhante a Build Rich UX without JS Spaghetti (20)

Lean Startup Machine Shanghai 2012 - Kick Off Presentation
Lean Startup Machine Shanghai 2012 - Kick Off PresentationLean Startup Machine Shanghai 2012 - Kick Off Presentation
Lean Startup Machine Shanghai 2012 - Kick Off Presentation
 
Choose Your Own Adventure 3: The Final Countdown/Return of the Rainbows
Choose Your Own Adventure 3: The Final Countdown/Return of the RainbowsChoose Your Own Adventure 3: The Final Countdown/Return of the Rainbows
Choose Your Own Adventure 3: The Final Countdown/Return of the Rainbows
 
Ux paper prototyping
Ux paper prototypingUx paper prototyping
Ux paper prototyping
 
Products = Mess - How to avoid it? By Suman Mukherjee
Products = Mess - How to avoid it?  By Suman MukherjeeProducts = Mess - How to avoid it?  By Suman Mukherjee
Products = Mess - How to avoid it? By Suman Mukherjee
 
Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012
 
Elements of Excellence in Online Learning
Elements of Excellence in Online LearningElements of Excellence in Online Learning
Elements of Excellence in Online Learning
 
Talk at Ken Goldberg's Berkeley Lab - June 12th
Talk at Ken Goldberg's Berkeley Lab - June 12thTalk at Ken Goldberg's Berkeley Lab - June 12th
Talk at Ken Goldberg's Berkeley Lab - June 12th
 
Open Inclusive Design
Open Inclusive DesignOpen Inclusive Design
Open Inclusive Design
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with Ease
 
Reef - ESUG2011
Reef  - ESUG2011Reef  - ESUG2011
Reef - ESUG2011
 
100% JS
100% JS100% JS
100% JS
 
Introduction to Agile for SIPA
Introduction to Agile for SIPAIntroduction to Agile for SIPA
Introduction to Agile for SIPA
 
Building a compiler in JRuby
Building a compiler in JRubyBuilding a compiler in JRuby
Building a compiler in JRuby
 
7pitfall for crappy UI design
7pitfall for crappy UI design7pitfall for crappy UI design
7pitfall for crappy UI design
 
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...
Berlin-Brandenburg Scala User Group: objects can still teach us one or two th...
 
Developer Tools State of the Union
Developer Tools State of the UnionDeveloper Tools State of the Union
Developer Tools State of the Union
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine Learning
 
The Web Designers Toolkit
The Web Designers ToolkitThe Web Designers Toolkit
The Web Designers Toolkit
 
Columbus Startup Weekend #7 - Pep Talk Deck
Columbus Startup Weekend #7 - Pep Talk DeckColumbus Startup Weekend #7 - Pep Talk Deck
Columbus Startup Weekend #7 - Pep Talk Deck
 
[T3CON12CA] TYPO3 Phoenix - The Current State
[T3CON12CA] TYPO3 Phoenix - The Current State[T3CON12CA] TYPO3 Phoenix - The Current State
[T3CON12CA] TYPO3 Phoenix - The Current State
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
[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.pdfhans926745
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Último (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
[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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

Build Rich UX without JS Spaghetti