SlideShare une entreprise Scribd logo
1  sur  41
SilverStripe & Vue.js
Payload Injection for a hybrid frontend approach
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
SilverStripers since 2009 (v2.3.x  )
Small team: 2 1/2 Devs
MVP Development for StartUps
Our tools of choice:
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js GitHub Facts
A progressive, incrementally­adoptable JavaScript framework for building UI on the web.
Version 2.5.17 (228 Releases)
2.617 Commits
193 Contributors
~115k Stars
~16k Forks
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Trivia
Developed as Rapid Prototyping Tool at Google Creative Labs
Super flexible: Usage from library­ to full stack approach
Easy to get started due to a flat learning curve
Implements the Reactive Data­Binding Pattern
Approx as fast as React when it comes to Rendering
0 prod dependencies!
Can be used alongside other libraries or frameworks, e.g. to enhance legacy system
(jQuery... cough...)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Patterns & Features
MVVM
Virtual DOM
Components
Directives
Filter
Computed Properties
Lifecycle Hooks
Routing
Flux/Data­Store implementation ("Vuex")
SSR
...
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js Instance
...with minimal config:
new Vue({
el: '#app',
data: {
message: 'Welcome to StripeCon EU 2018!'
}
});
<div id="app">
<span>{{ message }}</span>
</div>
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js Instance
MVVM implementation with reactive bindings.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Anatomy
A Vue.js App can be considered as composition of components with a clear top­to­bottom
hierarchy.
Public APIs for component­2­component interaction.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
(Simplified) Instance/Component Data Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js with Superpowers: Single File Components
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Tooling: CLI, IDEs, Chrome Extension
Great CLI for project scaffolding with hot reloading, test setup, ...
PlugIns for Atom, VS Code, Sublime, IntelliJ Suite, ...
Chrome extension comes in handy for development!
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Getting started
# Install CLI
npm i -g vue-cli
# Lean setup
vue init simple my-first-vue-app
# Full Nerd-Mode setup
vue init webpack my-crazy-vue-app
cd my-crazy-vue-app && npm run dev
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
So... what about SilverStripe + Vue.js?
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Case Study
Social Media Content Platform for FIFA WSC 2018 
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
The Team
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Requirements
Web Interface for Content Team
Form for creating content snippets of types "video", "image" and "infographic"
Preview/Streaming and Download funcationality
User Roles: "Content Author" and "Admin"
Permission­ and Publishing­Process
Extended Reporting (Download and Access Stats)
Web Interface for MRLs (Media Rights Licensees)
Lean UI with rich presentation of content snippets
Multiple filter options (by team, category, type, ...)
Search functionality
International availability
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Early Platform Mockup
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Challenges
Asset abstraction with v3.6.5
Clean normalized data structure vs. number of DB queries
Frontend data scaffolding on initial request
Fast API
Hybrid Frontend Approach
(MainView as scaffolded SPA, other pages statically via Template Engine)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Decisions
Image Delivery via Cloudinary
Video Delivery via AWS S3 (Pseudo­Streaming via Byte­Range Requests)
Web App Hosting via Rackspace Cloud
SilverStripe Admin UI for Content Team
Customized GridField
Custom modules for Cloudinary and AWS S3 Uploader
HybridSession Module for LoadBalancer support
Vue.js SPA for MainView (only)
Masonry Grid for content snippets ("Postings")
Delivery of most recent data set on initial request ("Payload Injection")
Subsequent requests (filtering, update polling, ...) in RESTful manner
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
What we wanted
Pseudo Hydration: A convenient way to prepare the
posting payload for Vue.js on the initial main view request.
(SSR/Universal App approach whould have been sexy but over engineered)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Payload Injection Flow
MariaDB        fetch  Interface       JSON­to­DOM Injection       "Pickup" by Vue.js
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Posting Model
 Posting  as central  DataObject  with several relations (CLImage, S3File, ....)
Raw Query to minimize the load of DB operations
Desired document format:
- id: number
- created: string
- type: string
- title: string
- recommended: boolean
- category: string
- team: string
- previewImage: string Full URL
- asset: string Full URL
- attachment: string Full URL (optional; e.g. .psd Files)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
 Posting::fetch() 
