SlideShare a Scribd company logo
1 of 45
Download to read offline
Framework­less frontend development
by Matthias Hryniszak
Tuesday January 9th, 2018
The day the world changed
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
The Basics
HTML/DOM is the representation of concepts
CSS determines how they look like and what is their positioning
JavaScript makes them behave dynamically
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's talk about HTML
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Old­scool HTML 
<body>
  <div class="container">
    <div class="header">
      Header
    </div>
    <div class="nav">
      Navigation
    </div>
    <div class="sidebar">
      Sidebar
    </div>
    <div class="main">
      <p>...Lorem ipsum here...</p>
    </div>
    <div class="footer">
      Footer
    </div>
  </div>
</body>
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Semantic HTML using html5
<body>
  <header>
    Header
  </header>
  <nav>
    Navigation
  </nav>
  <aside>
    Sidebar
  </aside>
  <article>
    <p>...Lorem ipsum here...</p>
  </article>
  <footer>
    Footer
  </footer>
</body>
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's talk about CSS layouts
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
CSS Layouts pre­2018
Unintuitive tricks
Negative margins, floats, clear­fixes and more
Obstructive constructs like containers for no obvious reasons
Frameworks
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
CSS Layouts as it exists Today
Grid (https://caniuse.com/#search=grid)
Flexbox (https://caniuse.com/#search=flex)
Media queries (https://caniuse.com/#feat=css­mediaqueries)
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
First: fix the browser 
* {
  box­sizing: border­box;
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's get you lying out on a grid
body {
  display: grid;
}
header  { }
nav     { }
aside   { }
article { }
footer  { }
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Naming things
header  { area: header; }
nav     { arae: navigation; }
aside   { area: sidebar; }
article { area: main; }
footer  { area: footer; }
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Defining how things are laid out ­ mobile first
body {
  display: grid;
  grid­template­areas:
    "header"
    "navigation"
    "main"
    "sidebar"
    "footer"
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's go tablet­size
@media (min­width: 500px) {
  body {
    grid­template­columns:
      minmax(200px, 300px) minmax(350px, 500px);
    grid­template­areas:
      "header     header"
      "navigation navigation"
      "sidebar    main"
      "footer     footer"
  }
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's go big screen ­ fluid layout
@media (min­width: 800px) {
  body {
    grid­template­columns:
      300px minmax(500px, 1fr);
    grid­template­areas:
      "header     header"
      "navigation navigation"
      "sidebar    main"
      "footer     footer"
  }
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's go big screen ­ fixed layout
@media (min­width: 800px) {
  body {
    grid­template­columns:
      1fr 300px 500px 1fr;
    grid­template­areas:
      ". header     header     ."
      ". navigation navigation ."
      ". sidebar    main       ."
      ". footer     footer     ."
  }
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Where did the  800px  came from?
@media (min­width: 500px) {
  body {
    grid­template­columns:
      minmax(200px, 300px) minmax(350px, 500px);
  }
}
300px + 500px = 800px
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Let's talk about JavaScript
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
JavaScript ­ the bad parts 
// https://www.destroyallsoftware.com/talks/wat
> [] + []
> [] + {}
[object Object]
> {} + []
0
> {} + {}
NaN
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Asynchronous operations
https://caniuse.com/#feat=async­functions
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
function resolveAfterXSeconds(x) {
  return new Promise(resolve => {
    setTimeout(() => { resolve('resolved') }, x);
  });
}
async function asyncCall() {
  console.log('calling');
  const result = await resolveAfterXSeconds(1);
  console.log(result);
}
asyncCall();
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
DOM manipulation
https://caniuse.com/#feat=classlist
https://caniuse.com/#feat=insert­adjacent
https://caniuse.com/#search=dataset
https://developer.mozilla.org/en­
US/docs/Web/API/Element/insertAdjacentElement
https://developer.mozilla.org/en­
US/docs/Web/API/HTMLElement/dataset
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
JavaScript without frameworks
for (let i = 0; i < 100; i++) {
  const div = document.createElement('div')
  const color = Math.round(Math.random() * 0xffffff)
    .toString(16).padStart(6, '0');
  div.dataset.color = '#' + color;
  div.style.backgroundColor = '#' + color
  div.innerText = '#' + color
  div.classList.add('item')
  const rnd = Math.random();
  if (rnd > 0.25 && rnd < 0.5) div.classList.add('one')
  if (rnd > 0.5 && rnd < 0.75) div.classList.add('two')
  if (rnd > 0.75) div.classList.add('three')
  document.body.insertAdjacentElement('beforeend', div)
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Maintainability
https://caniuse.com/#feat=es6­class
https://caniuse.com/#feat=custom­elements
https://www.polymer­project.org/
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Maintainability
class RandomColorBox extends HTMLElement {
  connectedCallback () {
    const color = this.getRandomColor()
    this.style.backgroundColor = '#' + color
    this.innerText = '#' + color
    this.classList.add(this.getRandomClass())
  }
  getRandomColor () {
    return Math.round(Math.random() * 0xffffff)
      .toString(16).padStart(6, '0');
  }
  getRandomClass () {
    const rnd = Math.random();
    if (rnd > 0.25 && rnd < 0.5) return 'one'
    if (rnd > 0.5 && rnd < 0.75) return 'two'
    return 'three'
  }
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Readability
window
  .customElements
  .define('random­color­box', RandomColorBox)
for (let i = 0; i < 100; i++) {
  document.body.appendChild(
    document.createElement('random­color­box')
  )
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Readability
https://caniuse.com/#feat=template­literals
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Definig multiline template literals
const variable = 'this'
const square = x => x * x
const template = `Hello!
This is a multiline string that you can have
placeholders such as ${variable}, ${1 + 2}
or ${square(2)} in.`
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Modularity
https://caniuse.com/#search=module
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Modularity
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF­8">
  <meta name="viewport" 
        content="width=device­width, initial­scale=1.0">
  <meta http­equiv="X­UA­Compatible" content="ie=edge">
  <title>Multicolor supergrid</title>
  <link rel="stylesheet" href="./index4.css">
</head>
<body>
  <script type="module" src="./index4.js"></script>
</body>
</html>
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Modularity
import { RandomColorBox } from './random­color­box.js'
window
  .customElements
  .define('random­color­box', RandomColorBox)
for (let i = 0; i < 100; i++) {
  document.body.appendChild(
    document.createElement('random­color­box')
  )
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Modularity
/**
 * RandomColorBox component
 * 
 * This component creates a box in a random color
 * suitable for display in a grid layout with one of 3
 * randomly added classes: 'one', 'two' and 'three'
 */
export class RandomColorBox extends HTMLElement {
  connectedCallback () { ... }
  getRandomColor () { ... }
  getRandomClass () { ... }
}
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Arrow functions
https://caniuse.com/#feat=arrow­functions
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
  that   this  hell 
function click(e) {
  console.log(this)
}
click()
$('body').on('click', click)
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
  that   this  hell 
function click(e) {
  console.log(this)
}
click()
$('body').on('click', click)
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
  that   this  hell 
var that = this;
function click(e) {
  console.log(that)
}
click()
$('body').on('click', click)
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Fat arrow + closure
const click = e => console.log(this)
document.body.addEventListener('click', click)
click()
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Collections API
const a = [ { x: 1 }, { x: 2 }, { x: 3 }]
const b = a.map(i => i.x)
b.reduce((acc, x) => acc + x)
b.reduce((acc, x) => acc * x)
b.reduce((acc, x) => acc + ',' + x) // b.join(',')
b.some(x => x % 2 == 0)
b.every(x => x < 10)
b.find(x => x % 2 == 0)
b.findIndex(x => x % 2 == 0)
b.filter(x => x % 2 == 0)
b.forEach(console.log)
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
DOM Traversal
https://caniuse.com/#feat=queryselector
https://caniuse.com/#feat=element­closest
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Searching for DOM elements
const div = document.querySelector('div')
const divs = document.querySelectorAll('div')
const input = div.querySelector('input[type=text]')
const inputs = div.querySelectorAll('input[type=text]')
const body = div.closest('body')
Please note: this is the real CSS3 selector used here, not some
pseudo selector invented for the purpose of making up for ancient
browser shortcomings!
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Final thoughts
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
When in doubt use http://caniuse.com
Favor polyfills over frameworks
Use frameworks that work with the plarform*
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
Questions?
Matthias Hryniszak ­ ITee&Cofee 11.01.2018
May the platform be with you!
Slides available at:
https://bit.ly/flfdev
Blog:
https://padcom13.blogspot.com
LinkedIn:
https://linkedin.com/in/padcom
Matthias Hryniszak ­ ITee&Cofee 11.01.2018

More Related Content

Similar to Framework-less frontend development

HTML5+CSS3 (入門編)
HTML5+CSS3 (入門編)HTML5+CSS3 (入門編)
HTML5+CSS3 (入門編)博史 高木
 
Web design and Development
Web design and DevelopmentWeb design and Development
Web design and DevelopmentShagor Ahmed
 
HTML5 - An Introduction
HTML5 - An IntroductionHTML5 - An Introduction
HTML5 - An IntroductionTimmy Kokke
 
Delivering client sites - KC2015
Delivering client sites - KC2015Delivering client sites - KC2015
Delivering client sites - KC2015Ilesh Mistry
 
Beginning Html 5 Presentation
Beginning Html 5 PresentationBeginning Html 5 Presentation
Beginning Html 5 PresentationUsman Saleem
 
Html layout elements ppt and techniques ICT
Html layout elements ppt and techniques ICTHtml layout elements ppt and techniques ICT
Html layout elements ppt and techniques ICTwhatthefvck2
 
Html5 and-css3-overview
Html5 and-css3-overviewHtml5 and-css3-overview
Html5 and-css3-overviewJacob Nelson
 
Front end full stack development module 1pptx
Front end full stack development module 1pptxFront end full stack development module 1pptx
Front end full stack development module 1pptxMaruthiPrasad96
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Terry Ryan
 
A Primer on HTML 5 - By Nick Armstrong
A Primer on HTML 5 - By Nick ArmstrongA Primer on HTML 5 - By Nick Armstrong
A Primer on HTML 5 - By Nick ArmstrongNick Armstrong
 
Take Your Markup to 11
Take Your Markup to 11Take Your Markup to 11
Take Your Markup to 11Emily Lewis
 
Font End Development + Automation with Django
Font End Development + Automation with DjangoFont End Development + Automation with Django
Font End Development + Automation with DjangoEvan Reiser
 

Similar to Framework-less frontend development (20)

Byowwhc314
Byowwhc314Byowwhc314
Byowwhc314
 
HTML5+CSS3 (入門編)
HTML5+CSS3 (入門編)HTML5+CSS3 (入門編)
HTML5+CSS3 (入門編)
 
Html 5 and css 3
Html 5 and css 3Html 5 and css 3
Html 5 and css 3
 
Web design and Development
Web design and DevelopmentWeb design and Development
Web design and Development
 
HTML & CSS 2017
HTML & CSS 2017HTML & CSS 2017
HTML & CSS 2017
 
HTML5 - An Introduction
HTML5 - An IntroductionHTML5 - An Introduction
HTML5 - An Introduction
 
Delivering client sites - KC2015
Delivering client sites - KC2015Delivering client sites - KC2015
Delivering client sites - KC2015
 
Html5 101
Html5 101Html5 101
Html5 101
 
Beginning Html 5 Presentation
Beginning Html 5 PresentationBeginning Html 5 Presentation
Beginning Html 5 Presentation
 
Html layout elements ppt and techniques ICT
Html layout elements ppt and techniques ICTHtml layout elements ppt and techniques ICT
Html layout elements ppt and techniques ICT
 
Html5 and-css3-overview
Html5 and-css3-overviewHtml5 and-css3-overview
Html5 and-css3-overview
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
WordCamp Denmark Keynote
WordCamp Denmark KeynoteWordCamp Denmark Keynote
WordCamp Denmark Keynote
 
Front end full stack development module 1pptx
Front end full stack development module 1pptxFront end full stack development module 1pptx
Front end full stack development module 1pptx
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Html5 & less css
Html5 & less cssHtml5 & less css
Html5 & less css
 
Html basics
Html basicsHtml basics
Html basics
 
A Primer on HTML 5 - By Nick Armstrong
A Primer on HTML 5 - By Nick ArmstrongA Primer on HTML 5 - By Nick Armstrong
A Primer on HTML 5 - By Nick Armstrong
 
Take Your Markup to 11
Take Your Markup to 11Take Your Markup to 11
Take Your Markup to 11
 
Font End Development + Automation with Django
Font End Development + Automation with DjangoFont End Development + Automation with Django
Font End Development + Automation with Django
 

Recently uploaded

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Framework-less frontend development