SlideShare a Scribd company logo
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

More Related Content

Recently uploaded

This study Examines the Effectiveness of Talent Procurement through the Imple...
This study Examines the Effectiveness of Talent Procurement through the Imple...This study Examines the Effectiveness of Talent Procurement through the Imple...
This study Examines the Effectiveness of Talent Procurement through the Imple...
DharmaBanothu
 
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
sydezfe
 
Blood finder application project report (1).pdf
Blood finder application project report (1).pdfBlood finder application project report (1).pdf
Blood finder application project report (1).pdf
Kamal Acharya
 
Digital Twins Computer Networking Paper Presentation.pptx
Digital Twins Computer Networking Paper Presentation.pptxDigital Twins Computer Networking Paper Presentation.pptx
Digital Twins Computer Networking Paper Presentation.pptx
aryanpankaj78
 
openshift technical overview - Flow of openshift containerisatoin
openshift technical overview - Flow of openshift containerisatoinopenshift technical overview - Flow of openshift containerisatoin
openshift technical overview - Flow of openshift containerisatoin
snaprevwdev
 
smart pill dispenser is designed to improve medication adherence and safety f...
smart pill dispenser is designed to improve medication adherence and safety f...smart pill dispenser is designed to improve medication adherence and safety f...
smart pill dispenser is designed to improve medication adherence and safety f...
um7474492
 
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
upoux
 
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdfAsymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
felixwold
 
Applications of artificial Intelligence in Mechanical Engineering.pdf
Applications of artificial Intelligence in Mechanical Engineering.pdfApplications of artificial Intelligence in Mechanical Engineering.pdf
Applications of artificial Intelligence in Mechanical Engineering.pdf
Atif Razi
 
Unit -II Spectroscopy - EC I B.Tech.pdf
Unit -II Spectroscopy - EC  I B.Tech.pdfUnit -II Spectroscopy - EC  I B.Tech.pdf
Unit -II Spectroscopy - EC I B.Tech.pdf
TeluguBadi
 
Generative AI Use cases applications solutions and implementation.pdf
Generative AI Use cases applications solutions and implementation.pdfGenerative AI Use cases applications solutions and implementation.pdf
Generative AI Use cases applications solutions and implementation.pdf
mahaffeycheryld
 
Zener Diode and its V-I Characteristics and Applications
Zener Diode and its V-I Characteristics and ApplicationsZener Diode and its V-I Characteristics and Applications
Zener Diode and its V-I Characteristics and Applications
Shiny Christobel
 
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
ydzowc
 
Determination of Equivalent Circuit parameters and performance characteristic...
Determination of Equivalent Circuit parameters and performance characteristic...Determination of Equivalent Circuit parameters and performance characteristic...
Determination of Equivalent Circuit parameters and performance characteristic...
pvpriya2
 
Impartiality as per ISO /IEC 17025:2017 Standard
Impartiality as per ISO /IEC 17025:2017 StandardImpartiality as per ISO /IEC 17025:2017 Standard
Impartiality as per ISO /IEC 17025:2017 Standard
MuhammadJazib15
 
Supermarket Management System Project Report.pdf
Supermarket Management System Project Report.pdfSupermarket Management System Project Report.pdf
Supermarket Management System Project Report.pdf
Kamal Acharya
 
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICSUNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
vmspraneeth
 
Object Oriented Analysis and Design - OOAD
Object Oriented Analysis and Design - OOADObject Oriented Analysis and Design - OOAD
Object Oriented Analysis and Design - OOAD
PreethaV16
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
uqyfuc
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
21UME003TUSHARDEB
 

Recently uploaded (20)

This study Examines the Effectiveness of Talent Procurement through the Imple...
This study Examines the Effectiveness of Talent Procurement through the Imple...This study Examines the Effectiveness of Talent Procurement through the Imple...
This study Examines the Effectiveness of Talent Procurement through the Imple...
 
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
一比一原版(uoft毕业证书)加拿大多伦多大学毕业证如何办理
 
Blood finder application project report (1).pdf
Blood finder application project report (1).pdfBlood finder application project report (1).pdf
Blood finder application project report (1).pdf
 
Digital Twins Computer Networking Paper Presentation.pptx
Digital Twins Computer Networking Paper Presentation.pptxDigital Twins Computer Networking Paper Presentation.pptx
Digital Twins Computer Networking Paper Presentation.pptx
 
openshift technical overview - Flow of openshift containerisatoin
openshift technical overview - Flow of openshift containerisatoinopenshift technical overview - Flow of openshift containerisatoin
openshift technical overview - Flow of openshift containerisatoin
 
smart pill dispenser is designed to improve medication adherence and safety f...
smart pill dispenser is designed to improve medication adherence and safety f...smart pill dispenser is designed to improve medication adherence and safety f...
smart pill dispenser is designed to improve medication adherence and safety f...
 
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
一比一原版(osu毕业证书)美国俄勒冈州立大学毕业证如何办理
 
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdfAsymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
Asymmetrical Repulsion Magnet Motor Ratio 6-7.pdf
 
Applications of artificial Intelligence in Mechanical Engineering.pdf
Applications of artificial Intelligence in Mechanical Engineering.pdfApplications of artificial Intelligence in Mechanical Engineering.pdf
Applications of artificial Intelligence in Mechanical Engineering.pdf
 
Unit -II Spectroscopy - EC I B.Tech.pdf
Unit -II Spectroscopy - EC  I B.Tech.pdfUnit -II Spectroscopy - EC  I B.Tech.pdf
Unit -II Spectroscopy - EC I B.Tech.pdf
 
Generative AI Use cases applications solutions and implementation.pdf
Generative AI Use cases applications solutions and implementation.pdfGenerative AI Use cases applications solutions and implementation.pdf
Generative AI Use cases applications solutions and implementation.pdf
 
Zener Diode and its V-I Characteristics and Applications
Zener Diode and its V-I Characteristics and ApplicationsZener Diode and its V-I Characteristics and Applications
Zener Diode and its V-I Characteristics and Applications
 
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
原版制作(Humboldt毕业证书)柏林大学毕业证学位证一模一样
 
Determination of Equivalent Circuit parameters and performance characteristic...
Determination of Equivalent Circuit parameters and performance characteristic...Determination of Equivalent Circuit parameters and performance characteristic...
Determination of Equivalent Circuit parameters and performance characteristic...
 
Impartiality as per ISO /IEC 17025:2017 Standard
Impartiality as per ISO /IEC 17025:2017 StandardImpartiality as per ISO /IEC 17025:2017 Standard
Impartiality as per ISO /IEC 17025:2017 Standard
 
Supermarket Management System Project Report.pdf
Supermarket Management System Project Report.pdfSupermarket Management System Project Report.pdf
Supermarket Management System Project Report.pdf
 
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICSUNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
UNIT 4 LINEAR INTEGRATED CIRCUITS-DIGITAL ICS
 
Object Oriented Analysis and Design - OOAD
Object Oriented Analysis and Design - OOADObject Oriented Analysis and Design - OOAD
Object Oriented Analysis and Design - OOAD
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
 

Featured

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
Albert 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 Insights
Kurio // 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 2024
Search 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 summary
SpeakerHub
 
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 Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit 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 management
MindGenius
 
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 Work
GetSmarter
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
 
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
Project for Public Spaces & National Center for Biking and Walking
 
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 Presentation
Erica 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 well
Saba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn
 

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