/**
* @param array $options
* - limit: number, default: 40
* - offset: number, default: 0
* - type: string (see db enum field "Type")
* - created: string (date)
* - recommended: boolean
* - category: string
* - team: string
* - term: string For free text search (>= 3 chars)
* - sortOrder: string (ASC|DESC), default: DESC
* - minID: int
*
* @return array Posting Documents
* @throws FetchException
*/
public static function fetch(array $options = []): array;
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Injecting the payload
public function index(SS_HttpRequest $req) {
// Get options compliant with interface
$opts = $this->extractFetchOptions($req);
// Staging the posting payload for DOM injection
PayloadInjector::stage([
'postings' => Posting::fetch($opts);
]);
return $this->renderWith('MainView');
}
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
 PayloadInjector ...
...collects array data through out request processing.
...normalizes data and converts it to JSON.
...hands it to the renderable data.
Basically it's a convenience wrapper for:
// Consider $data is everything you have "staged" so far
Controller::curr()->customize([
'Payload' => Convert::array2json($payload);
]);
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Making payload available for Vue.js
<!-- MainView.ss -->
<% if $Payload %>
<script>window.payload = $Payload;</script>
<% end_if %>
Note:  PayloadInjector  will handle this in v2
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Making payload available for Vue.js
// main-view.js
import Vue from 'vue';
// Initial data for Vue instance
let data = {
showPreview: false
};
// Merging injected payload
if (typeof payload !== undefined) Object.assign(data, payload);
new Vue(
el: '#app',
data // <--- prepared payload is available through instance data prop
);
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Displaying the payload
<!-- MainView.ss -->
<div id="#app">
<main class="grid">
<div
v-for="posting in postings"
v-bind:key="posting.id"
class="posting-card">
<h2>{{ posting.title }}</h2>
...
</div>
</main>
</div>
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Subsequent Requests
1. SilverStripe Controller Logic (Action­Mapping, Validation, ...)
2.  Posting::fetch($opts)  with options from Request
3. Delivering Posting Documents as JSON
4. Updating the Vue.js data property and let reactive bindings to it's magic 
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Subsequent Requests
// main-view.js
new Vue({
el: '#app',
data,
methods: {
fetch(filterOptions) {
axios.get('http://localhost:8080/posting', {
params: { ...filterOptions }
}).then(res => {
const { payload } = res.data;
// This mutates the postings prop of "data"
// and triggers the attached reactive bindings
this.postings = payload.postings;
});
}
}
});
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Validating the HTTP method for action mapping
private static $url_handlers = [
'posting/$id' => [
'GET' => 'fetchPostings',
'POST' => 'createPosting'
]
];
...powered by a Trait overloading RequestHandler's protected  findAction()  method.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Working on v2
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Hybrid Rendering
Pattern proposed at GoogleIO 2018
Check if a crawler is requesting and deliver optimized resources
The idea is to use the staged data wrapped via  ArrayData  and  ArrayList  and auto­
use templates with  _static.ss  suffix.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Hybrid Rendering: Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils
Command Query Responsibility Segregation
Different models/flows for creating and reading data
The idea is to have a conventional relational DB as "Write Database" and another store
for prepared documents (e.g. Redis, MongoDB or Elastic) as "Read Database"
Step towards the Headless CMS world
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils: Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils: Config
# config.yml
Posting:
extensions:
- CQRSExtension('ID', [ 'store' => 'redis', 'db' => 2 ])
// Posting.php; content of $read_payload is considered the "Payload Manifest"
private static $read_payload = [
'ID',
'Title',
'Category' => 'getCategoryLabel',
'Tags' => [
'required' => false,
'mapping' => 'getTagList'
]
];
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils:  IPayloadStore 
interface IPayloadStore {
public function read(string $key): array;
public function write(string $key, array $payload);
public function delete(string $key);
public function info(string $option = null): array;
public function getName(): string;
}
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Resources 
Official Docs: https://vuejs.org/v2/guide
Weekly Podcast: https://news.vuejs.org
Tutorial: https://laracasts.com/series/learn­vue­2­step­by­step
State of Vue Report: https://www.monterail.com/state­of­vuejs­report
Cheat Sheet: http://www.vuemastery.com
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
https://akryum.github.io/vue­apollo/
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Thanks!   
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51

Contenu connexe

Dernier

247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...Call Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLDeelipZope
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 

Dernier (20)

247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptxExploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCL
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 

En vedette

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

En vedette (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

SilverStripe & Vue.js - A case study